import type { ExtractPropTypes, PropType, VNode } from 'vue';
export declare const makeDraggableSortableProps: <Defaults extends {
    clone?: unknown;
    itemKey?: unknown;
    modelValue?: unknown;
    put?: unknown;
    group?: unknown;
} = {}>(defaults?: Defaults | undefined) => {
    clone: unknown extends Defaults["clone"] ? PropType<(v: any) => any> : {
        type: PropType<unknown extends Defaults["clone"] ? (v: any) => any : ((v: any) => any) | Defaults["clone"]>;
        default: unknown extends Defaults["clone"] ? (v: any) => any : ((v: any) => any) | Defaults["clone"];
    };
    itemKey: unknown extends Defaults["itemKey"] ? {
        type: (StringConstructor | FunctionConstructor)[];
        default: () => (v: any) => any;
    } : Omit<{
        type: (StringConstructor | FunctionConstructor)[];
        default: () => (v: any) => any;
    }, "type" | "default"> & {
        type: PropType<unknown extends Defaults["itemKey"] ? string | Function : Defaults["itemKey"] | NonNullable<string | Function>>;
        default: unknown extends Defaults["itemKey"] ? string | Function : Defaults["itemKey"] | NonNullable<string | Function>;
    };
    modelValue: unknown extends Defaults["modelValue"] ? {
        type: PropType<any[]>;
        default: () => never[];
    } : Omit<{
        type: PropType<any[]>;
        default: () => never[];
    }, "type" | "default"> & {
        type: PropType<unknown extends Defaults["modelValue"] ? any[] : any[] | Defaults["modelValue"]>;
        default: unknown extends Defaults["modelValue"] ? any[] : any[] | Defaults["modelValue"];
    };
    put: unknown extends Defaults["put"] ? {
        type: BooleanConstructor;
        default: boolean;
    } : Omit<{
        type: BooleanConstructor;
        default: boolean;
    }, "type" | "default"> & {
        type: PropType<unknown extends Defaults["put"] ? boolean : boolean | Defaults["put"]>;
        default: unknown extends Defaults["put"] ? boolean : boolean | Defaults["put"];
    };
    group: unknown extends Defaults["group"] ? StringConstructor : {
        type: PropType<unknown extends Defaults["group"] ? string : string | Defaults["group"]>;
        default: unknown extends Defaults["group"] ? string : string | Defaults["group"];
    };
};
export declare function useDraggableSortable(props: ExtractPropTypes<ReturnType<typeof makeDraggableSortableProps>> & {
    'onUpdate:modelValue': ((val: any[]) => void) | undefined;
}, name?: string): {
    active: import("vue").Ref<any>;
    model: import("vue").WritableComputedRef<any[]>;
    modelIndexes: import("vue").ComputedRef<Map<any, number>>;
    modelEls: Map<any, HTMLElement | undefined>;
    keyToIndex: (key: any) => number | undefined;
    indexToKey: (index: number) => any;
    keyToValue: (key: any) => any;
    pointerEvents: import("vue").ComputedRef<Partial<{
        touchstartPassive: (e: MouseEvent | TouchEvent) => void;
        touchstart: (e: MouseEvent | TouchEvent) => void;
        mousedown: (e: MouseEvent | TouchEvent) => void;
    }>>;
    ghostVNode: import("vue").Ref<VNode<import("vue").RendererNode, import("vue").RendererElement, {
        [key: string]: any;
    }> | undefined>;
    genGhost: () => JSX.Element;
};
