import { Logger } from '@graphql-hive/logger';
import { Tracer } from '@opentelemetry/api';
export * from '@opentelemetry/api';
import { c as OpenTelemetryPluginUtils } from './plugin-_rGdetqD.js';
import '@graphql-hive/gateway-runtime';
import '@graphql-tools/utils';
import 'graphql';

type HiveAPI = Omit<OpenTelemetryPluginUtils, 'tracer'> & {
    /**
     * The tracer used by the OpenTelemetry plugin.
     * Note: It will stay undefined until the plugin is actually instantiated.
     *       **This means it is not usable at import time**, please use your own `Tracer` in this case.
     *       You can provide a custom tracer in {@link OpenTelemetryGatewayPluginOptions.traces the plugin options}.
     */
    tracer: Tracer | undefined;
    /**
     * Register the Hive OpenTelemetry plugin utility API
     *
     * @param utils - The plugin instance with all the utility methods
     * @param log - A Logger that will be used to warn in case of double registration. Leave it undefined or null to disable the log.
     * @returns `true` - if successful, `false` if the API was already registered
     */
    setPluginUtils(utils: OpenTelemetryPluginUtils, log?: Logger): boolean;
    /**
     * Unregister the current Hive OpenTelemetry plugin utility API if any is registered. No-op if no API was registered.
     */
    disable(): void;
};
declare const hive: HiveAPI;

export { type HiveAPI, hive };
