import { Detector } from "./Detector";
import { OutboundTrackMonitor } from "../monitors/OutboundTrackMonitor";
export type CaptureBottleneckIssuePayload = {
    peerConnectionId: string;
    trackId: string;
    sourceFps?: number;
    expectedFps?: number;
    sourceWidth?: number;
    sourceHeight?: number;
    consecutiveTicks: number;
    durationInMs?: number;
};
export type EncoderBottleneckIssuePayload = {
    peerConnectionId: string;
    trackId: string;
    sourceFps?: number;
    encodedFps?: number;
    encodeTimePerFrameInMs?: number;
    qualityLimitationReason?: string;
    cpuLimitationShare?: number;
    encoderImplementation?: string;
    powerEfficientEncoder?: boolean;
    consecutiveTicks: number;
    durationInMs?: number;
};
export declare class SourceEncoderBottleneckDetector implements Detector {
    readonly trackMonitor: OutboundTrackMonitor;
    static readonly CAPTURE_ISSUE_TYPE = "capture-bottleneck";
    static readonly ENCODER_ISSUE_TYPE = "encoder-bottleneck";
    readonly name = "source-encoder-bottleneck-detector";
    disabled: boolean;
    private readonly _captureIssueKey;
    private readonly _encoderIssueKey;
    private _captureTicks;
    private _captureOn;
    private _captureStartedAt?;
    private _encoderTicks;
    private _encoderOn;
    private _encoderStartedAt?;
    constructor(trackMonitor: OutboundTrackMonitor);
    private get config();
    private get peerConnection();
    update(): void;
    private _expectedFps;
    private _checkCapture;
    private _checkEncoder;
    private _resolve;
}
