import type { Metadata } from "@grpc/grpc-js";
export interface NodeSDKConfig {
    /**
     * The opentelemetry collector entrypoint GRPC url.
     * If the collectorUrl is null or undefined, the instrumentation will not be activated.
     * @example http://alloy:4317
     */
    collectorUrl: string;
    /**
     * Name of your application used for the collector to group logs and naming traces
     */
    serviceName?: string;
    /**
     * Version of your application used for the collector to group logs and naming traces
     */
    serviceVersion?: string;
    /**
     * Diagnostic log level for the internal runtime instrumentation
     *
     * @type string
     * @default INFO
     */
    diagLogLevel?: SDKLogLevel;
    /**
     * Collector signals processing mode.
     * single: makes an http/grpc request for each signal, and it is immediately processed inside grafana
     * batch: sends multiple signals within a time window, optimized to reduce http/grpc calls in production
     *
     * @type string
     * @default batch
     */
    collectorMode?: SDKCollectorMode;
    /**
     * Array of not traced urls.
     *
     * @type {SamplerCondition}
     * @default []
     */
    ignoreUrls?: SamplerCondition[];
    /**
     * Object containing static properties or functions used to evaluate custom attributes for all logs and traces.
     */
    spanAttributes?: Record<string, SignalAttributeValue | (() => SignalAttributeValue)>;
    /**
     * Object containing static properties used as resources attributes for the Node SDK initialization.
     */
    resourceAttributes?: Record<string, SignalAttributeValue>;
    /**
     * Faction value from 0 to 1, used by TraceIdRatioBasedSampler which it deterministically samples a percentage of traces that you pass in as a parameter.
     *
     * @default 1
     */
    traceRatio?: number;
    /**
     * Flag to enable or disable the tracing for node:fs module
     *
     * @default false disabling `instrumentation-fs` because it bloating the traces
     */
    enableFS?: boolean;
    /**
     * Protocol used to send signals.
     *
     * @default grpc
     */
    protocol?: SDKProtocol;
    /**
     * Grpc Metadata for the grpc-js client.
     *
     * @default { waitForReady: true }
     */
    grpcMetadata?: Metadata;
    /**
     * Enable/Disable PII detection for GDPR data
     */
    detection?: {
        /**
         * Redact email address
         * @default true
         */
        email?: boolean;
    };
}
export interface SamplerCondition {
    type: "endsWith" | "includes" | "equals";
    url: string;
}
export type SignalAttributeValue = string | number | boolean;
export type SDKCollectorMode = "single" | "batch";
export type SDKProtocol = "grpc" | "http" | "console";
export type SDKLogLevel = "NONE" | "ERROR" | "WARN" | "INFO" | "DEBUG" | "VERBOSE" | "ALL";
