import { RatingPassThrough, RatingRateEvent, RatingIconTemplateContext } from 'primeng/types/rating';
export * from 'primeng/types/rating';
import * as _angular_core from '@angular/core';
import { Provider, TemplateRef } from '@angular/core';
import { BaseEditableHolder } from 'primeng/baseeditableholder';
import * as i1 from 'primeng/bind';
import { Bind } from 'primeng/bind';
import { Nullable } from 'primeng/ts-helpers';
import { CSSProperties } from 'primeng/types/shared';
import { BaseStyle } from 'primeng/base';
import * as i2 from 'primeng/api';

/**
 *
 * Rating component is a star based selection input.
 *
 * [Live Demo](https://www.primeng.org/rating/)
 *
 * @module ratingstyle
 *
 */
declare enum RatingClasses {
    /**
     * Class name of the root element
     */
    root = "p-rating",
    /**
     * Class name of the option element
     */
    option = "p-rating-option",
    /**
     * Class name of the on icon element
     */
    onIcon = "p-rating-on-icon",
    /**
     * Class name of the off icon element
     */
    offIcon = "p-rating-off-icon"
}
declare class RatingStyle extends BaseStyle {
    name: string;
    style: string;
    classes: {
        root: ({ instance }: {
            instance: any;
        }) => (string | {
            'p-readonly': any;
            'p-disabled': any;
        })[];
        option: string;
        onIcon: ({ instance }: {
            instance: any;
        }) => (string | {
            'p-invalid': any;
        })[];
        offIcon: ({ instance }: {
            instance: any;
        }) => (string | {
            'p-invalid': any;
        })[];
    };
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<RatingStyle, never>;
    static ɵprov: _angular_core.ɵɵInjectableDeclaration<RatingStyle>;
}
interface RatingStyle extends BaseStyle {
}

declare const RATING_VALUE_ACCESSOR: Provider;
/**
 * Rating is an extension to standard radio button element with theming.
 * @group Components
 */
