import { TResolutionSize } from '../../types'; import { TContentHint, TOnAddedTransceiver } from '../../utils/peerConnection'; import { TEvents } from '../events'; import { TPresentationSessionPort } from './createCallManagerPort'; import { PresentationStateMachine } from '../PresentationStateMachine'; import { default as PresentationTrackService } from '../PresentationTrackService'; type TPresentationLifecycleDeps = { events: TEvents; trackService: PresentationTrackService; sessionPort: TPresentationSessionPort; stateMachine: PresentationStateMachine; maxBitrate?: number; }; type TPresentationFlowOptions = { contentHint?: TContentHint; sendEncodings?: RTCRtpEncodingParameters[]; maxResolution?: TResolutionSize; onAddedTransceiver?: TOnAddedTransceiver; degradationPreference?: RTCDegradationPreference; isNeedReinvite?: boolean; }; export declare class PresentationLifecycle { private readonly events; private readonly trackService; private readonly sessionPort; private readonly stateMachine; private readonly maxBitrate?; constructor({ events, trackService, sessionPort, stateMachine, maxBitrate, }: TPresentationLifecycleDeps); guardEstablishedSession(): void; getConnectionProtected(): RTCPeerConnection; executeStartFlow(beforeStartPresentation: () => Promise, videoTrack: MediaStreamVideoTrack, { isNeedReinvite, contentHint, degradationPreference, sendEncodings, maxResolution, onAddedTransceiver, }: TPresentationFlowOptions): Promise; executeUpdateFlow(beforeStartPresentation: () => Promise, videoTrack: MediaStreamVideoTrack, { contentHint, degradationPreference, sendEncodings, maxResolution, onAddedTransceiver, }: TPresentationFlowOptions): Promise; executeStop(videoTrack: MediaStreamVideoTrack): Promise; emitEndedOnly(videoTrack: MediaStreamVideoTrack): void; resetTrackService(): void; private attachTrack; private replaceActiveTrack; private applyMaxBitrate; private notifyFailed; } export {};