import { type ComponentPropsWithoutRef, type MouseEvent, type ReactNode } from "react";
import { type CardRadius } from "../Card";
export type AlertSeverity = "P0" | "P1" | "P2" | "P3" | "info";
export type AlertState = "open" | "acknowledged" | "resolved" | "muted";
export interface AlertCardResource {
    /** Display label (e.g. "orders_sync"). */
    label: ReactNode;
    /** Optional category prefix (e.g. "Pipeline"). Rendered muted before the label. */
    kind?: ReactNode;
}
export interface AlertCardAction {
    /** Display label — also used as aria-label when only a glyph is shown. */
    label: string;
    /** Optional icon node. */
    icon?: ReactNode;
    /**
     * Visual emphasis.
     * - primary  → Ack action (filled accent)
     * - success  → Resolve action (filled success tone)
     * - danger   → Escalate action (filled red)
     * - neutral  → tertiary, default
     */
    tone?: "primary" | "success" | "danger" | "neutral";
    onClick?: (e: MouseEvent<HTMLButtonElement>) => void;
    disabled?: boolean;
}
export interface AlertCardProps extends Omit<ComponentPropsWithoutRef<"div">, "title" | "onChange" | "onClick" | "onDrag" | "onDragStart" | "onDragEnd" | "onAnimationStart"> {
    /** Severity / priority level. Drives the stripe + badge color. */
    severity: AlertSeverity;
    /** Override the severity badge label (defaults to the severity code). */
    severityLabel?: ReactNode;
    /** Alert title. */
    title: ReactNode;
    /** Heading level for the title. Default `"h3"`. */
    titleAs?: "h1" | "h2" | "h3" | "h4" | "h5" | "h6";
    /** Optional descriptive body text. */
    description?: ReactNode;
    /** Affected resources — rendered as a kind/label list. */
    resources?: AlertCardResource[];
    /** When the alert fired (timestamp or relative time). */
    firedAt?: ReactNode;
    /** Assignee / owner handle (e.g. "@oncall-eu"). */
    assignee?: ReactNode;
    /** Lifecycle state — drives an optional state pill in the header. */
    state?: AlertState;
    /** Override the state pill label (defaults to the humanized state). */
    stateLabel?: ReactNode;
    /** Optional tag chips (env, team, runbook id). */
    tags?: ReactNode[];
    /** Action buttons rendered at the bottom of the card. */
    actions?: AlertCardAction[];
    /** Right-aligned trailing slot in the header (icon button, link). */
    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;
    /** Card corner radius (passes through). */
    radius?: CardRadius;
    /**
     * ARIA live-region politeness. Default is `"off"` — the card is a
     * passive surface that consumers can audit at their own pace.
     *
     * Set to `"assertive"` ONLY for genuinely live, in-the-moment alerts
     * (e.g. a banner that just fired) so screen readers interrupt; set to
     * `"polite"` for queued announcements. Avoid changing live alerts
     * mid-flight — re-rendering inside an active live region re-announces.
     */
    live?: "off" | "polite" | "assertive";
}
export declare const AlertCard: import("react").ForwardRefExoticComponent<AlertCardProps & import("react").RefAttributes<HTMLDivElement>>;
//# sourceMappingURL=AlertCard.d.ts.map