import { TaskQueue, BindingEngine, ICollectionObserverSplice } from 'aurelia-framework';
import { DateUtils } from '../../utils/date-utils';
export declare class Draggable {
    static DraggableClassName: string;
    static PlanningColumnClassName: string;
    static DraggableHandleClassName: string;
}
export type UISchedulerViewType = "Week" | "TimelineWeek" | "TimelineMonth" | "TimelineDay";
export interface ElemTargetSource {
    element: Element;
    target: Element;
    source: Element;
}
export declare class UISchedulerColumn {
    element: HTMLElement;
    key: Date;
    date: Date;
    day: string;
    dayNumber: string;
    contextMenuDisabled: boolean;
    customData: any;
    cells: UISchedulerCell[];
    rowGroupColumn?: boolean;
    class?: string;
    dataBefore?: string;
    constructor(init?: Partial<UISchedulerColumn>);
}
type CellEventType = UISchedulerEvent | UISchedulerEvent[];
export declare class UISchedulerCell {
    data?: any;
    class?: any;
    style?: any;
    startTime?: Date;
    endTime?: Date;
    rowGroupCell?: boolean;
    rowGroupData?: any;
    event?: CellEventType;
    element: HTMLElement;
    isShowMoreBtnOpen: boolean;
    nbOfEvents: number;
    nbOfShownedEvents: number;
    constructor(init?: Partial<UISchedulerCell>);
}
export interface UISchedulerDayOff {
    date: Date;
    label?: string;
}
export interface UISchedulerRessourceItem {
    field: string;
    name: string;
    dataSource: UISchedulerRessourceData[];
}
export interface UISchedulerRessourceData {
    text: string;
    id: number;
    color?: string;
}
export declare class UISchedulerEvent<T = any> {
    data: T;
    startTime?: Date;
    endTime?: Date;
    class?: string;
    colorLeft?: string;
    view: UISchedulerViewType;
    element: HTMLElement;
    fixed: boolean;
    style: string;
    selectedDate: Date;
    group: string;
    type: string;
    isSelectable: boolean;
    isSelected: boolean;
    removeAfterDrop: boolean;
    cell: UISchedulerCell;
    constructor(data: T, startTime?: Date, endTime?: Date);
    get height(): string;
    get width(): string;
    get leftOffset(): string;
    private getFirstDayOfCurrentMonth;
    private getLastDayOfCurrentMonth;
    get durationDays(): number;
    get computedStyle(): string;
}
export declare class UIScheduler {
    private element;
    private taskQueue;
    private bindingEngine;
    private dateUtils;
    columnList: Array<UISchedulerColumn>;
    events: Array<UISchedulerEvent>;
    ressources: Array<UISchedulerRessourceItem>;
    group: Array<string>;
    selectedDate: Date;
    showModalIcon: boolean;
    onUpdate: ({}: {}) => Promise<boolean>;
    onUpdateMultiple: ({}: {}) => Promise<boolean>;
    onEditFn: (event: {
        event: UISchedulerEvent;
    }) => void;
    onDblClickFn: (event: {
        event: UISchedulerEvent;
    }) => void;
    accepts: ({}: {}) => boolean;
    canMove: (event: {
        event: UISchedulerEvent;
    }) => boolean;
    startHour: number;
    endHour: number;
    view: UISchedulerViewType;
    sidebarLabel: string;
    hasGroup: boolean;
    sidebarCollapsed: boolean;
    sidebarWidth: string;
    sortGroupAscendant: boolean;
    dayOffs: Array<UISchedulerDayOff | Date>;
    enableDragAndDrop: boolean;
    beginFromMonday: boolean;
    displayWeekend: boolean;
    shiftKeyPressed: boolean;
    getMore: ({ topIndex, isAtBottom, isAtTop }: {
        topIndex: any;
        isAtBottom: any;
        isAtTop: any;
    }) => (Promise<any> | any);
    nbWeeksToShow: number;
    maxSelectedEvents: number;
    displaySidebar: boolean;
    private drake;
    private usageMatrix;
    private disposables;
    private resizeObserver;
    internalGetMore(topIndex: number, isAtBottom: any, isAtTop: any): any;
    constructor(element: Element, taskQueue: TaskQueue, bindingEngine: BindingEngine, dateUtils: DateUtils);
    get displayDate(): string;
    get dateSelector(): "Week" | "Month";
    get allowMultipleEventsPerCell(): boolean;
    bind(): void;
    detached(): void;
    registerObservers(): void;
    setDayOffColumns(): void;
    generateColumns(): void;
    private generateWeekColumns;
    private computeStartDate;
    private computedEndDate;
    private generateTimelineColumns;
    generateGroupedTimelineColumns(): UISchedulerColumn[];
    generateColumnCells(currDate?: Date): UISchedulerCell[];
    attached(): void;
    computeOverflowness(cell: UISchedulerCell): void;
    unplannedEventsCount(): number;
    eventsCollectionChanged(changes: Array<ICollectionObserverSplice<UISchedulerEvent>>): void;
    private initialize;
    private constructUI;
    ressourcesChanged(changes: Array<ICollectionObserverSplice<UISchedulerEvent>>): void;
    private assignEventsToCorrespondingCells;
    private resetCells;
    private resetMatrix;
    triggerEventsChanged(): void;
    findCell(event: UISchedulerEvent): UISchedulerCell;
    editEvent($event: any, event: UISchedulerEvent): void;
    hasParent(element: Element, parent: Element): any;
    getModelFromElement(element: Element): any;
    today(): void;
    prevDate(): void;
    nextDate(): void;
}
export {};
