import { Page } from 'puppeteer';
declare type TraceEvents = TraceEvent[];
export declare type Trace = {
    traceEvents: TraceEvents;
};
declare type TraceEventName = 'ResourceFinish' | 'ResourceSendRequest' | 'ResourceReceiveResponse';
export interface TraceEvent {
    cat: string;
    name: TraceEventName;
    args: {
        data?: {
            requestId: string;
        };
    };
}
interface ResourceFinishTraceEvent extends TraceEvent {
    args: {
        data: {
            requestId: string;
            decodedBodyLength: number;
            encodedDataLength: number;
            finishTime: number;
        };
    };
}
interface ResourceSendRequestTraceEvent extends TraceEvent {
    args: {
        data: {
            requestId: string;
            priority: string;
            requestMethod: string;
            url: string;
        };
    };
}
interface ResourceReceiveResponseTraceEven extends TraceEvent {
    args: {
        data: {
            requestId: string;
            encodedDataLength: number;
            mimeType: string;
            statusCode: number;
            timing: unknown;
        };
    };
}
declare type TracedResourceData = {
    sendRequest?: ResourceSendRequestTraceEvent;
    receiveResponse?: ResourceReceiveResponseTraceEven;
    finish?: ResourceFinishTraceEvent;
};
export declare class Tracer {
    private readonly _outputFolder;
    private _page;
    private _path;
    constructor(_outputFolder: string);
    start: (page: Page) => Promise<void>;
    stop: () => Promise<Trace>;
    private generateTracePath;
    private generateTraceName;
    private ensureFolderCreated;
}
export declare function subsetTrace(trc: TraceEvents): TraceEvent[];
export declare function extractResourceData(url: string, trace: TraceEvents): TracedResourceData;
export {};
