import { AfterContentInit, AfterViewInit, ElementRef, Injector, OnDestroy, OnInit } from '@angular/core';
import { AbstractI18nService } from '@wm/core';
import { IRedrawableComponent, StylableComponent } from '@wm/components/base';
import * as i0 from "@angular/core";
export declare class CalendarComponent extends StylableComponent implements AfterContentInit, AfterViewInit, OnInit, OnDestroy, IRedrawableComponent {
    static initializeProps: void;
    _calendar: ElementRef;
    _datepicker: ElementRef;
    selecteddates: any;
    selecteddata: any;
    currentview: object;
    dataset: any;
    calendartype: any;
    controls: string;
    datavalue: any;
    eventtitle: any;
    eventstart: any;
    eventend: any;
    eventallday: any;
    eventclass: any;
    private eventSources;
    private dataSetEvents;
    private oldData;
    private $fullCalendar;
    private proxyModel;
    private eventData;
    private events;
    private changesStack;
    private calendarOptions;
    view: string;
    private dayClass;
    private cancelLocaleChangeSubscription;
    selectDate(): void;
    gotoDate(): void;
    gotoNextYear(): void;
    gotoPrevYear(): void;
    /**
     * this function takes the calendar view to the specified month
     * @param monthVal, 1-12 value of month
     */
    gotoMonth(monthVal: any): void;
    gotoNextMonth(): void;
    gotoPrevMonth(): void;
    rerenderEvents(): void;
    private setSelectedData;
    private eventDrop;
    getDefaultDate(): Date;
    getDefaultOptions(): any;
    getLib(): string;
    private select;
    /**
     *  this functions unselects all the selections in calendar
     */
    unselect(): void;
    /**
     * this function is to add extendedProps data to the data object.
     * this is done for backward compatibility
     * @param eventObj event object as per new version (v5)
     * @returns _eventMetadata event object as per the old version (v3)
     */
    private convertEventObj;
    /**
     *  this function is to add extendedProps data to the data object exluding start end title allDay objects if the key name matches.
     * * this is done for backward compatibility
     * @param eventObj event object as per new version (v5)
     * @returns data event object as per the old version (v3)
     */
    private convertEventObjForOldAndNewData;
    private eventResize;
    private onEventChangeStart;
    private eventClick;
    private eventDidMount;
    private viewDidMount;
    /**
     * This function gets called when the view of the calendar changes.
     * @param data contains the start end data of the calendar view.
     */
    private datesSet;
    private dateClick;
    private updateCalendarHeaderOptions;
    constructor(inj: Injector, i18nService: AbstractI18nService, explicitContext: any);
    ngOnInit(): void;
    onStyleChange(key: any, nv: any, ov?: any): void;
    onPropertyChange(key: any, nv: any, ov?: any): void;
    private calculateHeight;
    ngAfterViewInit(): void;
    private constructCalendarDataset;
    private setLocale;
    /**
     * override the default calendar options with the newSet of options
     * @param options
     */
    overrideDefaults(options: any): void;
    /**
     * if the operations are performed before the calendar renders, the changes are pushed into changesStack and will be executed after the calendar gets rendered
     * if the calendar is already rendered, then the specific operation will be performed according to the operation type
     * @param operationType
     * @param argumentKey
     * @param argumentValue
     */
    updateCalendarOptions(operationType: string, argumentKey?: any, argumentValue?: any): void;
    redraw(): void;
    private onValueChange;
    /**
     * This function will receive an object containing source of calendar, apikey and calendarId and will integrate the respective calendar with fullcalendar.
     * @param eventObject
     */
    addEventSource(eventObject: any): void;
    /**
     * get the viewTypeKey according to the calendarType and viewType selected
     * @param viewKey
     */
    getViewType(viewKey: any): any;
    /**
     * @param operationType
     * @param argumentKey
     * @param argumentValue
     * Handle various operations like Rendering Calendar, changing the calendar viewType, setting the calendarOptions according to the operationType.
     */
    applyCalendarOptions(operationType: string, argumentKey?: any, argumentValue?: any): void;
    /**
     * Adds the new eventsDataSet to the calendar object with addEvent Method and re-renders the calendar
     */
    renderEventDataSet(): void;
    ngOnDestroy(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<CalendarComponent, [null, null, { optional: true; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<CalendarComponent, "[wmCalendar]", never, {}, {}, never, never, false, never>;
}
