import { default as CxDivider } from '../../../atoms/src/components/divider/divider.ts';
import { default as CxIcon } from '../../../atoms/src/components/icon/icon.ts';
import { default as CxOption } from '../../../atoms/src/components/option/option.ts';
import { default as CxSelect } from '../../../atoms/src/components/select/select.ts';
import { default as CxSpace } from '../../../atoms/src/components/space/space.ts';
import { default as CortexElement } from '../../../base/src/cortex-element.ts';
import { CxAssetPickerSelectEvent } from '../../../events/src/events.ts';
import { default as CxAssetPicker } from '../asset-picker/asset-picker.ts';
import { Asset, AssetTypeString } from '../../../types/src/content-builder';
import { CSSResultGroup, nothing } from 'lit';

type IconData = {
    name: string;
    searchString: string;
    version: number;
};
/**
 * @summary <cx-icon-picker> is a component that allows the user to select an icon from a list of icons.
 */
export default class CxIconPicker extends CortexElement {
    static readonly styles: CSSResultGroup;
    static readonly dependencies: {
        'cx-asset-picker': typeof CxAssetPicker;
        'cx-divider': typeof CxDivider;
        'cx-icon': typeof CxIcon;
        'cx-option': typeof CxOption;
        'cx-select': typeof CxSelect;
        'cx-space': typeof CxSpace;
    };
    private readonly localize;
    private select;
    private customOption;
    value: {
        name: string;
        src: string;
    };
    /**
     * Adds a clear button when the select is not empty.
     */
    clearable: boolean;
    /**
     * Function to request an asset.
     * This is used to open the asset picker dialog when the user selects an asset from the DAM.
     * The function should return a promise that resolves to an Asset object.
     * @param type - The type of asset to request (image, video, etc.).
     * @returns A promise that resolves to an Asset object.
     * @default undefined
     */
    onRequestAsset: ((type: AssetTypeString, multiple?: boolean) => Promise<Asset | Record<string, Asset>>) | undefined;
    searchTerm: string;
    /**
     * Need to mount or unmount virtualizer when select is shown or hidden
     * Since the virtualizer have a defect that not re-render when the parent is hidden once
     */
    private showVirtualizer;
    get filteredIcons(): IconData[];
    constructor();
    runFirstUpdated(): void;
    renderOption(icon: IconData): import('lit').TemplateResult<1> | typeof nothing;
    handleSelectValueChange(): void;
    handleSelectShow(): void;
    handleSelectHide(): void;
    /**
     * Mount virtualizer when select is focused (before it opens)
     */
    handleSelectFocus(): void;
    handleContentBuilderAssetSelect(event: CxAssetPickerSelectEvent): Promise<void>;
    handleContentBuilderAssetDelete(): Promise<void>;
    setSelectOptionCurrent(option: HTMLElement, current?: boolean): void;
    selectGetOptionLabel(option: HTMLElement): string;
    selectFilterCallback(option: HTMLElement, value: string): boolean;
    renderCustomIconPicker(): import('lit').TemplateResult<1>;
    render(): import('lit').TemplateResult<1>;
}
declare global {
    interface HTMLElementTagNameMap {
        'cx-icon-picker': CxIconPicker;
    }
}
export {};
