/// import Event from "rx.mini"; import { DtlsSocket } from "../../../dtls/src"; import { SignatureHash } from "../../../dtls/src/cipher/const"; import { Profile } from "../../../dtls/src/context/srtp"; import { RtcpPacket, RtpHeader, SrtcpSession, SrtpSession } from "../../../rtp/src"; import { RtpRouter } from "../media/router"; import { PeerConfig } from "../peerConnection"; import { RTCIceTransport } from "./ice"; export declare class RTCDtlsTransport { readonly config: PeerConfig; readonly iceTransport: RTCIceTransport; readonly router: RtpRouter; readonly certificates: RTCCertificate[]; private readonly srtpProfiles; id: string; state: DtlsState; role: DtlsRole; srtpStarted: boolean; transportSequenceNumber: number; dataReceiver: (buf: Buffer) => void; dtls?: DtlsSocket; srtp: SrtpSession; srtcp: SrtcpSession; readonly onStateChange: Event<["closed" | "new" | "connected" | "connecting" | "failed"]>; localCertificate?: RTCCertificate; private remoteParameters?; constructor(config: PeerConfig, iceTransport: RTCIceTransport, router: RtpRouter, certificates: RTCCertificate[], srtpProfiles?: Profile[]); get localParameters(): RTCDtlsParameters; setupCertificate(): Promise; setRemoteParams(remoteParameters: RTCDtlsParameters): void; start(): Promise; updateSrtpSession(): void; startSrtp(): void; readonly sendData: (data: Buffer) => Promise; sendRtp(payload: Buffer, header: RtpHeader): Promise; sendRtcp(packets: RtcpPacket[]): Promise; private setState; stop(): Promise; } export declare const DtlsStates: readonly ["new", "connecting", "connected", "closed", "failed"]; export type DtlsState = typeof DtlsStates[number]; export type DtlsRole = "auto" | "server" | "client"; export declare class RTCCertificate { certPem: string; signatureHash: SignatureHash; publicKey: string; privateKey: string; constructor(privateKeyPem: string, certPem: string, signatureHash: SignatureHash); getFingerprints(): RTCDtlsFingerprint[]; } export type DtlsKeys = { certPem: string; keyPem: string; signatureHash: SignatureHash; }; export declare class RTCDtlsFingerprint { algorithm: string; value: string; constructor(algorithm: string, value: string); } export declare class RTCDtlsParameters { fingerprints: RTCDtlsFingerprint[]; role: "auto" | "client" | "server"; constructor(fingerprints: RTCDtlsFingerprint[], role: "auto" | "client" | "server"); }