export interface PerformanceEntryLike {
    entryType: string;
    startTime: number;
    duration: number;
}
export type CPUIdleLongTaskProcessorFn<T extends number | PerformanceEntryLike> = (entry: T extends PerformanceEntryLike ? T : PerformanceEntryLike) => CheckIfQuietWindowPassedResult<T>;
export type CheckIfQuietWindowPassedResult<T extends number | PerformanceEntryLike> = {
    firstCpuIdle: T;
} | {
    /** time from timeOrigin when we can check next if we've passed quiet window yet or not */
    nextCheck: number;
};
export interface CPUIdleLongTaskProcessor<T extends number | PerformanceEntryLike> {
    processPerformanceEntry: CPUIdleLongTaskProcessorFn<T>;
    checkIfQuietWindowPassed: (time: number, quietWindowDuration?: number) => CheckIfQuietWindowPassedResult<T>;
}
export interface CPUIdleProcessorOptions {
    getQuietWindowDuration?: (currentEndTime: number, fmp: number) => number;
    clusterPadding?: number;
    heavyClusterThreshold?: number;
}
export declare function createCPUIdleProcessor<T extends number | PerformanceEntryLike>(fmpOrEntry: T, { clusterPadding, heavyClusterThreshold, getQuietWindowDuration, }?: CPUIdleProcessorOptions): CPUIdleLongTaskProcessor<T>;
