import { ComputedRef, InjectionKey, Ref } from 'vue';
/**
 * @description: 获取menu list方法
 * @param {ISearchItem} item 已选择的key字段 为空则代表当前并未选择key字段
 * @param {string} keyword 已输入的文本
 * @return {*} menu list用于渲染选择弹层列表
 */
export declare enum ValueBehavior {
    ALL = "all",
    NEED_KEY = "need-key"
}
export declare enum DeleteBehavior {
    CHAR = "delete-char",
    VALUE = "delete-value"
}
export type GetMenuListFunc = (item: ISearchItem, keyword: string) => Promise<ISearchItem[]>;
export type ValidateValuesFunc = (item: ISearchItem, values: ICommonItem[]) => Promise<string | true>;
export type MenuSlotParams = {
    value: ICommonItem;
    id: string;
    name: string;
    onSubmit: (value: string) => void;
};
export interface ISearchSelectProvider {
    onEditClick: (item: SelectedItem, index: number) => void;
    onEditEnter: (item: SelectedItem, index: number) => void;
    onEditBlur: () => void;
    onValidate: (str: string) => void;
    onCopy: (event: ClipboardEvent, text: string, item: ISearchValue) => void;
    editKey: Ref<string>;
    searchData: ComputedRef<ISearchItem[]>;
    isClickOutside: (target: Node) => boolean;
}
export declare const SEARCH_SELECT_PROVIDER_KEY: InjectionKey<ISearchSelectProvider>;
export declare const useSearchSelectProvider: (data: ISearchSelectProvider) => void;
export declare const useSearchSelectInject: () => ISearchSelectProvider;
export declare enum SearchInputMode {
    'DEFAULT' = "default",
    'EDIT' = "edit"
}
export interface ICommonItem {
    id: string;
    name: string;
    disabled?: boolean;
    realId?: string;
    value?: Omit<ICommonItem, 'disabled' | 'value'>;
    isSelected?: boolean;
    logical?: SearchLogical;
}
export interface ISearchValue extends Omit<ICommonItem, 'disabled' | 'value'> {
    type?: SearchItemType;
    values?: Omit<ICommonItem, 'disabled' | 'logical'>[];
}
export declare const ValueSplitRegex: RegExp;
export declare const ValueSplitTestRegex: RegExp;
export interface ISearchItem {
    id: string;
    name: string;
    children?: ICommonItem[];
    multiple?: boolean;
    async?: boolean;
    noValidate?: boolean;
    placeholder?: string;
    disabled?: boolean;
    value?: ICommonItem;
    isSelected?: boolean;
    onlyRecommendChildren?: boolean;
    logical?: SearchLogical;
    showLogicalPanel?: boolean;
    isCustomMenu?: boolean;
}
export declare enum SearchLogical {
    AND = "&",
    OR = "|"
}
export interface IMenuFooterItem {
    id: 'cancel' | 'confirm';
    name: string;
    disabled?: boolean;
}
export type SearchItemType = 'condition' | 'default' | 'text';
export declare class SelectedItem {
    searchItem: ISearchItem;
    type: SearchItemType;
    id: string;
    name: string;
    values: ICommonItem[];
    condition: string;
    logical: SearchLogical;
    nameRenderKey: string;
    constructor(searchItem: ISearchItem, type?: SearchItemType);
    get multiple(): boolean;
    get placeholder(): string;
    get children(): ICommonItem[];
    get validate(): boolean;
    get inputInnerHtml(): string;
    get inputInnerText(): string;
    get keyInnerHtml(): string;
    get keyInnerText(): string;
    get showLogical(): boolean;
    get isCustomMenu(): boolean;
    isSpecialType(): boolean;
    addValue(item: ICommonItem): void;
    str2Values(str: string): ICommonItem[];
    addValues(str: string, mergeValues?: boolean): void;
    getValue(str: string): ICommonItem;
    toValue(): ISearchValue;
    toValueKey(): string;
    isInValueList(item: ICommonItem): boolean;
}
