import { Injector } from '@angular/core';
import { AbstractControl, Validator } from '@angular/forms';
import { AbstractI18nService } from '@wm/core';
import { IWidgetConfig, TrailingZeroDecimalPipe } from '@wm/components/base';
import { BaseInput } from '../base/base-input';
export declare abstract class NumberLocale extends BaseInput implements Validator {
    private i18nService;
    private trailingZeroDecimalPipe;
    private DECIMAL;
    private GROUP;
    private selectedLocale;
    private proxyModel;
    private numberNotInRange;
    private isInvalidNumber;
    private isDefaultQuery;
    private decimalValue;
    displayValue: string;
    private numberfilter;
    private localefilter;
    readonly: boolean;
    placeholder: string;
    minvalue: number;
    maxvalue: number;
    updateon: string;
    step: number;
    trailingzero: boolean;
    private validateType;
    inputmode: string;
    decimalplaces: number;
    private lastValIsDecimal;
    constructor(inj: Injector, config: IWidgetConfig, i18nService: AbstractI18nService, trailingZeroDecimalPipe: TrailingZeroDecimalPipe, explicitContext: any);
    set datavalue(value: number);
    get datavalue(): number;
    protected resetValidations(): void;
    /**
     * Adds validations for the number before updating the widget model. like validating min and max value for the widget.
     * @param {number} val number to be validated
     * @returns {number}
     */
    private isValid;
    /**
     * returns a valid number by validating the minimum and maximum values.
     * @param {number} value
     * @returns {number}
     */
    private getValueInRange;
    /**
     * convert number to localized number using angular decimal pipe. eg 10,00,000 or 1,000,000
     * @param number
     * @returns {string}
     */
    private transformNumber;
    /**
     * resets the cursor position in the text box.
     * @param {number} value cursor position index form left to right.
     */
    private resetCursorPosition;
    /**
     * Method parses the Localized number(string) to a valid number.
     * if the string dose not result to a valid number then returns NaN.
     * @param {string} val Localized number.
     * @returns {number}
     */
    private parseNumber;
    private updateDisplayText;
    private stepLength;
    isNaturalCurrency(): boolean;
    /**
  * @param value contains the value entered in the input box
  * This function modifies the user input value, into financial mode.
  * Number starts from highest precesion decimal, on typing number shifts to the left
  */
    onInputChange(value: any): void;
    checkForTrailingZeros($event: any): void;
    /**
     * returns the number of decimal places a number have.
     * @param value: number
     * @returns {number}
     */
    private countDecimals;
    /**
     * handles the arrow press event. Increases or decreases the number. triggered fom the template
     * @param $event keyboard event.
     * @param key identifier to increase or decrease the number.
     */
    onArrowPress($event: any, key: any): void;
    /**
     * method is called from the from widget. to check whether the value entered is valid or not.
     * @returns {object}
     */
    validate(c: AbstractControl): {
        invalidNumber: {
            valid: boolean;
        };
        numberNotInRange?: undefined;
        required?: undefined;
    } | {
        numberNotInRange: {
            valid: boolean;
        };
        invalidNumber?: undefined;
        required?: undefined;
    } | {
        required: boolean;
        invalidNumber?: undefined;
        numberNotInRange?: undefined;
    };
    validateInputEntry($event: any): boolean;
    onBackspace($event: any): void;
    onEnter($event: any): void;
    onModelChange($event: any): void;
    onPropertyChange(key: any, nv: any, ov?: any): void;
}
