export declare class BitrateTest { _stopped: boolean; _failed: boolean; _eventBus: BitrateComponentEventBus; _currentSender: PacedSender; _id: string; _listener: BitrateTestListener; constructor(eventBus: BitrateComponentEventBus); advisedBitrate(timeout: number, maxBitrate?: number): Promise; setListener(listener: BitrateTestListener): void; interruptTest(): void; } export declare class PacedSender { _id: string; _sink: Sink; _ended: boolean; _window: MovingWindow; _targetBitrate: number; _lastSeq: number; _defaultPacketSize: number; _lastSentTime: number; constructor(sink: Sink); start(): Promise; setTargetBitrate(rate: number): void; stop(): void; } export interface Sink { send(object: ArrayBuffer): boolean; active(): boolean; } export interface BitrateComponentEventBus extends Sink { requestTestStatus(): Promise; startTest(): Promise; stopTest(): Promise; } export interface BitrateTestController { test(timeout: number, maxBitrate?: number): Promise; stop(): void; setListener(listener: BitrateTestListener): any; } export interface BitrateTestListener { onStatusUpdate(bitrate: number): any; } export declare type DynamicRate = { count: number; sleep: number; size: number; }; declare class MovingWindow { _window: { timestamp: number; size: number; }[]; _cachedValue: number; _timeCapacity: number; processNext(size: number, timestamp: number): void; getDynamicRate(size: number, timestamp: number, targetBitrate: number): DynamicRate; getWindowSize(timestamp: number): number; } export {};