import Span from './Span'; import Tracer from './Tracer'; import { SpanMeta, SpanTags, TracerConfiguration } from './interfaces'; export declare type AnnotatorFunction = (span: Span, ...args: any[]) => void; export declare type ErrorAnnotatorFunction = (span: Span | typeof Span.NoOp, error: Error, ...args: any[]) => void; export interface TraceFuncArgs { tracer: Tracer; context: any; name: string; resource: string; service?: string; annotator?: AnnotatorFunction; } export interface Context { _contextObject: true; tracer?: Tracer; } export declare type Metadata = SpanMeta; export declare function traceFunc({tracer, context, service, resource, name, annotator}: TraceFuncArgs): void; export declare function createTraceDecorator({service: defaultService, name: defaultName, tracerConfig, contextArgumentPosition, errorAnnotator}: { service: string; name?: string; tracerConfig: TracerConfiguration; contextArgumentPosition?: number; errorAnnotator?: ErrorAnnotatorFunction; }): ({resource, service, name, annotator, metadata, tags, context}?: { resource?: string; service?: string; name?: string; annotator?: AnnotatorFunction; metadata?: SpanMeta; tags?: SpanTags; context?: Context; }) => (_target: any, _key?: string, descriptor?: PropertyDescriptor) => any; export declare function createTraceFunction({service: defaultService, name: defaultName, tracerConfig, contextArgumentPosition, errorAnnotator}: { service: string; name?: string; tracerConfig: TracerConfiguration; contextArgumentPosition?: number; errorAnnotator?: ErrorAnnotatorFunction; }): ({resource, service, name, annotator, metadata, tags, context}?: { resource?: string; service?: string; name?: string; annotator?: AnnotatorFunction; metadata?: SpanMeta; tags?: SpanTags; context?: Context; }) => (tracedFunction: Function) => (...args: any[]) => Promise; export declare function isPromiselike(maybePromise: any): boolean;