import { type ButtonHTMLAttributes, type MouseEvent, type ReactNode } from "react";
export type ChoiceCardSize = "sm" | "md" | "lg";
/**
 * Selection model:
 *   - `single`   → behaves like a radio button (`role="radio"`).
 *   - `multiple` → behaves like a checkbox (`role="checkbox"`).
 */
export type ChoiceCardSelectionMode = "single" | "multiple";
/**
 * Layout:
 *   - `vertical`   → icon top-left, check top-right (default — dense grids).
 *   - `horizontal` → icon-left-of-body, check on the right (list view).
 */
export type ChoiceCardOrientation = "vertical" | "horizontal";
export interface ChoiceCardProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, "type" | "title" | "onSelect"> {
    /** Optional leading icon (top-left in vertical, left in horizontal). */
    icon?: ReactNode;
    /** Visible title — the primary label of the choice. */
    title: ReactNode;
    /** Optional supporting text under the title. */
    description?: ReactNode;
    /** Selection state. Controlled. */
    selected?: boolean;
    /**
     * Optional trailing badge (e.g. "Recommended", "New"). Overrides the
     * default check indicator in the top-right slot.
     */
    badge?: ReactNode;
    /** Selection model — drives the ARIA role + indicator shape. */
    selectionMode?: ChoiceCardSelectionMode;
    /** Size variant. */
    size?: ChoiceCardSize;
    /** Layout variant. */
    orientation?: ChoiceCardOrientation;
    /** Disable interaction. */
    disabled?: boolean;
    /**
     * Ergonomic alternative to `onClick`. Fires with the next selection
     * state (`!selected`) so consumers don't have to derive it themselves.
     *
     *   <ChoiceCard
     *     selected={mode === "upsert"}
     *     onSelect={(next) => next && setMode("upsert")}
     *   />
     */
    onSelect?: (next: boolean, e: MouseEvent<HTMLButtonElement>) => void;
    /** Suppress the check-indicator pop animation. */
    disableAnimation?: boolean;
}
export declare const ChoiceCard: import("react").ForwardRefExoticComponent<ChoiceCardProps & import("react").RefAttributes<HTMLButtonElement>>;
//# sourceMappingURL=ChoiceCard.d.ts.map