import { type ComponentPropsWithoutRef, type ReactNode } from "react";
import type { BinaryRatingValue } from "../../hooks/useRating";
export type BinaryRatingSize = "sm" | "md" | "lg";
/** Layout of each option:
 *   - `"icon"`           — pictogram only (compact, AI-message style)
 *   - `"icon-text"`      — pictogram + label side-by-side (button style)
 *   - `"icon-text-stack"`— pictogram above label (card style)
 */
export type BinaryRatingLayout = "icon" | "icon-text" | "icon-text-stack";
type DivPropsBase = Omit<ComponentPropsWithoutRef<"div">, "onChange" | "children" | "defaultValue">;
export interface BinaryRatingProps extends DivPropsBase {
    /** Currently-selected option. `null` = no rating yet. */
    value: BinaryRatingValue;
    onChange?: (value: BinaryRatingValue) => void;
    size?: BinaryRatingSize;
    layout?: BinaryRatingLayout;
    disabled?: boolean;
    readOnly?: boolean;
    /** When true, clicking the already-selected option clears the rating
     *  (toggle behaviour). Default true. */
    toggleable?: boolean;
    /** Pictogram for the positive option. Default `ThumbsUpIcon` /
     *  `ThumbsUpFilledIcon` (un/selected). Consumers can swap to anything
     *  — pass a pair so both states paint correctly. */
    upIcon?: ReactNode;
    upIconFilled?: ReactNode;
    /** Pictogram for the negative option. */
    downIcon?: ReactNode;
    downIconFilled?: ReactNode;
    /** Label for the positive option. Default `"Like"`. Pass `null` to
     *  render the icon alone (overrides `layout`). */
    upLabel?: ReactNode;
    /** Label for the negative option. Default `"Dislike"`. */
    downLabel?: ReactNode;
    /** Accessible name for the group — surfaced as `aria-label`. */
    "aria-label"?: string;
}
export declare const BinaryRating: import("react").ForwardRefExoticComponent<BinaryRatingProps & import("react").RefAttributes<HTMLDivElement>>;
export {};
//# sourceMappingURL=BinaryRating.d.ts.map