import * as au from "../aurelia";
import { LookupState } from "./lookup-state";
import { ILookupOptionsFunctionParameter } from "./i-lookup-options-function-parameter";
import { DiscardablePromise } from "../common/discardable-promise";
import { ConfigBuilder } from "../config-builder";
export declare type BlurAction = "Nothing" | "ClearOnNoMatch" | "SetOnMatch" | "Both";
export declare class MdLookup {
    private element;
    private taskQueue;
    private configBuilder;
    constructor(element: Element, taskQueue: au.TaskQueue, configBuilder: ConfigBuilder);
    static searching: symbol;
    static error: symbol;
    errorMessage: string;
    static id: number;
    controlId: string;
    dropdown: HTMLElement;
    dropdownUl: HTMLElement;
    input: HTMLInputElement;
    labelElement: HTMLLabelElement;
    logger: au.Logger;
    validateResults: au.ValidateResult[];
    validationClass: string;
    blurAction: BlurAction;
    filter: string;
    searchPromise: DiscardablePromise<unknown[]>;
    suppressFilterChanged: boolean;
    filterChanged(): Promise<void>;
    setFilter(filter: string): void;
    label: string;
    value: unknown;
    suppressValueChanged: boolean;
    valueChanged(newValue: unknown): Promise<void>;
    setValue(value: unknown): void;
    optionsFunction: ((p: ILookupOptionsFunctionParameter<unknown>) => Promise<unknown[]>) | unknown[];
    getOptions: (p: ILookupOptionsFunctionParameter<unknown>) => Promise<unknown[]>;
    displayFieldName: ((option: unknown) => string) | string;
    valueFieldName: ((option: unknown) => unknown) | string;
    readonly: boolean;
    placeholder: string;
    debounce: number;
    preloadOptions: boolean;
    LookupState: typeof LookupState;
    state: LookupState;
    bindingContext: object;
    options: unknown[];
    optionsChanged(): void;
    isOpen: boolean;
    updateFilterBasedOnValue(): Promise<void>;
    fixDropdownSizeIfTooBig(): void;
    open(): void;
    close(): void;
    blur(): void;
    optionsContainsText(txt: string): boolean;
    focus(): void;
    updateLabel(): void;
    bind(bindingContext: object, overrideContext: object): Promise<void>;
    attached(): Promise<void>;
    detached(): void;
    select(option: unknown): void;
    getValue(option: unknown): unknown;
    getDisplayValue(option: unknown): string;
    mdUnrenderValidateResults: (results: au.ValidateResult[], renderer: au.MaterializeFormValidationRenderer) => void;
    mdRenderValidateResults: (results: au.ValidateResult[], renderer: au.MaterializeFormValidationRenderer) => void;
}
