import { Calendar, CalendarComponentEventMap, CalendarComponentModel, CalendarComponentPopup, DateRange, InitModelOf, JsonDateRange, Range, Widget } from '../index';
export declare class CalendarComponent extends Widget implements CalendarComponentModel {
    model: CalendarComponentModel;
    eventMap: CalendarComponentEventMap;
    self: CalendarComponent;
    parent: Calendar;
    fromDate: string;
    toDate: string;
    selected: boolean;
    fullDay: boolean;
    fullDayIndex: number;
    draggable: boolean;
    item: CalendarItem;
    stack: Record<string, {
        x?: number;
        w?: number;
    }>;
    coveredDaysRange: DateRange;
    /** @internal */
    _$parts: JQuery[];
    protected _popup: CalendarComponentPopup;
    constructor();
    /**
     * If day of a month is smaller than 100px, the components get the class compact
     */
    static MONTH_COMPACT_THRESHOLD: number;
    static DAY_OF_MONTH_HEIGHT: number;
    static COMPONENT_HEIGHT: number;
    static COMPONENT_VGAP: number;
    protected _init(model: InitModelOf<this>): void;
    protected _syncCoveredDaysRange(coveredDaysRange: JsonDateRange): void;
    protected _remove(): void;
    protected _startLoopDay(): Date;
    protected _render(): void;
    protected _getHours(date: string): number;
    getLengthInHoursDecimal(): number;
    getResourceId(): string;
    protected _findDayInGrid(date: Date, $grid: JQuery): JQuery;
    protected _findResourceColumnInDay($day: JQuery, resouceId: string): JQuery;
    protected _isTask(): boolean;
    protected _arrangeTask(taskOffset: number): void;
    protected _isDayPart(): boolean;
    protected _getHourRange(day: Date): Range;
    getPartDayPosition(day: Date): Range;
    protected _getDisplayDayPosition(range: Range): Range;
    protected _partPosition($part: JQuery, y1: number, y2: number): JQuery;
    protected _renderProperties(): void;
    protected _renderSelected(): void;
    setSelected(selected: boolean): void;
    updateSelectedComponent($part: JQuery, updateScrollPosition: boolean): void;
    protected _onMouseEnter(event: JQuery.MouseEnterEvent): void;
    protected _onMouseLeave(evenet: JQuery.MouseLeaveEvent): void;
    protected _onMouseDown(event: JQuery.MouseDownEvent): void;
    applySelection($part: JQuery): void;
    openPopup($anchor: JQuery, popupY: number): void;
    closePopup(): void;
    /** @internal */
    _onContextMenu(event: JQuery.ContextMenuEvent): void;
    protected _format(date: Date, pattern: string): string;
    description(linkAllowed: boolean): string;
    triggerAppLinkAction(ref: string): void;
    _onAppLinkAction(event: JQuery.TriggeredEvent): void;
}
/**
 * See JsonCalendarItem.java
 */
export type CalendarItem = {
    exists: boolean;
    lastModified: number;
    itemId: any;
    owner: string;
    cssClass: string;
    resourceId: string;
    subject: string;
    description: string;
    recurrencePattern: {
        lastModified: number;
        regenerate: boolean;
        startTimeMinutes: number;
        endTimeMinutes: number;
        durationMinutes: number;
        firstDate: Date;
        lastDate: Date;
        occurrences: number;
        noEndDate: boolean;
        /**
         * @see RecurrencePattern.java TYPE* constants
         */
        type: number;
        interval: number;
        /**
         * @see RecurrencePattern.java INST_* constants
         */
        instance: number;
        dayOfWeekBits: number;
        dayOfMonth: number;
        monthOfYear: number;
    };
    subjectLabel: string;
    subjectAppLink: string;
    subjectIconId: string;
    descriptionElements: CalendarItemDescriptionElement[];
};
export type CalendarItemDescriptionElement = {
    text: string;
    iconId: string;
    appLink: string;
};
//# sourceMappingURL=CalendarComponent.d.ts.map