import { EventEmitter } from "node:events";
import { type DateProvider } from "./DateProvider.class.ts";
import { type LoggerEventsMap } from "./logger.class.ts";
import type { ApiStats, Stats } from "../types.ts";
export type Providers = {
    dateProvider?: DateProvider;
    logger?: EventEmitter<LoggerEventsMap>;
};
export type Options = {
    isVerbose: boolean;
};
export type OnSuccess<T extends () => any> = (res: Awaited<ReturnType<T>>, stat: ApiStats) => void;
export declare class StatsCollector {
    #private;
    constructor(providers: Providers, options: Options);
    track<T extends () => any>(options: {
        name: string;
        phase: string;
        fn: T;
        onSuccess?: OnSuccess<T>;
    }): ReturnType<T>;
    getStats(): Stats;
}
//# sourceMappingURL=StatsCollector.class.d.ts.map