import * as i0 from "@angular/core";
export interface RatingProps {
    /** The precision of the rating, determining the fraction of the star that can be selected. */
    precision?: 0.1 | 0.2 | 0.25 | 0.5 | 1;
    /** The maximum rating value, representing the number of icons displayed. */
    max?: number;
    /** The current value of the rating. */
    value?: number;
    /** Callback function invoked when the rating value changes. */
    onChange?: (value: number) => void;
}
/**
 * Renders a customizable rating component, allowing users to provide a rating by selecting a value using stars.
 * Supports fractional ratings through precision control.
 *
 * @example
 * <tgui-rating
 *   [(ratingValue)]="userRating"
 *   [precision]="0.5"
 *   [max]="5">
 * </tgui-rating>
 */
export declare class RatingComponent {
    private elementRef;
    /** The precision of the rating, determining the fraction of the star that can be selected. */
    precision: import("@angular/core").InputSignal<1 | 0.1 | 0.2 | 0.25 | 0.5>;
    /** The maximum rating value, representing the number of icons displayed. */
    max: import("@angular/core").InputSignal<number>;
    /** The current value of the rating using Angular's two-way binding with model(). */
    ratingValue: import("@angular/core").ModelSignal<number>;
    normalizedPrecision: import("@angular/core").Signal<number>;
    elementClass: string;
    elementPickedClass: string;
    inputClass: string;
    constructor();
    getKeys(): number[];
    getElementsWithPrecision(): number[];
    getPickedElementWidth(elementNumber: number): number | undefined;
    isInputChecked(key: number, element: number): boolean;
    onRatingChange(value: number): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<RatingComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<RatingComponent, "tgui-rating", never, { "precision": { "alias": "precision"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "ratingValue": { "alias": "ratingValue"; "required": false; "isSignal": true; }; }, { "ratingValue": "ratingValueChange"; }, never, never, true, never>;
}
