import { MUserWithNotificationSetting, UserNotificationModelForApi } from '@server/types/models' import { EmailPayload, UserNotificationSettingValue } from '@shared/models' export abstract class AbstractNotification { constructor (protected readonly payload: T) { } abstract prepare (): Promise abstract log (): void abstract getSetting (user: U): UserNotificationSettingValue abstract getTargetUsers (): U[] abstract createNotification (user: U): Promise abstract createEmail (to: string): EmailPayload | Promise isDisabled (): boolean | Promise { return false } }