/**
 * Notification Integrations
 *
 * Send notifications to external services:
 * - Slack webhooks
 * - Discord webhooks
 * - Microsoft Teams
 * - Generic webhooks
 */
import { EventEmitter } from 'events';
export interface NotificationConfig {
    /** Slack webhook URL */
    slackWebhook?: string;
    /** Discord webhook URL */
    discordWebhook?: string;
    /** Teams webhook URL */
    teamsWebhook?: string;
    /** Custom webhook URLs */
    customWebhooks?: string[];
    /** Default channel/username */
    defaultChannel?: string;
    /** Default username for bot */
    botName?: string;
    /** Default icon/avatar URL */
    iconUrl?: string;
    /** Rate limit (notifications per minute) */
    rateLimit?: number;
    /** Enable notification batching */
    batchNotifications?: boolean;
    /** Batch interval in ms */
    batchInterval?: number;
}
export interface Notification {
    title: string;
    message: string;
    level: 'info' | 'success' | 'warning' | 'error';
    fields?: NotificationField[];
    timestamp?: Date;
    footer?: string;
    url?: string;
    imageUrl?: string;
}
export interface NotificationField {
    name: string;
    value: string;
    inline?: boolean;
}
/**
 * Notification Manager
 */
export declare class NotificationManager extends EventEmitter {
    private config;
    private notificationQueue;
    private lastNotificationTime;
    private notificationCount;
    private batchTimer;
    constructor(config?: NotificationConfig);
    /**
     * Send a notification to all configured services
     */
    notify(notification: Notification): Promise<void>;
    /**
     * Queue notification for batching
     */
    private queueNotification;
    /**
     * Flush queued notifications
     */
    private flushNotifications;
    /**
     * Send a single notification
     */
    private sendNotification;
    /**
     * Send batch notification
     */
    private sendBatchNotification;
    /**
     * Get highest severity level
     */
    private getHighestLevel;
    /**
     * Send notification to Slack
     */
    private sendSlack;
    /**
     * Send notification to Discord
     */
    private sendDiscord;
    /**
     * Send notification to Microsoft Teams
     */
    private sendTeams;
    /**
     * Send notification to custom webhook
     */
    private sendCustom;
    /**
     * Send webhook request
     */
    private sendWebhook;
    /**
     * Get color for level (hex)
     */
    private getLevelColor;
    /**
     * Get Discord color (decimal)
     */
    private getDiscordColor;
    /**
     * Convenience methods for different levels
     */
    info(title: string, message: string, fields?: NotificationField[]): Promise<void>;
    success(title: string, message: string, fields?: NotificationField[]): Promise<void>;
    warning(title: string, message: string, fields?: NotificationField[]): Promise<void>;
    error(title: string, message: string, fields?: NotificationField[]): Promise<void>;
    /**
     * Notify session events
     */
    notifySessionStart(sessionId: string): Promise<void>;
    notifySessionEnd(sessionId: string, stats: {
        messages: number;
        cost: number;
        duration: number;
    }): Promise<void>;
    notifyError(error: Error, context?: string): Promise<void>;
    notifyCostThreshold(current: number, threshold: number): Promise<void>;
    /**
     * Close notification manager
     */
    close(): void;
}
/**
 * Get or create notification manager
 */
export declare function getNotificationManager(config?: NotificationConfig): NotificationManager;
/**
 * Quick notify helper
 */
export declare function notify(notification: Notification): Promise<void>;
export default NotificationManager;
