/**
 * @license
 * Copyright 2023 Tyler Technologies, Inc. 
 * License: Apache-2.0
 */
import { ILinearProgressComponent } from '../linear-progress';
import { IListComponent } from '../list/list';
import { IPopupComponent } from '../popup';
import { IListDropdownOpenConfig, IListDropdownOption, IListDropdownOptionGroup, ListDropdownAsyncStyle } from './list-dropdown-constants';
export declare enum ListDropdownOptionType {
    Option = 0,
    Group = 1
}
/**
 * Creates the floating dropdown element container.
 * @param config
 * @param targetElement
 */
export declare function createDropdown(config: IListDropdownOpenConfig, targetElement: HTMLElement): IPopupComponent;
export declare function createPopupDropdown(config: IListDropdownOpenConfig, targetElement: HTMLElement): IPopupComponent;
export declare function createList(config: IListDropdownOpenConfig): IListComponent;
/**
 * Creates the list to place inside of the dropdown.
 * @param config
 */
export declare function createListItems(config: IListDropdownOpenConfig, listElement: IListComponent, options?: Array<IListDropdownOption | IListDropdownOptionGroup>, startIndex?: number, renderSelected?: boolean): void;
export declare function createCheckboxElement(selected: boolean): HTMLElement;
export declare function createAsyncElement(asyncStyle?: ListDropdownAsyncStyle): HTMLElement;
export declare function createBusyElement(): ILinearProgressComponent;
/**
 * Determines if the provided options are of the specified type.
 * @param options The options either grouped or individual.
 * @param type The type of option to detect.
 */
export declare function isListDropdownOptionType(options: Array<IListDropdownOption | IListDropdownOptionGroup>, type: ListDropdownOptionType): type is ListDropdownOptionType;
export declare function getFlattenedOptions(options: Array<IListDropdownOptionGroup | IListDropdownOption>): IListDropdownOption[];
