import DisposableList from '../../lang/DisposableList';
import Subject from '../../rx/Subject';
import { IStreamTrackTransform } from '../transformation/StreamTrackTransform';
import { IEncodedStreamSink } from '../transformation/EncodedStreamSink';
export interface IRTCEncodedFrame<T extends RTCEncodedVideoFrame | RTCEncodedAudioFrame> {
    track: MediaStreamTrack;
    chunk: T;
}
export default class InsertableStreams {
    static configureEncodedStreamPipeline(stream: MediaStream, receivers: RTCRtpReceiver[], encodedVideoStreamSink: IEncodedStreamSink<RTCEncodedVideoFrame> | undefined, encodedAudioStreamSink: IEncodedStreamSink<RTCEncodedAudioFrame> | undefined, videoCodec: string, audioCodec: string): {
        disposables: DisposableList;
        encodedVideoFrame: Subject<IRTCEncodedFrame<RTCEncodedVideoFrame> | null>;
        encodedAudioFrame: Subject<IRTCEncodedFrame<RTCEncodedAudioFrame> | null>;
    };
    static configureInsertableStreamTransformation(stream: MediaStream, videoStreamTransformCallback: IStreamTrackTransform<VideoFrame> | undefined, audioStreamTransformCallback: IStreamTrackTransform<AudioData> | undefined): {
        transformedStream: MediaStream;
        disposables: DisposableList;
    };
    constructor();
}
