@nori-zk/mina-token-bridge
Version:
Nori ethereum state settelment and nETH token bridge zkApp
39 lines (38 loc) • 2.2 kB
TypeScript
import { type WebSocketServiceTopicSubscriptionMessage } from '@nori-zk/pts-types';
import { type WebSocketSubject } from 'rxjs/webSocket';
import { type ReconnectingWebSocketSubject } from './reconnectingSocket.js';
export { type ReconnectingWebSocketSubject };
/**
* Creates a basic `WebSocketSubject` for receiving bridge-related messages.
*
* This socket:
* - Subscribes to `state.eth`, `state.bridge`, and `timings.notices.transition` on open.
* - Sends `ping` messages at a fixed interval (heartbeat).
* - Ignores `pong` replies in the message stream.
*
* Automatically unsubscribes from heartbeat pings on socket close.
*
* @param url WebSocket server URL (default: wss://wss.nori.it.com)
* @param heartBeatInterval Interval for heartbeat pings in ms (default: 3000)
* @returns A filtered WebSocketSubject that emits structured subscription messages.
*/
export declare function getBridgeSocket$(url?: string, heartBeatInterval?: number): WebSocketSubject<WebSocketServiceTopicSubscriptionMessage>;
/**
* Creates a reconnecting WebSocketSubject that:
* - Handles connection state tracking and automatic reconnect with exponential backoff
* - Sends regular `ping` heartbeats
* - Watches for missing `pong` responses and triggers reconnection if threshold is exceeded
* - Subscribes to key bridge-related topics on connection
* - Filters out pong replies from message stream
*
* @param url WebSocket server URL (default: wss://wss.nori.it.com)
* @param heartBeatInterval Interval in ms for sending pings (default: 3000)
* @param pongTimeoutMultiplier Multiplier to determine allowed pong delay before reconnection (default: 2)
* @returns An object containing:
* - `bridgeSocket$`: the reconnecting WebSocket observable for bridge messages
* - `bridgeSocketConnectionState$`: connection state observable
*/
export declare function getReconnectingBridgeSocket$(url?: string, heartBeatInterval?: number, pongTimeoutMultiplier?: number): {
bridgeSocket$: ReconnectingWebSocketSubject<WebSocketServiceTopicSubscriptionMessage>;
bridgeSocketConnectionState$: import("rxjs").Observable<"connecting" | "open" | "closed" | "reconnecting" | "permanently-closed">;
};