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 CxImage } from '../../../atoms/src/components/image/image.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 { Asset, AssetType, AssetTypeString } from '../../../types/src/content-builder';

/**
 * @summary The `cx-asset-picker` component lets users choose and clear assets for a trait/control.
 *
 * @event cx-content-builder-asset-select - Emitted when an asset is selected.
 * @event cx-asset-request-status - Emitted when the asset request status changes.
 */
export default class CxAssetPicker extends CortexElement {
    static readonly styles: import('lit').CSSResult[];
    static readonly dependencies: {
        'cx-button': typeof CxButton;
        'cx-icon-button': typeof CxIconButton;
        'cx-image': typeof CxImage;
        'cx-input': typeof CxInput;
        'cx-space': typeof CxSpace;
        'cx-typography': typeof CxTypography;
    };
    private readonly localize;
    buttonEl: CxButton;
    inputEl?: CxInput;
    /**
     * The source URL of the asset to be displayed in the picker.
     * This can be an image or a video URL.
     */
    value: string;
    name: string;
    /**
     * The type of the asset being picked.
     * It can be either an image or a video.
     */
    type: AssetType[];
    /**
     * Whether the asset picker should allow multiple assets to be selected.
     */
    multiple: boolean;
    /**
     * The accepts of the asset picker.
     */
    accepts: string[];
    required: boolean;
    /**
     * Whether the asset picker is disabled.
     */
    disabled: boolean;
    /**
     * A callback function that is called when the user requests to select an asset.
     * It should return a promise that resolves to an Asset object.
     */
    onRequestAsset: ((type: AssetTypeString, multiple?: boolean, accepts?: string[]) => Promise<Asset | Record<string, Asset>>) | undefined;
    /**
     * An optional record ID used to fetch a clean preview image, bypassing any
     * stored URL that may have transformations applied.
     */
    recordId: string;
    private previewSrc;
    /** Kept as an instance field so tests can stub this API call. */
    private apiGetAssets;
    private handleRequestAssetClick;
    handleValueChange(): Promise<void>;
    handleRecordIdChange(): Promise<void>;
    private handleDeleteClick;
    /** True when the picker accepts this asset type. */
    private acceptsType;
    private renderAssetPreview;
    render(): import('lit').TemplateResult<1>;
}
declare global {
    interface HTMLElementTagNameMap {
        'cx-asset-picker': CxAssetPicker;
    }
}
