import { ComponentInterface, EventEmitter } 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 { LogInstance, Loggable } from '../../utils/log';
import { HTMLStencilElement } from '../../stencil-public-runtime';
export declare class InputStepper implements ComponentInterface, BalConfigObserver, FormInput<number | undefined>, BalAriaFormLinking, Loggable {
    private inputId;
    private inheritedAttributes;
    private decreaseHasFocus;
    private increaseHasFocus;
    nativeInput?: HTMLInputElement;
    el: HTMLStencilElement;
    focused: boolean;
    language: BalLanguage;
    region: BalRegion;
    ariaForm: BalAriaForm;
    log: LogInstance;
    createLogger(log: LogInstance): void;
    /**
     * The name of the control, which is submitted with the form data.
     */
    name: string;
    /**
     * The min value the input can have
     */
    min: number;
    /**
     * The max value the input can have
     */
    max: number;
    /**
     * The steps in which the input increases or decreases
     */
    steps: number;
    /**
     * 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 is shown as invalid
     */
    invalid: boolean;
    /**
     * 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. Only allows values in the range of the min max attribute.
     */
    value: number;
    private initialValue;
    /**
     * If `true`, in Angular reactive forms the control will not be set invalid
     */
    autoInvalidOff: boolean;
    /**
     * Emitted when the input value has changed.
     */
    balChange: EventEmitter<BalEvents.BalInputStepperChangeDetail>;
    /**
     * Emitted when the input value has changed.
     */
    balInput: EventEmitter<BalEvents.BalInputStepperInputDetail>;
    /**
     * Emitted when the input value has increased.
     */
    balIncrease: EventEmitter<BalEvents.BalInputStepperIncreaseDetail>;
    /**
     * Emitted when the input value has decreased.
     */
    balDecrease: EventEmitter<BalEvents.BalInputStepperDecreaseDetail>;
    /**
     * Emitted when the input has focus.
     */
    balFocus: EventEmitter<BalEvents.BalInputStepperFocusDetail>;
    /**
     * Emitted when a keyboard input occurred.
     */
    balBlur: EventEmitter<BalEvents.BalInputStepperBlurDetail>;
    listenOnClick(ev: UIEvent): void;
    resetHandler(ev: UIEvent): void;
    connectedCallback(): void;
    componentWillLoad(): void;
    /**
     * @internal define config for the component
     */
    configChanged(state: BalConfigState): Promise<void>;
    /**
     * Returns the native `<input>` element used under the hood.
     */
    getInputElement(): Promise<HTMLInputElement | undefined>;
    /**
     * @internal
     */
    setAriaForm(ariaForm: BalAriaForm): Promise<void>;
    increase(): void;
    decrease(): void;
    private onFocusDecrease;
    private onFocusIncrease;
    private onFocus;
    private onBlurDecrease;
    private onBlurIncrease;
    private onBlur;
    render(): any;
}
