UNPKG

nostr-websocket-utils

Version:

Robust WebSocket utilities for Nostr applications with automatic reconnection, supporting both ESM and CommonJS. Features channel-based messaging, heartbeat monitoring, message queueing, and comprehensive error handling with type-safe handlers.

98 lines 2.08 kB
/** * @file Transport type definitions * @module types/transport */ import { NostrEvent } from './events.js'; import { NostrWSMessage } from './messages.js'; /** * Base transport interface */ export interface Transport { /** * Connect to the transport */ connect(): Promise<void>; /** * Disconnect from the transport */ disconnect(): Promise<void>; /** * Send a message through the transport */ send(message: NostrWSMessage): Promise<void>; /** * Subscribe to events */ subscribe(filter: NostrEvent): Promise<void>; /** * Unsubscribe from events */ unsubscribe(subscriptionId: string): Promise<void>; /** * Check if transport is connected */ isConnected(): boolean; /** * Get transport metrics */ getMetrics(): TransportMetrics; } /** * Transport metrics */ export interface TransportMetrics { /** * Total number of messages sent */ messagesSent: number; /** * Total number of messages received */ messagesReceived: number; /** * Total number of bytes sent */ bytesSent: number; /** * Total number of bytes received */ bytesReceived: number; /** * Average message latency in milliseconds */ averageLatency: number; /** * Number of active subscriptions */ activeSubscriptions: number; /** * Connection uptime in milliseconds */ uptime: number; /** * Number of connection attempts */ connectionAttempts: number; /** * Number of successful connections */ successfulConnections: number; /** * Number of failed connections */ failedConnections: number; /** * Transport-specific metrics */ [key: string]: number | string | boolean | undefined; } /** * Transport factory interface */ export interface TransportFactory { /** * Create a new transport instance */ create(options: unknown): Transport; } //# sourceMappingURL=transport.d.ts.map