import * as i0 from '@angular/core';
import { TemplateRef, OnChanges, EventEmitter, SimpleChanges, OnDestroy, OnInit, ChangeDetectorRef, AfterViewInit, ElementRef, QueryList } from '@angular/core';
import { CandyDate, CompatibleValue, NormalizedMode, SingleValue } from 'ng-zorro-antd/core/time';
import { NzSafeAny, FunctionProp, BooleanInput, NgClassInterface, NzValidateStatus, NzStatus, NzVariant, NzPlacement, NzSizeLDSType, OnChangeType, OnTouchedType } from 'ng-zorro-antd/core/types';
import { NzCalendarI18nInterface, NzI18nService, NzDatePickerI18nInterface } from 'ng-zorro-antd/i18n';
import * as _angular_cdk_bidi from '@angular/cdk/bidi';
import { Direction } from '@angular/cdk/bidi';
import { CdkConnectedOverlay, ConnectionPositionPair, ConnectedOverlayPositionChange } from '@angular/cdk/overlay';
import { ControlValueAccessor } from '@angular/forms';
import { NzConfigKey } from 'ng-zorro-antd/core/config';
import { ReplaySubject, Subject } from 'rxjs';
import * as i1 from 'ng-zorro-antd/space';

/**
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
 */

type DisabledDateFn = (d: Date) => boolean;
type DisabledTimePartial = 'start' | 'end';
type NzDateMode = 'decade' | 'year' | 'quarter' | 'month' | 'week' | 'date' | 'time';
type RangePartType = 'left' | 'right';
type CompatibleDate = Date | Date[];
type DisabledTimeFn = (current: Date | Date[], partial?: DisabledTimePartial) => DisabledTimeConfig | undefined;
type NzPanelChangeType = {
    mode: NzDateMode;
    date: Date;
} | {
    mode: [startMode: NzDateMode, endMode: NzDateMode];
    date: [startDate: Date, endDate: Date];
};
interface DisabledTimeConfig {
    nzDisabledHours(): number[];
    nzDisabledMinutes(hour: number): number[];
    nzDisabledSeconds(hour: number, minute: number): number[];
}
interface SupportTimeOptions {
    nzFormat?: string;
    nzHourStep?: number;
    nzMinuteStep?: number;
    nzSecondStep?: number;
    nzDisabledHours?(): number[];
    nzDisabledMinutes?(hour: number): number[];
    nzDisabledSeconds?(hour: number, minute: number): number[];
    nzHideDisabledOptions?: boolean;
    nzDefaultOpenValue?: Date;
    nzAddOn?: TemplateRef<void>;
    nzUse12Hours?: boolean;
}
interface PresetRanges {
    [key: string]: Date[] | (() => Date[]);
}

/**
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
 */

declare const PREFIX_CLASS = "ant-picker";
declare function getTimeConfig(value: CandyDate, disabledTime?: DisabledTimeFn): DisabledTimeConfig;
declare function isTimeValidByConfig(value: CandyDate, disabledTimeConfig: DisabledTimeConfig): boolean;
declare function isTimeValid(value: CandyDate, disabledTime: DisabledTimeFn): boolean;
declare function isAllowedDate(value: CandyDate, disabledDate?: DisabledDateFn, disabledTime?: DisabledTimeFn): boolean;

