import { KeyValueDiffers } from '@angular/core';
import * as i0 from "@angular/core";
export type DateFilterType = (date: Date) => boolean;
export type DayFormatType = 'numeric' | '2-digit' | ((date: Date) => string | number);
export type WeekdayFormatType = number | 'long' | 'narrow' | 'short' | ((date: Date) => string | number);
export type SelectionType = 'day' | 'week' | 'month' | 'year';
export interface ICalendarState {
    [key: string]: any;
    calendarDate?: Date | null;
    hoverDate?: Date | null;
    startDate?: Date | null;
    endDate?: Date | null;
    maxDate?: Date | null;
    minDate?: Date | null;
    disabledDates?: (Date | Date[])[];
    range?: boolean;
    view?: string;
    locale?: string;
    dateFilter?: DateFilterType;
    dayFormat?: DayFormatType;
    weekdayFormat?: WeekdayFormatType;
    navYearFirst?: boolean;
    showAdjacentDays?: boolean;
    selectAdjacentDays?: boolean;
    selectionType?: SelectionType;
    showWeekNumber?: boolean;
    weekNumbersLabel?: string;
}
export declare class CalendarService {
    private keyValueDiffers;
    constructor(keyValueDiffers: KeyValueDiffers);
    private readonly differ;
    calendarStateObject: ICalendarState;
    private readonly calendarState;
    calendarState$: import("rxjs").Observable<ICalendarState>;
    update(state: ICalendarState): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<CalendarService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<CalendarService>;
}
