export declare const NO_SELECTION_VALUE = "";
export declare const ADDITIONAL_GROUP_KEY = "__additional__";
export interface BaseDropdownOption<T = string> {
    label: string;
    value: T;
}
export interface BaseDropdownGroup<T = string, G extends string = never> {
    key: G;
    label: string;
    values: T[];
}
export interface OrganizedDropdownGroup<T, G extends string> {
    key: G | typeof ADDITIONAL_GROUP_KEY | typeof NO_SELECTION_VALUE;
    label: string | undefined;
    options: BaseDropdownOption<T>[];
}
export interface OrganizeDropdownGroupsResult<T, G extends string> {
    organizedGroups: OrganizedDropdownGroup<T, G>[];
    organizedOptions: BaseDropdownOption<T>[];
}
export declare function buildAllOptions<T extends string>(options: BaseDropdownOption<T>[], allowUnselect: boolean, unselectLabel?: string): BaseDropdownOption<T>[];
export declare function filterOptions<T extends string>(allOptions: BaseDropdownOption<T>[], searchInput: string): BaseDropdownOption<T>[];
export declare function organizeDropdownGroups<T extends string, G extends string>(filteredOptions: BaseDropdownOption<T>[], groups: BaseDropdownGroup<T, G>[] | undefined, additionalGroup: 'all' | 'others', additionalGroupLabel: string | undefined): OrganizeDropdownGroupsResult<T, G>;
