/** * Key pair for ECDH key exchange */ interface KeyPair { privateKey: Uint8Array; publicKey: Uint8Array; } /** * Bridge event types */ declare enum BridgeEventType { Connected = "connected", SecureChannelEstablished = "secure-channel-established", RawMessageReceived = "raw-message-received", MessageReceived = "message-received", ChunkRecieved = "chunk-received", Error = "error", FailedToConnect = "failed-to-connect", Disconnected = "disconnected" } /** * Bridge failed to connect event */ interface FailedToConnectEventOptions { code: number; reason: string; event: CloseEvent; } declare class FailedToConnectEvent { readonly code: number; readonly reason: string; readonly event: CloseEvent; constructor(options: FailedToConnectEventOptions); } /** * Bridge disconnected event */ interface BridgeDisconnectedEventOptions { code: number; reason: string; wasConnected: boolean; wasIntentionalClose: boolean; willReconnect: boolean; event: CloseEvent; } declare class BridgeDisconnectedEvent { readonly code: number; readonly reason: string; readonly wasConnected: boolean; readonly wasIntentionalClose: boolean; readonly willReconnect: boolean; readonly event: CloseEvent; constructor(options: BridgeDisconnectedEventOptions); } /** * Bridge event callback types */ type BridgeEventCallback = { [BridgeEventType.Connected]: (reconnection: boolean) => void; [BridgeEventType.SecureChannelEstablished]: () => void; [BridgeEventType.RawMessageReceived]: (message: any) => void; [BridgeEventType.MessageReceived]: (message: any) => void; [BridgeEventType.ChunkRecieved]: (message: any) => void; [BridgeEventType.Error]: (error: string) => void; [BridgeEventType.FailedToConnect]: (event: FailedToConnectEvent) => void; [BridgeEventType.Disconnected]: (event: BridgeDisconnectedEvent) => void; }; /** * Interface for bridge connection options */ interface BridgeOptions { role: "creator" | "joiner"; keyPair: KeyPair; bridgeId?: string; reconnect?: boolean; reconnectAttempts?: number; keepalive?: boolean; origin?: string; domain?: string; pingInterval?: number; bridgeUrl?: string; } export { BridgeDisconnectedEvent, type BridgeDisconnectedEventOptions, type BridgeEventCallback, BridgeEventType, type BridgeOptions, FailedToConnectEvent, type FailedToConnectEventOptions, type KeyPair };