import { EventEmitter } from "eventemitter3"; import type { Peer } from "../peer"; import type { ConnectionType, ServerMessageType, SerializationType } from "../enums"; import type { MediaConnectionOptions } from "./media"; import type { DataConnectionOptions } from "./data"; export interface ServerMessageBase { type: ServerMessageType; payload: unknown; src: string; } interface ServerOfferMessageBase { type: T; sdp: RTCSessionDescriptionInit; browser: string; } export interface ServerOfferMediaConnectionMessage extends MediaConnectionOptions, ServerOfferMessageBase { connectionId: string; } export interface ServerOfferDataConnectionMessage extends DataConnectionOptions, ServerOfferMessageBase { connectionId: string; } export interface ServerOfferMessage extends ServerMessageBase { type: ServerMessageType.Offer; payload: ServerOfferMediaConnectionMessage | ServerOfferDataConnectionMessage; } export interface ServerErrorMessage extends ServerMessageBase { type: ServerMessageType.Error; payload: { msg: Error | string; }; } export interface ServerAnswerMessage extends ServerMessageBase { type: ServerMessageType.Answer; payload: { sdp: RTCSessionDescriptionInit | undefined; }; } export interface ServerCandidateMessage extends ServerMessageBase { type: ServerMessageType.Candidate; payload: { candidate: RTCIceCandidateInit; }; } export interface ServerSimpleMessage extends ServerMessageBase { type: ServerMessageType.Open | ServerMessageType.IdTaken | ServerMessageType.InvalidKey | ServerMessageType.Leave | ServerMessageType.Expire; } export declare type ServerMessage = ServerOfferMessage | ServerErrorMessage | ServerAnswerMessage | ServerCandidateMessage | ServerSimpleMessage; export interface BaseConnectionOptions { connectionId?: string; label?: string; metadata?: unknown; serialization?: SerializationType; reliable?: boolean; constraints?: RTCOfferOptions; sdpTransform?: Function; } export declare abstract class BaseConnection extends EventEmitter { readonly peer: string; readonly options: O; protected _open: boolean; readonly metadata: unknown; abstract connectionId: string; peerConnection: RTCPeerConnection | null; abstract get type(): ConnectionType; get open(): boolean; protected _provider: Peer | null; get provider(): Peer; constructor(peer: string, provider: Peer, options: O); abstract close(): void; abstract handleMessage(message: ServerMessage): void; } export {};