export type BluxNotification = { id: string; body: string; title?: string; url?: string; imageUrl?: string; data?: Record; }; export type NotificationClickedHandler = ( notification: BluxNotification ) => void; export function parseBluxNotification(raw: any): BluxNotification { let data: Record | undefined; const rawData = raw?.data; if (typeof rawData === 'string') { try { const decoded = JSON.parse(rawData); if (decoded && typeof decoded === 'object' && !Array.isArray(decoded)) { data = decoded as Record; } } catch { data = undefined; } } else if ( rawData && typeof rawData === 'object' && !Array.isArray(rawData) ) { data = rawData as Record; } const optionalString = (value: any): string | undefined => typeof value === 'string' && value.length > 0 ? value : undefined; return { id: String(raw?.id ?? ''), body: String(raw?.body ?? ''), title: optionalString(raw?.title), url: optionalString(raw?.url), imageUrl: optionalString(raw?.imageUrl), data, }; }