declare class Rating extends BaseEditableHolder<RatingPassThrough> {
    componentName: string;
    $pcRating: Rating | undefined;
    bindDirectiveInstance: Bind;
    onAfterViewChecked(): void;
    /**
     * When present, changing the value is not possible.
     * @group Props
     */
    readonly: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * Number of stars.
     * @group Props
     */
    stars: _angular_core.InputSignalWithTransform<number, unknown>;
    /**
     * Style class of the on icon.
     * @group Props
     */
    iconOnClass: _angular_core.InputSignal<string | undefined>;
    /**
     * Inline style of the on icon.
     * @group Props
     */
    iconOnStyle: _angular_core.InputSignal<CSSProperties>;
    /**
     * Style class of the off icon.
     * @group Props
     */
    iconOffClass: _angular_core.InputSignal<string | undefined>;
    /**
     * Inline style of the off icon.
     * @group Props
     */
    iconOffStyle: _angular_core.InputSignal<CSSProperties>;
    /**
     * When present, it specifies that the component should automatically get focus on load.
     * @group Props
     */
    autofocus: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * When present, selecting half stars is allowed.
     * @group Props
     */
    allowHalf: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * Orientation of the component.
     * @group Props
     */
    orientation: _angular_core.InputSignal<"horizontal" | "vertical">;
    /**
     * Emitted on value change.
     * @param {RatingRateEvent} value - Custom rate event.
     * @group Emits
     */
    onRate: _angular_core.OutputEmitterRef<RatingRateEvent>;
    /**
     * Emitted when the rating receives focus.
     * @param {Event} value - Browser event.
     * @group Emits
     */
    onFocus: _angular_core.OutputEmitterRef<FocusEvent>;
    /**
     * Emitted when the rating loses focus.
     * @param {Event} value - Browser event.
     * @group Emits
     */
    onBlur: _angular_core.OutputEmitterRef<FocusEvent>;
    /**
     * Custom on icon template.
     * @param {RatingIconTemplateContext} context - icon context.
     * @see {@link RatingIconTemplateContext}
     * @group Templates
     */
    onIconTemplate: _angular_core.Signal<TemplateRef<RatingIconTemplateContext> | undefined>;
    /**
     * Custom off icon template.
     * @param {RatingIconTemplateContext} context - icon context.
     * @see {@link RatingIconTemplateContext}
     * @group Templates
     */
    offIconTemplate: _angular_core.Signal<TemplateRef<RatingIconTemplateContext> | undefined>;
    value: _angular_core.WritableSignal<Nullable<number>>;
    starsArray: Nullable<number[]>;
    focusedOptionIndex: _angular_core.WritableSignal<number>;
    nameattr: _angular_core.WritableSignal<string | undefined>;
    hovering: _angular_core.WritableSignal<boolean>;
    hoveringValue: _angular_core.WritableSignal<number>;
    _componentStyle: RatingStyle;
    attrRequired: _angular_core.Signal<"" | undefined>;
    attrReadonly: _angular_core.Signal<"" | undefined>;
    attrDisabled: _angular_core.Signal<"" | undefined>;
    attrName: _angular_core.Signal<string>;
    dataP: _angular_core.Signal<string>;
    isCustomIcon: _angular_core.Signal<boolean>;
    activeValue: _angular_core.Signal<number>;
    onInit(): void;
    resolvePointerValue(event: PointerEvent | MouseEvent, star: number): number;
    onOptionClick(event: MouseEvent, star: number): void;
    onOptionSelect(event: Event, value: number): void;
    onPointerMove(event: PointerEvent, star: number): void;
    onPointerEnter(): void;
    onPointerLeave(): void;
    onChange(event: Event, value: number): void;
    onInputBlur(event: FocusEvent): void;
    onInputFocus(event: FocusEvent, value: number): void;
    updateModel(event: Event, value: number | null): void;
    starAriaLabel(value: number): string | undefined;
    isHighlighted(star: number): boolean;
    isHalf(star: number): boolean;
    isChecked(star: number): boolean;
    getOnIconContext(star: number): {
        $implicit: number;
        class: string | undefined;
    };
    getOffIconContext(star: number): {
        $implicit: number;
        class: string | undefined;
    };
    getIconTemplate(i: number): Nullable<TemplateRef<RatingIconTemplateContext>>;
    /**
     * @override
     *
     * @see {@link BaseEditableHolder.writeControlValue}
     * Writes the value to the control.
     */
    writeControlValue(value: any, setModelValue: (value: any) => void): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<Rating, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<Rating, "p-rating", never, { "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "stars": { "alias": "stars"; "required": false; "isSignal": true; }; "iconOnClass": { "alias": "iconOnClass"; "required": false; "isSignal": true; }; "iconOnStyle": { "alias": "iconOnStyle"; "required": false; "isSignal": true; }; "iconOffClass": { "alias": "iconOffClass"; "required": false; "isSignal": true; }; "iconOffStyle": { "alias": "iconOffStyle"; "required": false; "isSignal": true; }; "autofocus": { "alias": "autofocus"; "required": false; "isSignal": true; }; "allowHalf": { "alias": "allowHalf"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; }, { "onRate": "onRate"; "onFocus": "onFocus"; "onBlur": "onBlur"; }, ["onIconTemplate", "offIconTemplate"], never, true, [{ directive: typeof i1.Bind; inputs: {}; outputs: {}; }]>;
}
declare class RatingModule {
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<RatingModule, never>;
    static ɵmod: _angular_core.ɵɵNgModuleDeclaration<RatingModule, never, [typeof Rating, typeof i2.SharedModule], [typeof Rating, typeof i2.SharedModule]>;
    static ɵinj: _angular_core.ɵɵInjectorDeclaration<RatingModule>;
}

export { RATING_VALUE_ACCESSOR, Rating, RatingClasses, RatingModule, RatingStyle };
