import { default as CxButton } from '../../../atoms/src/components/button/button.ts';
import { default as CxIconButton } from '../../../atoms/src/components/icon-button/icon-button.ts';
import { default as CxInput } from '../../../atoms/src/components/input/input.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 { CSSResultGroup } from 'lit';

/**
 * @summary The `cx-download-format-picker` component lets users choose and clear download formats.
 *
 * @event cx-download-format-select - Emitted when a format is selected.
 * @event cx-download-format-delete - Emitted when the format is cleared.
 * @event cx-asset-request-status - Emitted when the format request status changes.
 */
export default class CxDownloadFormatPicker extends CortexElement {
    static readonly styles: CSSResultGroup;
    static readonly dependencies: {
        'cx-button': typeof CxButton;
        'cx-icon-button': typeof CxIconButton;
        'cx-input': typeof CxInput;
        'cx-space': typeof CxSpace;
        'cx-typography': typeof CxTypography;
    };
    private readonly localize;
    buttonEl: CxButton;
    inputEl?: CxInput;
    /**
     * The selected format values as an object.
     * Can contain any format type arrays like {imageFormats: [], videoFormats: [], ...}
     */
    value: Record<string, string[]>;
    name: string;
    /**
     * Whether the download format picker is required.
     */
    required: boolean;
    /**
     * The ids of the assets to fetch formats for.
     */
    assetIds: string[];
    /**
     * Whether the download format picker is disabled.
     */
    disabled: boolean;
    /**
     * A callback function that is called when the user requests to select a format.
     * It should return a promise that resolves to a DownloadFormatValue object.
     */
    onRequestDownloadFormat: ((assetIds: string[], formats?: Record<string, string[]>) => Promise<Record<string, string[]>>) | undefined;
    /**
     * Map of format codes to their display labels.
     * Populated by fetching available format codes from the API.
     */
    private formatLabelMap;
    private apiGetAllFormatCodes;
    runFirstUpdated(): void;
    /**
     * Returns true if the value has any format selected.
     */
    private get hasValue();
    private handleRequestFormatClick;
    private fetchFormatLabels;
    handleValueChange(): Promise<void>;
    private handleDeleteClick;
    private renderFormatDisplay;
    render(): import('lit').TemplateResult<1>;
}
declare global {
    interface HTMLElementTagNameMap {
        'cx-download-format-picker': CxDownloadFormatPicker;
    }
}
