import type { NotificationPayload, NotificationRecipient } from '../../notifications.types.js'; import type { NotificationChannel } from '../channel.interface.js'; import { ChannelType, type ChannelContent, type ChannelSendResult, type ChannelHealth, type SMSContent } from '../channel.interface.js'; export interface SMSChannelOptions { from?: string; maxLength?: number; truncateLongMessages?: boolean; truncationSuffix?: string; phonePattern?: RegExp; includeTypePrefix?: boolean; } export declare abstract class AbstractSMSChannel implements NotificationChannel { readonly name = "sms"; readonly type = ChannelType.SMS; protected options: Required; configure(options: SMSChannelOptions): void; initialize(): Promise; shutdown(): Promise; isAvailable(): Promise; healthCheck(): Promise; validateRecipient(recipient: NotificationRecipient): boolean; formatContent(notification: NotificationPayload): SMSContent; send(recipient: NotificationRecipient, content: ChannelContent): Promise; abstract sendSMS(to: string, content: SMSContent): Promise<{ messageId: string; }>; protected isValidPhone(phone: string): boolean; protected normalizePhone(phone: string): string; protected calculateSegments(text: string): number; protected getTypePrefix(type: string): string; } export declare class MockSMSChannel extends AbstractSMSChannel { private sentMessages; sendSMS(to: string, content: SMSContent): Promise<{ messageId: string; }>; getSentMessages(): { to: string; content: SMSContent; messageId: string; timestamp: number; }[]; clearSentMessages(): void; } //# sourceMappingURL=sms.channel.d.ts.map