export interface HttpCallReport {
    method: string;
    url: string;
    statusCode: number;
    latencyMs: number;
    traceId?: string;
    parentSpanId?: string;
}
export interface TraceContext {
    traceId: string;
    parentSpanId: string;
}
export interface FetchInterceptorOptions {
    onHttpCall: (report: HttpCallReport) => void;
    skipPatterns?: RegExp[];
}
/**
 * Install HTTP interceptor using both undici diagnostics channels and
 * globalThis.fetch monkey-patching. Idempotent.
 */
export declare function installFetchInterceptor(opts: FetchInterceptorOptions): void;
/**
 * Uninstall all interceptors. Safe to call even if not installed.
 */
export declare function uninstallFetchInterceptor(): void;
/**
 * Run an async function with trace context attached via AsyncLocalStorage.
 * Any HTTP calls made within `fn` (via undici or fetch) will include
 * traceId/parentSpanId in their HttpCallReport.
 */
export declare function runWithTraceContext<T>(ctx: TraceContext, fn: () => T | Promise<T>): Promise<T>;
//# sourceMappingURL=fetch-interceptor.d.ts.map