import { EventEmitter } from '@angular/core';
import { Subject } from 'rxjs';
import { KbqFormFieldControl } from './form-field-control';
import * as i0 from "@angular/core";
type KbqNumberInput = KbqFormFieldControl<unknown> & {
    stepUp: (step: number) => void;
    stepDown: (step: number) => void;
    step: number;
};
/**
 * Timeout duration when clicking the up/down arrow
 * @docs-private
 */
export declare const KBQ_STEPPER_INITIAL_TIMEOUT = 300;
/**
 * Interval delay when clicking the up/down arrow
 * @docs-private
 */
export declare const KBQ_STEPPER_INTERVAL_DELAY = 75;
/** Component which allow to increment or decrement number value. */
export declare class KbqStepper {
    private readonly formField;
    private readonly document;
    /** Emitted when the stepper is incremented. */
    readonly stepUp: EventEmitter<void>;
    /** Emitted when the stepper is decremented. */
    readonly stepDown: EventEmitter<void>;
    /** @docs-private */
    protected readonly mouseUp: Subject<void>;
    /**
     * Timing observable simulating long press in native input-number.
     * - Value increases/decreases by step immediately.
     * - Brief pause (`300ms`)
     * - Numbers start running upward/downward with selected speed
     * (controlled by interval period)
     * @see KBQ_STEPPER_INTERVAL_DELAY
     * @see KBQ_STEPPER_INITIAL_TIMEOUT
     * @docs-private
     */
    private readonly longPress;
    /**
     * Form field number control.
     *
     * @docs-private
     */
    protected get control(): KbqNumberInput;
    /**
     * @docs-private
     */
    connectTo(numberInput: KbqNumberInput): void;
    /** @docs-private */
    onStepUp($event: MouseEvent): void;
    /** @docs-private */
    onStepDown($event: MouseEvent): void;
    private handleStep;
    static ɵfac: i0.ɵɵFactoryDeclaration<KbqStepper, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<KbqStepper, "kbq-stepper", ["kbqStepper"], {}, { "stepUp": "stepUp"; "stepDown": "stepDown"; }, never, never, true, never>;
}
export {};
