import { BrowserWindow } from 'electron'; export type ToastType = 'default' | 'info' | 'success' | 'warning' | 'error'; export interface Toast { type: 'toast'; payload: { toastType: ToastType; message: string; options?: { duration?: number; [key: string]: any; }; }; } let toastTarget: BrowserWindow | null = null; export function registerToastTarget(win: BrowserWindow) { toastTarget = win; } function sendToast(toastType: ToastType, message: string, options?: object): void { if (!toastTarget) { console.warn('No target window registered for toasts.'); return; } let optionsJSON; if (options) { optionsJSON = JSON.stringify(options); } toastTarget.webContents.send('toast', { type: 'toast', payload: { toastType, message, optionsJSON }, }); } export function showToast(message: string, options?: object): void { return sendToast('default', message, options) } export function showInformationToast(message: string, options?: object): void { return sendToast('info', message, options) } export function showSuccessToast(message: string, options?: object): void { return sendToast('success', message, options) } export function showWarningToast(message: string, options?: object): void { return sendToast('warning', message, options) } export function showErrorToast(message: string, options?: object): void { return sendToast('error', message, options) }