/// <reference types="jquery" />
/// <reference types="bootstrap" />
import Event, { EventCallback, IEventListener } from "./Event";
import IDate from "./IDate";
import IDataProvider from "./IDataProvider";
import IListenable from "./IListenable";
export interface ILangPhrases {
    nextBtnText: string;
    prevBtnText: string;
    noActivity: string;
    toCountActivity: string;
}
export interface IDrawerOptions {
    selector: string | JQuery;
    previousPeriodMonth?: number;
    nextPeriodMonth?: number;
    rtl?: boolean;
    colorStep?: number;
    showCalendarGuide?: boolean;
    showNextPeriodBtn?: boolean;
    showCurrentRangeInfo?: boolean;
    showPreviousPeriodBtn?: boolean;
    lang?: string;
    langs?: {
        [key: string]: ILangPhrases;
    };
    onClickPreviousPeriodBtn?: (event: Event, newTimeWindow: {
        from: IDate;
        to: IDate;
    }, element: JQuery) => Promise<void>;
    onClickNextPeriodBtn?: (event: Event, newTimeWindow: {
        from: IDate;
        to: IDate;
    }, element: JQuery) => Promise<void>;
    onClickDay?: (event: Event, element: JQuery, day: IDate) => void;
}
export default class Drawer implements IListenable {
    protected dataProvider: IDataProvider;
    protected today: IDate;
    constructor(dataProvider: IDataProvider, today: IDate, options: IDrawerOptions);
    get from(): IDate;
    get to(): IDate;
    clone(): Drawer;
    destroy(): void;
    use(dataProvider: IDataProvider, rerender?: boolean): void;
    on(type: string | string[], callback: EventCallback): void;
    trigger(event: string | Event, ...args: any[]): Event;
    setThisDay(date: IDate, rebuildTable?: boolean): void;
    goToPrevious(): void;
    goToNext(): void;
    protected render(): void;
    protected setEvents(): void;
    protected events: IEventListener[];
    protected options: IDrawerOptions;
    protected $element: JQuery;
    protected $header: JQuery;
    protected _from: IDate;
    protected _to: IDate;
    get element(): JQuery;
    protected get o(): IDrawerOptions;
    protected get dp(): IDataProvider;
    private onClickPreviousPeriodBtn;
    private onClickNextPeriodBtn;
    private onClickDay;
    private isDateLinkable;
    private setHeaderEvents;
    private setTableEvents;
    private translate;
}
