import Subject from '../rx/Subject';
import IPeerConnection from './IPeerConnection';
import IPeerConnectionFactory from './IPeerConnectionFactory';
export interface IPeerConnectionOfferInit {
    audioTransceivers?: RTCRtpTransceiver[];
    videoTransceivers?: RTCRtpTransceiver[];
    peerConnection: IPeerConnection;
    localOffer: RTCSessionDescriptionInit;
}
export declare enum EncodedInsertableStreams {
    Disabled = 0,
    Enabled = 1
}
export declare const defaultTrackKinds: ('audio' | 'video')[];
export default class PeerConnectionService {
    private static _logger;
    private static readonly _peerConnectionFactory;
    private static _cached;
    static get peerConnectionFactory(): Subject<IPeerConnectionFactory>;
    static initiateInitialPrecaching(): void;
    static precacheCreatePeerConnectionOffer(): Promise<{
        peerConnection: Promise<IPeerConnectionOfferInit | void>;
        direction: RTCRtpTransceiverDirection;
    }>;
    static createPeerConnectionOffer(direction?: RTCRtpTransceiverDirection, trackKinds?: ("audio" | "video")[], encodedInsertableStreams?: EncodedInsertableStreams): Promise<IPeerConnectionOfferInit>;
    private static isTracksKindsEquivalentToDefault;
    private constructor();
}
