/** * Copyright 2022 Agendize All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at. * * Http://www.apache.org/licenses/LICENSE-2.0. * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import { EventMeta } from "./eventMeta"; import { LoggerInterface } from "../utils/logger"; export declare class EventMetaLocalStorageService { STORAGE_KEY: string; getCoverage(account: string, userIds: string[], start: Date, end: Date, logger?: LoggerInterface): EventMetaRangeCoverage; getLocalCoverage(account: string, userIds: string[], request: DatesCoverage, logger?: LoggerInterface): EventMetaRangeCoverage; saveCoverage(account: string, userIds: string[], start: Date, end: Date, logger?: LoggerInterface): void; saveLocalCoverage(account: string, userIds: string[], coverage: DatesCoverage, logger?: LoggerInterface): void; clearStorage(): void; } export declare class DatesCoverage { start: DateCoverage; end: DateCoverage; constructor(start: DateCoverage, end: DateCoverage); isIn(month: number, year: number): boolean; getRange(): DateCoverage[]; } export declare class DateCoverage { month: number; year: number; constructor(year: number, month: number); toNumber(): number; static fromDate(date: Date): DateCoverage; static toNumber(year: number, month: number): number; } export interface DateInterface { month: number; year: number; } export interface EventMetaRangeCoverage { local: EventMetaRange[]; remote: EventMetaRange[]; } export interface GroupEventMeta { userId: string[]; month: number; year: number; } export interface EventMetaRange { userId: string[]; start: DateInterface; end: DateInterface; } export declare const dateInterfaceToDate: (date: DateInterface) => Date; export declare const isDateAround: (year1: number, month1: number, year2: number, month2: number) => boolean; export declare const isRangeInList: (range: DateCoverage, localDates: EventMeta[]) => boolean; export declare const groupEventMeta: (events: EventMeta[]) => GroupEventMeta[]; export declare const buildRangeFromGroups: (groups: GroupEventMeta[]) => EventMetaRange[];