import { TraceTags, TypeSpanContext, HttpRequestOptions } from "./model/EventMessage";
import { Span, ContextOptions, Recorders } from "./Span";
/**
 * Describes Event SDK methods from Tracer perspective
 */
declare abstract class ATracer {
    static createSpan: (service: string, tags?: TraceTags, recorders?: Recorders, defaultTagsSetter?: Span['defaultTagsSetter']) => Span;
    static createChildSpanFromContext: (service: string, context: TypeSpanContext, recorders?: Recorders) => {};
    static injectContextToMessage: (context: TypeSpanContext, message: {
        [key: string]: any;
    }, path?: string) => {
        [key: string]: any;
    };
    static injectContextToHttpRequest: (context: TypeSpanContext, request: {
        [key: string]: any;
    }, type?: HttpRequestOptions) => {
        [key: string]: any;
    };
    static extractContextFromMessage: (message: {
        [key: string]: any;
    }, path?: string) => TypeSpanContext;
    static extractContextFromHttpRequest: (request: any, type?: HttpRequestOptions, tracestateDecoder?: (tracestate: string) => string | {
        [key: string]: string;
    }) => TypeSpanContext | undefined;
}
declare class Tracer implements ATracer {
    /**
     * Creates new span from new trace
     * @param service name of the service which will be asociated with the newly created span
     * @param tags optional tags for the span
     * @param recorders optional recorders. Defaults to defaultRecorder, which is either logger or sidecar client, based on default.json DISABLE_SIDECAR value
     * @param defaultTagsSetter optional default tags setter method.
     */
    static createSpan(service: string, tags?: TraceTags, recorders?: Recorders, defaultTagsSetter?: Span['defaultTagsSetter']): Span;
    /**
     * Creates new child span from context with new service name
     * @param service the name of the service of the new child span
     * @param spanContext context of the previous span
     * @param recorders optional recorders. Defaults to defaultRecorder, which is either logger or sidecar client, based on default.json DISABLE_SIDECAR value
     */
    static createChildSpanFromContext(service: string, spanContext: TypeSpanContext, recorders?: Recorders): Span;
    /**
     * Injects trace context into a carrier with optional path.
     * @param context span context to be injected
     * @param carrier any kind of message or other object with keys of type String.
     * @param injectOptions type and path of the carrier. Type is not implemented yet. Path is the path to the trace context.
     */
    static injectContextToMessage(context: TypeSpanContext, carrier: {
        [key: string]: any;
    }, injectOptions?: ContextOptions): {
        [key: string]: any;
    };
    /**
     * Injects trace context into a http request headers.
     * @param context span context to be injected
     * @param request HTTP request.
     * @param type type of the headers that will be created - 'w3c' or 'xb3'.
     */
    static injectContextToHttpRequest(context: TypeSpanContext, request: {
        [key: string]: any;
    }, type?: HttpRequestOptions): {
        [key: string]: any;
    };
    /**
     * Extracts trace context from a carrier (ex: kafka message, event message, metadata, trace)
     * with optional path for the trace context to be extracted.
     * @param carrier any kind of message or other object with keys of type String.
     * @param extractOptions type and path of the carrier. Type is not implemented yet. Path is the path to the trace context.
     */
    static extractContextFromMessage(carrier: {
        [key: string]: any;
    }, extractOptions?: ContextOptions): TypeSpanContext;
    static extractContextFromHttpRequest(request: {
        [key: string]: any;
    }, type?: HttpRequestOptions): TypeSpanContext | undefined;
}
export { Tracer };
