import { ActiveRecords, RuntimeModel, RuntimeModelField, RuntimeRelationField } from '@oinone/kunlun-engine';
import { Entity } from '@oinone/kunlun-meta';
import { ObjectValue } from '@oinone/kunlun-request';
import { IQueryPageOption, IQueryPageResult } from '@oinone/kunlun-service';
import { PageSizeEnum, WidgetTrigger } from '@oinone/kunlun-vue-ui-common';
import { ValidatorInfo } from '../../../../typing';
import { FormComplexFieldProps } from '../FormComplexFieldWidget';
import { BaseSelectFieldWidget } from './BaseSelectFieldWidget';
/**
 * 关系字段下拉选的抽象类
 */
export declare abstract class FormSelectComplexFieldWidget<Value extends ActiveRecords = ActiveRecords, Field extends RuntimeRelationField = RuntimeRelationField, Props extends FormComplexFieldProps<Field> = FormComplexFieldProps<Field>> extends BaseSelectFieldWidget<Value, Field, Props> {
    protected selectedValue: Record<string, unknown>;
    protected selectedOption: Record<string, unknown>;
    protected selectedValues: Record<string, unknown>[];
    protected timeout: any;
    protected searchValue: string;
    protected queryFieldName: string;
    protected abstract fillOptions(dataList: Record<string, unknown>[], insetDefaultValue?: boolean): any;
    protected loadMoreLoading: boolean;
    protected showMoreButton: boolean;
    protected isInitOptions: boolean;
    protected totalPages: number;
    protected currentPage: number;
    protected pageSize: PageSizeEnum;
    protected options: Record<string, unknown>[];
    protected dataList: Record<string, unknown>[];
    protected get loadFunctionFun(): string | undefined;
    protected defaultConstructDataTrigger(): WidgetTrigger[];
    protected defaultClearFieldsTrigger(): WidgetTrigger[];
    protected watchValue(): void;
    loadMetadata(): Promise<void>;
    protected generatorSelectOption(optionDataList: Record<string, unknown>[]): Entity[];
    protected handleSelectOption(optionDataList: Record<string, unknown>[], referencesModel: RuntimeModel | undefined): Entity[];
    protected setQueryFieldName(queryFieldName: string): void;
    protected fillOptionsForMulti(dataList: Record<string, unknown>[]): Promise<void>;
    protected fillOptionsForSingle(dataList: Record<string, unknown>[], insetDefaultValue?: boolean): Promise<void>;
    protected get relationFieldKey(): string;
    protected get allowClear(): any;
    protected get showSearch(): any;
    protected loadMore(): Promise<void>;
    protected onSelect(e: any): Promise<void>;
    protected get maxDepth(): number;
    protected loadOriginValue(): Promise<void>;
    /**
     * 如果当前字段是m2m select， 并且有值 ,那么发起查询获取数据
     *
     *   否则就在字段获取焦点的时候查询
     */
    protected get needInitOptions(): boolean;
    protected mountedProcess(): void;
    protected initLoadOptions(): Promise<void>;
    protected loadOptions(param?: IQueryPageOption): Promise<any>;
    /**
     *
     * 多选的搜索下拉框关闭的时候，需要重新获取数据， 前置条件：没有value的时候
     *
     * 操作： 用户用多选的select搜索的时候，输入搜索内容查询了多条数据，但是用户不选中任何一条，
     *       直接失去焦点，这个时候在重新获取焦点，下拉的数据是上次搜索出来的数据,
     *       所以需要单独处理
     *
     */
    protected dropdownVisibleChange(open: boolean): void;
    protected search(searchValue: string, forceSearch?: boolean): Promise<void>;
    protected oldDomain: string;
    protected onDomainChange(newDomain: any, oldDomain: any): Promise<void>;
    protected onQueryChange(newData: any, oldData: any): Promise<void>;
    protected get maxNumber(): any;
    protected get minNumber(): any;
    /**
     * 值是否与选项列表是否一致
     *   如果为 true，那么是编辑页数据回填，在获取焦点的时候需要查询列表
     */
    protected get valueEqualOptions(): boolean;
    validator(): Promise<ValidatorInfo>;
    protected handleEmpty(forceSearch?: boolean): void;
    focus(): void;
    blur(): void;
    protected changeSearchValue(val: string): void;
    private static getRealPages;
    protected get queryData(): {};
    protected buildQueryData(): {};
    protected genQueryData(): {};
    protected innerQueryPage<T = Record<string, unknown>>(modelModel: string, option: IQueryPageOption, fields?: RuntimeModelField[], variables?: ObjectValue, context?: ObjectValue): Promise<IQueryPageResult<T>>;
    /**
     * @deprecated invalid prop
     */
    protected get renderOnParent(): any;
    /**
     * @deprecated invalid prop
     */
    protected get clearBackFillSelected(): any;
}
