/**
 * THIS IS GENERATED CODE!
 * PLEASE DO NOT MODIFY - ALL YOUR WORK WOULD BE LOST!
 */
export declare const typescriptDeclarationFixConstant = 1;
import { UiEvent } from "./UiEvent";
import { TeamAppsEvent } from "../modules/util/TeamAppsEvent";
import { UiComponentConfig } from "./UiComponentConfig";
import { UiTemplateConfig } from "./UiTemplateConfig";
import { UiCalendarEventClientRecordConfig } from "./UiCalendarEventClientRecordConfig";
import { UiCalendarViewMode } from "./UiCalendarViewMode";
import { UiWeekDay } from "./UiWeekDay";
import { UiComponentCommandHandler } from "./UiComponentConfig";
export interface UiCalendarConfig extends UiComponentConfig {
    _type?: string;
    templates?: {
        [name: string]: UiTemplateConfig;
    };
    initialData?: UiCalendarEventClientRecordConfig[];
    activeViewMode?: UiCalendarViewMode;
    displayedDate?: number;
    showHeader?: boolean;
    tableBorder?: boolean;
    showWeekNumbers?: boolean;
    businessHoursStart?: number;
    businessHoursEnd?: number;
    firstDayOfWeek?: UiWeekDay;
    workingDays?: UiWeekDay[];
    tableHeaderBackgroundColor?: string;
    defaultBackgroundColor?: string;
    defaultBorderColor?: string;
    navigateOnHeaderClicks?: boolean;
    minYearViewMonthTileWidth?: number;
    maxYearViewMonthTileWidth?: number;
    timeZoneId?: string;
}
export interface UiCalendarCommandHandler extends UiComponentCommandHandler {
    setViewMode(viewMode: UiCalendarViewMode): void;
    setDisplayedDate(date: number): void;
    addEvent(theEvent: UiCalendarEventClientRecordConfig): void;
    removeEvent(eventId: number): void;
    setCalendarData(events: UiCalendarEventClientRecordConfig[]): void;
    clearCalendar(): void;
    registerTemplate(id: string, template: UiTemplateConfig): void;
    setTimeZoneId(timeZoneId: string): void;
}
export interface UiCalendarEventSource {
    onEventClicked: TeamAppsEvent<UiCalendar_EventClickedEvent>;
    onEventMoved: TeamAppsEvent<UiCalendar_EventMovedEvent>;
    onDayClicked: TeamAppsEvent<UiCalendar_DayClickedEvent>;
    onIntervalSelected: TeamAppsEvent<UiCalendar_IntervalSelectedEvent>;
    onDayHeaderClicked: TeamAppsEvent<UiCalendar_DayHeaderClickedEvent>;
    onWeekHeaderClicked: TeamAppsEvent<UiCalendar_WeekHeaderClickedEvent>;
    onMonthHeaderClicked: TeamAppsEvent<UiCalendar_MonthHeaderClickedEvent>;
    onViewChanged: TeamAppsEvent<UiCalendar_ViewChangedEvent>;
    onDataNeeded: TeamAppsEvent<UiCalendar_DataNeededEvent>;
}
export interface UiCalendar_EventClickedEvent extends UiEvent {
    eventId: number;
    isDoubleClick: boolean;
}
export interface UiCalendar_EventMovedEvent extends UiEvent {
    eventId: number;
    newStart: number;
    newEnd: number;
}
export interface UiCalendar_DayClickedEvent extends UiEvent {
    date: number;
    isDoubleClick: boolean;
}
export interface UiCalendar_IntervalSelectedEvent extends UiEvent {
    start: number;
    end: number;
    allDay: boolean;
}
export interface UiCalendar_DayHeaderClickedEvent extends UiEvent {
    date: number;
}
export interface UiCalendar_WeekHeaderClickedEvent extends UiEvent {
    year: number;
    week: number;
    weekStartDate: number;
}
export interface UiCalendar_MonthHeaderClickedEvent extends UiEvent {
    year: number;
    month: number;
    monthStartDate: number;
}
export interface UiCalendar_ViewChangedEvent extends UiEvent {
    viewMode: UiCalendarViewMode;
    mainIntervalStart: number;
    mainIntervalEnd: number;
    displayedIntervalStart: number;
    displayedIntervalEnd: number;
}
export interface UiCalendar_DataNeededEvent extends UiEvent {
    requestIntervalStart: number;
    requestIntervalEnd: number;
}
