import type { ICalendarEvent, IUser } from '@rocket.chat/core-typings'; import type { FindCursor, UpdateResult } from 'mongodb'; import type { IBaseModel } from './IBaseModel'; export interface ICalendarEventModel extends IBaseModel { findByUserIdAndDate(uid: IUser['_id'], date: Date): FindCursor; updateEvent(eventId: ICalendarEvent['_id'], eventData: Partial): Promise; findNextNotificationDate(): Promise; findEventsToNotify(notificationTime: Date, minutes: number): FindCursor; flagNotificationSent(eventId: ICalendarEvent['_id']): Promise; findOneByExternalIdAndUserId( externalId: Required['externalId'], uid: ICalendarEvent['uid'], ): Promise; findOverlappingEvents(eventId: ICalendarEvent['_id'], uid: IUser['_id'], startTime: Date, endTime: Date): FindCursor; findNextFutureEvent(startTime: Date): Promise | null>; findEventsStartingNow({ now, offset, }: { now: Date; offset?: number; }): FindCursor>; }