import { MetricData, DataPoint, ResourceMetrics } from '@opentelemetry/sdk-metrics';
import { Resource } from '@opentelemetry/resources';
import { MonitoredResource } from '@google-cloud/opentelemetry-resource-util';
import { MetricKind, ValueType } from './external-types';
/** Transforms a OpenTelemetry instrument type to a GCM MetricKind. */
declare function _transformMetricKind(metric: MetricData): MetricKind;
/** Transforms resource to Google Cloud Monitoring monitored resource */
declare function _transformResource(labels: {
    [key: string]: string;
}): MonitoredResource;
/** Transforms a OpenTelemetry ValueType to a GCM ValueType. */
declare function _transformValueType(metric: MetricData): ValueType;
/**
 * Convert the metrics data to a list of Google Cloud Monitoring time series.
 */
export declare function transformResourceMetricToTimeSeriesArray(resourceMetrics: ResourceMetrics, projectId: string): {
    metric: {
        type: string;
        labels: {};
    };
    resource: MonitoredResource;
    metricKind: MetricKind;
    valueType: ValueType;
    points: ({
        value: {
            int64Value: string;
            doubleValue?: undefined;
        } | {
            doubleValue: string;
            int64Value?: undefined;
        };
        interval: {
            endTime: {
                seconds: any;
                nanos: any;
            };
            startTime?: {
                seconds: any;
                nanos: any;
            } | undefined;
        };
    } | {
        value: {
            distributionValue: {
                count: string;
                mean: number;
                bucketOptions: any;
                bucketCounts: string[];
            };
        };
        interval: {
            startTime: {
                seconds: any;
                nanos: any;
            };
            endTime: {
                seconds: any;
                nanos: any;
            };
        };
    } | {
        value: unknown;
        interval: {
            endTime: {
                seconds: any;
                nanos: any;
            };
            startTime?: undefined;
        };
    })[];
    unit: string;
}[];
/**
 * Transform timeseries's point, so that metric can be uploaded to GCM.
 */
declare function _transformPoint<T>(metric: MetricData, dataPoint: DataPoint<T>): {
    value: {
        int64Value: string;
        doubleValue?: undefined;
    } | {
        doubleValue: string;
        int64Value?: undefined;
    };
    interval: {
        endTime: {
            seconds: any;
            nanos: any;
        };
        startTime?: {
            seconds: any;
            nanos: any;
        } | undefined;
    };
} | {
    value: {
        distributionValue: {
            count: string;
            mean: number;
            bucketOptions: any;
            bucketCounts: string[];
        };
    };
    interval: {
        startTime: {
            seconds: any;
            nanos: any;
        };
        endTime: {
            seconds: any;
            nanos: any;
        };
    };
} | {
    value: T;
    interval: {
        endTime: {
            seconds: any;
            nanos: any;
        };
        startTime?: undefined;
    };
};
/** Extracts metric and monitored resource labels from data point */
declare function _extractLabels<T>({ attributes }: DataPoint<T> | Resource, projectId: string): {
    metricLabels: {};
    monitoredResourceLabels: {};
};
declare function _normalizeLabelKey(key: string): string;
/** Transforms an OpenTelemetry time value to a GCM time value. */
declare function _formatHrTimeToGcmTime(hrTime: any): {
    seconds: any;
    nanos: any;
};
export declare const _TEST_ONLY: {
    _normalizeLabelKey: typeof _normalizeLabelKey;
    _transformMetricKind: typeof _transformMetricKind;
    _extractLabels: typeof _extractLabels;
    _formatHrTimeToGcmTime: typeof _formatHrTimeToGcmTime;
    _transformResource: typeof _transformResource;
    _transformPoint: typeof _transformPoint;
    _transformValueType: typeof _transformValueType;
    transformResourceMetricToTimeSeriesArray: typeof transformResourceMetricToTimeSeriesArray;
};
export {};
