import type { InjectionKey, Ref } from 'vue';
export interface DraggableSortableGroupItem {
    findContains: (el: HTMLElement | undefined) => {
        key: any;
        el: HTMLElement;
    } | undefined;
    put: Ref<boolean>;
    group: Ref<string | undefined>;
    clone: (key: any) => any;
    enter: (key: any, value: any, from: {
        id: string;
        key: any;
        box: DOMRect;
        position: {
            left: number;
            top: number;
        };
    }) => Promise<void>;
    leave: (key: any) => Promise<void>;
}
export declare const DraggableSortableGroupKey: InjectionKey<ReturnType<typeof createDraggableSortableGroup>>;
export declare function createDraggableSortableGroup(): {
    register: (id: string, item: DraggableSortableGroupItem) => Map<string, DraggableSortableGroupItem>;
    unregister: (id: string) => boolean;
    trySwap: (from: {
        id: string;
        key: any;
        box: DOMRect;
        position: {
            left: number;
            top: number;
        };
    }, to: {
        el: HTMLElement;
    }) => Promise<void>;
};
export declare function useDraggableSortableGroupItem(id: string, item: DraggableSortableGroupItem): {
    register: (id: string, item: DraggableSortableGroupItem) => Map<string, DraggableSortableGroupItem>;
    unregister: (id: string) => boolean;
    trySwap: (from: {
        id: string;
        key: any;
        box: DOMRect;
        position: {
            left: number;
            top: number;
        };
    }, to: {
        el: HTMLElement;
    }) => Promise<void>;
} | undefined;
