import { EventEmitter } from '@angular/core';
import { ControlValueAccessor, FormControl, FormGroup, NgForm } from '@angular/forms';
import { MatFormFieldAppearance } from '@angular/material/form-field';
import { TooltipPosition } from '@angular/material/tooltip';
import { DateAdapter, ThemePalette } from '@angular/material/core';
import { MatCalendarCellClassFunction, MatCalendarView, MatDatepicker } from '@angular/material/datepicker';
import * as moment from 'moment';
import { ZuiDDateTime } from '@material-zui/core';
import { ITypeView, ZUIDateTimeType, ZUIDateValue } from './types';
import { DateTimeService } from './service/date-time.service';
import { IAutoComplete, IInputVal, IValidatorMessage, ZUIDateView, ZUIDTPAction, ZUIDTPDateRange } from '../constants';
export declare class ZUIDateTimePickerComponent implements ControlValueAccessor {
    #private;
    private adapter;
    private dateTimeService;
    label: string;
    icon: string;
    hintStart: string;
    hintEnd: string;
    locales: string;
    name: string;
    disabledValidate: boolean;
    color: ThemePalette;
    actions: ZUIDTPAction[];
    placeholder: string;
    /** for date range */
    placeholderStart: string;
    /** for date range */
    placeholderEnd: string;
    minDate: Date;
    maxDate: Date;
    /** "legacy" | "standard" | "fill" | "outline" */
    appearance: MatFormFieldAppearance;
    /** 'date' | 'daterange' | 'datetime' | 'time' | 'calendar' */
    type: ZUIDateTimeType;
    /** 'on' | 'off' */
    autocomplete: IAutoComplete;
    /** [hour, minute, second] */
    defaultTime: number[];
    /** default "200px", eg: "300px", "400em", "500rem" */
    width: string;
    /** default "month", eg: "month" | "year" | "multi-year" */
    startView: MatCalendarView;
    /** default 'day-month-year', eg: 'day-month-year' | 'month-year' */
    typeView: ITypeView;
    /** https://momentjs.com/docs/#/displaying/format */
    format: string;
    stepHour: number;
    stepMinute: number;
    stepSecond: number;
    filter: (zuiDateTime: ZuiDDateTime) => boolean;
    /** return class to hight light day, must set component to 'encapsulation: ViewEncapsulation.None' */
    dateClass: (zuiDateTime: ZuiDDateTime, view: ZUIDateView) => string;
    /** must set component to 'encapsulation: ViewEncapsulation.None' */
    panelClass: string;
    validatorMessage: IValidatorMessage;
    validatorMessageDefault: IValidatorMessage;
    validatorMessageVal: IValidatorMessage;
    requiredVal: boolean;
    set required(val: IInputVal);
    readonly: boolean;
    set disabledReadonly(val: IInputVal);
    touchUiVal: boolean;
    set touchUi(val: IInputVal);
    showSecondsVal: boolean;
    set showSeconds(val: IInputVal);
    disableMinuteVal: boolean;
    set disableMinute(val: IInputVal);
    /** show AM/PM */
    set enableMeridian(val: IInputVal);
    enableMeridianVal: boolean;
    customApplyBtnVal: boolean;
    set customApplyBtn(val: IInputVal);
    /** hide arrow up/down of time selector */
    set hideSpinners(val: IInputVal);
    showSpinners: boolean;
    tooltipPosition: TooltipPosition;
    tooltipDisabled: boolean;
    set showTooltip(val: IInputVal);
    fullWidth: boolean;
    set noFullWidth(val: IInputVal);
    disabledAllVal: boolean;
    set disabledAll(val: IInputVal);
    disabledInputVal: boolean;
    set disabledInput(val: IInputVal);
    disabledIconVal: boolean;
    set disabledIcon(val: IInputVal);
    allowValidate: boolean;
    set firstValidate(val: IInputVal);
    clickToOpen: boolean;
    set disabledClickToOpen(val: IInputVal);
    comparisonStartVal: moment.Moment;
    set comparisonStart(date: Date);
    comparisonEndVal: moment.Moment;
    set comparisonEnd(date: Date);
    set form(val: NgForm | FormGroup);
    set model(value: ZUIDateValue);
    modelChange: EventEmitter<ZUIDateValue>;
    valueChange: EventEmitter<ZUIDTPDateRange | ZuiDDateTime>;
    picker: MatDatepicker<any>;
    formControl: FormControl;
    dateRangeGroup: FormGroup;
    constructor(adapter: DateAdapter<any>, dateTimeService: DateTimeService);
    ngOnInit(): void;
    ngOnDestroy(): void;
    ngOnChanges(): void;
    ngAfterViewInit(): void;
    get error(): IInputVal;
    get tooltipValue(): string;
    get isDateRange(): boolean;
    onChange(_: any): void;
    registerOnTouched(): void;
    registerOnChange(fn: () => void): void;
    writeValue(value: ZUIDateValue): void;
    dateTimeChange: (date: Date) => void;
    filterFunc: (value?: moment.Moment) => boolean;
    dateClassFunc: MatCalendarCellClassFunction<Date>;
    onMonthSelect(monthAndYear: moment.Moment, datepicker: MatDatepicker<any>): void;
    onOpened: () => void;
    onClick: () => void;
    callback: (item: ZUIDTPAction) => void;
    open: () => void;
    close: () => void;
}
