/** * Cross-Platform Notification Service * * Sends desktop notifications for PR events on Windows, macOS, and Linux. * Falls back to terminal bell and log file when desktop notifications unavailable. */ import type { INotificationService, INotification, INotificationResult, INotificationOptions, NotificationType } from '../../domain/interfaces/INotificationService'; /** * Cross-platform notification service implementation. */ export declare class NotificationService implements INotificationService { private readonly options; private readonly logPath; private readonly iconPaths; private desktopAvailable; private lastNotificationKey; private lastNotificationTime; constructor(options?: INotificationOptions); /** * Get the path to the Lisa icon for notifications. * Checks multiple locations and returns the first existing path. * Returns undefined if no icon is found. */ getIconPath(): Promise; /** * Get the current platform. */ getPlatform(): 'windows' | 'macos' | 'linux' | 'unknown'; /** * Check if desktop notifications are available. */ isDesktopAvailable(): Promise; /** * Send a notification. */ notify(notification: INotification): Promise; /** * Send multiple notifications with debouncing. */ notifyBatch(notifications: readonly INotification[]): Promise; /** * Send a desktop notification. */ private sendDesktopNotification; /** * Escape string for XML attribute context. */ private escapeForXmlAttribute; /** * Send Windows toast notification via PowerShell. * Uses -EncodedCommand to avoid shell escaping issues with quotes. * If URL is provided, clicking the notification opens the URL. * Includes Lisa icon if available. */ private sendWindowsNotification; /** * Send macOS notification via osascript. * Uses proper AppleScript escaping for single quotes. * Note: macOS terminal-notifier could be used for icon support, * but osascript is available by default on all Macs. */ private sendMacOSNotification; /** * Send Linux notification via notify-send. * Includes Lisa icon if available. */ private sendLinuxNotification; /** * Map notification priority to Linux urgency level. */ private mapPriorityToUrgency; /** * Send terminal bell. */ private sendTerminalBell; /** * Write notification to log file. */ private writeToLog; /** * Escape string for shell commands (double-quoted contexts). * Platform-specific escaping is handled in each notification method. */ private escapeForShell; } /** * Create a notification from a state change. */ export declare function createNotificationFromStateChange(type: NotificationType, description: string, prNumber: number, repo: string, prTitle?: string): INotification; //# sourceMappingURL=NotificationService.d.ts.map