import { default as CxButton } from '../../../../../atoms/src/components/button/button.ts';
import { default as CxDetails } from '../../../../../atoms/src/components/details/details.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 CxTypography } from '../../../../../atoms/src/components/typography/typography.ts';
import { default as CortexElement } from '../../../../../base/src/cortex-element.ts';
import { Proxy } from '../../../../../types/src/asset-link-format';
import { CSSResultGroup, TemplateResult } from 'lit';

export type CxAssetLinkFormatProxyChangeEvent = CustomEvent<Proxy>;
/**
 * @summary The `cx-asset-link-format-proxy` component is used to select a proxy format for an asset link.
 *
 * @event `cx-asset-link-format-proxy-change` - Emitted when the proxy format is changed.
 */
export default class CxAssetLinkFormatProxy extends CortexElement {
    static readonly styles: CSSResultGroup;
    static readonly dependencies: {
        'cx-button': typeof CxButton;
        'cx-details': typeof CxDetails;
        'cx-icon': typeof CxIcon;
        'cx-option': typeof CxOption;
        'cx-select': typeof CxSelect;
        'cx-space': typeof CxSpace;
        'cx-typography': typeof CxTypography;
    };
    private readonly localize;
    /**
     * The base element for the details section.
     * This is used to control the visibility of the details section and to handle events related to showing and hiding the details.
     */
    base: CxDetails;
    /**
     * The open state of the details section.
     * @default false
     */
    open: boolean;
    /**
     * The value of the selected proxy format.
     * This is a string that represents the ID of the selected proxy format.
     * @default ''
     */
    value: string;
    /**
     * The list of available proxy formats.
     * This is an array of objects, each containing an `id` and a `proxyLabel`.
     * The `id` is the unique identifier for the proxy format, and the `proxyLabel` is the label displayed in the dropdown.
     * @default []
     */
    items: Proxy[];
    /**
     * The loading state of the component.
     * This is used to indicate that an operation is in progress, such as applying a new quality value.
     * @default false
     */
    loading: boolean;
    /**
     * The scoped value for the selected proxy format.
     * This is used to manage the state of the selected proxy format within the component.
     * It is updated when the `value` property changes or when the details section is closed.
     * @default ''
     */
    scopedValue: string;
    handleValueChange(): void;
    handleOpenChange(): void;
    private handleProxyChange;
    /**
     * Handles the application of the selected proxy format.
     * This method emits a custom event with the selected proxy format when the "Apply" button is clicked.
     * It prevents further actions if the component is currently loading.
     */
    private handleApply;
    /**
     * Handles showing the details section.
     * This method prevents the event from propagating if the target is not the base element, such as tooltips, select dropdowns, or other interactive elements inside the details.
     * This ensures that the details section is only shown when the user interacts with the base element.
     */
    private onShowDetails;
    /**
     * Handles hiding the details section.
     * This method prevents the event from propagating if the target is not the base element, such as tooltips, select dropdowns, or other interactive elements inside the details.
     * This ensures that the details section is only hidden when the user interacts with the base element.
     */
    private onHideDetails;
    render(): TemplateResult;
}
declare global {
    interface HTMLElementTagNameMap {
        'cx-asset-link-format-proxy': CxAssetLinkFormatProxy;
    }
    interface GlobalEventHandlersEventMap {
        'cx-asset-link-format-proxy-change': CxAssetLinkFormatProxyChangeEvent;
    }
}
