import { default as CxCard } from '../../../atoms/src/components/card/card.ts';
import { default as CxFormatBytes } from '../../../atoms/src/components/format-bytes/format-bytes.ts';
import { default as CxFormatNumber } from '../../../atoms/src/components/format-number/format-number.ts';
import { default as CxFormatTime } from '../../../atoms/src/components/format-time/format-time.ts';
import { default as CxIcon } from '../../../atoms/src/components/icon/icon.ts';
import { default as CxSpace } from '../../../atoms/src/components/space/space.ts';
import { default as CxSpinner } from '../../../atoms/src/components/spinner/spinner.ts';
import { default as CxTypography } from '../../../atoms/src/components/typography/typography.ts';
import { default as CortexElement } from '../../../base/src/cortex-element.ts';
import { FormatNumberType } from '../../../types/src/format-number';
import { StatCardDisplayType, TitleFormat, ValueFormat } from '../../../types/src/stat-card';
import { CSSResultGroup } from 'lit';

/**
 * @summary CxStatCard
 * @description The `cx-stat-card` component is used to display a stat card with a title and value. Set `display-type` to `number`, `bytes`, or `time` to use built-in formatters; default `plain` keeps the legacy string value with typography.
 *
 * @example
 * <cx-stat-card card-title="Total Revenue" value="$48.2K" card-title-format="uppercase" icon="attach_money"></cx-stat-card>
 *
 * @example
 * <cx-stat-card display-type="bytes" value="1048576" card-title="Storage"></cx-stat-card>
 */
export default class CxStatCard extends CortexElement {
    #private;
    static readonly styles: CSSResultGroup;
    static readonly dependencies: {
        'cx-card': typeof CxCard;
        'cx-format-bytes': typeof CxFormatBytes;
        'cx-format-number': typeof CxFormatNumber;
        'cx-format-time': typeof CxFormatTime;
        'cx-icon': typeof CxIcon;
        'cx-space': typeof CxSpace;
        'cx-spinner': typeof CxSpinner;
        'cx-typography': typeof CxTypography;
    };
    /**
     * The title of the stat card.
     */
    cardTitle: string;
    /**
     * Main value: plain text when `display-type` is `plain`, or a number / numeric string for formatted modes.
     */
    value: string | number;
    /**
     * The icon of the stat card.
     */
    icon: string;
    /**
     * The format of the card title.
     */
    cardTitleFormat: TitleFormat;
    /**
     * The format of the value (plain text presentation only).
     */
    valueFormat: ValueFormat;
    /**
     * Whether the stat card is loading (value area shows a spinner).
     */
    loading: boolean;
    /**
     * How to render the value: plain typography, or `cx-format-number` / `cx-format-bytes` / `cx-format-time`.
     */
    type: StatCardDisplayType;
    /**
     * `Intl.NumberFormat` style when `display-type` is `number` (mapped to `cx-format-number` `type`).
     */
    typeFormat: FormatNumberType;
    /**
     * Fraction digits for `cx-format-number` when `display-type` is `number`.
     */
    maximumFractionDigits: number | undefined;
    get formattedCardTitle(): string;
    get formattedPlainValue(): string;
    render(): import('lit').TemplateResult<1>;
}
declare global {
    interface HTMLElementTagNameMap {
        'cx-stat-card': CxStatCard;
    }
}
