import type { Instrumentation } from '@opentelemetry/instrumentation';
import { DnsInstrumentation } from '@opentelemetry/instrumentation-dns';
import type { SpanNameHook } from '@opentelemetry/instrumentation-express';
import { ExpressInstrumentation } from '@opentelemetry/instrumentation-express';
import { UndiciInstrumentation } from '@opentelemetry/instrumentation-undici';
import { GenericPoolInstrumentation } from '@opentelemetry/instrumentation-generic-pool';
import type { IgnoreIncomingRequestFunction } from '@opentelemetry/instrumentation-http';
import { HttpInstrumentation } from '@opentelemetry/instrumentation-http';
import { RedisInstrumentation } from '@opentelemetry/instrumentation-redis';
import { NetInstrumentation } from '@opentelemetry/instrumentation-net';
import { GraphQLInstrumentation } from '@opentelemetry/instrumentation-graphql';
import { PgInstrumentation } from '@opentelemetry/instrumentation-pg';
import { PinoInstrumentation } from '@opentelemetry/instrumentation-pino';
declare const InstrumentationMap: {
    '@opentelemetry/instrumentation-http': typeof HttpInstrumentation;
    '@opentelemetry/instrumentation-dns': typeof DnsInstrumentation;
    '@opentelemetry/instrumentation-express': typeof ExpressInstrumentation;
    '@opentelemetry/instrumentation-graphql': typeof GraphQLInstrumentation;
    '@opentelemetry/instrumentation-undici': typeof UndiciInstrumentation;
    '@opentelemetry/instrumentation-generic-pool': typeof GenericPoolInstrumentation;
    '@opentelemetry/instrumentation-redis': typeof RedisInstrumentation;
    '@opentelemetry/instrumentation-net': typeof NetInstrumentation;
    '@opentelemetry/instrumentation-pg': typeof PgInstrumentation;
    '@opentelemetry/instrumentation-pino': typeof PinoInstrumentation;
};
type ConfigArg<T> = T extends new (...args: infer U) => unknown ? U[0] : never;
export type InstrumentationConfigMap = {
    [Name in keyof typeof InstrumentationMap]?: ConfigArg<(typeof InstrumentationMap)[Name]>;
};
export declare function setTelemetryHooks(hooks: {
    ignoreIncomingRequestHook?: IgnoreIncomingRequestFunction;
    spanNameHook?: SpanNameHook;
}): void;
export declare function getAutoInstrumentations(inputConfigs?: InstrumentationConfigMap): Instrumentation[];
export {};
