import * as polytype from 'polytype';
import * as _angular_core from '@angular/core';
import { MXInputBaseValueComponent, MXLookComponent, AXValueChangedEvent, AXFocusEvent } from '@acorex/cdk/common';
import { AXInputMaskEvent } from '@acorex/cdk/input-mask';

type AXTimeDurationUnit = 'YEAR' | 'MONTH' | 'WEEK' | 'DAY' | 'HOUR' | 'MINUTE' | 'SECOND' | 'MILLISECOND';

declare const AXTimeDurationComponent_base: polytype.Polytype.ClusteredConstructor<[{
    new (): MXInputBaseValueComponent<number>;
    ɵfac: _angular_core.ɵɵFactoryDeclaration<MXInputBaseValueComponent<any>, never>;
    ɵprov: _angular_core.ɵɵInjectableDeclaration<MXInputBaseValueComponent<any>>;
}, typeof MXLookComponent]>;
declare class AXTimeDurationComponent extends AXTimeDurationComponent_base {
    #private;
    protected inputValue: string;
    readonly valueStart: _angular_core.InputSignal<AXTimeDurationUnit>;
    readonly valueEnd: _angular_core.InputSignal<AXTimeDurationUnit>;
    readonly label: _angular_core.InputSignal<boolean>;
    readonly maskDigits: _angular_core.InputSignal<string>;
    readonly minValue: _angular_core.InputSignal<number>;
    readonly maxValue: _angular_core.InputSignal<number>;
    protected mask: _angular_core.WritableSignal<any>;
    protected maskPlaceHolder: _angular_core.WritableSignal<any>;
    private translationService;
    private timeDurationFormatter;
    private onInputFire;
    private onInternalValueChangedFire;
    private YEAR;
    private MONTH;
    private WEEK;
    private DAY;
    private HOUR;
    private MINUTE;
    private SECOND;
    private MILLISECOND;
    private isTranslationInit;
    initTranslation(): Promise<void>;
    protected maskChange(e: AXInputMaskEvent): void;
    protected onInput(event: AXValueChangedEvent<any>): Promise<void>;
    protected internalValueChanged(value: number): Promise<void>;
    private replacePersianLabels;
    private maskToMilliseconds;
    private updateMask;
    protected focusHandler(e: AXFocusEvent): void;
    protected blurHandler(e: AXFocusEvent): void;
    protected validateFn: (val: number) => Promise<{
        rule: string;
        result: boolean;
        message: string;
        value: number;
    } | {
        rule: string;
        result: boolean;
        value: number;
        message?: undefined;
    }>;
    private get __hostName();
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXTimeDurationComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXTimeDurationComponent, "ax-time-duration", never, { "disabled": { "alias": "disabled"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "look": { "alias": "look"; "required": false; }; "valueStart": { "alias": "valueStart"; "required": false; "isSignal": true; }; "valueEnd": { "alias": "valueEnd"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "maskDigits": { "alias": "maskDigits"; "required": false; "isSignal": true; }; "minValue": { "alias": "minValue"; "required": false; "isSignal": true; }; "maxValue": { "alias": "maxValue"; "required": false; "isSignal": true; }; }, { "onValueChanged": "onValueChanged"; }, never, never, true, never>;
}

declare class AXTimeDurationModule {
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXTimeDurationModule, never>;
    static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXTimeDurationModule, never, [typeof AXTimeDurationComponent], [typeof AXTimeDurationComponent]>;
    static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXTimeDurationModule>;
}

export { AXTimeDurationComponent, AXTimeDurationModule };
export type { AXTimeDurationUnit };
