import * as _angular_core from '@angular/core';
import { ElementRef, Renderer2 } from '@angular/core';
import { MXValueComponent } from '@acorex/cdk/common';
import * as i1 from '@angular/common';

/**
 * @description
 * The `AXRatePickerComponent` provides a customizable rating picker.
 * The component allows users to select a rating between 0 and the defined maximum.
 * It supports transitions, dynamic value changes, and hover states.
 *
 * @example
 * <ax-rate-picker [max]="5" [readonly]="false" [disabled]="false"></ax-rate-picker>
 */
declare class AXRatePickerComponent extends MXValueComponent<number> {
    /**
     * @description
     * The icon to be used for each rating point.
     * @default 'fa-star'
     */
    readonly iconName: _angular_core.InputSignal<string>;
    /**
     * @description
     * Maximum value for the rating.
     * Defines how many rating points are available.
     * @default 5
     */
    readonly max: _angular_core.InputSignal<number>;
    /**
     * @description
     * Defines the step increment between rating values.
     * The rating value will be rounded to the nearest multiple of this step.
     * @default 0.01
     */
    readonly step: _angular_core.InputSignal<number>;
    /**
     * @description
     * Whether the rating should have a transition effect when changing values.
     * @default true
     */
    readonly hasTransition: _angular_core.InputSignal<boolean>;
    /**
     * @description
     * The percentage of the current rating value relative to the maximum rating.
     */
    protected ratePercentage: _angular_core.Signal<number>;
    /**
     * @description
     * The current rating value as a signal.
     */
    private currentValue;
    /**
     * @description
     * State for tracking hover status and previous value.
     */
    private prevState;
    /**
     * @description
     * Reference to the container element.
     */
    containerEl: _angular_core.Signal<ElementRef<any>>;
    /**
     * @description
     * Reference to the rating element.
     */
    ratingEl: _angular_core.Signal<ElementRef<any>>;
    /**
     * @description
     * Renderer for manipulating styles.
     */
    renderer: Renderer2;
    /**
     * @description
     * Array of rating values from 1 to `max`.
     */
    protected rates: _angular_core.Signal<number[]>;
    /**
     * @description
     * Initializes the component and sets up value change subscription.
     */
    constructor();
    /**
     * @description
     * Calculates and updates the rating based on the mouse or touch event.
     *
     * @param event - The mouse or touch event triggering the rating calculation.
     */
    protected calculateRate(event: MouseEvent | TouchEvent): void;
    /**
     * @description
     * Rounds the rating value to the nearest step.
     *
     * @param percentage - The calculated percentage from pointer event.
     * @returns The rounded rating value.
     */
    private roundToStep;
    /**
     * @description
     * Handles mouse enter events to start tracking mouse movements for rating.
     */
    protected mouseEnter(): void;
    /**
     * @description
     * Handles mouse leave events to reset styles.
     */
    protected mouseLeave(): void;
    /**
     * @description
     * Cleans up event listeners and restores the previous rating value.
     *
     * @param moveListener - The function to remove for mouse move events.
     * @param endListener - The function to remove for mouse end events.
     */
    private onEnd;
    private countDecimals;
    /**
     * @description
     * Determines if the component is active (i.e., not readonly or disabled).
     */
    get isActive(): boolean;
    /**
     * @description
     * Determines if the component is in readonly mode.
     */
    get isReadonly(): boolean;
    /**
     * @description
     * Determines if the component is disabled.
     */
    get isDisabled(): boolean;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXRatePickerComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXRatePickerComponent, "ax-rate-picker", never, { "readonly": { "alias": "readonly"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "iconName": { "alias": "iconName"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "hasTransition": { "alias": "hasTransition"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
}

declare class AXRatePickerModule {
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXRatePickerModule, never>;
    static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXRatePickerModule, never, [typeof i1.CommonModule, typeof AXRatePickerComponent], [typeof AXRatePickerComponent]>;
    static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXRatePickerModule>;
}

export { AXRatePickerComponent, AXRatePickerModule };
