import { ExportResult } from '@opentelemetry/core';
import { Resource } from '@opentelemetry/resources';
import { ReadableSpan, SpanExporter } from '@opentelemetry/sdk-trace-base';
import { MetricAttributeGenerator } from './metric-attribute-generator';
/**
 * This exporter will update a span with metric attributes before exporting. It depends on a
 * {@link SpanExporter} being provided on instantiation, which the AwsMetricAttributesSpanExporter will
 * delegate export to. Also, a {@link MetricAttributeGenerator} must be provided, which will provide a
 * means to determine attributes which should be applied to the span. Finally, a {@link Resource} must
 * be provided, which is used to generate metric attributes.
 *
 * <p>This exporter should be coupled with the {@link AwsSpanMetricsProcessor} using the same
 * {@link MetricAttributeGenerator}. This will result in metrics and spans being produced with
 * common attributes.
 */
export declare class AwsMetricAttributesSpanExporter implements SpanExporter {
    private delegate;
    private generator;
    private resource;
    /** Use {@link AwsMetricAttributesSpanExporterBuilder} to construct this exporter. */
    static create(delegate: SpanExporter, generator: MetricAttributeGenerator, resource: Resource): AwsMetricAttributesSpanExporter;
    private constructor();
    export(spans: ReadableSpan[], resultCallback: (result: ExportResult) => void): void;
    shutdown(): Promise<void>;
    forceFlush(): Promise<void>;
    private addMetricAttributes;
    private copyAttributesWithLocalRoot;
    /**
     * {@link export} works with a {@link ReadableSpan}, which does not permit modification. However, we
     * need to add derived metric attributes to the span. However, we are still able to modify the
     * attributes in the span (the attributes itself is readonly, so it cannot be outright replaced).
     * This may be risky.
     *
     * <p>See https://github.com/open-telemetry/opentelemetry-specification/issues/1089 for more
     * context on this approach.
     */
    private static wrapSpanWithAttributes;
}
//# sourceMappingURL=aws-metric-attributes-span-exporter.d.ts.map