import { InitModelOf, LookupRow, ProposalChooserEventMap, ProposalChooserModel, RadioButtonGroup, ScoutKeyboardEvent, SmartField, SmartFieldLookupResult, SmartFieldPopup, StatusOrModel, Widget } from '../../../index';
export declare abstract class ProposalChooser<TValue, TContent extends ProposalChooserContent, TContentRow extends ProposalChooserContentRow<TValue>> extends Widget implements ProposalChooserModel<TValue> {
    model: ProposalChooserModel<TValue>;
    eventMap: ProposalChooserEventMap<TValue, TContent, TContentRow>;
    self: ProposalChooser<any, any, any>;
    parent: SmartFieldPopup<TValue>;
    smartField: SmartField<TValue>;
    activeFilterGroup: RadioButtonGroup<string>;
    status: StatusOrModel;
    statusVisible: boolean;
    touch: boolean;
    content: TContent;
    $status: JQuery;
    protected _updateStatusTimeout: number;
    constructor();
    protected _init(model: InitModelOf<this>): void;
    protected abstract _createContent(): TContent;
    /**
     * Creates a layout resetter that is used by the {@link ProposalChooserLayout}.
     */
    protected abstract _createLayoutResetter(): ProposalChooserLayoutResetter;
    abstract setLookupResult(result: SmartFieldLookupResult<TValue>): any;
    abstract selectFirstLookupRow(): any;
    abstract clearSelection(): any;
    abstract clearLookupRows(): any;
    /**
     * @param row TableRow or TreeNode (both have the same properties)
     */
    triggerLookupRowSelected(row?: TContentRow): void;
    /**
     * Implement this function to get the selected row or node from the proposal chooser.
     * The implementation depends on the widget used by the chooser (Table or Tree).
     */
    abstract selectedRow(): TContentRow;
    abstract getSelectedLookupRow(): LookupRow<TValue>;
    protected _render(): void;
    protected _remove(): void;
    protected _renderContent(): void;
    protected _renderProperties(): void;
    /**
     * Delegates an event (e.g. keyup, keydown) to the content.$container of this instance,
     * calling the JQuery trigger method.
     */
    delegateEvent(event: ScoutKeyboardEvent & JQuery.Event): void;
    delegateKeyEvent(event: ScoutKeyboardEvent & JQuery.Event): void;
    protected _renderStatus(): void;
    protected _renderStatusVisible(): void;
    protected _computeStatusVisible(): boolean;
    protected _updateStatus(): void;
    protected _updateStatusImpl(): void;
    protected _clearScreenReaderStatus(): void;
    /**
     * Replaces an ellipsis (...) at the end of the message-text with a CSS animation.
     */
    protected _setStatusMessage(message: string): void;
    protected _insertActiveFilterButton(value: string, index: number): void;
    setVirtual(virtual: boolean): void;
    setStatus(status: StatusOrModel): void;
    setBusy(busy: boolean): void;
    protected _activeFilterLabel(index: number): string;
    /**
     * Override this function to implement update scrollbar behavior.
     */
    updateScrollbars(): void;
    protected _isProposal(): boolean;
    protected _selectProposal(result: SmartFieldLookupResult<TValue>, proposals: TContentRow[]): void;
    abstract trySelectCurrentValue(): any;
}
export interface ProposalChooserLayoutResetter {
    cssSelector: string;
    modifyDom(): void;
    restoreDom(): void;
}
export interface ProposalChooserContent extends Widget {
    updateScrollbars(): void;
}
export interface ProposalChooserContentRow<TValue> {
    enabled: boolean;
    lookupRow: LookupRow<TValue>;
}
//# sourceMappingURL=ProposalChooser.d.ts.map