/**
 * @file Stat.tsx
 * @input Uses React, StyleX, and Astryx core theme tokens/utilities
 * @output Exports Stat component, StatProps, StatDelta, StatDeltaDirection,
 *   StatDeltaSentiment, StatSize types
 * @position Lab implementation; consumed by packages/lab/src/index.ts
 *
 * SYNC: When modified, update these files to stay in sync:
 * - /packages/lab/src/Stat/Stat.doc.mjs (props table, features, implementation notes)
 * - /packages/lab/src/Stat/Stat.test.tsx (tests for new/changed behavior)
 * - /packages/lab/src/Stat/index.ts (exports if types change)
 * - /apps/storybook/stories/Stat.stories.tsx (examples)
 */
import type { ReactNode } from 'react';
import type { BaseProps } from '@astryxdesign/core';
/** Trend direction of a delta; picks the glyph (up/down arrow, flat dash). */
export type StatDeltaDirection = 'up' | 'down' | 'flat';
/** Color tone of a delta; overrides the default direction mapping. */
export type StatDeltaSentiment = 'positive' | 'negative' | 'neutral';
/** Size variant controlling the value's font size. */
export type StatSize = 'sm' | 'md' | 'lg';
/**
 * Change indicator rendered next to the value: a direction glyph plus
 * colored, pre-formatted change text.
 */
export interface StatDelta {
    /** Pre-formatted change text, e.g. "+12.4%" or "-8 ms". */
    value: string;
    /** Trend direction. Picks the glyph and the default sentiment. */
    direction: StatDeltaDirection;
    /**
     * Overrides the direction-to-color mapping for inverted metrics where
     * down is good (error rate, latency): up maps to positive, down to
     * negative, flat to neutral by default.
     */
    sentiment?: StatDeltaSentiment;
}
export interface StatProps extends BaseProps<HTMLElement> {
    /** Ref forwarded to the root element */
    ref?: React.Ref<HTMLDivElement>;
    /**
     * Metric name shown above the value, e.g. "Total requests".
     */
    label: string;
    /**
     * The headline metric. Rendered large with tabular numerals so digits
     * keep a fixed width. Pass a pre-formatted string like "1.2M".
     */
    value: ReactNode;
    /**
     * Change indicator rendered next to the value: an up/down/flat glyph
     * plus colored text. `sentiment` overrides the direction color mapping
     * for inverted metrics like error rate.
     */
    delta?: StatDelta;
    /**
     * Muted supporting line under the value, e.g. "vs. previous 30 days".
     */
    description?: string;
    /**
     * Trend slot rendered below the text content, e.g. a sparkline or mini
     * chart. Stat does not render a chart itself.
     */
    media?: ReactNode;
    /**
     * Size variant controlling the value's font size.
     * @default 'md'
     */
    size?: StatSize;
}
/**
 * A KPI/metric display: label, large tabular-nums value, optional
 * sentiment-aware delta, supporting description, and a trend media slot.
 *
 * The delta's color follows its direction (up=success, down=error,
 * flat=secondary) unless `sentiment` overrides it — use that for inverted
 * metrics where a drop is good (error rate, latency, churn).
 *
 * Styles use Astryx theme tokens via StyleX.
 * Wrap your app in `<Theme>` to apply a theme.
 *
 * @example
 * ```
 * <Stat label="Total requests" value="2.4M" delta={{value: '+12.4%', direction: 'up'}} />
 * <Stat
 *   label="Error rate"
 *   value="0.42%"
 *   delta={{value: '-0.08%', direction: 'down', sentiment: 'positive'}}
 *   description="vs. previous 30 days"
 * />
 * <Stat label="Active users" value="18,204" size="lg" media={<Sparkline />} />
 * ```
 */
export declare function Stat({ label, value, delta, description, media, size, xstyle, className, style, ref, ...props }: StatProps): import("react").JSX.Element;
export declare namespace Stat {
    var displayName: string;
}
//# sourceMappingURL=Stat.d.ts.map