/// <reference types="lodash" />
import { CSSProperties, ReactElement, ReactNode } from 'react';
import { IReactionDisposer } from 'mobx';
import Field from '../../data-set/Field';
import { TextField, TextFieldProps } from '../../text-field/TextField';
import DataSet from '../../data-set/DataSet';
import Record from '../../data-set/Record';
import { FormFieldProps, RenderProps } from '../../field/FormField';
import { SelectProps } from '../../select/Select';
import { OptionProps } from '../../option/Option';
export interface FilterSelectProps extends TextFieldProps {
    paramName?: string;
    optionDataSet: DataSet;
    queryDataSet?: DataSet;
    dropdownMenuStyle?: CSSProperties;
    editable?: boolean;
    hiddenIfNone?: boolean;
    filter?: (string: any) => boolean;
    onQuery?: () => void;
    onReset?: () => void;
}
export default class FilterSelect extends TextField<FilterSelectProps> {
    static displayName: string;
    static defaultProps: {
        multiple: boolean;
        clearButton: boolean;
        editable: boolean;
        dropdownMenuStyle: {
            minWidth: string | undefined;
        };
        suffixCls: string;
        border: boolean;
        valueChangeAction: import("../../text-field/enum").ValueChangeAction;
        waitType: import("../../core/enum").WaitType;
        readOnly: boolean;
        disabled: boolean;
        noValidate: boolean;
        trim: import("../../data-set/enum").FieldTrim;
    };
    getPrefix(): ReactNode;
    selectField?: Field;
    filterText?: string;
    queryDataSet?: DataSet;
    reaction: IReactionDisposer;
    isDoClear: boolean;
    get value(): any;
    set value(value: any);
    private setFilterText;
    constructor(props: any, context: any);
    getObservableProps(props: any, context: any): any;
    on(ds?: DataSet): void;
    off(): void;
    componentWillUnmount(): void;
    doQuery: import("lodash").DebouncedFunc<() => void>;
    setText(text: any): void;
    getPlaceholders(): string[];
    getOmitPropsKeys(): string[];
    getRootDomNode(): any;
    defaultRenderer({ value, repeat }: RenderProps): any;
    getQueryRecord(): Record | undefined;
    getQueryField(fieldName: any): Field | undefined;
    addQueryParams(value: any): void;
    afterRemoveValue(value: any, repeat: number): void;
    getQueryFieldMultiple(value: any): boolean;
    handleDataSetReset(): void;
    handleDataSetUpdate({ name, value, record }: {
        name: any;
        value: any;
        record: any;
    }): void;
    handleBlur(e: any): void;
    isEditorReadOnly(): boolean;
    handleFieldChange(value: any): void;
    handleInput(e: any): void;
    handleFieldEnterDown(): void;
    handleKeyDown(e: any): void;
    handleEnterDown(): void;
    setSelectField(value: any): void;
    getQueryValues(fieldName: any): never[];
    syncValueOnBlur(): void;
    setQueryValue(fieldName: string, value: any): void;
    getFieldLabel(field: Field, record?: Record): ReactNode;
    multipleFieldExistsValue(field: Field, current?: Record): boolean;
    getInputFilterOptions(filterText: string): ReactElement<OptionProps>[];
    getFieldSelectOptions(): ReactElement<OptionProps>[];
    getFieldEditor(props: any, selectField: Field): ReactElement<FormFieldProps>;
    getFieldSelect(props: any): ReactElement<SelectProps>;
    clear(): void;
    renderWrapper(): ReactNode;
    renderMultipleEditor(props: FilterSelectProps): JSX.Element;
    handleMouseDown(e: any): void;
}
