import { DeviceTier } from '../model/MeetingStartRequest'; export type NetworkProfile = 'good' | 'degraded' | 'poor' | 'critical'; export interface ResolvedConfig { videoEnabled: boolean; videoWidth: number; videoHeight: number; videoFrameRate: number; opusBitrate: number; opusPtime: number; opusFec: boolean; opusDtx: boolean; opusMaxPlaybackRate: number; opusComplexity: number; } export declare class MediaAdaptationManager { private readonly getPeerConnections; private readonly getVideoTrack; private readonly onProfileChange; private readonly deviceTier; private networkProfile; private handle; private tickCount; private badSamples; private goodSamples; constructor(getPeerConnections: () => RTCPeerConnection[], getVideoTrack: () => any | null, onProfileChange: (profile: NetworkProfile, config: ResolvedConfig) => void, deviceTier?: DeviceTier); start(): Promise; stop(): void; applyToNewConnection(_pc: RTCPeerConnection): void; private tick; private switchProfile; private applyVideo; buildOpusFmtp(payloadType: string): string; private collectStats; private classify; private resolved; private rank; private stepUp; getCurrentProfile(): NetworkProfile; getCurrentResolved(): ResolvedConfig; }