import type CDP from 'chrome-remote-interface';
import { type ChromiumMetricObserver, type Metric, type ObserverOptions } from '../../../types/index.js';
/**
 * Options for the NetworkActivityObserver
 */
export type NetworkActivityObserverOptions = ObserverOptions & {
    /**
     * When true, sampling returns full details array. When false (default), only aggregated values.
     */
    includeDetailsInSampling?: boolean;
};
/**
 * Network activity data for a single request
 */
export type NetworkActivity = {
    requestId: string;
    url: string;
    method: string;
    status?: number;
    transferSize?: number;
    duration?: number;
    timestamp: number;
};
/**
 * Aggregated network metrics
 */
export type NetworkAggregatedMetrics = {
    totalNetworkRequests: number;
    totalNetworkTransferSize: number;
    totalNetworkDuration: number;
};
/**
 * Network activity observer result
 */
export type NetworkActivityResult = NetworkAggregatedMetrics & {
    networkActivities: NetworkActivity[];
};
export declare class NetworkActivityObserver implements ChromiumMetricObserver {
    protected options?: NetworkActivityObserverOptions | undefined;
    readonly name = "networkActivity";
    readonly plugins: import("../../../index.js").ChromiumMeasurePlugin[];
    private readonly includeDetailsInSampling;
    private readonly requestStartTimes;
    private readonly requestMethods;
    private readonly networkActivities;
    private readonly subscriptions;
    private isEnabled;
    constructor(options?: NetworkActivityObserverOptions | undefined);
    /**
     * @inheritdoc
     */
    onStart(accumulator: Metric, developmentTools: CDP.Client): Promise<void>;
    /**
     * @inheritdoc
     */
    onSampling(accumulator: Metric, developmentTools: CDP.Client): Promise<void>;
    /**
     * @inheritdoc
     */
    onStop(accumulator: Metric, developmentTools: CDP.Client): Promise<void>;
    /**
     * Common function for all lifecycle hooks
     */
    private common;
    /**
     * Setup network event listeners
     */
    private setupListeners;
    /**
     * Setup requestWillBeSent event listener
     *
     * @param client
     */
    private setupRequestWillBeSent;
    /**
     * Setup responseReceived event listener
     *
     * @param client
     */
    private setupResponseReceived;
    /**
     * Setup loadingFinished event listener
     *
     * @param client
     */
    private setupLoadingFinished;
    /**
     * Setup loadingFailed event listener
     *
     * @param client
     */
    private setupLoadingFailed;
    /**
     * Calculate aggregated metrics from collected activities
     */
    private calculateAggregatedMetrics;
}
