import { default as CxButton } from '../../../../../atoms/src/components/button/button.ts';
import { default as CxDialog } from '../../../../../atoms/src/components/dialog/dialog.ts';
import { default as CxIconButton } from '../../../../../atoms/src/components/icon-button/icon-button.ts';
import { default as CxSpace } from '../../../../../atoms/src/components/space/space.ts';
import { default as CxTypography } from '../../../../../atoms/src/components/typography/typography.ts';
import { default as CortexElement } from '../../../../../base/src/cortex-element.ts';
import { default as CxFolderSelect } from '../../../../../molecules/src/folder-select/folder-select.ts';
import { FolderSelectVariant } from '../../../../../types/src/folder-select';
import { CSSResultGroup } from 'lit';

export type CxContentBuilderFolderChangeEvent = CustomEvent<{
    id?: string;
    representativeAssetId?: string;
}>;
export type CxContentBuilderFolderDeleteEvent = CustomEvent<void>;
/**
 * @summary CxFolderPicker
 */
export default class CxFolderPicker extends CortexElement {
    static readonly styles: CSSResultGroup;
    static readonly dependencies: {
        'cx-button': typeof CxButton;
        'cx-dialog': typeof CxDialog;
        'cx-folder-select': typeof CxFolderSelect;
        'cx-icon-button': typeof CxIconButton;
        'cx-space': typeof CxSpace;
        'cx-typography': typeof CxTypography;
    };
    private readonly localize;
    dialog: CxDialog;
    selectEl: CxFolderSelect;
    /**
     * The boundary property of the confirm popover's dropdown/dialog popup.
     */
    boundary: HTMLElement;
    name: string;
    value: string;
    variant: FolderSelectVariant;
    useFullPath: boolean;
    /**
     * Allows selecting multiple folders. Only applies when `variant` is `select`.
     * When enabled, `cx-content-builder-folder-change` emits `detail.id` as a space-separated
     * list of selected folder ids and `detail.representativeAssetId` from the first selected folder.
     */
    multiple: boolean;
    /**
     * The select's required attribute.
     */
    required: boolean;
    selectedLabel: string;
    private open;
    private _selectedFolder;
    private _apiGetFolders;
    get selectedFolder(): {
        id?: string;
        representativeAssetId?: string;
    } | undefined;
    fetchSelectedFolder(): Promise<import('../../../../../types/src/folder-select').Folder | null>;
    private handleSelectionChange;
    private handleRequestFolderClick;
    private handleClear;
    private handleRequestClose;
    private handleSaveClick;
    handleValueChange(): Promise<void>;
    render(): import('lit').TemplateResult<1>;
}
declare global {
    interface HTMLElementTagNameMap {
        'cx-folder-picker': CxFolderPicker;
    }
    interface GlobalEventHandlersEventMap {
        'cx-content-builder-folder-change': CxContentBuilderFolderChangeEvent;
        'cx-content-builder-folder-delete': CxContentBuilderFolderDeleteEvent;
    }
}
