/** * Helper functions for standardized event emission across platforms * Import this file in native modules to ensure consistent event structures */ import type { ConnectionStatusEvent, ErrorEvent, LogEvent, PeerDiscoveredEvent, PeerInfoEvent, PeerLostEvent, } from './types'; /** * Creates a standardized connection status event payload */ export function createConnectionStatusEvent( peerId: string, status: string, direction?: string, multiaddr?: string, error?: string, reason?: string, ): ConnectionStatusEvent { return { peerId, status: status as ConnectionStatus, direction: direction as ConnectionDirection, multiaddr, error, reason, }; } /** * Creates a standardized peer discovered event payload */ export function createPeerDiscoveredEvent( peerId: string, addresses: string[], ): PeerDiscoveredEvent { return { peerId, addresses, multiaddrs: addresses, // Use same array for both for compatibility }; } /** * Creates a standardized peer lost event payload */ export function createPeerLostEvent(peerId: string): PeerLostEvent { return { peerId, }; } /** * Creates a standardized log event payload */ export function createLogEvent( message: string, level: 'debug' | 'info' | 'warn' | 'error' = 'info', ): LogEvent { return { message, level, }; } /** * Creates a standardized error event payload */ export function createErrorEvent(message: string, code?: string): ErrorEvent { return { message, code, }; } /** * Creates a standardized peer info event payload */ export function createPeerInfoEvent(peerId: string, multiaddrs: string[]): PeerInfoEvent { return { peerId, multiaddrs, }; } /** * Event names used across platforms */ export const EVENT_NAMES = { PEER_INFO: 'onPeerInfo', PEER_DISCOVERED: 'onPeerDiscovered', PEER_LOST: 'onPeerLost', CONNECTION_STATUS: 'onConnectionStatus', INCOMING_CONNECTION: 'onIncomingConnection', LOG: 'onLog', ERROR: 'onError', } as const;