export type StreamMetrics = {
    chunks: number;
    bytes: number;
    backpressureCount: number;
    errorCount: number;
    duration: number;
    startTime: number;
    endTime?: number;
    route?: string;
};
export type CreateRenderMetricsFn = <T extends "html" | "rsc-headless" | "rsc-full">(metrics: {
    route: string;
    type: T;
    fromMainThread: boolean;
    fromRscWorker: boolean;
    fromHtmlWorker: boolean;
    processingTime?: number;
    chunks?: number;
    chunkRate?: number;
    memoryUsage?: NodeJS.MemoryUsage;
    streamMetrics?: StreamMetrics;
    fileSize?: number;
    fileName?: string;
    outputPath?: string;
    baseDir?: string;
    routePath?: string;
}) => RenderMetrics<T>;
export type BaseRenderMetrics = {
    route: string;
    fromMainThread: boolean;
    fromRscWorker: boolean;
    fromHtmlWorker: boolean;
    processingTime: number;
    chunks: number;
    chunkRate: number;
    memoryUsage: NodeJS.MemoryUsage;
    streamMetrics: StreamMetrics;
    streamType?: string;
    description?: string;
};
export type RenderMetrics<T extends "html" | "rsc-headless" | "rsc-full" = "html" | "rsc-headless" | "rsc-full"> = {
    type: T;
} & (T extends "html" | "rsc-headless" ? BaseRenderMetrics & {
    fileSize: number;
    fileName: string;
    outputPath: string;
    baseDir: string;
    routePath: string;
} : T extends "rsc-full" ? BaseRenderMetrics & {
    fileSize?: never;
    fileName?: never;
    outputPath?: never;
    baseDir?: never;
    routePath?: never;
} : BaseRenderMetrics & {
    fileSize?: number;
    fileName?: string;
    outputPath?: string;
    baseDir?: string;
    routePath?: string;
});
export type WorkerStartupMetrics = {
    route: string;
    type: "worker-startup";
    workerType: "rsc" | "html";
    startupTime: number;
    fromMainThread: boolean;
    fromRscWorker: boolean;
    fromHtmlWorker: boolean;
    memoryUsage: NodeJS.MemoryUsage;
    description?: string;
    fileSize?: never;
    processingTime?: never;
};
export type ModuleResolutionMetrics = {
    route: string;
    type: "module-resolution";
    workerType: "rsc" | "html" | "mainThread";
    startupTime?: never;
    resolutionTime: number;
    fromMainThread: boolean;
    fromRscWorker: boolean;
    fromHtmlWorker: boolean;
    memoryUsage: NodeJS.MemoryUsage;
    description?: string;
    fileSize?: never;
};
export type CreateStreamMetricsFn = (metrics?: Partial<StreamMetrics>) => StreamMetrics;
//# sourceMappingURL=types.d.ts.map