-record(system, { model :: dnd@groups:model(), update :: fun((dnd@groups:dnd_msg(), dnd@groups:model(), list(any())) -> {dnd@groups:model(), list(any())}), drag_events :: fun((integer(), binary()) -> list(lustre@vdom@vattr:attribute(any()))), drop_events :: fun((integer(), binary()) -> list(lustre@vdom@vattr:attribute(any()))), ghost_styles :: fun((dnd@groups:model()) -> list(lustre@vdom@vattr:attribute(any()))), info :: fun((dnd@groups:model()) -> gleam@option:option(dnd@groups:info())), update_with_effect :: fun((dnd@groups:dnd_msg(), dnd@groups:model(), list(any())) -> {dnd@groups:model(), list(any()), lustre@effect:effect(any())}), touch_grip_events :: fun((integer(), binary()) -> list(lustre@vdom@vattr:attribute(any()))), touch_drop_zone_events :: fun((integer()) -> list(lustre@vdom@vattr:attribute(any()))), cancel_events :: fun(() -> list(lustre@vdom@vattr:attribute(any()))), is_touch_selecting :: fun((dnd@groups:model()) -> boolean()), selected_index :: fun((dnd@groups:model()) -> gleam@option:option(integer())), touch_selected_styles :: fun((dnd@groups:model(), integer()) -> list(lustre@vdom@vattr:attribute(any()))) }).