import { NotificationChannel, NotificationConfig, NotificationPayload, NotificationResult, Incident, EscalationLevel } from './types.js';
export interface NotificationServiceConfig {
    slack?: {
        webhookUrl: string;
        defaultChannel?: string;
    };
    email?: {
        host: string;
        port: number;
        secure: boolean;
        auth?: {
            user: string;
            pass: string;
        };
        from: string;
    };
    pagerduty?: {
        routingKey: string;
        apiUrl?: string;
    };
    baseUrl?: string;
}
export declare class NotificationService {
    private config;
    private rateLimiter;
    private readonly rateLimitWindow;
    private readonly maxNotificationsPerWindow;
    constructor(config?: NotificationServiceConfig);
    /**
     * Send notification to a specific channel
     */
    send(channel: NotificationChannel, target: string, payload: NotificationPayload, config?: Partial<NotificationConfig>): Promise<NotificationResult>;
    /**
     * Send notifications based on configuration list
     */
    sendMultiple(configs: NotificationConfig[], payload: NotificationPayload): Promise<NotificationResult[]>;
    /**
     * Send escalation notification
     */
    sendEscalation(incident: Incident, level: EscalationLevel): Promise<NotificationResult[]>;
    /**
     * Send incident created notification
     */
    notifyIncidentCreated(incident: Incident, configs: NotificationConfig[]): Promise<NotificationResult[]>;
    /**
     * Send incident resolved notification
     */
    notifyIncidentResolved(incident: Incident, configs: NotificationConfig[]): Promise<NotificationResult[]>;
    private sendSlack;
    private sendEmail;
    private sendPagerDuty;
    private sendWebhook;
    private sendSMS;
    private checkRateLimit;
    private formatDuration;
    /**
     * Test notification configuration
     */
    testConfiguration(channel: NotificationChannel, target: string): Promise<boolean>;
}
export declare const createNotificationService: (config?: NotificationServiceConfig) => NotificationService;
//# sourceMappingURL=notification.d.ts.map