/// <reference types="jquery" />
import { CellModel, DateRange, EnumObject, Event, InitModelOf, JsonDateRange, KeyStrokeContext, Menu, MenuBar, PlannerEventMap, PlannerHeader, PlannerHeaderDisplayModeClickEvent, PlannerModel, Range, TooltipSupport, Widget, YearPanel, YearPanelDateSelectEvent } from '../index';
export declare class Planner extends Widget implements PlannerModel {
    model: PlannerModel;
    eventMap: PlannerEventMap;
    self: Planner;
    activityMap: Record<string, PlannerActivity>;
    activitySelectable: boolean;
    availableDisplayModes: PlannerDisplayMode[];
    displayMode: PlannerDisplayMode;
    displayModeOptions: Record<PlannerDisplayMode, PlannerDisplayModeOptions>;
    headerVisible: boolean;
    label: string;
    resources: PlannerResource[];
    resourceMap: Record<string, PlannerResource>;
    selectionMode: PlannerSelectionMode;
    selectionRange: DateRange;
    selectedResources: PlannerResource[];
    viewRange: DateRange;
    startRange: DateRange;
    lastRange: DateRange;
    beginScale: number;
    endScale: number;
    selectedActivity: PlannerActivity;
    menus: Menu[];
    startRow: PlannerResource;
    lastRow: PlannerResource;
    menuBar: MenuBar;
    header: PlannerHeader;
    yearPanel: YearPanel;
    /** scale calculator */
    transformLeft: (t: number) => number;
    transformWidth: (t0: number, t1: number) => number;
    yearPanelVisible: boolean;
    $range: JQuery;
    $modes: JQuery;
    $selector: JQuery;
    $grid: JQuery;
    $highlight: JQuery;
    $timeline: JQuery;
    $timelineLarge: JQuery;
    $timelineSmall: JQuery;
    $scaleTitle: JQuery;
    $scale: JQuery;
    protected _resourceTitleWidth: number;
    protected _rangeSelectionStarted: boolean;
    protected _tooltipSupport: TooltipSupport;
    protected _$body: JQuery<Body>;
    protected _gridScrollHandler: (event: JQuery.ScrollEvent) => void;
    protected _cellMousemoveHandler: (event: JQuery.MouseMoveEvent<Document>) => void;
    protected _resizeMousemoveHandler: (event: JQuery.MouseMoveEvent<Document>) => void;
    constructor();
    static Direction: {
        readonly BACKWARD: -1;
        readonly FORWARD: 1;
    };
    /**
     * Enum providing display-modes for planner (extends calendar).
     * @see IPlannerDisplayMode.java
     */
    static DisplayMode: {
        readonly DAY: 1;
        readonly WEEK: 2;
        readonly MONTH: 3;
        readonly WORK_WEEK: 4;
        readonly CALENDAR_WEEK: 5;
        readonly YEAR: 6;
    };
    static SelectionMode: {
        readonly NONE: 0;
        readonly SINGLE_RANGE: 1;
        readonly MULTI_RANGE: 2;
    };
    static RANGE_SELECTION_MOVE_THRESHOLD: number;
    static MenuTypes: {
        readonly Activity: "Planner.Activity";
        readonly EmptySpace: "Planner.EmptySpace";
        readonly Range: "Planner.Range";
        readonly Resource: "Planner.Resource";
    };
    protected _createKeyStrokeContext(): KeyStrokeContext;
    protected _init(model: InitModelOf<this>): void;
    protected _initResource(resource: PlannerResource): void;
    protected _initActivity(activity: PlannerActivity): void;
    protected _render(): void;
    protected _renderProperties(): void;
    protected _remove(): void;
    get$Scrollable(): JQuery;
    protected _onPreviousClick(event: Event<PlannerHeader>): void;
    protected _onNextClick(event: Event<PlannerHeader>): void;
    protected _navigateDate(direction: PlannerDirection): void;
    protected _onTodayClick(event: Event<PlannerHeader>): void;
    protected _today(): Date;
    protected _onDisplayModeClick(event: PlannerHeaderDisplayModeClickEvent): void;
    protected _onYearClick(event: Event<PlannerHeader>): void;
    protected _onYearPanelDateSelect(event: YearPanelDateSelectEvent): void;
    protected _onResourceTitleMouseDown(event: JQuery.MouseDownEvent): void;
    protected _onResourceTitleContextMenu(event: JQuery.ContextMenuEvent): void;
    protected _onRangeSelectorContextMenu(event: JQuery.ContextMenuEvent): void;
    protected _onActivityContextMenu(event: JQuery.ContextMenuEvent): void;
    protected _showContextMenu(event: JQuery.ContextMenuEvent, allowedType: string): void;
    protected _onGridScroll(event: JQuery.ScrollEvent): void;
    protected _reconcileScrollPos(): void;
    protected _renderRange(): void;
    protected _renderScale(): void;
    /**
     * Returns every hidden range of the view range created by first and last our of day.
     */
    protected _findHiddenRangesInWeekMode(): Range[];
    protected _renderDayScale(): void;
    protected _renderWeekScale(): void;
    protected _renderMonthScale(): void;
    protected _renderCalendarWeekScale(): void;
    protected _renderYearScale(): void;
    protected _incrementTimelineScaleItems($largeComp: JQuery, $smallComp: JQuery, newDate: Date, newLargeGroup: boolean): void;
    protected _scaleTooltipText($scale: JQuery): string;
    protected _removeAllResources(): void;
    protected _renderResources(resources?: PlannerResource[]): void;
    protected _linkResource($resource: JQuery, resource: PlannerResource): void;
    protected _linkActivity($activity: JQuery, activity: PlannerActivity): void;
    protected _rerenderActivities(resources?: PlannerResource[]): void;
    protected _buildResourceHtml(resource: PlannerResource): string;
    protected _renderActivitiesForResource(resource: PlannerResource): void;
    protected _linkActivitiesForResource(resource: PlannerResource): void;
    protected _buildActivitiesHtml(resource: PlannerResource): string;
    protected _removeActivitiesForResource(resource: PlannerResource): void;
    protected _buildActivityHtml(activity: PlannerActivity): string;
    protected _onCellMouseDown(event: JQuery.MouseDownEvent): void;
    protected _startRangeSelection(pageX: number, pageY: number): void;
    /**
     * @returns true if the range selection may be started, false if not
     */
    protected _prepareRangeSelectionByMousemove(mousedownEvent: JQuery.MouseDownEvent, mousemoveEvent: JQuery.MouseMoveEvent<Document>): boolean;
    protected _onCellMousemove(mousedownEvent: JQuery.MouseDownEvent, event: JQuery.MouseMoveEvent<Document>): void;
    protected _onResizeMouseDown(event: JQuery.MouseDownEvent): boolean;
    protected _onResizeMousemove(event: JQuery.MouseMoveEvent): void;
    protected _onDocumentMouseUp(event: JQuery.MouseUpEvent<Document>): void;
    protected _removeMouseMoveHandlers(): void;
    protected _select(): void;
    protected _adjustSelectionRange(range: DateRange): DateRange;
    protected _findRow(y: number): PlannerResource;
    protected _findScale(x: number): DateRange;
    protected _findScaleByFromDate(from: Date): DateRange;
    protected _findScaleByToDate(to: Date): DateRange;
    protected _findScaleByFunction(func: (index: number, element: HTMLElement) => boolean): DateRange;
    /**
     * @returns the visible view range (the difference to this.viewRange is that first and last hourOfDay are considered).
     */
    protected _visibleViewRange(): DateRange;
    protected _dateFormat(date: Date, pattern: string): string;
    protected _renderViewRange(): void;
    protected _renderHeaderVisible(): void;
    protected _renderYearPanelVisible(animated: boolean): void;
    protected _onYearPanelWidthChange(): void;
    protected _afterYearPanelWidthChange(): void;
    protected _setMenus(menus: Menu[]): void;
    protected _updateMenuBar(): void;
    protected _filterMenus(allowedTypes: string[], onlyVisible: boolean, enableDisableKeyStrokes?: boolean): Menu[];
    setDisplayModeOptions(displayModeOptions: Partial<Record<PlannerDisplayMode, PlannerDisplayModeOptions>>): void;
    protected _setDisplayModeOptions(displayModeOptions: Record<PlannerDisplayMode, PlannerDisplayModeOptions>): void;
    /**
     * Make sure configured our is between 0 and 23.
     */
    protected _adjustHours(optionsMap: Record<PlannerDisplayMode, PlannerDisplayModeOptions>): void;
    protected _renderDisplayModeOptions(): void;
    protected _renderAvailableDisplayModes(): void;
    protected _renderDisplayMode(): void;
    protected _setViewRange(viewRange: DateRange | JsonDateRange): void;
    protected _setDisplayMode(displayMode: PlannerDisplayMode): void;
    protected _setAvailableDisplayModes(availableDisplayModes: PlannerDisplayMode[]): void;
    protected _setSelectionRange(selectionRange: DateRange | JsonDateRange): void;
    protected _setSelectedResources(selectedResources: PlannerResource[] | string[]): void;
    protected _removeSelectedResources(): void;
    protected _renderSelectedResources(): void;
    protected _renderActivitySelectable(): void;
    protected _renderSelectionMode(): void;
    protected _renderSelectionRange(): void;
    protected _setSelectedActivity(selectedActivity: PlannerActivity | string): void;
    protected _removeSelectedActivity(): void;
    protected _renderSelectedActivity(): void;
    protected _renderLabel(): void;
    resourcesByIds(ids: string[]): PlannerResource[];
    activityById(id: string): PlannerActivity;
    resourceById(id: string): PlannerResource;
    setDisplayMode(displayMode: PlannerDisplayMode): void;
    layoutYearPanel(): void;
    setYearPanelVisible(visible: boolean): void;
    setViewRangeFrom(date: Date): void;
    setViewRange(viewRange: DateRange): void;
    selectRange(range: DateRange): void;
    selectActivity(activity: PlannerActivity | string): void;
    selectResources(resources: PlannerResource[] | PlannerResource): void;
    /**
     * Returns true if a deselection happened. False if the given resources were not selected at all.
     */
    deselectResources(resources: PlannerResource[] | PlannerResource): boolean;
    insertResources(resources: PlannerResource[]): void;
    deleteResources(resources: PlannerResource[]): void;
    deleteAllResources(): void;
    updateResources(resources: PlannerResource[]): void;
}
export type PlannerDisplayMode = EnumObject<typeof Planner.DisplayMode>;
export type PlannerDirection = EnumObject<typeof Planner.Direction>;
export type PlannerSelectionMode = EnumObject<typeof Planner.SelectionMode>;
export type PlannerMenuTypes = EnumObject<typeof Planner.MenuTypes>;
export interface PlannerActivity {
    id: string;
    beginTime: string | Date;
    endTime: string | Date;
    text?: string;
    backgroundColor?: string;
    foregroundColor?: string;
    level?: number;
    levelColor?: string;
    tooltipText?: string;
    cssClass?: string;
    $activity?: JQuery;
}
export interface PlannerResource {
    id: string;
    resourceCell: CellModel<any>;
    activities: PlannerActivity[];
    $resource?: JQuery;
    $cells?: JQuery;
}
export interface PlannerDisplayModeOptions {
    interval?: number;
    firstHourOfDay?: number;
    lastHourOfDay?: number;
    labelPeriod?: number;
    minSelectionIntervalCount?: number;
}
//# sourceMappingURL=Planner.d.ts.map