import { App, ExtractPropTypes, PropType, DefineComponent, ComponentOptionsMixin, PublicProps, ComponentProvideOptions, CreateComponentPublicInstanceWithMixins, GlobalComponents, GlobalDirectives, ComponentOptionsBase, VNodeProps, AllowedComponentProps, ComponentCustomProps } from 'vue';
import { KeyboardEventHandler } from '../_util/EventInterface';
import { InputStatus } from '../_util/statusUtils';
import { CustomSlotsType, VueNode } from '../_util/type';
import { VueTypeValidableDef, VueTypeDef } from 'vue-types';
import { filterOption } from '../vc-mentions/src/util';
import { OptionProps, BaseOptionsProps } from '../vc-mentions/src/Option';
import { Direction } from '../vc-mentions/src/mentionsProps';
interface MentionsConfig {
    prefix?: string | string[];
    split?: string;
}
export interface MentionsOptionProps {
    value: string;
    disabled?: boolean;
    label?: string | number | ((o: MentionsOptionProps) => any);
    [key: string]: any;
}
interface MentionsEntity {
    prefix: string;
    value: string;
}
export type MentionPlacement = 'top' | 'bottom';
export declare const mentionsProps: () => {
    loading: {
        type: BooleanConstructor;
        default: undefined;
    };
    onFocus: {
        type: PropType<(e: FocusEvent) => void>;
    };
    onBlur: {
        type: PropType<(e: FocusEvent) => void>;
    };
    onSelect: {
        type: PropType<(option: MentionsOptionProps, prefix: string) => void>;
    };
    onChange: {
        type: PropType<(text: string) => void>;
    };
    onPressenter: {
        type: PropType<KeyboardEventHandler>;
    };
    'onUpdate:value': {
        type: PropType<(text: string) => void>;
    };
    notFoundContent: VueTypeValidableDef<any>;
    defaultValue: StringConstructor;
    id: StringConstructor;
    status: PropType<InputStatus>;
    autofocus: {
        type: BooleanConstructor;
        default: undefined;
    };
    prefix: VueTypeDef<string | string[]>;
    prefixCls: StringConstructor;
    value: StringConstructor;
    disabled: {
        type: BooleanConstructor;
        default: undefined;
    };
    split: StringConstructor;
    transitionName: StringConstructor;
    placement: VueTypeDef<"bottom" | "top">;
    character: VueTypeValidableDef<any>;
    characterRender: FunctionConstructor;
    filterOption: {
        type: PropType< filterOption | false>;
    };
    validateSearch: FunctionConstructor;
    getPopupContainer: {
        type: PropType<() => HTMLElement>;
    };
    options: {
        type: PropType< OptionProps[]>;
        default: OptionProps[];
    };
    rows: (StringConstructor | NumberConstructor)[];
    direction: {
        type: PropType< Direction>;
    };
};
export type MentionsProps = Partial<ExtractPropTypes<ReturnType<typeof mentionsProps>>>;
export declare const MentionsOption: DefineComponent<ExtractPropTypes<{
    label: {
        default: VueNode | ((o: BaseOptionsProps) => VueNode);
        type: PropType< VueNode | ((o: BaseOptionsProps) => VueNode)>;
    };
    value: StringConstructor;
    disabled: BooleanConstructor;
    payload: {
        type: PropType<Record<string, any>>;
        default: Record<string, any>;
    };
}>, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<ExtractPropTypes<{
    label: {
        default: VueNode | ((o: BaseOptionsProps) => VueNode);
        type: PropType< VueNode | ((o: BaseOptionsProps) => VueNode)>;
    };
    value: StringConstructor;
    disabled: BooleanConstructor;
    payload: {
        type: PropType<Record<string, any>>;
        default: Record<string, any>;
    };
}>> & Readonly<{}>, {
    label: VueNode | ((o: BaseOptionsProps) => VueNode);
    disabled: boolean;
    payload: Record<string, any>;
}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;
declare const _default: {
    new (...args: any[]): CreateComponentPublicInstanceWithMixins<Readonly<ExtractPropTypes<{
        loading: {
            type: BooleanConstructor;
            default: undefined;
        };
        onFocus: {
            type: PropType<(e: FocusEvent) => void>;
        };
        onBlur: {
            type: PropType<(e: FocusEvent) => void>;
        };
        onSelect: {
            type: PropType<(option: MentionsOptionProps, prefix: string) => void>;
        };
        onChange: {
            type: PropType<(text: string) => void>;
        };
        onPressenter: {
            type: PropType<KeyboardEventHandler>;
        };
        'onUpdate:value': {
            type: PropType<(text: string) => void>;
        };
        notFoundContent: VueTypeValidableDef<any>;
        defaultValue: StringConstructor;
        id: StringConstructor;
        status: PropType<InputStatus>;
        autofocus: {
            type: BooleanConstructor;
            default: undefined;
        };
        prefix: VueTypeDef<string | string[]>;
        prefixCls: StringConstructor;
        value: StringConstructor;
        disabled: {
            type: BooleanConstructor;
            default: undefined;
        };
        split: StringConstructor;
        transitionName: StringConstructor;
        placement: VueTypeDef<"bottom" | "top">;
        character: VueTypeValidableDef<any>;
        characterRender: FunctionConstructor;
        filterOption: {
            type: PropType< filterOption | false>;
        };
        validateSearch: FunctionConstructor;
        getPopupContainer: {
            type: PropType<() => HTMLElement>;
        };
        options: {
            type: PropType< OptionProps[]>;
            default: OptionProps[];
        };
        rows: (StringConstructor | NumberConstructor)[];
        direction: {
            type: PropType< Direction>;
        };
    }>> & Readonly<{}>, () => VueNode, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, PublicProps, {
        disabled: boolean;
        autofocus: boolean;
        loading: boolean;
        options: OptionProps[];
    }, true, {}, CustomSlotsType<{
        notFoundContent?: any;
        option?: any;
        default?: any;
    }>, GlobalComponents, GlobalDirectives, string, {}, any, ComponentProvideOptions, {
        P: {};
        B: {};
        D: {};
        C: {};
        M: {};
        Defaults: {};
    }, Readonly<ExtractPropTypes<{
        loading: {
            type: BooleanConstructor;
            default: undefined;
        };
        onFocus: {
            type: PropType<(e: FocusEvent) => void>;
        };
        onBlur: {
            type: PropType<(e: FocusEvent) => void>;
        };
        onSelect: {
            type: PropType<(option: MentionsOptionProps, prefix: string) => void>;
        };
        onChange: {
            type: PropType<(text: string) => void>;
        };
        onPressenter: {
            type: PropType<KeyboardEventHandler>;
        };
        'onUpdate:value': {
            type: PropType<(text: string) => void>;
        };
        notFoundContent: VueTypeValidableDef<any>;
        defaultValue: StringConstructor;
        id: StringConstructor;
        status: PropType<InputStatus>;
        autofocus: {
            type: BooleanConstructor;
            default: undefined;
        };
        prefix: VueTypeDef<string | string[]>;
        prefixCls: StringConstructor;
        value: StringConstructor;
        disabled: {
            type: BooleanConstructor;
            default: undefined;
        };
        split: StringConstructor;
        transitionName: StringConstructor;
        placement: VueTypeDef<"bottom" | "top">;
        character: VueTypeValidableDef<any>;
        characterRender: FunctionConstructor;
        filterOption: {
            type: PropType< filterOption | false>;
        };
        validateSearch: FunctionConstructor;
        getPopupContainer: {
            type: PropType<() => HTMLElement>;
        };
        options: {
            type: PropType< OptionProps[]>;
            default: OptionProps[];
        };
        rows: (StringConstructor | NumberConstructor)[];
        direction: {
            type: PropType< Direction>;
        };
    }>> & Readonly<{}>, () => VueNode, {}, {}, {}, {
        disabled: boolean;
        autofocus: boolean;
        loading: boolean;
        options: OptionProps[];
    }>;
    __isFragment?: never;
    __isTeleport?: never;
    __isSuspense?: never;
} & ComponentOptionsBase<Readonly<ExtractPropTypes<{
    loading: {
        type: BooleanConstructor;
        default: undefined;
    };
    onFocus: {
        type: PropType<(e: FocusEvent) => void>;
    };
    onBlur: {
        type: PropType<(e: FocusEvent) => void>;
    };
    onSelect: {
        type: PropType<(option: MentionsOptionProps, prefix: string) => void>;
    };
    onChange: {
        type: PropType<(text: string) => void>;
    };
    onPressenter: {
        type: PropType<KeyboardEventHandler>;
    };
    'onUpdate:value': {
        type: PropType<(text: string) => void>;
    };
    notFoundContent: VueTypeValidableDef<any>;
    defaultValue: StringConstructor;
    id: StringConstructor;
    status: PropType<InputStatus>;
    autofocus: {
        type: BooleanConstructor;
        default: undefined;
    };
    prefix: VueTypeDef<string | string[]>;
    prefixCls: StringConstructor;
    value: StringConstructor;
    disabled: {
        type: BooleanConstructor;
        default: undefined;
    };
    split: StringConstructor;
    transitionName: StringConstructor;
    placement: VueTypeDef<"bottom" | "top">;
    character: VueTypeValidableDef<any>;
    characterRender: FunctionConstructor;
    filterOption: {
        type: PropType< filterOption | false>;
    };
    validateSearch: FunctionConstructor;
    getPopupContainer: {
        type: PropType<() => HTMLElement>;
    };
    options: {
        type: PropType< OptionProps[]>;
        default: OptionProps[];
    };
    rows: (StringConstructor | NumberConstructor)[];
    direction: {
        type: PropType< Direction>;
    };
}>> & Readonly<{}>, () => VueNode, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, {
    disabled: boolean;
    autofocus: boolean;
    loading: boolean;
    options: OptionProps[];
}, {}, string, CustomSlotsType<{
    notFoundContent?: any;
    option?: any;
    default?: any;
}>, GlobalComponents, GlobalDirectives, string, ComponentProvideOptions> & VNodeProps & AllowedComponentProps & ComponentCustomProps & {
    Option: DefineComponent<ExtractPropTypes<{
        label: {
            default: VueNode | ((o: BaseOptionsProps) => VueNode);
            type: PropType< VueNode | ((o: BaseOptionsProps) => VueNode)>;
        };
        value: StringConstructor;
        disabled: BooleanConstructor;
        payload: {
            type: PropType<Record<string, any>>;
            default: Record<string, any>;
        };
    }>, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<ExtractPropTypes<{
        label: {
            default: VueNode | ((o: BaseOptionsProps) => VueNode);
            type: PropType< VueNode | ((o: BaseOptionsProps) => VueNode)>;
        };
        value: StringConstructor;
        disabled: BooleanConstructor;
        payload: {
            type: PropType<Record<string, any>>;
            default: Record<string, any>;
        };
    }>> & Readonly<{}>, {
        label: VueNode | ((o: BaseOptionsProps) => VueNode);
        disabled: boolean;
        payload: Record<string, any>;
    }, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;
    getMentions: (value?: string, config?: MentionsConfig) => MentionsEntity[];
    install: (app: App) => App<any>;
};
export default _default;
