import { ElementRef, EventEmitter, OnDestroy, Renderer2 } from '@angular/core';
import { ControlValueAccessor } from '@angular/forms';
import { KbqLocaleService, KbqNumberInputLocaleConfig } from '@koobiq/components/core';
import { KbqFormFieldControl } from '@koobiq/components/form-field';
import { Subject } from 'rxjs';
import * as i0 from "@angular/core";
export declare const KBQ_INPUT_NUMBER_DEFAULT_CONFIGURATION: {
    groupSeparator: string[];
    fractionSeparator: string;
    startFormattingFrom: number;
    viewGroupSeparator: string;
};
export declare const BIG_STEP = 10;
export declare const SMALL_STEP = 1;
export declare function normalizeSplitter(value: string): string;
export declare function isFloat(value: string): boolean;
export declare function isInt(value: string): boolean;
export declare function isDigit(value: string): boolean;
export declare function getPrecision(value: number): number;
export declare function add(value1: number, value2: number): number;
export declare const KBQ_NUMBER_INPUT_VALUE_ACCESSOR: any;
export declare class KbqNumberInput implements KbqFormFieldControl<any>, ControlValueAccessor, OnDestroy {
    private elementRef;
    private readonly renderer;
    private localeService?;
    /** Emits when the value changes (either due to user input or programmatic change). */
    valueChange: EventEmitter<number | null>;
    /** Emits when the disabled state has changed */
    disabledChange: EventEmitter<boolean>;
    readonly stateChanges: Subject<void>;
    id: string;
    placeholder: string;
    empty: boolean;
    required: boolean;
    errorState: boolean;
    controlType?: string | undefined;
    /**
     * Allows input and pasting of integers only.
     */
    integer: boolean;
    bigStep: number;
    step: number;
    min: number;
    max: number;
    withThousandSeparator: boolean;
    /**
     * Include thousand separator from custom index. For example, it will be useful in tables.
     */
    startFormattingFrom?: number;
    get value(): number | null;
    set value(value: number | null);
    private _value;
    get disabled(): boolean;
    set disabled(value: boolean);
    private _disabled;
    focused: boolean;
    get nativeElement(): HTMLInputElement;
    get viewValue(): string;
    get ngControl(): any;
    protected get fractionSeparator(): KbqNumberInputLocaleConfig['fractionSeparator'];
    protected get groupSeparator(): KbqNumberInputLocaleConfig['groupSeparator'];
    private control;
    private config;
    private valueFromPaste;
    constructor(elementRef: ElementRef<HTMLInputElement>, renderer: Renderer2, step: string, bigStep: string, min: string, max: string, localeService?: KbqLocaleService | undefined);
    ngOnDestroy(): void;
    onContainerClick(): void;
    focus(): void;
    writeValue(value: number | null): void;
    registerOnChange(fn: (value: any) => void): void;
    registerOnTouched(fn: () => void): void;
    setDisabledState(isDisabled: boolean): void;
    focusChanged(isFocused: boolean): void;
    onTouched: () => void;
    onKeyDown(event: KeyboardEvent): void;
    onInput(event: InputEvent): void;
    onPaste(event: ClipboardEvent): void;
    stepUp(step: number): void;
    stepDown(step: number): void;
    private initDefaultParams;
    private isCtrlV;
    private isCtrlX;
    private isCtrlZ;
    private isPeriod;
    private cvaOnChange;
    private setViewValue;
    private viewToModelUpdate;
    private formatViewValue;
    private formatNumber;
    private createLocalizedNumberFromParts;
    private updateLocaleParams;
    static ɵfac: i0.ɵɵFactoryDeclaration<KbqNumberInput, [null, null, { attribute: "step"; }, { attribute: "big-step"; }, { attribute: "min"; }, { attribute: "max"; }, { optional: true; }]>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<KbqNumberInput, "input[kbqNumberInput]", ["kbqNumericalInput"], { "integer": { "alias": "integer"; "required": false; }; "bigStep": { "alias": "bigStep"; "required": false; }; "step": { "alias": "step"; "required": false; }; "min": { "alias": "min"; "required": false; }; "max": { "alias": "max"; "required": false; }; "withThousandSeparator": { "alias": "withThousandSeparator"; "required": false; }; "startFormattingFrom": { "alias": "startFormattingFrom"; "required": false; }; "value": { "alias": "value"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, {}, never, never, false, never>;
    static ngAcceptInputType_integer: unknown;
    static ngAcceptInputType_withThousandSeparator: unknown;
}
