import { Page } from 'puppeteer';
export interface NetworkLog {
    timestamp: Date;
    method: string;
    url: string;
    status?: number;
    type?: string;
    size?: number;
    duration?: number;
    requestHeaders?: Record<string, string>;
    requestPayload?: any;
    responseHeaders?: Record<string, string>;
    responseBody?: string;
    initiator?: {
        type: string;
        stack?: {
            callFrames: Array<{
                functionName: string;
                url: string;
                lineNumber: number;
                columnNumber: number;
            }>;
        };
        url?: string;
        lineNumber?: number;
    };
    isAPI?: boolean;
}
export interface ConsoleLog {
    timestamp: Date;
    type: string;
    text: string;
    location?: string;
    stackTrace?: any;
}
export declare class DevToolsMonitor {
    private networkLogs;
    private consoleLogs;
    private page;
    private requestTimings;
    private requestDetails;
    private cdpSession;
    private consoleHandler;
    private requestHandler;
    private responseHandler;
    private pageErrorHandler;
    private requestFailedHandler;
    private cdpRequestWillBeSentHandler;
    private cdpResponseReceivedHandler;
    private cdpLoadingFinishedHandler;
    constructor(page: Page);
    private setupListeners;
    getConsoleLogs(filter?: {
        type?: string;
        since?: Date;
    }): ConsoleLog[];
    getNetworkLogs(filter?: {
        status?: number;
        method?: string;
        since?: Date;
    }): NetworkLog[];
    clearLogs(): void;
    getPerformanceMetrics(): Promise<{
        detailed: {
            navigation: {
                ttfb: number;
                domContentLoaded: number;
                loadComplete: number;
                totalLoadTime: number;
                dnsLookup: number;
                tcpConnection: number;
                requestDuration: number;
                responseDuration: number;
                domProcessing: number;
                resourceFetchTime: number;
            } | {
                ttfb?: undefined;
                domContentLoaded?: undefined;
                loadComplete?: undefined;
                totalLoadTime?: undefined;
                dnsLookup?: undefined;
                tcpConnection?: undefined;
                requestDuration?: undefined;
                responseDuration?: undefined;
                domProcessing?: undefined;
                resourceFetchTime?: undefined;
            };
            resources: {
                total: number;
                breakdown: {
                    scripts: number;
                    stylesheets: number;
                    images: number;
                    fonts: number;
                    xhr: number;
                    other: number;
                };
                totalSize: number;
                totalDuration: number;
            };
            largestResources: {
                url: string;
                size: number;
                duration: number;
                type: string;
            }[];
            slowestResources: {
                url: string;
                duration: number;
                size: number;
                type: string;
            }[];
            paintMetrics: any;
            memoryInfo: any;
        };
        Timestamp?: number;
        Documents?: number;
        Frames?: number;
        JSEventListeners?: number;
        Nodes?: number;
        LayoutCount?: number;
        RecalcStyleCount?: number;
        LayoutDuration?: number;
        RecalcStyleDuration?: number;
        ScriptDuration?: number;
        TaskDuration?: number;
        JSHeapUsedSize?: number;
        JSHeapTotalSize?: number;
    }>;
    startCoverage(): Promise<void>;
    stopCoverage(): Promise<{
        jsCoverage: import("puppeteer").JSCoverageEntry[];
        cssCoverage: import("puppeteer").CoverageEntry[];
    }>;
    inspectElement(selector: string): Promise<{
        tagName: string;
        id: string;
        className: string;
        attributes: {
            name: string;
            value: string;
        }[];
        boundingBox: {
            x: number;
            y: number;
            width: number;
            height: number;
        };
        computedStyles: {
            display: string;
            position: string;
            color: string;
            backgroundColor: string;
            fontSize: string;
            fontFamily: string;
            margin: string;
            padding: string;
            border: string;
            width: string;
            height: string;
            zIndex: string;
            opacity: string;
            visibility: string;
        };
        innerHTML: string;
        innerText: string;
    } | null>;
    getPageResources(): Promise<{
        scripts: {
            src: string;
            async: boolean;
            defer: boolean;
            type: string;
            inline: boolean;
        }[];
        stylesheets: {
            href: string | null;
            disabled: boolean;
            media: string;
            rules: number;
        }[];
        images: {
            src: string;
            alt: string;
            width: number;
            height: number;
            loaded: boolean;
        }[];
        links: {
            href: string;
            text: string | null;
            target: string;
            rel: string;
        }[];
    }>;
    getAccessibilityTree(): Promise<import("puppeteer").SerializedAXNode | null>;
    getMemoryInfo(): Promise<any>;
    private setupCDPListeners;
    private isAPIRequest;
    private parsePayload;
    getAPILogs(filter?: {
        method?: string;
        urlPattern?: string;
        status?: number;
        since?: Date;
    }): NetworkLog[];
    cleanup(): Promise<void>;
}
//# sourceMappingURL=devtools.d.ts.map