/**
 * 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
 */
import { Direction, Directionality } from '@angular/cdk/bidi';
import { CdkConnectedOverlay, ConnectedOverlayPositionChange, ConnectionPositionPair, HorizontalConnectionPos, VerticalConnectionPos } from '@angular/cdk/overlay';
import { Platform } from '@angular/cdk/platform';
import { AfterViewInit, ChangeDetectorRef, ElementRef, EventEmitter, OnChanges, OnInit, QueryList, Renderer2, SimpleChanges, TemplateRef } from '@angular/core';
import { ControlValueAccessor } from '@angular/forms';
import { NzResizeObserver } from 'ng-zorro-antd/cdk/resize-observer';
import { NzConfigKey, NzConfigService } from 'ng-zorro-antd/core/config';
import { NzNoAnimationDirective } from 'ng-zorro-antd/core/no-animation';
import { NzDestroyService } from 'ng-zorro-antd/core/services';
import { CandyDate, CompatibleValue } from 'ng-zorro-antd/core/time';
import { BooleanInput, FunctionProp, NgClassInterface, NzSafeAny, NzSizeLDSType, NzStatus, NzValidateStatus, OnChangeType, OnTouchedType } from 'ng-zorro-antd/core/types';
import { DateHelperService, NzDatePickerI18nInterface, NzI18nService } from 'ng-zorro-antd/i18n';
import { DatePickerService } from './date-picker.service';
import { DateRangePopupComponent } from './date-range-popup.component';
import { CompatibleDate, DisabledTimeFn, NzDateMode, NzPanelChangeType, PresetRanges, RangePartType, SupportTimeOptions } from './standard-types';
import * as i0 from "@angular/core";
import * as i1 from "ng-zorro-antd/space";
export type NzDatePickerSizeType = 'large' | 'default' | 'small';
export type NzPlacement = 'bottomLeft' | 'bottomRight' | 'topLeft' | 'topRight';
/**
 * The base picker for all common APIs
 */
export declare class NzDatePickerComponent implements OnInit, OnChanges, AfterViewInit, ControlValueAccessor {
    nzConfigService: NzConfigService;
    datePickerService: DatePickerService;
    protected i18n: NzI18nService;
    protected cdr: ChangeDetectorRef;
    private renderer;
    private elementRef;
    private dateHelper;
    private nzResizeObserver;
    private platform;
    private destroy$;
    private directionality;
    readonly _nzModuleName: NzConfigKey;
    static ngAcceptInputType_nzShowTime: BooleanInput | SupportTimeOptions | null | undefined;
    static ngAcceptInputType_nzMode: NzDateMode | string;
    isRange: boolean;
    extraFooter?: TemplateRef<NzSafeAny> | string;
    dir: Direction;
    statusCls: NgClassInterface;
    status: NzValidateStatus;
    hasFeedback: boolean;
    panelMode: NzDateMode | NzDateMode[];
    private isCustomPlaceHolder;
    private isCustomFormat;
    private showTime;
    private isNzDisableFirstChange;
    nzAllowClear: boolean;
    nzAutoFocus: boolean;
    nzDisabled: boolean;
    nzBorderless: boolean;
    nzInputReadOnly: boolean;
    nzInline: boolean;
    nzOpen?: boolean;
    nzDisabledDate?: (d: Date) => boolean;
    nzLocale: NzDatePickerI18nInterface;
    nzPlaceHolder: string | string[];
    nzPopupStyle: object;
    nzDropdownClassName?: string;
    nzSize: NzDatePickerSizeType;
    nzStatus: NzStatus;
    nzFormat: string;
    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[];
    currentPositionX: HorizontalConnectionPos;
    currentPositionY: VerticalConnectionPos;
    get realOpenState(): boolean;
    protected finalSize: import("@angular/core").Signal<NzSizeLDSType>;
    private size;
    private compactSize;
    private document;
    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): string;
    onInputChange(value: string, isEnter?: boolean): void;
    onKeyupEnter(event: Event): void;
    private checkValidDate;
    getPlaceholder(partType?: RangePartType): string;
    isEmptyValue(value: CompatibleValue): boolean;
    isOpenHandledByUser(): boolean;
    noAnimation: NzNoAnimationDirective | null;
    private nzFormStatusService;
    private nzFormNoStatusService;
    constructor(nzConfigService: NzConfigService, datePickerService: DatePickerService, i18n: NzI18nService, cdr: ChangeDetectorRef, renderer: Renderer2, elementRef: ElementRef<HTMLElement>, dateHelper: DateHelperService, nzResizeObserver: NzResizeObserver, platform: Platform, destroy$: NzDestroyService, directionality: Directionality);
    ngOnInit(): void;
    ngOnChanges({ nzStatus, nzPlacement, nzPopupStyle, nzPlaceHolder, nzLocale, nzFormat, nzRenderExtraFooter, nzMode, nzSize }: 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;
    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"], { "nzAllowClear": { "alias": "nzAllowClear"; "required": false; }; "nzAutoFocus": { "alias": "nzAutoFocus"; "required": false; }; "nzDisabled": { "alias": "nzDisabled"; "required": false; }; "nzBorderless": { "alias": "nzBorderless"; "required": false; }; "nzInputReadOnly": { "alias": "nzInputReadOnly"; "required": false; }; "nzInline": { "alias": "nzInline"; "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; }; "nzSize": { "alias": "nzSize"; "required": false; }; "nzStatus": { "alias": "nzStatus"; "required": false; }; "nzFormat": { "alias": "nzFormat"; "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_nzBorderless: unknown;
    static ngAcceptInputType_nzInputReadOnly: unknown;
    static ngAcceptInputType_nzInline: unknown;
    static ngAcceptInputType_nzOpen: unknown;
    static ngAcceptInputType_nzShowToday: unknown;
    static ngAcceptInputType_nzShowNow: unknown;
    static ngAcceptInputType_nzShowWeekNumber: unknown;
}
