import { Ref, PropType, ExtractPropTypes } from "vue";
import { ArrayField } from "@formily/core";
import type { ButtonProps } from "element-plus";
import type { Schema } from "@formily/json-schema";
export interface IArrayBaseAdditionProps extends ButtonProps {
    title?: string;
    method?: "push" | "unshift";
    defaultValue?: any;
}
export type ArrayBaseMixins = {
    Addition?: typeof ArrayBaseAddition;
    Remove?: typeof ArrayBaseRemove;
    MoveUp?: typeof ArrayBaseMoveUp;
    MoveDown?: typeof ArrayBaseMoveDown;
    SortHandle?: typeof ArrayBaseSortHandle;
    Index?: typeof ArrayBaseIndex;
    useArray?: typeof useArray;
    useIndex?: typeof useIndex;
    useRecord?: typeof useRecord;
};
export interface IArrayBaseProps {
    disabled?: boolean;
    keyMap?: WeakMap<Record<string, unknown>, string> | string[] | null;
}
export interface IArrayBaseItemProps {
    index: number;
    record: any;
}
export interface IArrayBaseContext {
    field: Ref<ArrayField>;
    schema: Ref<Schema>;
    props: IArrayBaseProps;
    attrs: {
        [key in string]?: any;
    };
    keyMap?: WeakMap<Record<string, unknown>, string> | string[] | null;
}
declare const useArray: () => IArrayBaseContext | null;
declare const useIndex: (index?: number) => Ref<number>;
declare const useRecord: (record?: number) => any;
declare const ArrayBaseSortHandle: import("vue").DefineComponent<Readonly<{
    index?: any;
}>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
    [key: string]: any;
}> | null, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ExtractPropTypes<Readonly<{
    index?: any;
}>>>, {
    readonly index?: any;
}, {}>;
declare const ArrayBaseIndex: import("vue").DefineComponent<{}, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
    [key: string]: any;
}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ExtractPropTypes<{}>>, {}, {}>;
declare const ArrayBaseAddition: import("vue").DefineComponent<Readonly<{
    title?: any;
    method?: any;
    defaultValue?: any;
}>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
    [key: string]: any;
}> | null, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ExtractPropTypes<Readonly<{
    title?: any;
    method?: any;
    defaultValue?: any;
}>>>, {
    readonly title?: any;
    readonly method?: any;
    readonly defaultValue?: any;
}, {}>;
declare const ArrayBaseRemove: import("vue").DefineComponent<any, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
    [key: string]: any;
}> | null, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<any>, {} | {
    [x: string]: any;
}, {}>;
declare const ArrayBaseMoveDown: import("vue").DefineComponent<Readonly<{
    title?: any;
    index?: any;
}>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
    [key: string]: any;
}> | null, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ExtractPropTypes<Readonly<{
    title?: any;
    index?: any;
}>>>, {
    readonly title?: any;
    readonly index?: any;
}, {}>;
declare const ArrayBaseMoveUp: import("vue").DefineComponent<Readonly<{
    title?: any;
    index?: any;
}>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
    [key: string]: any;
}> | null, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ExtractPropTypes<Readonly<{
    title?: any;
    index?: any;
}>>>, {
    readonly title?: any;
    readonly index?: any;
}, {}>;
export declare const ArrayBase: {
    new (...args: any[]): import("vue").CreateComponentPublicInstance<Readonly<ExtractPropTypes<{
        disabled: {
            type: BooleanConstructor;
            default: boolean;
        };
        keyMap: {
            type: PropType<string[] | WeakMap<Record<string, unknown>, string>>;
        };
    }>>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
        [key: string]: any;
    }>, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & Readonly<ExtractPropTypes<{
        disabled: {
            type: BooleanConstructor;
            default: boolean;
        };
        keyMap: {
            type: PropType<string[] | WeakMap<Record<string, unknown>, string>>;
        };
    }>>, {
        disabled: boolean;
    }, true, {}, {}, {
        P: {};
        B: {};
        D: {};
        C: {};
        M: {};
        Defaults: {};
    }, Readonly<ExtractPropTypes<{
        disabled: {
            type: BooleanConstructor;
            default: boolean;
        };
        keyMap: {
            type: PropType<string[] | WeakMap<Record<string, unknown>, string>>;
        };
    }>>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
        [key: string]: any;
    }>, {}, {}, {}, {
        disabled: boolean;
    }>;
    __isFragment?: undefined;
    __isTeleport?: undefined;
    __isSuspense?: undefined;
} & import("vue").ComponentOptionsBase<Readonly<ExtractPropTypes<{
    disabled: {
        type: BooleanConstructor;
        default: boolean;
    };
    keyMap: {
        type: PropType<string[] | WeakMap<Record<string, unknown>, string>>;
    };
}>>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
    [key: string]: any;
}>, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, {
    disabled: boolean;
}, {}, string, {}> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & {
    Index: import("vue").DefineComponent<{}, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
        [key: string]: any;
    }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ExtractPropTypes<{}>>, {}, {}>;
    Item: import("vue").DefineComponent<Readonly<{
        index?: any;
        record?: any;
    }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
        [key: string]: any;
    }>, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ExtractPropTypes<Readonly<{
        index?: any;
        record?: any;
    }>>>, {
        readonly index?: any;
        readonly record?: any;
    }, {}>;
    SortHandle: import("vue").DefineComponent<Readonly<{
        index?: any;
    }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
        [key: string]: any;
    }> | null, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ExtractPropTypes<Readonly<{
        index?: any;
    }>>>, {
        readonly index?: any;
    }, {}>;
    Addition: import("vue").DefineComponent<Readonly<{
        title?: any;
        method?: any;
        defaultValue?: any;
    }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
        [key: string]: any;
    }> | null, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ExtractPropTypes<Readonly<{
        title?: any;
        method?: any;
        defaultValue?: any;
    }>>>, {
        readonly title?: any;
        readonly method?: any;
        readonly defaultValue?: any;
    }, {}>;
    Remove: import("vue").DefineComponent<any, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
        [key: string]: any;
    }> | null, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<any>, {} | {
        [x: string]: any;
    }, {}>;
    MoveDown: import("vue").DefineComponent<Readonly<{
        title?: any;
        index?: any;
    }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
        [key: string]: any;
    }> | null, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ExtractPropTypes<Readonly<{
        title?: any;
        index?: any;
    }>>>, {
        readonly title?: any;
        readonly index?: any;
    }, {}>;
    MoveUp: import("vue").DefineComponent<Readonly<{
        title?: any;
        index?: any;
    }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
        [key: string]: any;
    }> | null, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ExtractPropTypes<Readonly<{
        title?: any;
        index?: any;
    }>>>, {
        readonly title?: any;
        readonly index?: any;
    }, {}>;
    Button: import("vue").DefineComponent<any, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
        [key: string]: any;
    }> | null, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "click"[], "click", import("vue").PublicProps, Readonly<any> & {
        onClick?: ((...args: any[]) => any) | undefined;
    }, {} | {
        [x: string]: any;
    }, {}>;
    ButtonGroup: import("vue").DefineComponent<Readonly<{
        index?: any;
    }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
        [key: string]: any;
    }> | null, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ExtractPropTypes<Readonly<{
        index?: any;
    }>>>, {
        readonly index?: any;
    }, {}>;
    useArray: () => IArrayBaseContext | null;
    useIndex: (index?: number) => Ref<number>;
    useKey: (schema: Schema) => {
        keyMap: string[] | WeakMap<Record<string, unknown>, string>;
        getKey: (record: any, index: number) => string | undefined;
    };
    useRecord: (record?: number) => any;
};
export {};
