UNPKG

@xtr-dev/zod-rpc

Version:

Simple, type-safe RPC library with Zod validation and automatic TypeScript inference

48 lines 1.74 kB
import { Transport, RPCMessage } from '../types'; /** * @group Transport Layer */ export declare class WebRTCTransport implements Transport { private dataChannel; private messageHandler?; constructor(dataChannel: RTCDataChannel); send(message: RPCMessage): Promise<void>; onMessage(handler: (message: RPCMessage) => void): void; connect(): Promise<void>; disconnect(): Promise<void>; isConnected(): boolean; private setupEventHandlers; } /** * @group Transport Layer */ export interface WebRTCConfig { iceServers?: RTCIceServer[]; iceTransportPolicy?: RTCIceTransportPolicy; bundlePolicy?: RTCBundlePolicy; } /** * @group Transport Layer */ export declare class WebRTCPeerConnection { private peerConnection; private dataChannel?; constructor(config?: WebRTCConfig); createOffer(channelLabel?: string): Promise<RTCSessionDescriptionInit>; createAnswer(): Promise<RTCSessionDescriptionInit>; handleAnswer(answer: RTCSessionDescriptionInit): Promise<void>; setRemoteDescription(description: RTCSessionDescriptionInit): Promise<void>; addIceCandidate(candidate: RTCIceCandidateInit): Promise<void>; onIceCandidate(handler: (candidate: RTCIceCandidate | null) => void): void; onDataChannel(handler: (channel: RTCDataChannel) => void): void; onConnectionStateChange(handler: (state: RTCPeerConnectionState) => void): void; getDataChannel(): RTCDataChannel | undefined; getConnectionState(): RTCPeerConnectionState; close(): void; private setupPeerConnectionHandlers; } /** * @group Transport Layer */ export declare function createWebRTCTransport(dataChannel: RTCDataChannel): WebRTCTransport; //# sourceMappingURL=webrtc.d.ts.map