import * as React from 'react';
import { type LucideIcon } from 'lucide-react';
export interface RatingProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {
    /** 當前評分(0 ~ max) */
    value?: number;
    /** 預設值(uncontrolled) */
    defaultValue?: number;
    /** 評分改變 callback */
    onChange?: (value: number) => void;
    /** 滿分(預設 5) */
    max?: number;
    /** 尺寸。standalone 建議 xs(24px);Field 內跟隨 Field size 傳 sm/md/lg */
    size?: 'xs' | 'sm' | 'md' | 'lg';
    /** 精度:full = 整星,half = 半星 */
    precision?: 'full' | 'half';
    /** 唯讀(無 hover / click 響應) */
    readOnly?: boolean;
    /** 完全停用 */
    disabled?: boolean;
    /**
     * Loading 狀態 — 正在取得既有評分 / 正在儲存。
     * 視覺同 disabled(composite 整塊 opacity-disabled)但 semantic 不同:
     * loading = 暫時性等待(aria-busy),disabled = 永久業務規則(aria-disabled)。
     * 詳 rating.spec.md「Interactive vs ReadOnly」+「Loading canonical」
     */
    loading?: boolean;
    /** 自訂 icon(預設 Star);傳 LucideIcon */
    icon?: LucideIcon;
    /**
     * a11y label。readOnly(role=img)時必填。
     * interactive(role=slider)時:在 Field 內免填(自動 aria-labelledby 指向 FieldLabel);
     * standalone(無 Field)時必填——role=slider 依 WAI-ARIA APG 必有 accessible name。
     */
    'aria-label'?: string;
}
declare const Rating: React.ForwardRefExoticComponent<RatingProps & React.RefAttributes<HTMLDivElement>>;
export declare const ratingMeta: {
    readonly component: "Rating";
    readonly family: null;
    readonly variants: {};
    readonly sizes: {};
    readonly states: readonly ["default", "hover", "active", "focus-visible", "disabled"];
    readonly tokens: {
        readonly bg: readonly ["bg-transparent"];
        readonly fg: readonly [];
        readonly ring: readonly ["ring-ring"];
    };
};
export { Rating };
//# sourceMappingURL=rating.d.ts.map