import * as moment from 'moment';
import { TransientWebSiteService } from '../web-site/transient-web-site.service';
import { MenuEntryDefinition, WebSiteEvent } from '../web-site/web-site.interface';
import { ObjectNode } from './../../models/object-node.model';
import { ObjectTree } from './../../models/object-tree.model';
import { CurrentContext } from './../../services/application.service';
import { InsideRestService } from './../../services/inside-rest/inside-rest.service';
import { ObjectTypeService } from './../../services/object-type.service';
import { TransientEntityService } from './../../services/transient-entity/transient-entity.service';
import { UriCompleteService } from './../../services/uri-complete/uri-complete.service';
import { MenuTree } from './../web-site/web-site.interface';
import { PopupBuilder, WebSiteService } from './../web-site/web-site.service';
import { CalendarEntries, CalendarEntryDefinition, CalendarEntryNode } from './calendar.interface';
export declare class CalendarService {
    protected transientEntityService: TransientEntityService;
    protected insideRestService: InsideRestService;
    protected objectTypeService: ObjectTypeService;
    protected uriCompleteService: UriCompleteService;
    protected transientWebSiteService: TransientWebSiteService;
    private webSiteService;
    constructor(transientEntityService: TransientEntityService, insideRestService: InsideRestService, objectTypeService: ObjectTypeService, uriCompleteService: UriCompleteService, transientWebSiteService: TransientWebSiteService, webSiteService: WebSiteService);
    completeCalendarNode(objectNode: ObjectNode, ctx: CurrentContext): Promise<void>;
    getCalendarMenuEntries(entriesTree: ObjectTree, calendarMenus: MenuTree[], menuEntryDef: MenuEntryDefinition, ctx: CurrentContext): Promise<CalendarEntryDefinition>;
    completeCalendarEntriesNode(calenderEntriesNode: CalendarEntries, ctx: CurrentContext): Promise<void>;
    buildCalendarDates(entriesTree: ObjectTree, dates: CalendarEntryDefinition, children: MenuTree[], ctx: CurrentContext): Promise<void>;
    buildCalendarEntry(entriesTree: ObjectTree, menuTree: MenuTree, ctx: CurrentContext): Promise<CalendarEntryNode | undefined>;
    private declareEventCreationMethod;
    private buildEventObjectNode;
    contributeToEvent(webSiteEvent: WebSiteEvent, entriesTree: ObjectTree, menuTree: MenuTree, ctx: CurrentContext): Promise<boolean>;
    contributeToPopup(popupNode: ObjectNode, builder: PopupBuilder, ctx: CurrentContext): Promise<boolean>;
    protected getDateRange(dateRange: string): {
        from: moment.Moment;
        to: moment.Moment;
    };
}
