import type { StartSpanOptions as SentryStartSpanOptions, SpanContextData as SentrySpanContextData, SpanAttributes as SentrySpanAttributes } from '@sentry/core';
import type Sentry from '@sentry/node';
import type { INode, IWorkflowBase } from 'n8n-workflow';
export type StartSpanOpts = SentryStartSpanOptions;
export type Span = Sentry.Span;
export type SpanContextData = SentrySpanContextData;
export type SpanAttributes = SentrySpanAttributes;
export interface Tracer {
    startSpan<T>(options: StartSpanOpts, spanCb: (span: Span) => Promise<T>): Promise<T>;
}
export declare const enum SpanStatus {
    ok = 1,
    error = 2
}
export declare class Tracing {
    private tracer;
    commonAttrs: {
        readonly workflow: {
            readonly id: "n8n.workflow.id";
            readonly name: "n8n.workflow.name";
        };
        readonly node: {
            readonly id: "n8n.node.id";
            readonly name: "n8n.node.name";
            readonly type: "n8n.node.type";
            readonly typeVersion: "n8n.node.type_version";
        };
    };
    setTracingImplementation(tracing: Tracer): void;
    startSpan<T>(options: StartSpanOpts, spanCb: (span: Span) => Promise<T>): Promise<T>;
    pickWorkflowAttributes(workflow: Partial<Pick<IWorkflowBase, 'id' | 'name'>>): SpanAttributes;
    pickNodeAttributes(node: Partial<Pick<INode, 'id' | 'name' | 'type' | 'typeVersion'>>): SpanAttributes;
}
