-record(system, { model :: dnd:model(), update :: fun((dnd:dnd_msg(), dnd:model(), list(any())) -> {dnd: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:model()) -> list(lustre@vdom@vattr:attribute(any()))), info :: fun((dnd:model()) -> gleam@option:option(dnd:info())), update_with_effect :: fun((dnd:dnd_msg(), dnd:model(), list(any())) -> {dnd: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:model()) -> boolean()), selected_index :: fun((dnd:model()) -> gleam@option:option(integer())), touch_selected_styles :: fun((dnd:model(), integer()) -> list(lustre@vdom@vattr:attribute(any()))) }).