/**
 * This class is used to monitor the performance of video processing, and report performance events.
 */
export declare class VideoPerformanceMonitor {
    private reportPerformanceEvent;
    private static readonly distributionBinSize;
    private static readonly calculateFPSInterval;
    private isFirstFrameProcessed;
    private applyingEffect?;
    private appliedEffect?;
    private frameProcessTimeLimit;
    private gettingTextureStreamStartedAt;
    private currentStreamId;
    private frameProcessingStartedAt;
    private frameProcessingTimeCost;
    private processedFrameCount;
    private performanceStatistics;
    constructor(reportPerformanceEvent: (apiVersionTag: string, actionName: string, args: unknown[]) => void);
    /**
     * Start to check frame processing time intervally
     * and report performance event if the average frame processing time is too long.
     */
    startMonitorSlowFrameProcessing(): void;
    /**
     * Define the time limit of frame processing.
     * When the average frame processing time is longer than the time limit, a "video.performance.frameProcessingSlow" event will be reported.
     * @param timeLimit
     */
    setFrameProcessTimeLimit(timeLimit: number): void;
    /**
     * Call this function when the app starts to switch to the new video effect
     */
    reportApplyingVideoEffect(effectId: string, effectParam?: string): void;
    /**
     * Call this function when the new video effect is ready
     */
    reportVideoEffectChanged(effectId: string, effectParam?: string): void;
    /**
     * Call this function when the app starts to process a video frame
     */
    reportStartFrameProcessing(frameWidth: number, frameHeight: number): void;
    /**
     * Call this function when the app finishes successfully processing a video frame
     */
    reportFrameProcessed(): void;
    /**
     * Call this function when the app starts to get the texture stream
     */
    reportGettingTextureStream(streamId: string): void;
    /**
     * Call this function when the app finishes successfully getting the texture stream
     */
    reportTextureStreamAcquired(): void;
}
