import { InstrumentType, ResourceMetrics, MeterProvider, PushMetricExporter, AggregationTemporality } from '@opentelemetry/sdk-metrics-base';
import { HrTime, Span } from "@opentelemetry/api";
import opentelemetry = require('@opentelemetry/sdk-node');
import { ExportResult } from '@opentelemetry/core';
import { Meter, Histogram } from '@opentelemetry/api-metrics';
import { i_otel } from "../commoninterfaces.js";
import { BasicTracerProvider, ReadableSpan, SpanExporter } from "@opentelemetry/sdk-trace-base";
export declare class MultiMetricExporter implements PushMetricExporter {
    private exporters;
    private isshutdown;
    constructor(exporters: PushMetricExporter[]);
    addExporter(exporter: PushMetricExporter): void;
    export(metrics: ResourceMetrics, callback: (result: ExportResult) => void): void;
    shutdown(): Promise<void>;
    forceFlush(): Promise<void>;
    selectAggregationTemporality(instrumentType: InstrumentType): AggregationTemporality;
}
export declare class MultiSpanExporter implements SpanExporter {
    private exporters;
    constructor(exporters: SpanExporter[]);
    addExporter(exporter: SpanExporter): void;
    export(spans: ReadableSpan[], callback: (result: ExportResult) => void): void;
    shutdown(): Promise<void>;
}
export declare class otel implements i_otel {
    default_boundaries: number[];
    static fakespan: {
        context: () => any;
        setAttribute: () => any;
        setAttributes: () => any;
        addEvent: () => any;
        setStatus: () => any;
        updateName: () => any;
        end: () => any;
        isRecording: () => any;
        recordException: () => any;
    };
    static instance: otel;
    sdk: opentelemetry.NodeSDK;
    traceprovider: BasicTracerProvider;
    meterprovider: MeterProvider;
    meter: Meter;
    defaultlabels: any;
    private static nodejs_heap_size_used_bytes;
    private static nodejs_heap_size_total_bytes;
    private static perfTimeout;
    private static traceExporter;
    private static metricExporter;
    static configure(): otel;
    registerurl(metric_url: string, trace_url: string): void;
    shutdown(): Promise<void>;
    startSpan(name: string): Span;
    startSubSpan(name: string, parent: Span): Span;
    endSpan(span: Span): void;
    startTimer(): HrTime;
    endTimer(startTime: HrTime, recorder: Histogram, labels?: Object): any;
    setdefaultlabels(): void;
}
