@xtr-dev/zod-rpc
Version:
Simple, type-safe RPC library with Zod validation and automatic TypeScript inference
48 lines • 1.74 kB
TypeScript
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