import { FocusMonitor } from '@angular/cdk/a11y';
import { BooleanInput, NumberInput } from '@angular/cdk/coercion';
import { ChangeDetectorRef, DoCheck, ElementRef, EventEmitter, OnChanges, OnDestroy } from '@angular/core';
import { ControlValueAccessor, FormControl, FormGroupDirective, NgControl, NgForm, ValidationErrors, Validator, ValidatorFn } from '@angular/forms';
import { CanUpdateErrorState, ErrorStateMatcher } from '@angular/material/core';
import { MatFormFieldControl } from '@angular/material/form-field';
import { _MatInputMixinBase, DejaChildValidatorDirective, DejaTextMetricsService } from '@deja-js/component/core';
import { Subject } from 'rxjs';
import * as i0 from "@angular/core";
export interface RangeError {
    rangeError: {
        given: unknown;
        max: NumberInput;
        min: NumberInput;
    };
}
export declare const createCounterRangeValidator: (comp: DejaNumericStepperComponent) => (c: FormControl) => RangeError;
export declare class DejaNumericStepperComponent extends _MatInputMixinBase implements CanUpdateErrorState, DoCheck, OnChanges, OnDestroy, ControlValueAccessor, MatFormFieldControl<number>, Validator {
    dejaTextMetricsService: DejaTextMetricsService;
    private elementRef;
    private changeDetectorRef;
    ngControl: NgControl;
    private fm;
    static nextId: number;
    /** Output to get the event when the value is modified (no validation)  */
    readonly textChange: EventEmitter<number>;
    id: string;
    get shouldLabelFloat(): boolean;
    describedBy: string;
    _disabled: boolean;
    /** Unit of stepper */
    unit: string;
    controlType: string;
    errorState: boolean;
    size: number;
    stateChanges: Subject<void>;
    focused: boolean;
    /** Function for min / max validation */
    validateFn: ValidatorFn;
    _max: number;
    _min: number;
    _step: number;
    private _hideSteppers;
    private inputElement;
    /** InputElement of stepper */
    set inputElementRef(element: ElementRef<HTMLInputElement>);
    /** Max value of stepper */
    get max(): NumberInput;
    set max(value: NumberInput);
    /** Min value of stepper */
    get min(): NumberInput;
    set min(value: NumberInput);
    get isOffLimits(): boolean;
    /** Step for stepper : default 1 */
    get step(): NumberInput;
    set step(value: NumberInput);
    /** hide the steppers */
    get hideSteppers(): BooleanInput;
    set hideSteppers(value: BooleanInput);
    set inputValidatorDirective(value: DejaChildValidatorDirective);
    /**
     * Placeholder of the input
     */
    get placeholder(): string;
    set placeholder(plh: string);
    private _placeholder;
    /** unit always visible */
    get alwaysDisplayUnit(): BooleanInput;
    set alwaysDisplayUnit(value: BooleanInput);
    private _alwaysDisplayUnit;
    get empty(): boolean;
    private _value;
    /**
 * Get disable value
 */
    get disabled(): boolean;
    /** Allow to disabled the component */
    set disabled(value: boolean);
    get required(): boolean;
    set required(req: boolean);
    private _required;
    constructor(dejaTextMetricsService: DejaTextMetricsService, elementRef: ElementRef<HTMLElement>, changeDetectorRef: ChangeDetectorRef, ngControl: NgControl, fm: FocusMonitor, _parentForm: NgForm, _parentFormGroup: FormGroupDirective, _defaultErrorStateMatcher: ErrorStateMatcher);
    ngOnChanges(changes: any): void;
    ngDoCheck(): void;
    ngOnDestroy(): void;
    validate(c: FormControl): ValidationErrors;
    setDescribedByIds(ids: string[]): void;
    onContainerClick(event: MouseEvent): void;
    /** Give focus to this component */
    setFocus(): void;
    get value(): number;
    set value(val: number);
    writeValue(value: number): void;
    registerOnChange(fn: (_a: unknown) => void): void;
    registerOnTouched(fn: () => void): void;
    setDisabledState(isDisabled: boolean): void;
    checkSize(value?: number): void;
    protected onTouchedCallback: () => void;
    protected onChangeCallback: (_?: unknown) => void;
    protected onValidatorChangeCallback: () => void;
    static ɵfac: i0.ɵɵFactoryDeclaration<DejaNumericStepperComponent, [null, null, null, { optional: true; self: true; }, null, { optional: true; }, { optional: true; }, null]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DejaNumericStepperComponent, "deja-numeric-stepper", never, { "unit": "unit"; "max": "max"; "min": "min"; "step": "step"; "hideSteppers": "hideSteppers"; "placeholder": "placeholder"; "alwaysDisplayUnit": "alwaysDisplayUnit"; "disabled": "disabled"; "required": "required"; }, { "textChange": "textChange"; }, never, never>;
}
