/// <reference types="jquery" />
import { AbstractLayout, InitModelOf, LookupBoxEventMap, LookupBoxModel, LookupCall, LookupCallOrModel, LookupResult, LookupRow, PropertyChangeEvent, Status, ValueField, Widget } from '../../index';
export declare abstract class LookupBox<TValue> extends ValueField<TValue[], TValue | TValue[]> implements LookupBoxModel<TValue> {
    model: LookupBoxModel<TValue>;
    eventMap: LookupBoxEventMap<TValue>;
    self: LookupBox<any>;
    filterBox: Widget;
    lookupCall: LookupCall<TValue>;
    lookupStatus: Status;
    protected _currentLookupCall: LookupCall<TValue>;
    protected _lookupExecuted: boolean;
    /** true when value is either syncing to table or table to value */
    protected _valueSyncing: boolean;
    constructor();
    static ErrorCode: {
        NO_DATA: number;
    };
    protected _init(model: InitModelOf<this>): void;
    protected _initValue(value: TValue[]): void;
    protected abstract _initStructure(value: TValue[]): any;
    protected _render(): void;
    protected abstract _createFieldContainerLayout(): AbstractLayout;
    protected abstract _renderStructure(): any;
    protected _renderFilterBox(): void;
    protected _ensureValue(value: TValue | TValue[]): TValue[];
    protected _lookupByAll(): JQuery.Promise<LookupResult<TValue>>;
    protected _executeLookup(lookupCall: LookupCall<TValue>, abortExisting?: boolean): JQuery.Promise<LookupResult<TValue>>;
    protected _lookupByAllDone(result: LookupResult<TValue>): void;
    protected _errorStatus(): Status;
    setLookupStatus(lookupStatus: Status): void;
    clearErrorStatus(): void;
    protected _clearLookupStatus(): void;
    setLookupCall(lookupCall: LookupCallOrModel<TValue>): void;
    protected _setLookupCall(lookupCall: LookupCallOrModel<TValue>): void;
    refreshLookup(): void;
    /**
     * @returns true if a lookup call execution has been scheduled now. false otherwise.
     */
    protected _ensureLookupCallExecuted(): boolean;
    protected _formatValue(value: TValue[]): string | JQuery.Promise<string>;
    abstract getCheckedLookupRows(): LookupRow<TValue>[];
    protected _formatLookupRows(lookupRows: LookupRow<TValue>[]): string;
    protected _clear(): void;
    protected _onFilterBoxPropertyChange(event: PropertyChangeEvent<any, Widget>): void;
}
//# sourceMappingURL=LookupBox.d.ts.map