import { ExtractEmitsTypes } from '@yanzhen-libs/utils-vue';
import { ExtractPropTypes } from 'vue';
import { ContactsItem } from './constants';
import { ContactsModelValueType } from './constants/contacts';
import { ComponentExposed } from 'vue-component-type-helpers';
import { default as Contacts } from './contacts.vue';
import { ContactsModelValue } from './hook/use-contacts-model-value';
import { ModalProps } from 'ant-design-vue';
export declare const contactsSelectOptions: {
    ns: any;
    class: any;
    name: any;
};
export type ContactsSelectConfirmFn = (list?: ContactsItem | ContactsItem[], record?: Record<string, ContactsModelValue | undefined>) => void | boolean | Promise<void | boolean>;
export declare const contactsSelectListType: readonly ["avatar", "input"];
export type ContactsSelectListType = (typeof contactsSelectListType)[number];
export declare function defineContactsSelectProps<T extends Record<string, any> = Record<string, any>>(info?: T): {
    maxCount: number;
    placeholder: undefined | string;
    primaryIcon: undefined | string;
    autoClear: boolean;
    multiple: boolean;
};
export declare const contactsSelectName: any;
export declare const contactsModalIgnoreProp: readonly ["open", "onCancel", "onOk"];
/**
 * 通讯录 Select Props
 */
