import { StreamSfuClient } from '../StreamSfuClient';
import { StatsOptions } from '../gen/coordinator';
import { Publisher, Subscriber } from '../rtc';
import { Tracer } from './rtc';
import { ClientDetails, WebsocketReconnectStrategy } from '../gen/video/sfu/models/models';
import { CameraManager, MicrophoneManager } from '../devices';
import { CallState } from '../store';
export type SfuStatsReporterOptions = {
    options: StatsOptions;
    clientDetails: ClientDetails;
    subscriber: Subscriber;
    publisher?: Publisher;
    microphone: MicrophoneManager;
    camera: CameraManager;
    state: CallState;
    tracer: Tracer;
    unifiedSessionId: string;
};
export declare class SfuStatsReporter {
    private readonly logger;
    readonly options: StatsOptions;
    private readonly sfuClient;
    private readonly subscriber;
    private readonly publisher?;
    private readonly microphone;
    private readonly camera;
    private readonly state;
    private readonly tracer;
    private readonly unifiedSessionId;
    private intervalId;
    private timeoutId;
    private reportCount;
    private unsubscribeDevicePermissionsSubscription?;
    private unsubscribeListDevicesSubscription?;
    private readonly sdkName;
    private readonly sdkVersion;
    private readonly webRTCVersion;
    private readonly inputDevices;
    constructor(sfuClient: StreamSfuClient, { options, clientDetails, subscriber, publisher, microphone, camera, state, tracer, unifiedSessionId, }: SfuStatsReporterOptions);
    private observeDevice;
    sendConnectionTime: (connectionTimeSeconds: number) => void;
    sendReconnectionTime: (strategy: WebsocketReconnectStrategy, timeSeconds: number) => void;
    private sendTelemetryData;
    private run;
    private scheduleNextReport;
    start: () => void;
    stop: () => void;
    flush: () => void;
}
