import { Observable } from 'rxjs';
import { Field, FieldConfig } from './field';
export interface LookupFieldConfig extends FieldConfig {
    multiple?: boolean;
    showSearch?: boolean;
    searchFields: any[];
    searchGridFields: any[];
    lookupSuggestions: any[];
    suggestionsObservable: Observable<any[]>;
    searchObservable: Observable<{
        gridData: any[];
        totalRecords: number;
        searchTotalRecordsLabel?: string;
    }>;
    dataKey: string;
    lookupDisplayField: string;
    searchTitle: string;
    searchEmptyTitle: string;
    filterLabel: string;
    filterTitle?: string;
    clearLabel: string;
    cancelLabel: string;
    selectLabel: string;
    emptyMessage: string;
    recordLabel: string;
    recordsLabel: string;
    emptyFieldLabel: string;
    appendTo?: string;
    autocompleteForceSelection?: boolean;
    showAddOption: boolean;
    showEditOption: boolean;
    showRemoveOption: boolean;
    onLookupRequest: (query: string) => void;
    onSearchRequest: (event: any) => void;
    onSelect?: (event: any) => void;
    onUnselect?: (event: any) => void;
    onClear?: (event: any) => void;
    onBlur?: (event: FocusEvent) => void;
    onAdd?: () => void;
    onEdit?: (selectedItem: unknown) => void;
    onRemove?: (selectedItems: unknown[]) => void;
    onClearButtonClick?: () => void;
}
export declare class LookupField extends Field implements LookupFieldConfig {
    multiple: boolean;
    showSearch: boolean;
    searchFields: any[];
    searchGridFields: any[];
    lookupSuggestions: any[];
    suggestionsObservable: Observable<any[]>;
    searchObservable: Observable<{
        gridData: any[];
        totalRecords: number;
        searchTotalRecordsLabel?: string;
    }>;
    dataKey: string;
    lookupDisplayField: string;
    searchTitle: string;
    searchEmptyTitle: string;
    filterLabel: string;
    filterTitle: string;
    clearLabel: string;
    cancelLabel: string;
    selectLabel: string;
    recordLabel: string;
    recordsLabel: string;
    emptyFieldLabel: string;
    emptyMessage: string;
    appendTo?: string;
    autocompleteForceSelection: boolean;
    showAddOption: boolean;
    showEditOption: boolean;
    showRemoveOption: boolean;
    defaultFilter: DefaultFilter[];
    sortableColumnsDisabled: string[];
    onLookupRequest: (query: string) => void;
    onSearchRequest: (event: any) => void;
    onClear?: (event: any) => void;
    onBlur?: (event: FocusEvent) => void;
    onAdd?: () => void;
    onEdit?: (selectedItem: unknown) => void;
    onRemove?: (selectedItems: unknown[]) => void;
    onClearButtonClick?: () => void;
    private _gridData;
    private _searchTotalRecords;
    private _searchTotalRecordsLabel;
    constructor(config: LookupFieldConfig);
    get gridData(): any[];
    get searchTotalRecords(): number;
    get searchTotalRecordsLabel(): string;
    onSelect: (event: any) => void;
    onUnselect: (event: any) => void;
}
export type DefaultFilter = {
    field: string;
    value: string | (() => string);
};
