import { type Instrumentation } from "@opentelemetry/instrumentation";
import { type ResourceDetector } from "@opentelemetry/resources";
import { type ReadableSpan } from "@opentelemetry/sdk-trace-base";
import { type InstrumentationConfigMap, type ResourceDetectorConfigMap, type Set } from "@solarwinds-apm/instrumentations";
import * as v from "valibot";
interface Instrumentations {
    configs?: InstrumentationConfigMap;
    extra?: Instrumentation[];
    set?: Set;
}
interface ResourceDetectors {
    configs?: ResourceDetectorConfigMap;
    extra?: ResourceDetector[];
    set?: Set;
}
declare const schema: v.SchemaWithPipe<readonly [v.IntersectSchema<[v.SchemaWithPipe<readonly [v.ObjectSchema<{
    readonly enabled: v.OptionalSchema<v.UnionSchema<[v.BooleanSchema<undefined>, v.SchemaWithPipe<readonly [v.PicklistSchema<["true", "false", "1", "0"], undefined>, v.TransformAction<"0" | "1" | "true" | "false", boolean>]>], undefined>, true>;
    readonly serviceKey: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, undefined>, v.TransformAction<string, {
        token: string | undefined;
        name: string;
    }>]> | v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, undefined>, v.TransformAction<string, {
        token: string | undefined;
        name: string;
    }>]>, string>;
    readonly collector: v.OptionalSchema<v.UnionSchema<[v.InstanceSchema<{
        new (url: string | URL, base?: string | URL): URL;
        prototype: URL;
        canParse(url: string | URL, base?: string | URL): boolean;
        createObjectURL(obj: Blob | MediaSource): string;
        parse(url: string | URL, base?: string | URL): URL | null;
        revokeObjectURL(url: string): void;
    }, undefined>, v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RawTransformAction<string, URL>]>], undefined>, "apm.collector.na-01.cloud.solarwinds.com">;
    readonly logLevel: v.OptionalSchema<v.SchemaWithPipe<readonly [v.PicklistSchema<["all", "verbose", "debug", "info", "warn", "error", "none"], undefined>, v.TransformAction<"all" | "verbose" | "debug" | "info" | "warn" | "error" | "none", import("@opentelemetry/api").DiagLogLevel>]>, "warn">;
    readonly tracingMode: v.OptionalSchema<v.SchemaWithPipe<readonly [v.PicklistSchema<["enabled", "disabled"], undefined>, v.TransformAction<"enabled" | "disabled", boolean>]>, undefined>;
    readonly triggerTraceEnabled: v.OptionalSchema<v.UnionSchema<[v.BooleanSchema<undefined>, v.SchemaWithPipe<readonly [v.PicklistSchema<["true", "false", "1", "0"], undefined>, v.TransformAction<"0" | "1" | "true" | "false", boolean>]>], undefined>, boolean>;
    readonly exportLogsEnabled: v.OptionalSchema<v.UnionSchema<[v.BooleanSchema<undefined>, v.SchemaWithPipe<readonly [v.PicklistSchema<["true", "false", "1", "0"], undefined>, v.TransformAction<"0" | "1" | "true" | "false", boolean>]>], undefined>, false>;
    readonly transactionName: v.OptionalSchema<v.UnionSchema<[v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TransformAction<string, () => string>]>, v.SchemaWithPipe<readonly [v.CustomSchema<(span: ReadableSpan) => string | undefined, undefined>, v.TransformAction<(span: ReadableSpan) => string | undefined, (span: ReadableSpan) => string | undefined>]>, v.SchemaWithPipe<readonly [v.ArraySchema<v.ObjectSchema<{
        readonly scheme: v.LiteralSchema<"spanAttribute", undefined>;
        readonly delimiter: v.StringSchema<undefined>;
        readonly attributes: v.SchemaWithPipe<readonly [v.ArraySchema<v.StringSchema<undefined>, undefined>, v.MinLengthAction<string[], 1, undefined>]>;
    }, undefined>, undefined>, v.TransformAction<{
        scheme: "spanAttribute";
        delimiter: string;
        attributes: string[];
    }[], (span: ReadableSpan) => string | undefined>]>], undefined>, undefined>;
    readonly transactionSettings: v.OptionalSchema<v.ArraySchema<v.UnionSchema<[v.SchemaWithPipe<readonly [v.ObjectSchema<{
        readonly tracing: v.SchemaWithPipe<readonly [v.PicklistSchema<["enabled", "disabled"], undefined>, v.TransformAction<"enabled" | "disabled", boolean>]>;
        readonly regex: v.UnionSchema<[v.InstanceSchema<RegExpConstructor, undefined>, v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RawTransformAction<string, RegExp>]>], undefined>;
    }, undefined>, v.TransformAction<{
        tracing: boolean;
        regex: RegExp;
    }, {
        tracing: boolean;
        matcher: (ident: string) => boolean;
    }>]>, v.SchemaWithPipe<readonly [v.ObjectSchema<{
        readonly tracing: v.SchemaWithPipe<readonly [v.PicklistSchema<["enabled", "disabled"], undefined>, v.TransformAction<"enabled" | "disabled", boolean>]>;
        readonly matcher: v.CustomSchema<(ident: string) => boolean, undefined>;
    }, undefined>, v.TransformAction<{
        tracing: boolean;
        matcher: (ident: string) => boolean;
    }, {
        tracing: boolean;
        matcher: (ident: string) => boolean;
    }>]>], undefined>, undefined>, undefined>;
}, undefined>, v.TransformAction<{
    enabled: boolean;
    serviceKey: {
        token: string | undefined;
        name: string;
    };
    collector: URL;
    logLevel: import("@opentelemetry/api").DiagLogLevel;
    tracingMode?: boolean | undefined;
    triggerTraceEnabled: boolean;
    exportLogsEnabled: boolean;
    transactionName?: (() => string) | ((span: ReadableSpan) => string | undefined) | ((span: ReadableSpan) => string | undefined) | undefined;
    transactionSettings?: ({
        tracing: boolean;
        matcher: (ident: string) => boolean;
    } | {
        tracing: boolean;
        matcher: (ident: string) => boolean;
    })[] | undefined;
}, import("./shared/config.js").Configuration>]>, v.ObjectSchema<{
    readonly trustedpath: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RawTransformAction<string, string>]>, undefined>;
    readonly proxy: v.OptionalSchema<v.UnionSchema<[v.InstanceSchema<{
        new (url: string | URL, base?: string | URL): URL;
        prototype: URL;
        canParse(url: string | URL, base?: string | URL): boolean;
        createObjectURL(obj: Blob | MediaSource): string;
        parse(url: string | URL, base?: string | URL): URL | null;
        revokeObjectURL(url: string): void;
    }, undefined>, v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RawTransformAction<string, URL>]>], undefined>, undefined>;
    readonly runtimeMetrics: v.OptionalSchema<v.UnionSchema<[v.BooleanSchema<undefined>, v.SchemaWithPipe<readonly [v.PicklistSchema<["true", "false", "1", "0"], undefined>, v.TransformAction<"0" | "1" | "true" | "false", boolean>]>], undefined>, boolean>;
    readonly insertTraceContextIntoLogs: v.OptionalSchema<v.UnionSchema<[v.BooleanSchema<undefined>, v.SchemaWithPipe<readonly [v.PicklistSchema<["true", "false", "1", "0"], undefined>, v.TransformAction<"0" | "1" | "true" | "false", boolean>]>], undefined>, false>;
    readonly insertTraceContextIntoQueries: v.OptionalSchema<v.UnionSchema<[v.BooleanSchema<undefined>, v.SchemaWithPipe<readonly [v.PicklistSchema<["true", "false", "1", "0"], undefined>, v.TransformAction<"0" | "1" | "true" | "false", boolean>]>], undefined>, false>;
    readonly spanStacktraceFilter: v.OptionalSchema<v.SchemaWithPipe<readonly [v.CustomSchema<(span: ReadableSpan) => boolean | number, undefined>, v.TransformAction<(span: ReadableSpan) => boolean | number, (span: ReadableSpan) => number>]>, undefined>;
    readonly instrumentations: v.OptionalSchema<v.ObjectSchema<{
        readonly configs: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.UnknownSchema, undefined>, {}>;
        readonly extra: v.OptionalSchema<v.ArraySchema<v.UnknownSchema, undefined>, readonly []>;
        readonly set: v.OptionalSchema<v.PicklistSchema<["none", "core", "all"], undefined>, "all" | "core">;
    }, undefined>, {}>;
    readonly resourceDetectors: v.OptionalSchema<v.ObjectSchema<{
        readonly configs: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.RecordSchema<v.StringSchema<undefined>, v.BooleanSchema<undefined>, undefined>, undefined>, {}>;
        readonly extra: v.OptionalSchema<v.ArraySchema<v.UnknownSchema, undefined>, readonly []>;
        readonly set: v.OptionalSchema<v.PicklistSchema<["none", "core", "all"], undefined>, "all" | "core">;
    }, undefined>, {}>;
}, undefined>], undefined>, v.TransformAction<import("./shared/config.js").Configuration & {
    trustedpath?: string | undefined;
    proxy?: URL | undefined;
    runtimeMetrics: boolean;
    insertTraceContextIntoLogs: boolean;
    insertTraceContextIntoQueries: boolean;
    spanStacktraceFilter?: ((span: ReadableSpan) => number) | undefined;
    instrumentations: {
        configs: {
            [x: string]: unknown;
        };
        extra: unknown[];
        set: "all" | "none" | "core";
    };
    resourceDetectors: {
        configs: {
            [x: string]: {
                [x: string]: boolean;
            };
        };
        extra: unknown[];
        set: "all" | "none" | "core";
    };
}, {
    enabled: boolean;
    service: string;
    token?: string;
    collector: URL;
    headers: Record<string, string>;
    otlp: {
        traces: string;
        metrics: string;
        logs: string;
    };
    logLevel: import("@opentelemetry/api").DiagLogLevel;
    tracingMode?: boolean;
    triggerTraceEnabled: boolean;
    exportLogsEnabled: boolean;
    transactionName?: (span: ReadableSpan) => string | undefined;
    transactionSettings?: {
        tracing: boolean;
        matcher: (ident: string) => boolean;
    }[];
    trustedpath?: string | undefined;
    proxy?: URL | undefined;
    runtimeMetrics: boolean;
    insertTraceContextIntoLogs: boolean;
    insertTraceContextIntoQueries: boolean;
    spanStacktraceFilter?: ((span: ReadableSpan) => number) | undefined;
    instrumentations: Required<Instrumentations>;
    resourceDetectors: Required<ResourceDetectors>;
}>]>;
/** User provided configuration for solarwinds-apm */
export interface Config extends v.InferInput<typeof schema> {
    instrumentations?: Instrumentations;
    resourceDetectors?: ResourceDetectors;
}
/** Processed configuration for Node.js solarwinds-apm */
export interface Configuration extends v.InferOutput<typeof schema> {
    source?: string;
}
export declare function read(): Promise<Configuration>;
export declare function printError(err: unknown): void;
export {};
//# sourceMappingURL=config.d.ts.map