import type { NotificationPayload, NotificationRecipient } from '../../notifications.types.js'; import type { NotificationChannel } from '../channel.interface.js'; import { ChannelType, type ChannelContent, type ChannelSendResult, type ChannelHealth, type PushContent } from '../channel.interface.js'; export interface PushChannelOptions { batchSize?: number; defaultBadge?: number; defaultSound?: string; defaultIcon?: string; ttl?: number; priority?: 'normal' | 'high'; maxTitleLength?: number; maxBodyLength?: number; truncateLongText?: boolean; truncationSuffix?: string; includeData?: boolean; } export interface PushSendResult { successCount: number; failureCount: number; invalidTokens?: string[]; } export declare abstract class AbstractPushChannel implements NotificationChannel { readonly name = "push"; readonly type = ChannelType.Push; protected options: Required; configure(options: PushChannelOptions): void; initialize(): Promise; shutdown(): Promise; isAvailable(): Promise; healthCheck(): Promise; validateRecipient(recipient: NotificationRecipient): boolean; formatContent(notification: NotificationPayload): PushContent; send(recipient: NotificationRecipient, content: ChannelContent): Promise; abstract sendPush(tokens: string[], content: PushContent): Promise; protected truncate(text: string, maxLength: number): string; protected batchTokens(tokens: string[]): string[][]; protected isValidToken(token: string): boolean; protected filterValidTokens(tokens: string[]): string[]; } export declare class MockPushChannel extends AbstractPushChannel { private sentNotifications; sendPush(tokens: string[], content: PushContent): Promise; getSentNotifications(): { tokens: string[]; content: PushContent; timestamp: number; result: PushSendResult; }[]; clearSentNotifications(): void; } //# sourceMappingURL=push.channel.d.ts.map