export declare const contactsSelectProps: {
    modalProps: import('@yanzhen-libs/utils-vue').EpPropFinalized<import('vue').PropType<Omit<Partial<ExtractPropTypes<{
        prefixCls: StringConstructor;
        visible: {
            type: BooleanConstructor;
            default: any;
        };
        open: {
            type: BooleanConstructor;
            default: any;
        };
        confirmLoading: {
            type: BooleanConstructor;
            default: any;
        };
        title: import('vue-types').VueTypeValidableDef<any>;
        closable: {
            type: BooleanConstructor;
            default: any;
        };
        closeIcon: import('vue-types').VueTypeValidableDef<any>;
        onOk: import('vue').PropType<(e: MouseEvent) => void>;
        onCancel: import('vue').PropType<(e: MouseEvent) => void>;
        'onUpdate:visible': import('vue').PropType<(visible: boolean) => void>;
        'onUpdate:open': import('vue').PropType<(open: boolean) => void>;
        onChange: import('vue').PropType<(open: boolean) => void>;
        afterClose: import('vue').PropType<() => void>;
        centered: {
            type: BooleanConstructor;
            default: any;
        };
        width: (StringConstructor | NumberConstructor)[];
        footer: import('vue-types').VueTypeValidableDef<any>;
        okText: import('vue-types').VueTypeValidableDef<any>;
        okType: import('vue').PropType<import('ant-design-vue/es/button/buttonTypes').LegacyButtonType>;
        cancelText: import('vue-types').VueTypeValidableDef<any>;
        icon: import('vue-types').VueTypeValidableDef<any>;
        maskClosable: {
            type: BooleanConstructor;
            default: any;
        };
        forceRender: {
            type: BooleanConstructor;
            default: any;
        };
        okButtonProps: {
            type: import('vue').PropType<Partial<ExtractPropTypes<{
                prefixCls: StringConstructor;
                type: import('vue').PropType<import('ant-design-vue/es/button').ButtonType>;
                htmlType: {
                    type: import('vue').PropType<import('ant-design-vue/es/button/buttonTypes').ButtonHTMLType>;
                    default: string;
                };
                shape: {
                    type: import('vue').PropType<import('ant-design-vue/es/button').ButtonShape>;
                };
                size: {
                    type: import('vue').PropType<import('ant-design-vue/es/button').ButtonSize>;
                };
                loading: {
                    type: import('vue').PropType<boolean | {
                        delay?: number;
                    }>;
                    default: () => boolean | {
                        delay?: number;
                    };
                };
                disabled: {
                    type: BooleanConstructor;
                    default: any;
                };
                ghost: {
                    type: BooleanConstructor;
                    default: any;
                };
                block: {
                    type: BooleanConstructor;
                    default: any;
                };
                danger: {
                    type: BooleanConstructor;
                    default: any;
                };
                icon: import('vue-types').VueTypeValidableDef<any>;
                href: StringConstructor;
                target: StringConstructor;
                title: StringConstructor;
                onClick: {
                    type: import('vue').PropType<import('ant-design-vue/es/_util/EventInterface').MouseEventHandler | import('ant-design-vue/es/_util/EventInterface').MouseEventHandler[]>;
                };
                onMousedown: {
                    type: import('vue').PropType<import('ant-design-vue/es/_util/EventInterface').MouseEventHandler | import('ant-design-vue/es/_util/EventInterface').MouseEventHandler[]>;
                };
            }>>>;
            default: Partial<ExtractPropTypes<{
                prefixCls: StringConstructor;
                type: import('vue').PropType<import('ant-design-vue/es/button').ButtonType>;
                htmlType: {
                    type: import('vue').PropType<import('ant-design-vue/es/button/buttonTypes').ButtonHTMLType>;
                    default: string;
                };
                shape: {
                    type: import('vue').PropType<import('ant-design-vue/es/button').ButtonShape>;
                };
                size: {
                    type: import('vue').PropType<import('ant-design-vue/es/button').ButtonSize>;
                };
                loading: {
                    type: import('vue').PropType<boolean | {
                        delay?: number;
                    }>;
                    default: () => boolean | {
                        delay?: number;
                    };
                };
                disabled: {
                    type: BooleanConstructor;
                    default: any;
                };
                ghost: {
                    type: BooleanConstructor;
                    default: any;
                };
                block: {
                    type: BooleanConstructor;
                    default: any;
                };
                danger: {
                    type: BooleanConstructor;
                    default: any;
                };
                icon: import('vue-types').VueTypeValidableDef<any>;
                href: StringConstructor;
                target: StringConstructor;
                title: StringConstructor;
                onClick: {
                    type: import('vue').PropType<import('ant-design-vue/es/_util/EventInterface').MouseEventHandler | import('ant-design-vue/es/_util/EventInterface').MouseEventHandler[]>;
                };
                onMousedown: {
                    type: import('vue').PropType<import('ant-design-vue/es/_util/EventInterface').MouseEventHandler | import('ant-design-vue/es/_util/EventInterface').MouseEventHandler[]>;
                };
            }>>;
        };
        cancelButtonProps: {
            type: import('vue').PropType<Partial<ExtractPropTypes<{
                prefixCls: StringConstructor;
                type: import('vue').PropType<import('ant-design-vue/es/button').ButtonType>;
                htmlType: {
                    type: import('vue').PropType<import('ant-design-vue/es/button/buttonTypes').ButtonHTMLType>;
                    default: string;
                };
                shape: {
                    type: import('vue').PropType<import('ant-design-vue/es/button').ButtonShape>;
                };
                size: {
                    type: import('vue').PropType<import('ant-design-vue/es/button').ButtonSize>;
                };
                loading: {
                    type: import('vue').PropType<boolean | {
                        delay?: number;
                    }>;
                    default: () => boolean | {
                        delay?: number;
                    };
                };
                disabled: {
                    type: BooleanConstructor;
                    default: any;
                };
                ghost: {
                    type: BooleanConstructor;
                    default: any;
                };
                block: {
                    type: BooleanConstructor;
                    default: any;
                };
                danger: {
                    type: BooleanConstructor;
                    default: any;
                };
                icon: import('vue-types').VueTypeValidableDef<any>;
                href: StringConstructor;
                target: StringConstructor;
                title: StringConstructor;
                onClick: {
                    type: import('vue').PropType<import('ant-design-vue/es/_util/EventInterface').MouseEventHandler | import('ant-design-vue/es/_util/EventInterface').MouseEventHandler[]>;
                };
                onMousedown: {
                    type: import('vue').PropType<import('ant-design-vue/es/_util/EventInterface').MouseEventHandler | import('ant-design-vue/es/_util/EventInterface').MouseEventHandler[]>;
                };
            }>>>;
            default: Partial<ExtractPropTypes<{
                prefixCls: StringConstructor;
                type: import('vue').PropType<import('ant-design-vue/es/button').ButtonType>;
                htmlType: {
                    type: import('vue').PropType<import('ant-design-vue/es/button/buttonTypes').ButtonHTMLType>;
                    default: string;
                };
                shape: {
                    type: import('vue').PropType<import('ant-design-vue/es/button').ButtonShape>;
                };
                size: {
                    type: import('vue').PropType<import('ant-design-vue/es/button').ButtonSize>;
                };
                loading: {
                    type: import('vue').PropType<boolean | {
                        delay?: number;
                    }>;
                    default: () => boolean | {
                        delay?: number;
                    };
                };
                disabled: {
                    type: BooleanConstructor;
                    default: any;
                };
                ghost: {
                    type: BooleanConstructor;
                    default: any;
                };
                block: {
                    type: BooleanConstructor;
                    default: any;
                };
                danger: {
                    type: BooleanConstructor;
                    default: any;
                };
                icon: import('vue-types').VueTypeValidableDef<any>;
                href: StringConstructor;
                target: StringConstructor;
                title: StringConstructor;
                onClick: {
                    type: import('vue').PropType<import('ant-design-vue/es/_util/EventInterface').MouseEventHandler | import('ant-design-vue/es/_util/EventInterface').MouseEventHandler[]>;
                };
                onMousedown: {
                    type: import('vue').PropType<import('ant-design-vue/es/_util/EventInterface').MouseEventHandler | import('ant-design-vue/es/_util/EventInterface').MouseEventHandler[]>;
                };
            }>>;
        };
        destroyOnClose: {
            type: BooleanConstructor;
            default: any;
        };
        wrapClassName: StringConstructor;
        maskTransitionName: StringConstructor;
        transitionName: StringConstructor;
        getContainer: {
            type: import('vue').PropType<string | false | HTMLElement | (() => HTMLElement)>;
            default: any;
        };
        zIndex: NumberConstructor;
        bodyStyle: {
            type: import('vue').PropType<import('vue').CSSProperties>;
            default: import('vue').CSSProperties;
        };
        maskStyle: {
            type: import('vue').PropType<import('vue').CSSProperties>;
            default: import('vue').CSSProperties;
        };
        mask: {
            type: BooleanConstructor;
            default: any;
        };
        keyboard: {
            type: BooleanConstructor;
            default: any;
        };
        wrapProps: ObjectConstructor;
        focusTriggerAfterClose: {
            type: BooleanConstructor;
            default: any;
        };
        modalRender: import('vue').PropType<(arg: {
            originVNode: import('ant-design-vue/es/_util/type').VueNode;
        }) => import('ant-design-vue/es/_util/type').VueNode>;
        mousePosition: {
            type: import('vue').PropType<{
                x: number;
                y: number;
            }>;
            default: {
                x: number;
                y: number;
            };
        };
    }>>, "open" | "onCancel" | "onOk">>, unknown, unknown, () => {}, boolean>;
    modalTitle: import('@yanzhen-libs/utils-vue').EpPropFinalized<StringConstructor, unknown, unknown, "通讯录", boolean>;
    modalOpen: {
        type: BooleanConstructor;
    };
    immediate: import('@yanzhen-libs/utils-vue').EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
    listType: import('@yanzhen-libs/utils-vue').EpPropFinalized<import('vue').PropType<boolean | "input" | "avatar">, unknown, unknown, () => "avatar", boolean>;
    autoClear: {
        readonly type: import('vue').PropType<import('@yanzhen-libs/utils-vue').EpPropMergeType<BooleanConstructor, unknown, unknown>>;
        readonly required: false;
        readonly validator: ((val: unknown) => boolean) | undefined;
        __epPropKey: true;
    };
    selectProps: {
        type: import('vue').PropType<Partial<{
            maxCount: number;
            placeholder: undefined | string;
            primaryIcon: undefined | string;
            autoClear: boolean;
            multiple: boolean;
        }>>;
    };
    beforeConfirm: {
        type: import('vue').PropType<ContactsSelectConfirmFn>;
    };
    onChange: any;
    onBlur: {
        type: import('vue').PropType<() => void | boolean | Promise<void | boolean>>;
    };
    onConfirm: {
        type: import('vue').PropType<ContactsSelectConfirmFn>;
    };
    onCancel: {
        type: import('vue').PropType<() => void | boolean | Promise<void | boolean>>;
    };
};
export type ContactsChangeValue = {
    [K in ContactsModelValueType]: ContactsModelValue;
};
export declare const contactsSelectEmits: {
    change: (...args: unknown[]) => boolean;
    blur: () => boolean;
    confirm: (list?: ContactsItem | ContactsItem[], record?: Record<string, ContactsModelValue>) => boolean;
    cancel: () => boolean;
};
export type ContactsSelectProps = ExtractPropTypes<typeof contactsSelectProps>;
export type ContactsSelectPropsKey = keyof ContactsSelectProps;
export type ContactsSelectEmits = ExtractEmitsTypes<typeof contactsSelectEmits>;
export type ContactsSelectEmitsKey = keyof ContactsSelectEmits;
export type ContactsComponentInstance = ComponentExposed<typeof Contacts>;
export declare const contactsSelectOmitModalProps: (props: ModalProps) => Omit<ModalProps, (typeof contactsModalIgnoreProp)[number]>;
