import { StreamRoomId } from "./types/ApiTypes";
import { SessionId } from "./WebRtcClientTypes";
export type ConnectionType = "publisher" | "subscriber";
export interface JanusConnection {
    pc: RTCPeerConnection;
    sessionId: SessionId;
    hasSubscriptions: boolean;
    candidateQueue: RTCIceCandidate[];
}
export declare class PeerConnectionManager {
    private createPeerConnection;
    private onTrickle;
    private connections;
    constructor(createPeerConnection: (room: StreamRoomId) => RTCPeerConnection, onTrickle: (sessionId: SessionId, candidate: RTCIceCandidate) => void);
    initialize(room: StreamRoomId, connectionType: ConnectionType, sessionId?: SessionId): void;
    updateSessionForConnection(room: StreamRoomId, connectionType: ConnectionType, session: SessionId): void;
    hasConnection(room: StreamRoomId, connectionType: ConnectionType): boolean;
    getConnectionWithSession(room: StreamRoomId, connectionType: ConnectionType): JanusConnection;
    closePeerConnectionBySessionIfExists(room: StreamRoomId, connectionType: ConnectionType): void;
}
