import { CSSProperties, ExtractPropTypes, PropType, CreateComponentPublicInstanceWithMixins, ComponentOptionsMixin, PublicProps, GlobalComponents, GlobalDirectives, ComponentProvideOptions, ComponentOptionsBase, VNodeProps, AllowedComponentProps, ComponentCustomProps, Plugin } from 'vue';
import { CustomSlotsType, VueNode } from '../_util/type';
import { TransferListBodyProps } from './ListBody';
import { PaginationType } from './interface';
import { VueTypeValidableDef } from 'vue-types';
export type { TransferListProps } from './list';
export type { TransferOperationProps } from './operation';
export type { TransferSearchProps } from './search';
export type TransferDirection = 'left' | 'right';
export interface RenderResultObject {
    label: VueNode;
    value: string;
}
export type RenderResult = VueNode | RenderResultObject | string | null;
export interface TransferItem {
    key?: string;
    title?: string;
    description?: string;
    disabled?: boolean;
    [name: string]: any;
}
export type KeyWise<T> = T & {
    key: string;
};
export type KeyWiseTransferItem = KeyWise<TransferItem>;
type TransferRender<RecordType> = (item: RecordType) => RenderResult;
export interface ListStyle {
    direction: TransferDirection;
}
export type SelectAllLabel = VueNode | ((info: {
    selectedCount: number;
    totalCount: number;
}) => VueNode);
export interface TransferLocale {
    titles?: VueNode[];
    notFoundContent?: VueNode;
    searchPlaceholder: string;
    itemUnit: string;
    itemsUnit: string;
    remove?: string;
    selectAll?: string;
    selectCurrent?: string;
    selectInvert?: string;
    removeAll?: string;
    removeCurrent?: string;
}
export declare const transferProps: () => {
    id: StringConstructor;
    prefixCls: StringConstructor;
    dataSource: {
        type: PropType<TransferItem[]>;
        default: TransferItem[];
    };
    disabled: {
        type: BooleanConstructor;
        default: boolean;
    };
    targetKeys: {
        type: PropType<string[]>;
        default: string[];
    };
    selectedKeys: {
        type: PropType<string[]>;
        default: string[];
    };
    render: {
        type: PropType<TransferRender<TransferItem>>;
        default: TransferRender<TransferItem>;
    };
    listStyle: {
        type: PropType<CSSProperties | ((style: ListStyle) => CSSProperties)>;
        default: CSSProperties | ((style: ListStyle) => CSSProperties);
    };
    operationStyle: {
        type: PropType<CSSProperties>;
        default: CSSProperties;
    };
    titles: {
        type: PropType<string[]>;
        default: string[];
    };
    operations: {
        type: PropType<string[]>;
        default: string[];
    };
    showSearch: {
        type: BooleanConstructor;
        default: boolean;
    };
    filterOption: {
        type: PropType<(inputValue: string, item: TransferItem) => boolean>;
        default: (inputValue: string, item: TransferItem) => boolean;
    };
    searchPlaceholder: StringConstructor;
    notFoundContent: VueTypeValidableDef<any>;
    locale: {
        type: PropType<{}>;
        default: {};
    };
    rowKey: {
        type: PropType<(record: TransferItem) => string>;
        default: (record: TransferItem) => string;
    };
    showSelectAll: {
        type: BooleanConstructor;
        default: boolean;
    };
    selectAllLabels: {
        type: PropType<SelectAllLabel[]>;
        default: SelectAllLabel[];
    };
    children: {
        type: PropType<(props: TransferListBodyProps) => VueNode>;
        default: (props: TransferListBodyProps) => VueNode;
    };
    oneWay: {
        type: BooleanConstructor;
        default: boolean;
    };
    pagination: {
        type: PropType<PaginationType>;
        default: PaginationType;
    };
    status: {
        type: PropType<"" | "error" | "warning">;
        default: "" | "error" | "warning";
    };
    onChange: {
        type: PropType<(targetKeys: string[], direction: TransferDirection, moveKeys: string[]) => void>;
        default: (targetKeys: string[], direction: TransferDirection, moveKeys: string[]) => void;
    };
    onSelectChange: {
        type: PropType<(sourceSelectedKeys: string[], targetSelectedKeys: string[]) => void>;
        default: (sourceSelectedKeys: string[], targetSelectedKeys: string[]) => void;
    };
    onSearch: {
        type: PropType<(direction: TransferDirection, value: string) => void>;
        default: (direction: TransferDirection, value: string) => void;
    };
    onScroll: {
        type: PropType<(direction: TransferDirection, e: UIEvent) => void>;
        default: (direction: TransferDirection, e: UIEvent) => void;
    };
    'onUpdate:targetKeys': {
        type: PropType<(keys: string[]) => void>;
        default: (keys: string[]) => void;
    };
    'onUpdate:selectedKeys': {
        type: PropType<(keys: string[]) => void>;
        default: (keys: string[]) => void;
    };
};
export type TransferProps = Partial<ExtractPropTypes<ReturnType<typeof transferProps>>>;
declare const _default: {
    new (...args: any[]): CreateComponentPublicInstanceWithMixins<Readonly<ExtractPropTypes<{
        id: StringConstructor;
        prefixCls: StringConstructor;
        dataSource: {
            type: PropType<TransferItem[]>;
            default: TransferItem[];
        };
        disabled: {
            type: BooleanConstructor;
            default: boolean;
        };
        targetKeys: {
            type: PropType<string[]>;
            default: string[];
        };
        selectedKeys: {
            type: PropType<string[]>;
            default: string[];
        };
        render: {
            type: PropType<TransferRender<TransferItem>>;
            default: TransferRender<TransferItem>;
        };
        listStyle: {
            type: PropType<CSSProperties | ((style: ListStyle) => CSSProperties)>;
            default: CSSProperties | ((style: ListStyle) => CSSProperties);
        };
        operationStyle: {
            type: PropType<CSSProperties>;
            default: CSSProperties;
        };
        titles: {
            type: PropType<string[]>;
            default: string[];
        };
        operations: {
            type: PropType<string[]>;
            default: string[];
        };
        showSearch: {
            type: BooleanConstructor;
            default: boolean;
        };
        filterOption: {
            type: PropType<(inputValue: string, item: TransferItem) => boolean>;
            default: (inputValue: string, item: TransferItem) => boolean;
        };
        searchPlaceholder: StringConstructor;
        notFoundContent: VueTypeValidableDef<any>;
        locale: {
            type: PropType<{}>;
            default: {};
        };
        rowKey: {
            type: PropType<(record: TransferItem) => string>;
            default: (record: TransferItem) => string;
        };
        showSelectAll: {
            type: BooleanConstructor;
            default: boolean;
        };
        selectAllLabels: {
            type: PropType<SelectAllLabel[]>;
            default: SelectAllLabel[];
        };
        children: {
            type: PropType<(props: Partial<ExtractPropTypes<{
                prefixCls: StringConstructor;
                filteredRenderItems: VueTypeValidableDef<unknown[]> & {
                    default: () => unknown[];
                } & {
                    default: () => unknown[];
                };
                selectedKeys: VueTypeValidableDef<unknown[]> & {
                    default: () => unknown[];
                };
                disabled: {
                    type: BooleanConstructor;
                    default: boolean;
                };
                showRemove: {
                    type: BooleanConstructor;
                    default: boolean;
                };
                pagination: VueTypeValidableDef<any>;
                onItemSelect: FunctionConstructor;
                onScroll: FunctionConstructor;
                onItemRemove: FunctionConstructor;
            }>>) => VueNode>;
            default: (props: Partial<ExtractPropTypes<{
                prefixCls: StringConstructor;
                filteredRenderItems: VueTypeValidableDef<unknown[]> & {
                    default: () => unknown[];
                } & {
                    default: () => unknown[];
                };
                selectedKeys: VueTypeValidableDef<unknown[]> & {
                    default: () => unknown[];
                };
                disabled: {
                    type: BooleanConstructor;
                    default: boolean;
                };
                showRemove: {
                    type: BooleanConstructor;
                    default: boolean;
                };
                pagination: VueTypeValidableDef<any>;
                onItemSelect: FunctionConstructor;
                onScroll: FunctionConstructor;
                onItemRemove: FunctionConstructor;
            }>>) => VueNode;
        };
        oneWay: {
            type: BooleanConstructor;
            default: boolean;
        };
        pagination: {
            type: PropType<PaginationType>;
            default: PaginationType;
        };
        status: {
            type: PropType<"" | "error" | "warning">;
            default: "" | "error" | "warning";
        };
        onChange: {
            type: PropType<(targetKeys: string[], direction: TransferDirection, moveKeys: string[]) => void>;
            default: (targetKeys: string[], direction: TransferDirection, moveKeys: string[]) => void;
        };
        onSelectChange: {
            type: PropType<(sourceSelectedKeys: string[], targetSelectedKeys: string[]) => void>;
            default: (sourceSelectedKeys: string[], targetSelectedKeys: string[]) => void;
        };
        onSearch: {
            type: PropType<(direction: TransferDirection, value: string) => void>;
            default: (direction: TransferDirection, value: string) => void;
        };
        onScroll: {
            type: PropType<(direction: TransferDirection, e: UIEvent) => void>;
            default: (direction: TransferDirection, e: UIEvent) => void;
        };
        'onUpdate:targetKeys': {
            type: PropType<(keys: string[]) => void>;
            default: (keys: string[]) => void;
        };
        'onUpdate:selectedKeys': {
            type: PropType<(keys: string[]) => void>;
            default: (keys: string[]) => void;
        };
    }>> & Readonly<{}>, () => VueNode, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, PublicProps, {
        render: TransferRender<TransferItem>;
        listStyle: CSSProperties | ((style: ListStyle) => CSSProperties);
        disabled: boolean;
        onChange: (targetKeys: string[], direction: TransferDirection, moveKeys: string[]) => void;
        onScroll: (direction: TransferDirection, e: UIEvent) => void;
        children: (props: Partial<ExtractPropTypes<{
            prefixCls: StringConstructor;
            filteredRenderItems: VueTypeValidableDef<unknown[]> & {
                default: () => unknown[];
            } & {
                default: () => unknown[];
            };
            selectedKeys: VueTypeValidableDef<unknown[]> & {
                default: () => unknown[];
            };
            disabled: {
                type: BooleanConstructor;
                default: boolean;
            };
            showRemove: {
                type: BooleanConstructor;
                default: boolean;
            };
            pagination: VueTypeValidableDef<any>;
            onItemSelect: FunctionConstructor;
            onScroll: FunctionConstructor;
            onItemRemove: FunctionConstructor;
        }>>) => VueNode;
        locale: {};
        status: "" | "error" | "warning";
        titles: string[];
        showSearch: boolean;
        selectedKeys: string[];
        'onUpdate:selectedKeys': (keys: string[]) => void;
        onSearch: (direction: TransferDirection, value: string) => void;
        filterOption: (inputValue: string, item: TransferItem) => boolean;
        pagination: PaginationType;
        rowKey: (record: TransferItem) => string;
        dataSource: TransferItem[];
        showSelectAll: boolean;
        oneWay: boolean;
        targetKeys: string[];
        operationStyle: CSSProperties;
        operations: string[];
        selectAllLabels: SelectAllLabel[];
        onSelectChange: (sourceSelectedKeys: string[], targetSelectedKeys: string[]) => void;
        'onUpdate:targetKeys': (keys: string[]) => void;
    }, true, {}, CustomSlotsType<{
        leftTitle?: any;
        rightTitle?: any;
        children?: any;
        render?: TransferItem;
        notFoundContent?: any;
        leftSelectAllLabel?: any;
        rightSelectAllLabel?: any;
        footer?: any;
        default?: any;
    }>, GlobalComponents, GlobalDirectives, string, {}, any, ComponentProvideOptions, {
        P: {};
        B: {};
        D: {};
        C: {};
        M: {};
        Defaults: {};
    }, Readonly<ExtractPropTypes<{
        id: StringConstructor;
        prefixCls: StringConstructor;
        dataSource: {
            type: PropType<TransferItem[]>;
            default: TransferItem[];
        };
        disabled: {
            type: BooleanConstructor;
            default: boolean;
        };
        targetKeys: {
            type: PropType<string[]>;
            default: string[];
        };
        selectedKeys: {
            type: PropType<string[]>;
            default: string[];
        };
        render: {
            type: PropType<TransferRender<TransferItem>>;
            default: TransferRender<TransferItem>;
        };
        listStyle: {
            type: PropType<CSSProperties | ((style: ListStyle) => CSSProperties)>;
            default: CSSProperties | ((style: ListStyle) => CSSProperties);
        };
        operationStyle: {
            type: PropType<CSSProperties>;
            default: CSSProperties;
        };
        titles: {
            type: PropType<string[]>;
            default: string[];
        };
        operations: {
            type: PropType<string[]>;
            default: string[];
        };
        showSearch: {
            type: BooleanConstructor;
            default: boolean;
        };
        filterOption: {
            type: PropType<(inputValue: string, item: TransferItem) => boolean>;
            default: (inputValue: string, item: TransferItem) => boolean;
        };
        searchPlaceholder: StringConstructor;
        notFoundContent: VueTypeValidableDef<any>;
        locale: {
            type: PropType<{}>;
            default: {};
        };
        rowKey: {
            type: PropType<(record: TransferItem) => string>;
            default: (record: TransferItem) => string;
        };
        showSelectAll: {
            type: BooleanConstructor;
            default: boolean;
        };
        selectAllLabels: {
            type: PropType<SelectAllLabel[]>;
            default: SelectAllLabel[];
        };
        children: {
            type: PropType<(props: Partial<ExtractPropTypes<{
                prefixCls: StringConstructor;
                filteredRenderItems: VueTypeValidableDef<unknown[]> & {
                    default: () => unknown[];
                } & {
                    default: () => unknown[];
                };
                selectedKeys: VueTypeValidableDef<unknown[]> & {
                    default: () => unknown[];
                };
                disabled: {
                    type: BooleanConstructor;
                    default: boolean;
                };
                showRemove: {
                    type: BooleanConstructor;
                    default: boolean;
                };
                pagination: VueTypeValidableDef<any>;
                onItemSelect: FunctionConstructor;
                onScroll: FunctionConstructor;
                onItemRemove: FunctionConstructor;
            }>>) => VueNode>;
            default: (props: Partial<ExtractPropTypes<{
                prefixCls: StringConstructor;
                filteredRenderItems: VueTypeValidableDef<unknown[]> & {
                    default: () => unknown[];
                } & {
                    default: () => unknown[];
                };
                selectedKeys: VueTypeValidableDef<unknown[]> & {
                    default: () => unknown[];
                };
                disabled: {
                    type: BooleanConstructor;
                    default: boolean;
                };
                showRemove: {
                    type: BooleanConstructor;
                    default: boolean;
                };
                pagination: VueTypeValidableDef<any>;
                onItemSelect: FunctionConstructor;
                onScroll: FunctionConstructor;
                onItemRemove: FunctionConstructor;
            }>>) => VueNode;
        };
        oneWay: {
            type: BooleanConstructor;
            default: boolean;
        };
        pagination: {
            type: PropType<PaginationType>;
            default: PaginationType;
        };
        status: {
            type: PropType<"" | "error" | "warning">;
            default: "" | "error" | "warning";
        };
        onChange: {
            type: PropType<(targetKeys: string[], direction: TransferDirection, moveKeys: string[]) => void>;
            default: (targetKeys: string[], direction: TransferDirection, moveKeys: string[]) => void;
        };
        onSelectChange: {
            type: PropType<(sourceSelectedKeys: string[], targetSelectedKeys: string[]) => void>;
            default: (sourceSelectedKeys: string[], targetSelectedKeys: string[]) => void;
        };
        onSearch: {
            type: PropType<(direction: TransferDirection, value: string) => void>;
            default: (direction: TransferDirection, value: string) => void;
        };
        onScroll: {
            type: PropType<(direction: TransferDirection, e: UIEvent) => void>;
            default: (direction: TransferDirection, e: UIEvent) => void;
        };
        'onUpdate:targetKeys': {
            type: PropType<(keys: string[]) => void>;
            default: (keys: string[]) => void;
        };
        'onUpdate:selectedKeys': {
            type: PropType<(keys: string[]) => void>;
            default: (keys: string[]) => void;
        };
    }>> & Readonly<{}>, () => VueNode, {}, {}, {}, {
        render: TransferRender<TransferItem>;
        listStyle: CSSProperties | ((style: ListStyle) => CSSProperties);
        disabled: boolean;
        onChange: (targetKeys: string[], direction: TransferDirection, moveKeys: string[]) => void;
        onScroll: (direction: TransferDirection, e: UIEvent) => void;
        children: (props: Partial<ExtractPropTypes<{
            prefixCls: StringConstructor;
            filteredRenderItems: VueTypeValidableDef<unknown[]> & {
                default: () => unknown[];
            } & {
                default: () => unknown[];
            };
            selectedKeys: VueTypeValidableDef<unknown[]> & {
                default: () => unknown[];
            };
            disabled: {
                type: BooleanConstructor;
                default: boolean;
            };
            showRemove: {
                type: BooleanConstructor;
                default: boolean;
            };
            pagination: VueTypeValidableDef<any>;
            onItemSelect: FunctionConstructor;
            onScroll: FunctionConstructor;
            onItemRemove: FunctionConstructor;
        }>>) => VueNode;
        locale: {};
        status: "" | "error" | "warning";
        titles: string[];
        showSearch: boolean;
        selectedKeys: string[];
        'onUpdate:selectedKeys': (keys: string[]) => void;
        onSearch: (direction: TransferDirection, value: string) => void;
        filterOption: (inputValue: string, item: TransferItem) => boolean;
        pagination: PaginationType;
        rowKey: (record: TransferItem) => string;
        dataSource: TransferItem[];
        showSelectAll: boolean;
        oneWay: boolean;
        targetKeys: string[];
        operationStyle: CSSProperties;
        operations: string[];
        selectAllLabels: SelectAllLabel[];
        onSelectChange: (sourceSelectedKeys: string[], targetSelectedKeys: string[]) => void;
        'onUpdate:targetKeys': (keys: string[]) => void;
    }>;
    __isFragment?: never;
    __isTeleport?: never;
    __isSuspense?: never;
} & ComponentOptionsBase<Readonly<ExtractPropTypes<{
    id: StringConstructor;
    prefixCls: StringConstructor;
    dataSource: {
        type: PropType<TransferItem[]>;
        default: TransferItem[];
    };
    disabled: {
        type: BooleanConstructor;
        default: boolean;
    };
    targetKeys: {
        type: PropType<string[]>;
        default: string[];
    };
    selectedKeys: {
        type: PropType<string[]>;
        default: string[];
    };
    render: {
        type: PropType<TransferRender<TransferItem>>;
        default: TransferRender<TransferItem>;
    };
    listStyle: {
        type: PropType<CSSProperties | ((style: ListStyle) => CSSProperties)>;
        default: CSSProperties | ((style: ListStyle) => CSSProperties);
    };
    operationStyle: {
        type: PropType<CSSProperties>;
        default: CSSProperties;
    };
    titles: {
        type: PropType<string[]>;
        default: string[];
    };
    operations: {
        type: PropType<string[]>;
        default: string[];
    };
    showSearch: {
        type: BooleanConstructor;
        default: boolean;
    };
    filterOption: {
        type: PropType<(inputValue: string, item: TransferItem) => boolean>;
        default: (inputValue: string, item: TransferItem) => boolean;
    };
    searchPlaceholder: StringConstructor;
    notFoundContent: VueTypeValidableDef<any>;
    locale: {
        type: PropType<{}>;
        default: {};
    };
    rowKey: {
        type: PropType<(record: TransferItem) => string>;
        default: (record: TransferItem) => string;
    };
    showSelectAll: {
        type: BooleanConstructor;
        default: boolean;
    };
    selectAllLabels: {
        type: PropType<SelectAllLabel[]>;
        default: SelectAllLabel[];
    };
    children: {
        type: PropType<(props: TransferListBodyProps) => VueNode>;
        default: (props: TransferListBodyProps) => VueNode;
    };
    oneWay: {
        type: BooleanConstructor;
        default: boolean;
    };
    pagination: {
        type: PropType<PaginationType>;
        default: PaginationType;
    };
    status: {
        type: PropType<"" | "error" | "warning">;
        default: "" | "error" | "warning";
    };
    onChange: {
        type: PropType<(targetKeys: string[], direction: TransferDirection, moveKeys: string[]) => void>;
        default: (targetKeys: string[], direction: TransferDirection, moveKeys: string[]) => void;
    };
    onSelectChange: {
        type: PropType<(sourceSelectedKeys: string[], targetSelectedKeys: string[]) => void>;
        default: (sourceSelectedKeys: string[], targetSelectedKeys: string[]) => void;
    };
    onSearch: {
        type: PropType<(direction: TransferDirection, value: string) => void>;
        default: (direction: TransferDirection, value: string) => void;
    };
    onScroll: {
        type: PropType<(direction: TransferDirection, e: UIEvent) => void>;
        default: (direction: TransferDirection, e: UIEvent) => void;
    };
    'onUpdate:targetKeys': {
        type: PropType<(keys: string[]) => void>;
        default: (keys: string[]) => void;
    };
    'onUpdate:selectedKeys': {
        type: PropType<(keys: string[]) => void>;
        default: (keys: string[]) => void;
    };
}>> & Readonly<{}>, () => VueNode, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, {
    render: TransferRender<TransferItem>;
    listStyle: CSSProperties | ((style: ListStyle) => CSSProperties);
    disabled: boolean;
    onChange: (targetKeys: string[], direction: TransferDirection, moveKeys: string[]) => void;
    onScroll: (direction: TransferDirection, e: UIEvent) => void;
    children: (props: TransferListBodyProps) => VueNode;
    locale: {};
    status: "" | "error" | "warning";
    titles: string[];
    showSearch: boolean;
    selectedKeys: string[];
    'onUpdate:selectedKeys': (keys: string[]) => void;
    onSearch: (direction: TransferDirection, value: string) => void;
    filterOption: (inputValue: string, item: TransferItem) => boolean;
    pagination: PaginationType;
    rowKey: (record: TransferItem) => string;
    dataSource: TransferItem[];
    showSelectAll: boolean;
    oneWay: boolean;
    targetKeys: string[];
    operationStyle: CSSProperties;
    operations: string[];
    selectAllLabels: SelectAllLabel[];
    onSelectChange: (sourceSelectedKeys: string[], targetSelectedKeys: string[]) => void;
    'onUpdate:targetKeys': (keys: string[]) => void;
}, {}, string, CustomSlotsType<{
    leftTitle?: any;
    rightTitle?: any;
    children?: any;
    render?: TransferItem;
    notFoundContent?: any;
    leftSelectAllLabel?: any;
    rightSelectAllLabel?: any;
    footer?: any;
    default?: any;
}>, GlobalComponents, GlobalDirectives, string, ComponentProvideOptions> & VNodeProps & AllowedComponentProps & ComponentCustomProps & Plugin;
export default _default;
