import type { AppiumLogger, StringRecord } from '@appium/types';
import { LineConsumingLog } from './line-consuming-log';
export interface SafariConsoleLogOptions {
    showLogs: boolean;
    log: AppiumLogger;
}
export interface SafariNetworkResponseTiming {
    startTime: number;
    redirectStart: number;
    redirectEnd: number;
    fetchStart: number;
    domainLookupStart: number;
    domainLookupEnd: number;
    connectStart: number;
    connectEnd: number;
    secureConnectionStart: number;
    requestStart: number;
    responseStart: number;
    responseEnd: number;
}
export interface SafariNetworkResponse {
    url: string;
    status: number;
    statusText: string;
    headers: Record<string, string>;
    mimeType: string;
    timing: SafariNetworkResponseTiming;
    source: string;
    security: StringRecord;
}
export interface SafariNetworkLogEntryMetrics {
    requestHeaderBytesSent: number;
    requestBodyBytesSent: number;
    responseHeaderBytesReceived: number;
    isProxyConnection: boolean;
    responseBodyBytesReceived: number;
    responseBodyDecodedSize: number;
    securityConnection: StringRecord;
}
export interface SafariNetworkRequest {
    url: string;
    method: string;
    headers: Record<string, string>;
    rereferrerPolicy: string;
}
export interface SafariNetworkRequestInitiator {
    type: string;
}
export interface SafariNetworkLogEntry {
    requestId: string;
    frameId?: string;
    loaderId?: string;
    documentURL?: string;
    request?: SafariNetworkRequest;
    timestamp?: number;
    walltime?: number;
    inititator?: SafariNetworkRequestInitiator;
    response?: SafariNetworkResponse;
    type?: string;
    initiator?: string;
    metrics?: SafariNetworkLogEntryMetrics;
    errorText?: string;
    canceled?: boolean;
    [key: string]: any;
}
export declare class SafariNetworkLog extends LineConsumingLog {
    private readonly _showLogs;
    constructor(opts: SafariConsoleLogOptions);
    get isCapturing(): boolean;
    startCapture(): Promise<void>;
    stopCapture(): Promise<void>;
    onNetworkEvent(err?: Error, entry?: SafariNetworkLogEntry, method?: string): void;
}
export default SafariNetworkLog;
//# sourceMappingURL=safari-network-log.d.ts.map