import type { Context, Span } from '@opentelemetry/api'; import { InstrumentationBase } from '@opentelemetry/instrumentation'; import type { InstrumentationModuleDefinition } from '@opentelemetry/instrumentation'; import type { H3Event } from 'h3'; import type { NitroApp } from 'nitropack/types'; import type { ChannelListener } from 'node:diagnostics_channel'; interface NitroInstrumentationConfig { enabled?: boolean; routeNameHook?: RouteNameHook; ignoreRequestHook?: (event: H3Event) => boolean; requestHeaders?: string[]; responseHeaders?: string[]; } declare module 'h3' { interface H3EventContext { otel?: { ctx: Context; span: Span; _endTime?: number; }; } } declare global { var __nitro__: { app: NitroApp; [key: string]: unknown; }; var __package_name: string; var __package_version: string; } type EventHook = (event: H3Event, span: Span) => void; type RouteNameHook = (event: H3Event) => string | undefined; export declare class NitroInstrumentation extends InstrumentationBase { isInstalled: boolean; requestHook?: EventHook; responseHook?: EventHook; routeNameHook?: RouteNameHook; ignoreRequestHook?: (event: H3Event) => boolean; _initHandler?: ChannelListener; constructor(config?: NitroInstrumentationConfig); updateRouteAttributes(event: H3Event, span: Span): void; getRouteName(event: H3Event): string; install(nitroApp: NitroApp): void; enable(): void; disable(): void; setConfig(config: NitroInstrumentationConfig): void; protected init(): InstrumentationModuleDefinition | InstrumentationModuleDefinition[] | void; } export {};