import { InjectionToken, ModuleMetadata } from '@nestjs/common'; import { Provider } from '@nestjs/common/interfaces/modules/provider.interface'; import type { Instrumentation } from './trace/instrumentation/Instrumentation'; export type OpenTelemetryModuleConfig = { instrumentation?: Provider[]; }; export interface OpenTelemetryModuleAsyncOptions extends Pick { useFactory?: (...args: { [K in keyof Tokens]: Tokens[K] extends InjectionToken ? T : never; }) => Promise> | Partial; inject?: Tokens; }