export type VideoPerformanceStatisticsResult = {
    effectId: string;
    effectParam?: string;
    frameWidth: number;
    frameHeight: number;
    /**
     * The duration in milliseconds that the data were collected
     */
    duration: number;
    /**
     * The number of frames that were processed in the duration
     */
    sampleCount: number;
    /**
     * An array that presents counts of frames that were finished in n milliseconds:
     * distributionBins[frameProcessingDurationInMs]=frameCount.
     * For example, distributionBins[10] = 5 means that 5 frames were processed in 10 milliseconds.
     */
    distributionBins: Uint32Array;
};
export declare class VideoPerformanceStatistics {
    /**
     * Function to report the statistics result
     */
    private reportStatisticsResult;
    private static readonly initialSessionTimeoutInMs;
    private static readonly maxSessionTimeoutInMs;
    private currentSession;
    private frameProcessingStartedAt;
    private distributionBins;
    private sampleCount;
    private timeoutId;
    constructor(distributionBinSize: number, 
    /**
     * Function to report the statistics result
     */
    reportStatisticsResult: (result: VideoPerformanceStatisticsResult) => void);
    /**
     * Call this function before processing every frame
     */
    processStarts(effectId: string, frameWidth: number, frameHeight: number, effectParam?: string): void;
    processEnds(): void;
    private getStatistics;
    private start;
    private suitableForThisSession;
    private reportAndResetSession;
    private resetCurrentSession;
    private getNextTimeout;
}