declare class CalendarFooterComponent implements OnChanges {
    private readonly dateAdapter;
    locale: NzCalendarI18nInterface;
    showToday: boolean;
    showNow: boolean;
    hasTimePicker: boolean;
    isRange: boolean;
    okDisabled: boolean;
    disabledDate?: (d: Date) => boolean;
    extraFooter?: TemplateRef<void> | string;
    rangeQuickSelector: TemplateRef<NzSafeAny> | null;
    readonly clickOk: EventEmitter<void>;
    readonly clickToday: EventEmitter<CandyDate>;
    readonly prefixCls: string;
    isTodayDisabled: boolean;
    todayTitle: string;
    ngOnChanges(changes: SimpleChanges): void;
    protected onClickToday(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<CalendarFooterComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<CalendarFooterComponent, "calendar-footer", never, { "locale": { "alias": "locale"; "required": false; }; "showToday": { "alias": "showToday"; "required": false; }; "showNow": { "alias": "showNow"; "required": false; }; "hasTimePicker": { "alias": "hasTimePicker"; "required": false; }; "isRange": { "alias": "isRange"; "required": false; }; "okDisabled": { "alias": "okDisabled"; "required": false; }; "disabledDate": { "alias": "disabledDate"; "required": false; }; "extraFooter": { "alias": "extraFooter"; "required": false; }; "rangeQuickSelector": { "alias": "rangeQuickSelector"; "required": false; }; }, { "clickOk": "clickOk"; "clickToday": "clickToday"; }, never, never, true, never>;
    static ngAcceptInputType_showToday: unknown;
    static ngAcceptInputType_showNow: unknown;
    static ngAcceptInputType_hasTimePicker: unknown;
    static ngAcceptInputType_isRange: unknown;
    static ngAcceptInputType_okDisabled: unknown;
}

/**
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
 */

declare class DatePickerService implements OnDestroy {
    initialValue: CompatibleValue;
    value: CompatibleValue;
    activeDate?: CompatibleValue;
    activeInput: RangePartType;
    arrowLeft: number;
    isRange: boolean;
    valueChange$: ReplaySubject<CompatibleValue>;
    emitValue$: Subject<void>;
    inputPartChange$: Subject<RangePartType | null>;
    initValue(reset?: boolean): void;
    hasValue(value?: CompatibleValue): boolean;
    makeValue(value?: CompatibleDate): CompatibleValue;
    setActiveDate(value: CompatibleValue, hasTimePicker?: boolean, mode?: NormalizedMode): void;
    setValue(value: CompatibleValue): void;
    getActiveIndex(part?: RangePartType): number;
    ngOnDestroy(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<DatePickerService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<DatePickerService>;
}

/**
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
 */

declare class DateRangePopupComponent implements OnInit, OnChanges {
    datePickerService: DatePickerService;
    cdr: ChangeDetectorRef;
    private host;
    private destroyRef;
    isRange: boolean;
    inline: boolean;
    showWeek: boolean;
    locale: NzCalendarI18nInterface | undefined;
    disabledDate?: DisabledDateFn;
    disabledTime?: DisabledTimeFn;
    showToday: boolean;
    showNow: boolean;
    showTime: SupportTimeOptions | boolean;
    extraFooter?: TemplateRef<void> | string;
    ranges?: PresetRanges;
    dateRender?: string | TemplateRef<Date> | FunctionProp<TemplateRef<Date> | string>;
    panelMode: NzDateMode | NzDateMode[];
    defaultPickerValue: CompatibleDate | undefined | null;
    dir: Direction;
    format?: string;
    readonly panelModeChange: EventEmitter<NzPanelChangeType>;
    readonly calendarChange: EventEmitter<CompatibleValue>;
    readonly resultOk: EventEmitter<void>;
    prefixCls: string;
    endPanelMode: NzDateMode | NzDateMode[];
    timeOptions: SupportTimeOptions | SupportTimeOptions[] | null;
    hoverValue: SingleValue[];
    checkedPartArr: boolean[];
    get hasTimePicker(): boolean;
    get hasFooter(): boolean;
    get arrowPosition(): {
        left?: string;
        right?: string;
    };
    ngOnInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    updateActiveDate(): void;
    onClickOk(): void;
    onClickToday(value: CandyDate): void;
    onCellHover(value: CandyDate | null): void;
    onPanelModeChange(panelChangeEvent: NzPanelChangeType, partType?: RangePartType): void;
    onActiveDateChange(value: CandyDate, partType: RangePartType): void;
    onSelectTime(value: CandyDate, partType?: RangePartType): void;
    changeValueFromSelect(value: CandyDate, emitValue?: boolean, isDateCellClick?: boolean, selectionPanel?: RangePartType): void;
    reversedPart(part: RangePartType): RangePartType;
    getPanelMode(panelMode: NzDateMode | NzDateMode[], partType?: RangePartType): NzDateMode;
    getValue(partType?: RangePartType): CandyDate;
    getActiveDate(partType?: RangePartType): CandyDate;
    disabledStartTime: DisabledTimeFn;
    disabledEndTime: DisabledTimeFn;
    isOneAllowed(selectedValue: SingleValue[]): boolean;
    isBothAllowed(selectedValue: SingleValue[]): boolean;
    isAllowed(value: CompatibleValue, isBoth?: boolean): boolean;
    getTimeOptions(partType?: RangePartType): SupportTimeOptions | null;
    onClickPresetRange(val: PresetRanges[keyof PresetRanges]): void;
    onPresetRangeMouseLeave(): void;
    onHoverPresetRange(val: PresetRanges[keyof PresetRanges]): void;
    getObjectKeys(obj?: PresetRanges): string[];
    show(partType: RangePartType): boolean;
    private clearHoverValue;
    private resetCheckedPart;
    private buildTimeOptions;
    private overrideTimeOptions;
    private overrideHms;
    static ɵfac: i0.ɵɵFactoryDeclaration<DateRangePopupComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DateRangePopupComponent, "date-range-popup", never, { "isRange": { "alias": "isRange"; "required": false; }; "inline": { "alias": "inline"; "required": false; }; "showWeek": { "alias": "showWeek"; "required": false; }; "locale": { "alias": "locale"; "required": false; }; "disabledDate": { "alias": "disabledDate"; "required": false; }; "disabledTime": { "alias": "disabledTime"; "required": false; }; "showToday": { "alias": "showToday"; "required": false; }; "showNow": { "alias": "showNow"; "required": false; }; "showTime": { "alias": "showTime"; "required": false; }; "extraFooter": { "alias": "extraFooter"; "required": false; }; "ranges": { "alias": "ranges"; "required": false; }; "dateRender": { "alias": "dateRender"; "required": false; }; "panelMode": { "alias": "panelMode"; "required": false; }; "defaultPickerValue": { "alias": "defaultPickerValue"; "required": false; }; "dir": { "alias": "dir"; "required": false; }; "format": { "alias": "format"; "required": false; }; }, { "panelModeChange": "panelModeChange"; "calendarChange": "calendarChange"; "resultOk": "resultOk"; }, never, never, true, never>;
    static ngAcceptInputType_isRange: unknown;
    static ngAcceptInputType_inline: unknown;
    static ngAcceptInputType_showWeek: unknown;
    static ngAcceptInputType_showToday: unknown;
    static ngAcceptInputType_showNow: unknown;
}

type NzDatePickerSizeType = 'large' | 'default' | 'small';
/**
 * The base picker for all common APIs
 */
declare class NzDatePickerComponent implements OnInit, OnChanges, AfterViewInit, ControlValueAccessor {
    readonly datePickerService: DatePickerService;
    protected readonly i18n: NzI18nService;
    protected readonly cdr: ChangeDetectorRef;
    protected readonly dir: i0.WritableSignal<_angular_cdk_bidi.Direction>;
    private readonly renderer;
    private readonly elementRef;
    private readonly dateAdapter;
    private readonly nzResizeObserver;
    private readonly platform;
    private readonly destroyRef;
    private readonly nzFormStatusService;
    readonly _nzModuleName: NzConfigKey;
    static ngAcceptInputType_nzShowTime: BooleanInput | SupportTimeOptions | null | undefined;
    static ngAcceptInputType_nzMode: NzDateMode | string;
    isRange: boolean;
    extraFooter?: TemplateRef<NzSafeAny> | string;
    statusCls: NgClassInterface;
    status: NzValidateStatus;
    hasFeedback: boolean;
    panelMode: NzDateMode | NzDateMode[];
    private isCustomPlaceHolder;
    private isCustomFormat;
    private showTime;
    private isNzDisableFirstChange;
    readonly nzInline: i0.InputSignalWithTransform<boolean, unknown>;
    nzAllowClear: boolean;
    nzAutoFocus: boolean;
    nzDisabled: boolean;
    nzInputReadOnly: boolean;
    nzOpen?: boolean;
    nzDisabledDate?: (d: Date) => boolean;
    nzLocale: NzDatePickerI18nInterface;
    nzPlaceHolder: string | string[];
    nzPopupStyle: object;
    readonly nzDropdownClassName: i0.InputSignal<string | undefined>;
    nzSize: NzDatePickerSizeType;
    nzStatus: NzStatus;
    nzFormat: string;
    nzVariant: NzVariant | undefined;
    nzDateRender?: TemplateRef<NzSafeAny> | string | FunctionProp<TemplateRef<Date> | string>;
    nzDisabledTime?: DisabledTimeFn;
    nzRenderExtraFooter?: TemplateRef<NzSafeAny> | string | FunctionProp<TemplateRef<NzSafeAny> | string>;
    nzShowToday: boolean;
    nzMode: NzDateMode;
    nzShowNow: boolean;
    nzRanges?: PresetRanges;
    nzDefaultPickerValue: CompatibleDate | null;
    nzSeparator?: string | TemplateRef<NzSafeAny>;
    nzSuffixIcon: string | TemplateRef<NzSafeAny>;
    nzBackdrop: boolean;
    nzId: string | null;
    nzPlacement: NzPlacement;
    nzShowWeekNumber: boolean;
    readonly nzOnPanelChange: EventEmitter<NzPanelChangeType>;
    readonly nzOnCalendarChange: EventEmitter<(Date | null)[]>;
    readonly nzOnOk: EventEmitter<CompatibleDate | null>;
    readonly nzOnOpenChange: EventEmitter<boolean>;
    get nzShowTime(): SupportTimeOptions | boolean;
    set nzShowTime(value: SupportTimeOptions | boolean);
    cdkConnectedOverlay?: CdkConnectedOverlay;
    panel?: DateRangePopupComponent;
    separatorElement?: ElementRef;
    pickerInput?: ElementRef<HTMLInputElement>;
    rangePickerInputs?: QueryList<ElementRef<HTMLInputElement>>;
    get origin(): ElementRef;
    inputSize: number;
    inputWidth?: number;
    prefixCls: string;
    inputValue: NzSafeAny;
    activeBarStyle: object;
    overlayOpen: boolean;
    overlayPositions: ConnectionPositionPair[];
    private readonly currentPosition;
    protected readonly datepickerAnimationEnter: i0.Signal<string>;
    protected readonly datepickerAnimationLeave: i0.Signal<string>;
    protected readonly dropdownClass: i0.Signal<string[]>;
    get realOpenState(): boolean;
    protected finalSize: i0.Signal<NzSizeLDSType | undefined>;
    protected readonly finalVariant: i0.Signal<NzVariant>;
    private size;
    private variant;
    private readonly formSize;
    private readonly formVariant;
    private compactSize;
    private document;
    constructor();
    ngAfterViewInit(): void;
    updateInputWidthAndArrowLeft(): void;
    getInput(partType?: RangePartType): HTMLInputElement | undefined;
    focus(): void;
    onFocus(event: FocusEvent, partType?: RangePartType): void;
    onFocusout(event: FocusEvent): void;
    open(): void;
    close(): void;
    get showClear(): boolean;
    checkAndClose(): void;
    onClickInputBox(event: MouseEvent): void;
    onOverlayKeydown(event: KeyboardEvent): void;
    onPositionChange(position: ConnectedOverlayPositionChange): void;
    onClickClear(event: MouseEvent): void;
    updateInputValue(): void;
    formatValue(value: CandyDate | null): string;
    onInputChange(value: string, isEnter?: boolean): void;
    onKeyupEnter(event: Event): void;
    private checkValidDate;
    getPlaceholder(partType?: RangePartType): string;
    isEmptyValue(value: CompatibleValue): boolean;
    isOpenHandledByUser(): boolean;
    ngOnInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    setModeAndFormat(): void;
    /**
     * Triggered when overlayOpen changes (different with realOpenState)
     *
     * @param open The overlayOpen in picker component
     */
    onOpenChange(open: boolean): void;
    onChangeFn: OnChangeType;
    onTouchedFn: OnTouchedType;
    writeValue(value: CompatibleDate): void;
    registerOnChange(fn: OnChangeType): void;
    registerOnTouched(fn: OnTouchedType): void;
    setDisabledState(isDisabled: boolean): void;
    private setLocale;
    private setDefaultPlaceHolder;
    private getPropertyOfLocale;
    private setValue;
    renderClass(value: boolean): void;
    onPanelModeChange(panelChange: NzPanelChangeType): void;
    onCalendarChange(value: CompatibleValue): void;
    onResultOk(): void;
    private setStatusStyles;
    private setPlacement;
    private generateClass;
    static ɵfac: i0.ɵɵFactoryDeclaration<NzDatePickerComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<NzDatePickerComponent, "nz-date-picker,nz-week-picker,nz-month-picker,nz-quarter-picker,nz-year-picker,nz-range-picker", ["nzDatePicker"], { "nzInline": { "alias": "nzInline"; "required": false; "isSignal": true; }; "nzAllowClear": { "alias": "nzAllowClear"; "required": false; }; "nzAutoFocus": { "alias": "nzAutoFocus"; "required": false; }; "nzDisabled": { "alias": "nzDisabled"; "required": false; }; "nzInputReadOnly": { "alias": "nzInputReadOnly"; "required": false; }; "nzOpen": { "alias": "nzOpen"; "required": false; }; "nzDisabledDate": { "alias": "nzDisabledDate"; "required": false; }; "nzLocale": { "alias": "nzLocale"; "required": false; }; "nzPlaceHolder": { "alias": "nzPlaceHolder"; "required": false; }; "nzPopupStyle": { "alias": "nzPopupStyle"; "required": false; }; "nzDropdownClassName": { "alias": "nzDropdownClassName"; "required": false; "isSignal": true; }; "nzSize": { "alias": "nzSize"; "required": false; }; "nzStatus": { "alias": "nzStatus"; "required": false; }; "nzFormat": { "alias": "nzFormat"; "required": false; }; "nzVariant": { "alias": "nzVariant"; "required": false; }; "nzDateRender": { "alias": "nzDateRender"; "required": false; }; "nzDisabledTime": { "alias": "nzDisabledTime"; "required": false; }; "nzRenderExtraFooter": { "alias": "nzRenderExtraFooter"; "required": false; }; "nzShowToday": { "alias": "nzShowToday"; "required": false; }; "nzMode": { "alias": "nzMode"; "required": false; }; "nzShowNow": { "alias": "nzShowNow"; "required": false; }; "nzRanges": { "alias": "nzRanges"; "required": false; }; "nzDefaultPickerValue": { "alias": "nzDefaultPickerValue"; "required": false; }; "nzSeparator": { "alias": "nzSeparator"; "required": false; }; "nzSuffixIcon": { "alias": "nzSuffixIcon"; "required": false; }; "nzBackdrop": { "alias": "nzBackdrop"; "required": false; }; "nzId": { "alias": "nzId"; "required": false; }; "nzPlacement": { "alias": "nzPlacement"; "required": false; }; "nzShowWeekNumber": { "alias": "nzShowWeekNumber"; "required": false; }; "nzShowTime": { "alias": "nzShowTime"; "required": false; }; }, { "nzOnPanelChange": "nzOnPanelChange"; "nzOnCalendarChange": "nzOnCalendarChange"; "nzOnOk": "nzOnOk"; "nzOnOpenChange": "nzOnOpenChange"; }, never, never, true, [{ directive: typeof i1.NzSpaceCompactItemDirective; inputs: {}; outputs: {}; }]>;
    static ngAcceptInputType_nzAllowClear: unknown;
    static ngAcceptInputType_nzAutoFocus: unknown;
    static ngAcceptInputType_nzDisabled: unknown;
    static ngAcceptInputType_nzInputReadOnly: unknown;
    static ngAcceptInputType_nzOpen: unknown;
    static ngAcceptInputType_nzShowToday: unknown;
    static ngAcceptInputType_nzShowNow: unknown;
    static ngAcceptInputType_nzShowWeekNumber: unknown;
}

declare class NzMonthPickerComponent {
    datePicker: NzDatePickerComponent;
    constructor();
    static ɵfac: i0.ɵɵFactoryDeclaration<NzMonthPickerComponent, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<NzMonthPickerComponent, "nz-month-picker", ["nzMonthPicker"], {}, {}, never, never, true, never>;
}

declare class NzYearPickerComponent {
    datePicker: NzDatePickerComponent;
    constructor();
    static ɵfac: i0.ɵɵFactoryDeclaration<NzYearPickerComponent, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<NzYearPickerComponent, "nz-year-picker", ["nzYearPicker"], {}, {}, never, never, true, never>;
}

declare class NzWeekPickerComponent {
    datePicker: NzDatePickerComponent;
    constructor();
    static ɵfac: i0.ɵɵFactoryDeclaration<NzWeekPickerComponent, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<NzWeekPickerComponent, "nz-week-picker", ["nzWeekPicker"], {}, {}, never, never, true, never>;
}

declare class NzRangePickerComponent {
    static ɵfac: i0.ɵɵFactoryDeclaration<NzRangePickerComponent, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<NzRangePickerComponent, "nz-range-picker", ["nzRangePicker"], {}, {}, never, never, true, never>;
}

/**
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
 */

declare class InnerPopupComponent implements OnChanges {
    activeDate: CandyDate;
    endPanelMode: NzDateMode;
    panelMode: NzDateMode;
    showWeek: boolean;
    locale: NzCalendarI18nInterface;
    showTimePicker: boolean;
    timeOptions: SupportTimeOptions | null;
    disabledDate?: DisabledDateFn;
    dateRender?: string | TemplateRef<Date> | FunctionProp<TemplateRef<Date> | string>;
    selectedValue: CandyDate[];
    hoverValue: CandyDate[];
    value: CandyDate;
    partType: RangePartType;
    format?: string;
    readonly panelChange: EventEmitter<NzPanelChangeType>;
    readonly headerChange: EventEmitter<CandyDate>;
    readonly selectDate: EventEmitter<CandyDate>;
    readonly selectTime: EventEmitter<CandyDate>;
    readonly cellHover: EventEmitter<CandyDate | null>;
    prefixCls: string;
    /**
     * Hide "next" arrow in left panel,
     * hide "prev" arrow in right panel
     *
     * @param direction
     * @param panelMode
     */
    enablePrevNext(direction: 'prev' | 'next', panelMode: NzDateMode): boolean;
    onLeave(): void;
    onSelectTime(date: Date): void;
    onSelectDate(date: CandyDate | Date): void;
    onChooseMonth(value: CandyDate): void;
    onChooseQuarter(value: CandyDate): void;
    onChooseYear(value: CandyDate): void;
    onChooseDecade(value: CandyDate): void;
    ngOnChanges(changes: SimpleChanges): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<InnerPopupComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<InnerPopupComponent, "inner-popup", never, { "activeDate": { "alias": "activeDate"; "required": false; }; "endPanelMode": { "alias": "endPanelMode"; "required": false; }; "panelMode": { "alias": "panelMode"; "required": false; }; "showWeek": { "alias": "showWeek"; "required": false; }; "locale": { "alias": "locale"; "required": false; }; "showTimePicker": { "alias": "showTimePicker"; "required": false; }; "timeOptions": { "alias": "timeOptions"; "required": false; }; "disabledDate": { "alias": "disabledDate"; "required": false; }; "dateRender": { "alias": "dateRender"; "required": false; }; "selectedValue": { "alias": "selectedValue"; "required": false; }; "hoverValue": { "alias": "hoverValue"; "required": false; }; "value": { "alias": "value"; "required": false; }; "partType": { "alias": "partType"; "required": false; }; "format": { "alias": "format"; "required": false; }; }, { "panelChange": "panelChange"; "headerChange": "headerChange"; "selectDate": "selectDate"; "selectTime": "selectTime"; "cellHover": "cellHover"; }, never, never, true, never>;
    static ngAcceptInputType_showWeek: unknown;
    static ngAcceptInputType_showTimePicker: unknown;
}

declare class NzQuarterPickerComponent {
    datePicker: NzDatePickerComponent;
    constructor();
    static ɵfac: i0.ɵɵFactoryDeclaration<NzQuarterPickerComponent, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<NzQuarterPickerComponent, "nz-quarter-picker", ["nzQuarterPicker"], {}, {}, never, never, true, never>;
}

declare class NzDatePickerModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<NzDatePickerModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<NzDatePickerModule, never, [typeof NzDatePickerComponent, typeof NzMonthPickerComponent, typeof NzYearPickerComponent, typeof NzWeekPickerComponent, typeof NzRangePickerComponent, typeof CalendarFooterComponent, typeof InnerPopupComponent, typeof DateRangePopupComponent, typeof NzQuarterPickerComponent], [typeof NzDatePickerComponent, typeof NzRangePickerComponent, typeof NzMonthPickerComponent, typeof NzYearPickerComponent, typeof NzWeekPickerComponent, typeof NzQuarterPickerComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<NzDatePickerModule>;
}

/**
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
 */

interface PanelSelector {
    className: string;
    title?: string;
    label: string;
    onClick(): void;
}
interface DateCell {
    trackByIndex: NzSafeAny;
    value: Date;
    content: TemplateRef<Date> | string;
    onClick(): void;
    onMouseEnter(): void;
    isDisabled: boolean;
    isSelected: boolean;
    label?: string;
    title?: string;
    cellRender?: TemplateRef<Date> | string;
    fullCellRender?: TemplateRef<Date> | string;
    isToday?: boolean;
    classMap?: object;
    isStartSingle?: boolean;
    isEndSingle?: boolean;
    isSelectedStart?: boolean;
    isSelectedEnd?: boolean;
    isHoverStart?: boolean;
    isHoverEnd?: boolean;
    isInHoverRange?: boolean;
    isInSelectedRange?: boolean;
    isRangeStartNearHover?: boolean;
    isRangeEndNearHover?: boolean;
    isFirstCellInPanel?: boolean;
    isLastCellInPanel?: boolean;
}
interface DateBodyRow {
    trackByIndex: NzSafeAny;
    dateCells: DateCell[];
    isActive?: boolean;
    weekNum?: number;
    classMap?: object;
}
interface DecadeCell extends DateCell {
    isBiggerThanEnd?: boolean;
    isLowerThanStart?: boolean;
}
interface YearCell extends DateCell {
    isSameDecade?: boolean;
}

/**
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
 */

declare abstract class AbstractPanelHeader implements OnInit, OnChanges {
    prefixCls: string;
    selectors: PanelSelector[];
    value: CandyDate;
    mode: NzDateMode;
    locale: NzCalendarI18nInterface;
    showSuperPreBtn: boolean;
    showSuperNextBtn: boolean;
    showPreBtn: boolean;
    showNextBtn: boolean;
    readonly panelChange: EventEmitter<NzPanelChangeType>;
    readonly valueChange: EventEmitter<CandyDate>;
    abstract getSelectors(): PanelSelector[];
    superPreviousTitle(): string;
    previousTitle(): string;
    superNextTitle(): string;
    nextTitle(): string;
    superPrevious(): void;
    superNext(): void;
    previous(): void;
    next(): void;
    changeValue(value: CandyDate): void;
    changeMode(mode: NzDateMode): void;
    private render;
    ngOnInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    trackBySelector(selector: PanelSelector): string;
    static ɵfac: i0.ɵɵFactoryDeclaration<AbstractPanelHeader, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<AbstractPanelHeader, never, never, { "value": { "alias": "value"; "required": false; }; "mode": { "alias": "mode"; "required": false; }; "locale": { "alias": "locale"; "required": false; }; "showSuperPreBtn": { "alias": "showSuperPreBtn"; "required": false; }; "showSuperNextBtn": { "alias": "showSuperNextBtn"; "required": false; }; "showPreBtn": { "alias": "showPreBtn"; "required": false; }; "showNextBtn": { "alias": "showNextBtn"; "required": false; }; }, { "panelChange": "panelChange"; "valueChange": "valueChange"; }, never, never, true, never>;
    static ngAcceptInputType_showSuperPreBtn: unknown;
    static ngAcceptInputType_showSuperNextBtn: unknown;
    static ngAcceptInputType_showPreBtn: unknown;
    static ngAcceptInputType_showNextBtn: unknown;
}

declare class DecadeHeaderComponent extends AbstractPanelHeader {
    previous(): void;
    next(): void;
    mode: NzDateMode;
    get startYear(): number;
    get endYear(): number;
    superPrevious(): void;
    superNext(): void;
    getSelectors(): PanelSelector[];
    static ɵfac: i0.ɵɵFactoryDeclaration<DecadeHeaderComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DecadeHeaderComponent, "decade-header", never, {}, {}, never, never, true, never>;
}

/**
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
 */

declare abstract class AbstractTable implements OnInit, OnChanges {
    headRow: DateCell[];
    bodyRows: DateBodyRow[];
    MAX_ROW: number;
    MAX_COL: number;
    prefixCls: string;
    value: CandyDate;
    locale: NzCalendarI18nInterface;
    activeDate: CandyDate;
    showWeek: boolean;
    selectedValue: CandyDate[];
    hoverValue: CandyDate[];
    disabledDate?: (d: Date) => boolean;
    cellRender?: string | TemplateRef<Date> | FunctionProp<TemplateRef<Date> | string>;
    fullCellRender?: string | TemplateRef<Date> | FunctionProp<TemplateRef<Date> | string>;
    canSelectWeek: boolean;
    readonly valueChange: EventEmitter<CandyDate>;
    readonly cellHover: EventEmitter<CandyDate>;
    protected render(): void;
    hasRangeValue(): boolean;
    getClassMap(cell: DateCell): Record<string, boolean>;
    abstract makeHeadRow(): DateCell[];
    abstract makeBodyRows(): DateBodyRow[];
    ngOnInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    private isDateRealChange;
    private isSameDate;
    static ɵfac: i0.ɵɵFactoryDeclaration<AbstractTable, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<AbstractTable, never, never, { "prefixCls": { "alias": "prefixCls"; "required": false; }; "value": { "alias": "value"; "required": false; }; "locale": { "alias": "locale"; "required": false; }; "activeDate": { "alias": "activeDate"; "required": false; }; "showWeek": { "alias": "showWeek"; "required": false; }; "selectedValue": { "alias": "selectedValue"; "required": false; }; "hoverValue": { "alias": "hoverValue"; "required": false; }; "disabledDate": { "alias": "disabledDate"; "required": false; }; "cellRender": { "alias": "cellRender"; "required": false; }; "fullCellRender": { "alias": "fullCellRender"; "required": false; }; "canSelectWeek": { "alias": "canSelectWeek"; "required": false; }; }, { "valueChange": "valueChange"; "cellHover": "cellHover"; }, never, never, true, never>;
    static ngAcceptInputType_showWeek: unknown;
    static ngAcceptInputType_canSelectWeek: unknown;
}

/**
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
 */

declare class DecadeTableComponent extends AbstractTable implements OnChanges {
    get startYear(): number;
    get endYear(): number;
    makeHeadRow(): DateCell[];
    makeBodyRows(): DateBodyRow[];
    getClassMap(cell: DecadeCell): Record<string, boolean>;
    private chooseDecade;
    static ɵfac: i0.ɵɵFactoryDeclaration<DecadeTableComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DecadeTableComponent, "decade-table", never, {}, {}, never, never, true, never>;
}

declare class YearHeaderComponent extends AbstractPanelHeader {
    mode: NzDateMode;
    get startYear(): number;
    get endYear(): number;
    superPrevious(): void;
    superNext(): void;
    getSelectors(): PanelSelector[];
    static ɵfac: i0.ɵɵFactoryDeclaration<YearHeaderComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<YearHeaderComponent, "year-header", never, {}, {}, never, never, true, never>;
}

declare class YearTableComponent extends AbstractTable {
    private readonly dateAdapter;
    MAX_ROW: number;
    MAX_COL: number;
    makeHeadRow(): DateCell[];
    makeBodyRows(): DateBodyRow[];
    getClassMap(cell: YearCell): Record<string, boolean>;
    private isDisabledYear;
    private addCellProperty;
    private chooseYear;
    static ɵfac: i0.ɵɵFactoryDeclaration<YearTableComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<YearTableComponent, "year-table", never, {}, {}, never, never, true, never>;
}

declare class QuarterHeaderComponent extends AbstractPanelHeader {
    private readonly dateAdapter;
    mode: NzDateMode;
    getSelectors(): PanelSelector[];
    static ɵfac: i0.ɵɵFactoryDeclaration<QuarterHeaderComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<QuarterHeaderComponent, "quarter-header", never, {}, {}, never, never, true, never>;
}

/**
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
 */

declare class QuarterTableComponent extends AbstractTable implements OnChanges, OnInit {
    private readonly dateAdapter;
    MAX_ROW: number;
    MAX_COL: number;
    private changeValueFromInside;
    makeHeadRow(): DateCell[];
    makeBodyRows(): DateBodyRow[];
    private isDisabledQuarter;
    private addCellProperty;
    static ɵfac: i0.ɵɵFactoryDeclaration<QuarterTableComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<QuarterTableComponent, "quarter-table", never, {}, {}, never, never, true, never>;
}

declare class MonthHeaderComponent extends AbstractPanelHeader {
    private readonly dateAdapter;
    mode: NzDateMode;
    getSelectors(): PanelSelector[];
    static ɵfac: i0.ɵɵFactoryDeclaration<MonthHeaderComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<MonthHeaderComponent, "month-header", never, {}, {}, never, never, true, never>;
}

/**
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
 */

declare class MonthTableComponent extends AbstractTable implements OnChanges, OnInit {
    private readonly dateAdapter;
    MAX_ROW: number;
    MAX_COL: number;
    makeHeadRow(): DateCell[];
    makeBodyRows(): DateBodyRow[];
    private isDisabledMonth;
    private addCellProperty;
    private chooseMonth;
    static ɵfac: i0.ɵɵFactoryDeclaration<MonthTableComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<MonthTableComponent, "month-table", never, {}, {}, never, never, true, never>;
}

declare class DateHeaderComponent extends AbstractPanelHeader {
    private readonly dateAdapter;
    getSelectors(): PanelSelector[];
    static ɵfac: i0.ɵɵFactoryDeclaration<DateHeaderComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DateHeaderComponent, "date-header", never, {}, {}, never, never, true, never>;
}

/**
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
 */

declare class DateTableComponent extends AbstractTable implements OnChanges, OnInit {
    private readonly i18n;
    private readonly dateAdapter;
    format?: string;
    private changeValueFromInside;
    makeHeadRow(): DateCell[];
    private getVeryShortWeekFormat;
    makeBodyRows(): DateBodyRow[];
    addCellProperty(cell: DateCell, date: CandyDate): void;
    getClassMap(cell: DateCell): Record<string, boolean>;
    static ɵfac: i0.ɵɵFactoryDeclaration<DateTableComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DateTableComponent, "date-table", never, { "format": { "alias": "format"; "required": false; }; }, {}, never, never, true, never>;
}

/**
 * A collection module of internal date picker components
 */
declare class LibPackerModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<LibPackerModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<LibPackerModule, never, [typeof DateHeaderComponent, typeof DateTableComponent, typeof DecadeHeaderComponent, typeof DecadeTableComponent, typeof MonthHeaderComponent, typeof MonthTableComponent, typeof YearHeaderComponent, typeof YearTableComponent, typeof QuarterHeaderComponent, typeof QuarterTableComponent], [typeof DateHeaderComponent, typeof DateTableComponent, typeof DecadeHeaderComponent, typeof DecadeTableComponent, typeof MonthHeaderComponent, typeof MonthTableComponent, typeof YearHeaderComponent, typeof YearTableComponent, typeof QuarterHeaderComponent, typeof QuarterTableComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<LibPackerModule>;
}

/**
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
 */
/**
 * Compatible translate the moment-like format pattern to angular's pattern
 * Why? For now, we need to support the existing language formats in AntD, and AntD uses the default temporal syntax.
 *
 * TODO: compare and complete all format patterns
 * Each format docs as below:
 *
 * @link https://momentjs.com/docs/#/displaying/format/
 * @link https://angular.dev/api/common/DatePipe#description
 * @param format input format pattern
 */
declare function transCompatFormat(format: string): string;

export { LibPackerModule, NzDatePickerComponent, NzDatePickerModule, NzMonthPickerComponent, NzQuarterPickerComponent, NzRangePickerComponent, NzWeekPickerComponent, NzYearPickerComponent, PREFIX_CLASS, getTimeConfig, isAllowedDate, isTimeValid, isTimeValidByConfig, transCompatFormat, AbstractPanelHeader as ɵAbstractPanelHeader, AbstractTable as ɵAbstractTable, CalendarFooterComponent as ɵCalendarFooterComponent, DateHeaderComponent as ɵDateHeaderComponent, DatePickerService as ɵDatePickerService, DateRangePopupComponent as ɵDateRangePopupComponent, DateTableComponent as ɵDateTableComponent, DecadeHeaderComponent as ɵDecadeHeaderComponent, DecadeTableComponent as ɵDecadeTableComponent, InnerPopupComponent as ɵInnerPopupComponent, MonthHeaderComponent as ɵMonthHeaderComponent, MonthTableComponent as ɵMonthTableComponent, QuarterHeaderComponent as ɵQuarterHeaderComponent, QuarterTableComponent as ɵQuarterTableComponent, YearHeaderComponent as ɵYearHeaderComponent, YearTableComponent as ɵYearTableComponent };
export type { CompatibleDate, DisabledDateFn, DisabledTimeConfig, DisabledTimeFn, DisabledTimePartial, NzDateMode, NzDatePickerSizeType, NzPanelChangeType, PresetRanges, RangePartType, SupportTimeOptions };
