import { ComponentInterface, EventEmitter } from '../../stencil-public-runtime';
import { HTMLStencilElement } from '../../stencil-public-runtime';
import { BalConfigObserver, BalConfigState, BalLanguage, BalRegion } from '../../utils/config';
import { BalAriaForm, BalAriaFormLinking } from '../../utils/form';
import { FormInput } from '../../utils/form-input';
import { Loggable, LogInstance } from '../../utils/log';
export declare class NumberInput implements ComponentInterface, BalConfigObserver, FormInput<number | string | undefined>, BalAriaFormLinking, Loggable {
    private inputId;
    private inheritedAttributes;
    private selectTimeout?;
    lastValue: string;
    nativeInput?: HTMLInputElement;
    inputValue?: number | string;
    initialValue?: number | string;
    el: HTMLStencilElement;
    focused: boolean;
    language: BalLanguage;
    region: BalRegion;
    ariaForm: BalAriaForm;
    nativeInputValue: string;
    inputPattern: string;
    log: LogInstance;
    createLogger(log: LogInstance): void;
    /**
     * PUBLIC PROPERTY API
     * ------------------------------------------------------
     */
    /**
     * The name of the control, which is submitted with the form data.
     */
    name: string;
    /**
     * If `true` the component gets a invalid style.
     */
    invalid: boolean;
    /**
     * Defines the allowed decimal points for the `number-input`.
     */
    decimal: number;
    /**
     * Allows only positive number values.
     */
    onlyPositive: boolean;
    /**
     * Adds a suffix the the input-value after blur.
     */
    suffix?: string;
    /**
     * A regular expression that the value is checked against. The pattern must match the entire value, not just some subset. Use the title attribute to describe the pattern to help the user. This attribute applies when the value of the type attribute is `"text"`, `"search"`, `"tel"`, `"url"`, `"email"`, `"date"`, or `"password"`, otherwise it is ignored. When the type attribute is `"date"`, `pattern` will only be used in browsers that do not support the `"date"` input type natively. See https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/date for more information.
     */
    pattern?: string;
    /**
     * Instructional text that shows before the input has a value.
     */
    placeholder?: string;
    /**
     * If `true`, the user must fill in a value before submitting a form.
     */
    required: boolean;
    /**
     * If `true`, the element is not mutable, focusable, or even submitted with the form. The user can neither edit nor focus on the control, nor its form control descendants.
     */
    disabled: boolean;
    /**
     * If `true` the element can not mutated, meaning the user can not edit the control.
     */
    readonly: boolean;
    /**
     * If `true` the input value has 0 as default value
     */
    exactNumber: boolean;
    /**
     * The maximum value, which must not be less than its minimum (min attribute) value.
     */
    max?: string;
    /**
     * The minimum value, which must not be greater than its maximum (max attribute) value.
     */
    min?: string;
    /**
     * Set the amount of time, in milliseconds, to wait to trigger the `balChange` event after each keystroke. This also impacts form bindings such as `ngModel` or `v-model`.
     */
    debounce: number;
    protected debounceChanged(): void;
    /**
     * The value of the input.
     */
    value?: number | string;
    protected valueChanged(newValue: number | string | undefined, oldValue?: number): void;
    /**
     * If `true`, in Angular reactive forms the control will not be set invalid
     */
    autoInvalidOff: boolean;
    /**
     * Emitted when a keyboard input occurred.
     */
    balInput: EventEmitter<BalEvents.BalNumberInputInputDetail>;
    /**
     * Emitted when the value has changed.
     */
    balChange: EventEmitter<BalEvents.BalNumberInputChangeDetail>;
    /**
     * Emitted when the input loses focus.
     */
    balBlur: EventEmitter<BalEvents.BalNumberInputBlurDetail>;
    /**
     * Emitted when the input has focus.
     */
    balFocus: EventEmitter<BalEvents.BalNumberInputFocusDetail>;
    /**
     * Emitted when a keyboard key has pressed.
     */
    balKeyPress: EventEmitter<BalEvents.BalNumberInputKeyPressDetail>;
    /**
     * LIFECYCLE
     * ------------------------------------------------------
     */
    connectedCallback(): void;
    componentDidLoad(): void;
    componentWillLoad(): void;
    /**
     * LISTENERS
     * ------------------------------------------------------
     */
    listenOnClick(ev: UIEvent): void;
    private resetHandlerTimer?;
    resetHandler(ev: UIEvent): void;
    /**
     * PUBLIC METHODS
     * ------------------------------------------------------
     */
    /**
     * @internal define config for the component
     */
    configChanged(state: BalConfigState): Promise<void>;
    /**
     * Sets focus on the native `input`. Use this method instead of the global
     * `input.focus()`.
     */
    setFocus(): Promise<void>;
    /**
     * Sets blur on the native `input`. Use this method instead of the global
     * `input.blur()`.
     * @internal
     */
    setBlur(): Promise<void>;
    /**
     * Returns the native `<input>` element used under the hood.
     */
    getInputElement(): Promise<HTMLInputElement>;
    /**
     * @internal
     */
    setAriaForm(ariaForm: BalAriaForm): Promise<void>;
    /**
     * GETTERS
     * ------------------------------------------------------
     */
    private createPattern;
    private get lastValueGetter();
    /**
     * EVENT BINDING
     * ------------------------------------------------------
     */
    private onClick;
    private handleClick;
    private onInput;
    private onFocus;
    private onBlur;
    private onKeydown;
    /**
     * RENDER
     * ------------------------------------------------------
     */
    render(): any;
}
