import { SignalTarget } from '@livekit/protocol'; import PCTransport from './PCTransport'; import type { LoggerOptions } from './types'; export declare enum PCTransportState { NEW = 0, CONNECTING = 1, CONNECTED = 2, FAILED = 3, CLOSING = 4, CLOSED = 5 } type PCMode = 'subscriber-primary' | 'publisher-primary' | 'publisher-only'; export declare class PCTransportManager { publisher: PCTransport; subscriber?: PCTransport; peerConnectionTimeout: number; get needsPublisher(): boolean; get needsSubscriber(): boolean; get currentState(): PCTransportState; onStateChange?: (state: PCTransportState, pubState: RTCPeerConnectionState, subState?: RTCPeerConnectionState) => void; onIceCandidate?: (ev: RTCIceCandidate, target: SignalTarget) => void; onDataChannel?: (ev: RTCDataChannelEvent) => void; onTrack?: (ev: RTCTrackEvent) => void; onPublisherOffer?: (offer: RTCSessionDescriptionInit, offerId: number) => void; private isPublisherConnectionRequired; private isSubscriberConnectionRequired; private state; private connectionLock; private remoteOfferLock; private log; private loggerOptions; private _mode; get mode(): PCMode; constructor(mode: PCMode, loggerOptions: LoggerOptions, rtcConfig?: RTCConfiguration); private get logContext(); requirePublisher(require?: boolean): void; createAndSendPublisherOffer(options?: RTCOfferOptions): Promise; setPublisherAnswer(sd: RTCSessionDescriptionInit, offerId: number): Promise; removeTrack(sender: RTCRtpSender): void | undefined; close(): Promise; triggerIceRestart(): Promise; addIceCandidate(candidate: RTCIceCandidateInit, target: SignalTarget): Promise; createSubscriberAnswerFromOffer(sd: RTCSessionDescriptionInit, offerId: number): Promise; updateConfiguration(config: RTCConfiguration, iceRestart?: boolean): void; ensurePCTransportConnection(abortController?: AbortController, timeout?: number): Promise; negotiate(abortController: AbortController): Promise; addPublisherTransceiver(track: MediaStreamTrack, transceiverInit: RTCRtpTransceiverInit): RTCRtpTransceiver; addPublisherTransceiverOfKind(kind: 'audio' | 'video', transceiverInit: RTCRtpTransceiverInit): RTCRtpTransceiver; getMidForReceiver(receiver: RTCRtpReceiver): string | null | undefined; addPublisherTrack(track: MediaStreamTrack): RTCRtpSender; createPublisherDataChannel(label: string, dataChannelDict: RTCDataChannelInit): RTCDataChannel; /** * Returns the first required transport's address if no explicit target is specified */ getConnectedAddress(target?: SignalTarget): Promise; private get requiredTransports(); private updateState; private ensureTransportConnected; } export {}; //# sourceMappingURL=PCTransportManager.d.ts.map