import { ILogger } from '.';
export interface NetworkRequestEvent {
    type: string;
    method: string;
    url: string;
    timestamp: number;
    status?: number;
    duration?: number;
    requestBodySize?: number;
    requestHeaders?: Record<string, string>;
    responseBodySize?: number;
    responseHeaders?: Record<string, string>;
    error?: {
        name: string;
        message: string;
    };
    startTime?: number;
    endTime?: number;
}
type FormDataEntryValueBrowser = string | Blob | null;
export interface FormDataBrowser {
    entries(): IterableIterator<[string, FormDataEntryValueBrowser]>;
}
export type FetchRequestBody = string | Blob | ArrayBuffer | FormDataBrowser | URLSearchParams | null | undefined;
export declare function getRequestBodyLength(body: FetchRequestBody | null | undefined): number | undefined;
export type NetworkEventCallbackFn = (event: NetworkRequestEvent) => void;
export declare class NetworkEventCallback {
    readonly callback: (event: NetworkRequestEvent) => void;
    readonly id: string;
    constructor(callback: (event: NetworkRequestEvent) => void, id?: string);
}
export declare class NetworkObserver {
    private originalFetch?;
    private eventCallbacks;
    private isObserving;
    private globalScope?;
    constructor(logger?: ILogger);
    static isSupported(): boolean;
    subscribe(eventCallback: NetworkEventCallback): void;
    unsubscribe(eventCallback: NetworkEventCallback): void;
    protected triggerEventCallbacks(event: NetworkRequestEvent): void;
    private observeFetch;
}
export declare const networkObserver: NetworkObserver;
export {};
//# sourceMappingURL=network-observer.d.ts.map