export interface UseRatingOptions {
    /** Controlled value — when set, the hook becomes a pass-through. */
    value?: number;
    /** Uncontrolled seed. Default 0. */
    defaultValue?: number;
    /** Upper bound. Default 5. */
    max?: number;
    /** Step size (1 = whole, 0.5 = half-stars). Default 1. */
    step?: number;
    /** Fires after each successful change. */
    onChange?: (value: number) => void;
}
export interface UseRatingReturn {
    value: number;
    set: (value: number) => void;
    increment: () => void;
    decrement: () => void;
    reset: () => void;
    /** Ready-to-spread props for `<Rating>`. */
    ratingProps: {
        value: number;
        onChange: (value: number) => void;
    };
}
export declare function useRating({ value: controlled, defaultValue, max, step, onChange, }?: UseRatingOptions): UseRatingReturn;
export type BinaryRatingValue = "up" | "down" | null;
export interface UseBinaryRatingOptions {
    value?: BinaryRatingValue;
    defaultValue?: BinaryRatingValue;
    onChange?: (value: BinaryRatingValue) => void;
}
export interface UseBinaryRatingReturn {
    value: BinaryRatingValue;
    set: (value: BinaryRatingValue) => void;
    /** Set the rating to `"up"`. Idempotent. */
    like: () => void;
    /** Set the rating to `"down"`. Idempotent. */
    dislike: () => void;
    /** Clear the rating back to `null`. */
    clear: () => void;
    /** Click-on-selected-to-deselect behaviour: if `next` is already the
     *  current value, clears; otherwise sets to `next`. */
    toggle: (next: Exclude<BinaryRatingValue, null>) => void;
    /** Ready-to-spread props for `<BinaryRating>`. */
    binaryRatingProps: {
        value: BinaryRatingValue;
        onChange: (value: BinaryRatingValue) => void;
    };
}
export declare function useBinaryRating({ value: controlled, defaultValue, onChange, }?: UseBinaryRatingOptions): UseBinaryRatingReturn;
//# sourceMappingURL=useRating.d.ts.map