import { AskmethatRatingPopoverOptions } from "./amt-rating-popover";
export declare enum AskmethatRatingSteps {
    /**
     * Step 0.1 per 0.1
     */
    DecimalStep = 0,
    /**
     * Step 0.5 per 0.5
     */
    HalfStep = 1,
    /**
     * Step 1 per 1
     */
    OnePerOneStep = 2,
}
export interface AskmethatRatingOptions {
    hoverColor?: string;
    /**
     * Color when the rating is not hovered
     */
    backgroundColor?: string;
    /**
    * Mininmum rating that the user can set
    */
    minRating?: number;
    /**
     * Maximum rating that the plugin display
     */
    maxRating?: number;
    /**
     * Class to display as rating (FontAwesome or Rating for exemple)
     */
    fontClass?: string;
    /**
     * Set the rating to readonly
     */
    readonly?: boolean;
    /**
    * The stepping for the rating
    */
    step?: AskmethatRatingSteps;
    /**
     * Input name (Default is AskmethatRating)
     */
    inputName?: string;
    /**
     * options if popover is set. Put element as readonly
     */
    popover?: AskmethatRatingPopoverOptions;
}
export declare class AskmethatRating {
    private parentElement;
    private pValue;
    private styleSheet;
    private changeEvent;
    private ratingClick;
    private mouseMove;
    /**
     * @function get the current value for the rating
     */
    /**
     * @function set a new value for the rating
     *
     * @param _value this is the new value you want to set to the rating
     * @returns the current number
     */
    value: number;
    /**
     * Default option base on @type IAskmethatRatingOptions
     */
    private _defaultOptions;
    /**
     * @function get the default option for the rating
     *
     * @return  options based on @type AskmethatRatingOptions
     */
    /**
     * @function set the default option for the rating
     *
     * @return  options based on @type AskmethatRatingOptions
     */
    defaultOptions: AskmethatRatingOptions;
    /**
     * constructor with div element, default rating value & default options
     *
     * @param element This is the html container for the rating elements
     * @param defaultValue Default value set when the plugin render the rating
     * @param options Default option base on AskmethatRatingOptions type
     */
    constructor(element: HTMLDivElement, defaultValue?: number, options?: any);
    /**
     * Init popover if needed
     */
    private initPopover();
    /**
     * render a new rating, by default value is the minRating
     *
     * @param value this is the default value set when the plugin is rendered, by default IAskmethatRatingOptions.minRating
     */
    render(value?: number): void;
    /**
    * @function when a rating is clicked
    * @param  {type} event : Event {event object}
    */
    private onRatingClick(event?);
    /**
    * @function Calculate the value according to the step provided in options
    * @param  {Number} value:number the current value
    * @return {Number} the new value according to step
    */
    protected getValueAccordingToStep(value: number): number;
    /**
    * @function mouse event enter in rating
    * @param  {type} event?: Event {event}
    */
    private onMouseMove(event?);
    /**
    * @function mouse out event in rating
    * @param  {type} event?: Event {event}
    */
    private onMouseLeave(event?);
    /**
    * @function set or unset the active class and color
    * @param  {HTMLSpanElement} current :  current span element
    * @param  {number} current :  value needed for the if
    */
    protected setOrUnsetActive(value: number): void;
    /**
     * Check if disabled attribute is added or removed from the input
     * Update readonly status if needed for the rating
     */
    private mutationEvent();
    /**
     * This is fired by mutation observer when an attribute changed in the hidden input
     * Is protected to have some unit tests
     *
     * @param mutations list of mutations record
     */
    protected mutationDisableEvent(mutations: MutationRecord[]): void;
    /**
    * @function static method to retrieve with identifier the value
    * @param  {string} identifier: string container identifier
    * @return {number} current rating
    */
    static value(identifier: string): number;
}
