import type { RTCIceCandidate, RtpPacket } from 'werift'; import { type ConnectionState, MediaStreamTrack, type RtcpPacket } from 'werift'; import type { Observable } from 'rxjs'; import { ReplaySubject, Subject } from 'rxjs'; import { Subscribed } from '../subscribed.ts'; export interface BasicPeerConnection { createOffer(): Promise<{ sdp: string; }>; acceptAnswer(answer: { type: 'answer'; sdp: string; }): Promise; addIceCandidate(candidate: Partial): Promise; onIceCandidate: Observable; onConnectionState: Observable; close(): void; requestKeyFrame?: () => void; } export declare class WeriftPeerConnection extends Subscribed implements BasicPeerConnection { private pc; onAudioRtp: Subject; onAudioRtcp: Subject; onVideoRtp: Subject; onVideoRtcp: Subject; onIceCandidate: Subject; onConnectionState: ReplaySubject<"closed" | "connected" | "failed" | "disconnected" | "new" | "connecting">; returnAudioTrack: MediaStreamTrack; private onRequestKeyFrame; constructor(); createOffer(): Promise; acceptAnswer(answer: { type: 'answer'; sdp: string; }): Promise; addIceCandidate(candidate: RTCIceCandidate): Promise; requestKeyFrame(): void; close(): void; }