import type {IMessage} from '../messaging/IMessage'; import {MessageKind} from '../messaging/MessageKind'; /** * Interface for signaling client operations * Follows Interface Segregation Principle - focused interface for signaling */ export interface ISignalingClient { /** * Register a callback for a specific message type */ on(kind: MessageKind, callback: (message: IMessage) => Promise): void; /** * Send an offer to the signaling server */ sendOffer(offer: RTCSessionDescriptionInit): Promise; /** * Send an answer to the signaling server */ sendAnswer(answer: RTCSessionDescriptionInit): Promise; /** * Send an ICE candidate to the signaling server */ sendCandidate(candidate: RTCIceCandidateInit): Promise; }