import type { NotificationChannel } from './channel.interface.js'; import { ChannelType, type ChannelHealth } from './channel.interface.js'; import type { NotificationRecipient, NotificationPayload } from '../notifications.types.js'; export type ChannelStrategy = 'first-available' | 'all' | 'fallback' | 'priority'; export interface ChannelSelectionOptions { channels?: string[]; strategy?: ChannelStrategy; recipient?: NotificationRecipient; notification?: NotificationPayload; } export interface ChannelSelectionResult { channels: NotificationChannel[]; skipped: Array<{ channel: string; reason: string; }>; } export declare class ChannelRegistry { private readonly channels; private readonly channelPriorities; private initialized; register(channel: NotificationChannel): void; unregister(name: string): boolean; get(name: string): NotificationChannel | undefined; getAll(): NotificationChannel[]; has(name: string): boolean; getByType(type: ChannelType): NotificationChannel[]; getByNames(names: string[]): NotificationChannel[]; initializeAll(): Promise; shutdownAll(): Promise; healthCheck(): Promise>; checkAvailability(): Promise>; get count(): number; get isInitialized(): boolean; selectChannels(options?: ChannelSelectionOptions): Promise; setPriority(channelName: string, priority: number): void; getPriority(channelName: string): number; clear(): void; } //# sourceMappingURL=channel-registry.d.ts.map