import type { MaskitoDateMode } from '@maskito/kit';
import { TuiControl } from '@taiga-ui/cdk/classes';
import type { TuiDateMode, TuiDayRange, TuiTime } from '@taiga-ui/cdk/date-time';
import { TuiDay } from '@taiga-ui/cdk/date-time';
import { TuiCalendar } from '@taiga-ui/core/components/calendar';
import { TuiTextfieldDirective } from '@taiga-ui/core/components/textfield';
import type { TuiItemsHandlers } from '@taiga-ui/core/directives/items-handlers';
import { TuiCalendarRange } from '@taiga-ui/kit/components/calendar-range';
import type { TuiInputDateOptionsNew } from './input-date.options';
import * as i0 from "@angular/core";
import * as i1 from "@taiga-ui/core/components/textfield";
import * as i2 from "@taiga-ui/core/directives/dropdown";
import * as i3 from "@taiga-ui/core/directives/items-handlers";
import * as i4 from "@maskito/angular";
export declare const TUI_DATE_ADAPTER: Record<TuiDateMode, MaskitoDateMode>;
export declare abstract class TuiInputDateBase<T extends TuiDay | TuiDayRange | readonly [TuiDay, TuiTime | null]> extends TuiControl<T | null> {
    private readonly calendar;
    protected readonly el: HTMLInputElement;
    protected readonly textfield: TuiTextfieldDirective<any>;
    protected readonly filler: import("@angular/core").Signal<string>;
    protected readonly mobile: boolean;
    protected readonly open: import("@angular/core").WritableSignal<boolean>;
    protected readonly icon: import("@angular/core").Signal<string>;
    protected readonly handlers: TuiItemsHandlers<T>;
    protected readonly dropdownEnabled: import("@angular/core").Signal<boolean>;
    protected readonly options: Omit<TuiInputDateOptionsNew, 'valueTransformer'>;
    protected readonly format: import("@angular/core").Signal<import("@taiga-ui/core/tokens").TuiDateFormatSettings>;
    protected readonly valueEffect: import("@angular/core").EffectRef;
    protected readonly calendarIn: import("@angular/core").EffectRef;
    protected readonly calendarOut: import("@angular/core").EffectRef;
    readonly native: boolean;
    readonly min: import("@angular/core").WritableSignal<TuiDay>;
    readonly max: import("@angular/core").WritableSignal<TuiDay>;
    protected abstract onValueChange(value: string): void;
    set minSetter(min: Exclude<T, TuiDayRange> | TuiDay | null);
    set maxSetter(max: Exclude<T, TuiDayRange> | TuiDay | null);
    writeValue(value: T | null): void;
    setDate(value: TuiDay | TuiDayRange): void;
    protected processCalendar(calendar: TuiCalendar | TuiCalendarRange): void;
    protected onClick(): void;
    protected stringify(value: T | null): string;
    static ɵfac: i0.ɵɵFactoryDeclaration<TuiInputDateBase<any>, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<TuiInputDateBase<any>, never, never, { "minSetter": { "alias": "min"; "required": false; }; "maxSetter": { "alias": "max"; "required": false; }; }, {}, never, never, true, never>;
}
export declare class TuiInputDateDirective extends TuiInputDateBase<TuiDay> {
    protected readonly identity: void;
    protected readonly mask: import("@angular/core").Signal<import("@maskito/core").MaskitoOptions | null>;
    protected onValueChange(value: string): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<TuiInputDateDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<TuiInputDateDirective, "input[tuiInputDate]", never, {}, {}, never, never, true, [{ directive: typeof i1.TuiWithTextfield; inputs: {}; outputs: {}; }, { directive: typeof i2.TuiDropdownAuto; inputs: {}; outputs: {}; }, { directive: typeof i3.TuiItemsHandlersValidator; inputs: {}; outputs: {}; }, { directive: typeof i4.MaskitoDirective; inputs: {}; outputs: {}; }]>;
}
