import type { Fixed64, LongBits } from './internal-types';
import type { HrTime } from '@opentelemetry/api';
export declare function hrTimeToNanos(hrTime: HrTime): bigint;
export declare function toLongBits(value: bigint): LongBits;
export declare function encodeAsLongBits(hrTime: HrTime): LongBits;
export declare function encodeAsString(hrTime: HrTime): string;
export type HrTimeEncodeFunction = (hrTime: HrTime) => Fixed64;
export type SpanContextEncodeFunction = (spanContext: string) => string | Uint8Array;
export type OptionalSpanContextEncodeFunction = (spanContext: string | undefined) => string | Uint8Array | undefined;
export type Uint8ArrayEncodeFunction = (value: Uint8Array) => string | Uint8Array;
export interface Encoder {
    encodeHrTime: HrTimeEncodeFunction;
    encodeSpanContext: SpanContextEncodeFunction;
    encodeOptionalSpanContext: OptionalSpanContextEncodeFunction;
    encodeUint8Array: Uint8ArrayEncodeFunction;
}
/**
 * Encoder for protobuf format.
 * Uses { high, low } timestamps and binary for span/trace IDs, leaves Uint8Array attributes as-is.
 */
export declare const PROTOBUF_ENCODER: Encoder;
/**
 * Encoder for JSON format.
 * Uses string timestamps, hex for span/trace IDs, and base64 for Uint8Array.
 */
export declare const JSON_ENCODER: Encoder;
//# sourceMappingURL=utils.d.ts.map