///
import * as _ from 'lodash';
import Span from './Span';
import { TracerConfiguration } from './interfaces';
export declare const defaultConfig: {
minimumDurationMs: number;
sampleRate: number;
globalMetadata: {};
globalTags: {};
};
export default class Tracer {
private config;
private spanStack;
private reporter;
constructor(config: TracerConfiguration);
start(resource: string, name: string, service?: string): Span;
startTopLevelSpan(resource: string, name: string, service?: string): Span | {
end: () => typeof Span;
setMeta: () => typeof Span;
setTags: () => typeof Span;
newChild: () => typeof Span;
setError: (error?: Error) => typeof Span;
removeShortSpans: () => typeof Span;
setTraceId: () => typeof Span;
readonly hasEnded: boolean;
};
startNestedSpan(resource: string, name: string, service?: string): Span | {
end: () => typeof Span;
setMeta: () => typeof Span;
setTags: () => typeof Span;
newChild: () => typeof Span;
setError: (error?: Error) => typeof Span;
removeShortSpans: () => typeof Span;
setTraceId: () => typeof Span;
readonly hasEnded: boolean;
};
getNestedSpan(): Span;
startSpan(parent: Span, resource: string, name: string, service?: string): Span | {
end: () => typeof Span;
setMeta: () => typeof Span;
setTags: () => typeof Span;
newChild: () => typeof Span;
setError: (error?: Error) => typeof Span;
removeShortSpans: () => typeof Span;
setTraceId: () => typeof Span;
readonly hasEnded: boolean;
};
isInTrace(resource: string, name: string): boolean;
get(): Span;
end(): Span;
endIf(resource: string, name: string): Span;
recordTrace(trace: Span): void;
sanitizeTags(tags: any): _.Dictionary;
getGlobalMetadata(): any;
getGlobalTags(): any;
getTraceId(): {};
}