export interface NotificationChannel { send(notification: Notification): Promise; } export interface Notification { to: string | string[]; subject?: string; message: string; data?: Record; channel: string; } export declare abstract class Notifiable { abstract via(): string[]; toLog(): string | undefined; toMail(): { subject: string; body: string; } | undefined; toDatabase(): Record | undefined; } export declare class LogChannel implements NotificationChannel { private logs; send(notification: Notification): Promise; getLogs(): Notification[]; clear(): void; } export declare class DatabaseChannel implements NotificationChannel { private store; send(notification: Notification): Promise; getAll(): Notification[]; clear(): void; } export declare class NotificationManager { private channels; registerChannel(name: string, channel: NotificationChannel): this; send(notification: Notification): Promise; sendMany(notifications: Notification[]): Promise; channel(name: string): NotificationChannel | undefined; } //# sourceMappingURL=notification.d.ts.map