import { BasePeerConnection } from './BasePeerConnection';
import { BasePeerConnectionOpts } from './types';
/**
 * A wrapper around the `RTCPeerConnection` that handles the incoming
 * media streams from the SFU.
 *
 * @internal
 */
export declare class Subscriber extends BasePeerConnection {
    /**
     * Remote streams received from the SFU. For a self-sub case
     * we need to be able to distinguish between the local capture stream.
     * The map will never contain local streams so we can safely use it to
     * check if the stream is remote and dispose it when needed.
     */
    private trackedStreams?;
    private negotiationFailures;
    /**
     * Constructs a new `Subscriber` instance.
     */
    constructor(opts: BasePeerConnectionOpts);
    /**
     * Detaches the event handlers from the `RTCPeerConnection`.
     * This is useful when we want to replace the `RTCPeerConnection`
     * instance with a new one (in case of migration).
     */
    detachEventHandlers(): void;
    /**
     * Restarts the ICE connection and renegotiates with the SFU.
     */
    restartIce: () => Promise<void>;
    private handleOnTrack;
    private setRemoteTrackInterrupted;
    private negotiate;
}
