import type { NotificationPayload, NotificationRecipient } from '../notifications.types.js'; export interface NotificationChannel { readonly name: string; readonly type: ChannelType; initialize?(): Promise; shutdown?(): Promise; isAvailable(): Promise; healthCheck(): Promise; validateRecipient(recipient: NotificationRecipient): boolean; formatContent(notification: NotificationPayload): ChannelContent; send(recipient: NotificationRecipient, content: ChannelContent): Promise; } export declare enum ChannelType { Email = "email", SMS = "sms", Push = "push", InApp = "inApp", Webhook = "webhook" } export interface ChannelContent { subject?: string; html?: string; text?: string; data?: Record; } export interface EmailContent extends ChannelContent { subject: string; text: string; html?: string; from?: string; replyTo?: string; attachments?: Array<{ filename: string; content: Buffer | string; contentType?: string; }>; } export interface SMSContent extends ChannelContent { text: string; from?: string; } export interface PushContent extends ChannelContent { title: string; body: string; data?: Record; badge?: number; sound?: string; icon?: string; image?: string; clickAction?: string; } export interface InAppContent extends ChannelContent { title: string; message: string; type: string; priority?: string; data?: Record; } export interface WebhookContent extends ChannelContent { payload: Record; headers?: Record; } export interface ChannelSendResult { success: boolean; messageId?: string; error?: string; metadata?: Record; } export interface ChannelHealth { name: string; type: ChannelType; available: boolean; latency?: number; error?: string; metadata?: Record; } //# sourceMappingURL=channel.interface.d.ts.map