import { Notification } from '..'; import { User } from '../../../entity/User'; import { NotificationAgentConfig } from '../../settings'; export interface NotificationPayload { subject: string; notifyUser: User; image?: string; message?: string; extra?: { name: string; value: string }[]; } export abstract class BaseAgent { protected settings?: T; public constructor(settings?: T) { this.settings = settings; } protected abstract getSettings(): T; } export interface NotificationAgent { shouldSend(type: Notification): boolean; send(type: Notification, payload: NotificationPayload): Promise; }