import * as _angular_core from '@angular/core';
import { ControlValueAccessor } from '@angular/forms';
/**
* Star rating input. Click or hover to set a value; supports half-star
* increments via `step="0.5"`. Implements `ControlValueAccessor` — value
* is `number | null` (clamped to `[0, count]`).
*
* Keyboard: `←` / `→` bump by `step`, `Home` / `End` jump to 0 / max.
* Clicking the current value clears it (toggle off).
*
* @example
* ```html
*
*
*
* ```
*
* @see https://ngwr.dev/components/rating
*/
type WrRatingSize = 'sm' | 'md' | 'lg';
declare class WrRating implements ControlValueAccessor {
/** Total number of slots. @default 5 */
readonly count: _angular_core.InputSignalWithTransform;
/** Step granularity — `1` for whole stars, `0.5` for halves. @default 1 */
readonly step: _angular_core.InputSignalWithTransform<1 | 0.5, unknown>;
/** Read-only — value is displayed but not interactive. @default false */
readonly readonly: _angular_core.InputSignalWithTransform;
/** Disable interaction. @default false */
readonly disabled: _angular_core.InputSignalWithTransform;
/** Control size — scales the icons + gaps. @default 'md' */
readonly size: _angular_core.InputSignal;
/** Accessible label. @default 'Rating' */
readonly ariaLabel: _angular_core.InputSignal;
/** Last committed value (mirrored from the CVA). */
protected readonly value: _angular_core.WritableSignal;
/** Transient hover preview — overrides `value` for display when set. */
protected readonly hoverValue: _angular_core.WritableSignal;
private readonly disabledFromCva;
protected readonly effectiveDisabled: _angular_core.Signal;
protected readonly interactive: _angular_core.Signal;
/** What we actually render — hover wins while hovering. */
protected readonly displayValue: _angular_core.Signal;
protected readonly slots: _angular_core.Signal;
protected readonly classes: _angular_core.Signal;
/** Fill ratio for slot `i` in `[0, 1]` — drives the CSS clip width. */
protected fillFor(i: number): number;
private onChange;
private onTouched;
writeValue(value: number | null): void;
registerOnChange(fn: (value: number | null) => void): void;
registerOnTouched(fn: () => void): void;
setDisabledState(isDisabled: boolean): void;
protected onSlotMove(event: MouseEvent, index: number): void;
protected onLeave(): void;
protected onSlotClick(event: MouseEvent, index: number): void;
protected onKeydown(event: KeyboardEvent): void;
/** Convert a mouse position over slot `index` to a snapped value. */
private computeValue;
private commit;
static ɵfac: _angular_core.ɵɵFactoryDeclaration;
static ɵcmp: _angular_core.ɵɵComponentDeclaration;
}
export { WrRating };
export type { WrRatingSize };