import { type ComponentPropsWithoutRef, type MouseEvent, type ReactNode } from "react";
import { type CardRadius } from "../Card";
import { type CountUpProps } from "../CountUp";
import { type SparklineProps } from "../Sparkline";
export type MetricDeltaTrend = "up" | "down" | "neutral";
/**
 * Whether an "up" delta is good or bad. For most metrics (rows, MRR,
 * success rate), up is good (`"positive"`). For metrics where lower is
 * better (errors, latency, lag), pass `"negative"` and the chip tone
 * inverts automatically — up arrow renders red, down arrow renders
 * green.
 */
export type MetricDeltaDirection = "positive" | "negative";
export interface MetricCardDelta {
    /** The delta value to render (e.g. "12.4%", "+1.2k", "−3"). */
    value: ReactNode;
    /** Trend direction — drives the arrow glyph. */
    trend?: MetricDeltaTrend;
    /** Optional trailing label (e.g. "vs yesterday"). */
    suffix?: ReactNode;
    /**
     * Override the chip tone. By default, `up` is good (success) and
     * `down` is bad (failed); pass `direction="negative"` to invert.
     */
    direction?: MetricDeltaDirection;
}
export interface MetricCardSparkline extends Omit<SparklineProps, "data" | "ref"> {
    data: number[];
}
export interface MetricCardProps extends Omit<ComponentPropsWithoutRef<"div">, "title" | "onChange" | "onClick" | "onDrag" | "onDragStart" | "onDragEnd" | "onAnimationStart"> {
    /** Metric name (the small label at the top — "ROWS PROCESSED"). */
    label: ReactNode;
    /** Heading level for the label. Default `"h3"`. */
    labelAs?: "h1" | "h2" | "h3" | "h4" | "h5" | "h6";
    /** Period qualifier next to the label (e.g. "Last 24h"). */
    period?: ReactNode;
    /** Optional icon rendered to the left of the label. */
    icon?: ReactNode;
    /** The main number. Pass a `ReactNode` for full control, or a `number` to opt-in to `CountUp` animation. */
    value: ReactNode | number;
    /**
     * Forwarded to `CountUp` when `value` is numeric. Use this to set
     * `decimals`, `formatValue`, `prefix`, `suffix`, `duration`, etc.
     * Ignored when `value` is a ReactNode.
     */
    countUp?: Omit<CountUpProps, "value" | "ref">;
    /** Static suffix appended after the value (e.g. "%", "MB"). Only applied when `value` is a `ReactNode`. */
    unit?: ReactNode;
    /** Delta chip below the value. */
    delta?: MetricCardDelta;
    /** Optional sparkline at the bottom. */
    sparkline?: MetricCardSparkline;
    /** Footer link / action ("View detail →"). */
    footer?: ReactNode;
    /** Optional right-aligned slot in the head row (icon button, badge). */
    trailing?: ReactNode;
    /** Visual size. Default `"md"`. */
    size?: "sm" | "md" | "lg";
    /** Render the card as a real `<a>` when href is provided. */
    href?: string;
    /** Whole-card click handler. */
    onClick?: (e: MouseEvent<HTMLDivElement>) => void;
    /** Disable interaction. */
    disabled?: boolean;
    /** Loading skeleton state. */
    loading?: boolean;
    /** Card corner radius (passes through). */
    radius?: CardRadius;
}
export declare const MetricCard: import("react").ForwardRefExoticComponent<MetricCardProps & import("react").RefAttributes<HTMLDivElement>>;
//# sourceMappingURL=MetricCard.d.ts.map