import { EventEmitter, OnInit, OnChanges, SimpleChanges, ChangeDetectorRef } from "@angular/core";
import { BehaviorSubject } from "rxjs";
import { OnDestroy } from "@angular/core";
import { DxcTextInputComponent } from "../dxc-text-input/dxc-text-input.component";
import { DxcNumberInputHelper } from "./dxc-number-input.helper";
import * as i0 from "@angular/core";
declare type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
declare type Margin = {
    top?: Space;
    bottom?: Space;
    left?: Space;
    right?: Space;
};
export declare class DxcNumberInputComponent implements OnInit, OnChanges, OnDestroy {
    private cdRef;
    private helper;
    className: any;
    /**
     * Text to be placed above the number.
     */
    label: string;
    /**
     * Name attribute of the input element.
     */
    name: string;
    /**
     * Value of the input element. If undefined, the component will be uncontrolled and the value will be managed internally by the component.
     */
    value: string;
    /**
     * Helper text to be placed above the number.
     */
    helperText: string;
    /**
     * Text to be put as placeholder of the number.
     */
    placeholder: string;
    /**
     * If true, the component will be disabled.
     */
    get disabled(): boolean;
    set disabled(value: boolean);
    private _disabled;
    /**
     * Minimum value allowed by the number input. If the typed value by the user is
     * lower than min, the onBlur and onChange functions will be called with
     * the current value and an internal error informing that the current
     * value is not correct. If a valid state is reached, the error parameter
     * will be null in both events.
     */
    get min(): number;
    set min(value: number);
    private _min;
    /**
     * Maximum value allowed by the number input. If the typed value by the user
     * surpasses max, the onBlur and onChange functions will be called with
     * the current value and an internal error informing that the current
     * value is not correct. If a valid state is reached, the error parameter
     * will be null in both events.
     */
    get max(): number;
    set max(value: number);
    private _max;
    /**
     * The step interval to use when using the up and down arrows to adjust the value.
     */
    get step(): number;
    set step(value: number);
    private _step;
    /**
     * If true, the number will be optional, showing '(Optional)'
     * next to the label. Otherwise, the field will be considered required
     * and an error will be passed as a parameter to the OnBlur and onChange
     * functions when it has not been filled.
     */
    get optional(): boolean;
    set optional(value: boolean);
    private _optional;
    /**
     * If it is defined, the component will change its appearance, showing
     * the error below the input component. If it is not defined, the error
     * messages will be managed internally, but never displayed on its own.
     */
    error: string;
    /**
     * HTML autocomplete attribute. Lets the user specify if any permission the user agent has to provide automated assistance in filling out the input value.
     * Its value must be one of all the possible values of the HTML autocomplete attribute: 'on', 'off', 'email', 'username', 'new-password', ...
     */
    autocomplete: string;
    /**
     * Size of the margin to be applied to the component ('xxsmall' | 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge' | 'xxlarge').
     * You can pass an object with 'top', 'bottom', 'left' and 'right' properties in order to specify different margin sizes.
     */
    margin: Space | Margin;
    /**
     * Size of the component ('small' | 'medium' | 'large' | 'fillParent').
     */
    size: "small" | "medium" | "large" | "fillParent";
    /**
     * Value of the tabindex attribute.
     */
    tabIndex: number;
    private controlled;
    defaultInputs: BehaviorSubject<any>;
    /**
     * This event will emit in case the user types within the input
     * element of the component. An object including the current value and
     * the error (if the value entered is not valid) will be passed to this
     * function. If there is no error, error will be null.
     */
    onChange: EventEmitter<{
        value: string;
        error: string | null;
    }>;
    /**
     * This event will emit in case the number loses the focus.
     * An object including the input value and the error (if the value
     * entered is not valid) will be passed to this function. If there is no error,
     * error will be null.
     */
    onBlur: EventEmitter<{
        value: string;
        error: string | null;
    }>;
    dxcInputRef: DxcTextInputComponent;
    randomId: string;
    isFocused: boolean;
    keyEvent(event: KeyboardEvent): void;
    validationError: string;
    constructor(cdRef: ChangeDetectorRef, helper: DxcNumberInputHelper);
    ngOnDestroy(): void;
    ngOnInit(): void;
    ngAfterViewInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    handleOnChange({ value, error }: {
        value: any;
        error: any;
    }): void;
    handleOnBlur({ value, error }: {
        value: any;
        error: any;
    }): void;
    validation(): any;
    handleStepMinus(): void;
    handleStepPlus(): void;
    calculatePlus(currentValue: number): number;
    calculateMinus(currentValue: number): number;
    isFocus(): void;
    isBlur(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<DxcNumberInputComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DxcNumberInputComponent, "dxc-number-input", never, { "label": "label"; "name": "name"; "value": "value"; "helperText": "helperText"; "placeholder": "placeholder"; "disabled": "disabled"; "min": "min"; "max": "max"; "step": "step"; "optional": "optional"; "error": "error"; "autocomplete": "autocomplete"; "margin": "margin"; "size": "size"; "tabIndex": "tabIndex"; }, { "onChange": "onChange"; "onBlur": "onBlur"; }, never, ["dxc-text-input-suffix", "dxc-text-input-prefix"]>;
}
export {};
//# sourceMappingURL=dxc-number-input.component.d.ts.map