import { default as CxFormatBytes } from '../../../../../atoms/src/components/format-bytes/format-bytes.ts';
import { default as CxIcon } from '../../../../../atoms/src/components/icon/icon.ts';
import { default as CxIconButton } from '../../../../../atoms/src/components/icon-button/icon-button.ts';
import { default as CxLineClamp } from '../../../../../atoms/src/components/line-clamp/line-clamp.ts';
import { default as CxProgressBar } from '../../../../../atoms/src/components/progress-bar/progress-bar.ts';
import { default as CxRelativeTime } from '../../../../../atoms/src/components/relative-time/relative-time.ts';
import { default as CxSpinner } from '../../../../../atoms/src/components/spinner/spinner.ts';
import { default as CxTooltip } from '../../../../../atoms/src/components/tooltip/tooltip.ts';
import { default as CxTypography } from '../../../../../atoms/src/components/typography/typography.ts';
import { default as CortexElement } from '../../../../../base/src/cortex-element.ts';
import { Asset } from '../../../../../types/src/file-on-demand';
import { CSSResultGroup, PropertyValues, TemplateResult } from 'lit';
import { ASSET_LIST_TYPES } from '../../file-on-demand.constants';
import { default as CxFileOnDemandPinnedStatus } from '../file-on-demand-pinned-status.ts/file-on-demand-pinned-status';

/**
 * @summary Renders a file-on-demand asset row with status and actions.
 * @description Displays thumbnail/metadata and upload progress, then exposes contextual actions for drive navigation, favorite/pin state, and upload lifecycle controls.
 *
 * @event {{ asset: Asset | undefined }} cx-open-drive - Emitted when the user opens an asset in drive.
 * @event {{ assetId: string }} cx-mark-favorite - Emitted when the user marks an asset as favorite.
 * @event {{ assetId: string }} cx-unmark-favorite - Emitted when the user removes an asset from favorites.
 * @event {{ assetId: string }} cx-file-on-demand-pin - Emitted when the user pins an asset.
 * @event {{ assetId: string }} cx-file-on-demand-unpin - Emitted when the user unpins an asset.
 * @event {{ assetId: string }} cx-retry-upload - Emitted when the user retries a failed or canceled upload.
 * @event {{ assetId: string }} cx-pause-upload - Emitted when the user pauses an upload.
 * @event {{ assetId: string }} cx-resume-upload - Emitted when the user resumes an upload.
 * @event {{ assetId: string }} cx-cancel-upload - Emitted when the user cancels an upload.
 */
export default class CxFileOnDemandAsset extends CortexElement {
    static readonly styles: CSSResultGroup;
    static readonly dependencies: {
        'cx-file-on-demand-pinned-status': typeof CxFileOnDemandPinnedStatus;
        'cx-format-bytes': typeof CxFormatBytes;
        'cx-icon': typeof CxIcon;
        'cx-icon-button': typeof CxIconButton;
        'cx-line-clamp': typeof CxLineClamp;
        'cx-progress-bar': typeof CxProgressBar;
        'cx-relative-time': typeof CxRelativeTime;
        'cx-spinner': typeof CxSpinner;
        'cx-tooltip': typeof CxTooltip;
        'cx-typography': typeof CxTypography;
    };
    private readonly localize;
    asset: Asset;
    listType: (typeof ASSET_LIST_TYPES)[keyof typeof ASSET_LIST_TYPES];
    /** The assets that are currently being marked/unmarked as favorite. */
    favoriteInProgressAssets: string[];
    /** The assets that are currently being pinned/unpinning. */
    pinInProgressAssets: string[];
    /** Tracks whether the current thumbnail URL failed to load. */
    private thumbnailLoadError;
    /** Failed or canceled uploads: show open-in-drive and retry. */
    get showRetryableUploadActions(): boolean;
    get showInProgressActions(): boolean;
    get showNormalActions(): boolean;
    get showPinnedActions(): boolean;
    get isFolder(): boolean;
    get thumbnailUrl(): string;
    get showThumbnailPlaceholder(): boolean;
    protected willUpdate(changedProperties: PropertyValues<this>): void;
    private handleImgError;
    private handleImgLoad;
    private handleOpenDriveClick;
    private openDrive;
    private unmarkFavorite;
    private markFavorite;
    private pinAsset;
    private unpinAsset;
    private handlePinClick;
    private handleFavoriteClick;
    private retryUpload;
    private handleRetryUploadClick;
    private resumeUpload;
    private pauseUpload;
    private cancelUpload;
    private handlePauseUploadClick;
    private handleCancelUploadClick;
    private renderProgress;
    private renderUploadingStatus;
    private renderPinnedStatus;
    private renderThumbnailContent;
    private renderThumbnail;
    private renderOpenDriveButton;
    private renderNormalActions;
    private renderRetryableUploadActions;
    private renderInProgressActions;
    private renderPinnedActions;
    render(): TemplateResult<1>;
}
declare global {
    interface HTMLElementTagNameMap {
        'cx-file-on-demand-asset': CxFileOnDemandAsset;
    }
}
