/**
 * @license
 * Copyright 2023 Tyler Technologies, Inc. 
 * License: Apache-2.0
 */
import { IListDropdownAdapter } from './list-dropdown-adapter';
import { IListDropdownConfig, IListDropdownOption, IListDropdownOptionGroup } from './list-dropdown-constants';
export interface IListDropdownFoundation {
    dropdownElement: HTMLElement | undefined;
    open(): void;
    close(): void;
    getActiveOptionIndex(): number;
    getActiveOption(): IListDropdownOption | undefined;
    toggleOptionMultiple(index: number, isSelected: boolean): void;
    activateSelectedOption(): void;
    activateFirstOption(): number;
    activateOption(index: number): void;
    setSelectedValues(values: any): void;
    clearActiveOption(): void;
    setOptions(options: Array<IListDropdownOption | IListDropdownOptionGroup>): void;
    appendOptions(options: Array<IListDropdownOption | IListDropdownOptionGroup>): void;
    scrollSelectedOptionIntoView(animate?: boolean): void;
    setScrollBottomListener(listener: () => void, threshold?: number): void;
    removeScrollBottomListener(): void;
    setBusyVisibility(isVisible: boolean): void;
    handleKey(key: string): void;
}
export declare class ListDropdownFoundation implements IListDropdownFoundation {
    private _adapter;
    private _config;
    private _open;
    private _selectListener;
    private _closeListener;
    private _scrollEndListener;
    constructor(_adapter: IListDropdownAdapter, config: IListDropdownConfig);
    destroy(): void;
    open(): void;
    close(): void;
    private _onSelect;
    getActiveOptionIndex(): number;
    getActiveOption(): IListDropdownOption | undefined;
    toggleOptionMultiple(index: number, isSelected: boolean): void;
    activateSelectedOption(): void;
    activateFirstOption(): number;
    activateLastOption(): number;
    activateOption(index: number, animate?: boolean): void;
    activateInitialOption(): void;
    setSelectedValues(values: any[]): void;
    clearActiveOption(): void;
    setOptions(options: Array<IListDropdownOption | IListDropdownOptionGroup>): void;
    appendOptions(options: Array<IListDropdownOption | IListDropdownOptionGroup>): void;
    get dropdownElement(): HTMLElement | undefined;
    scrollSelectedOptionIntoView(animate?: boolean): void;
    setScrollBottomListener(listener: () => void, threshold?: number): void;
    removeScrollBottomListener(): void;
    setBusyVisibility(isVisible: boolean): void;
    handleKey(key: string): void;
    private _canSelectOption;
    private _getNextActiveOptionIndex;
    private _getPreviousHighlightableOptionIndex;
    private _getNextHighlightableOptionIndex;
    private get _flatOptions();
    private get _nonDividerOptions();
}
