/**
 * OTLP/HTTP serialization service shared by logs, metrics, and traces.
 *
 * This module decides how in-memory OTLP payloads become HTTP request bodies.
 * The signal exporters build trace, metric, and log data structures, then call
 * `OtlpSerialization` immediately before posting them to a collector.
 *
 * **Mental model**
 *
 * `OtlpSerialization` has one encoder per OTLP signal. `layerJson` writes the
 * structures directly with `HttpBody.jsonUnsafe`, which is useful for debugging
 * or endpoints that explicitly accept OTLP/HTTP JSON. `layerProtobuf` encodes
 * the same structures with the internal OTLP protobuf encoder and sets the
 * `application/x-protobuf` content type expected by many production collectors.
 *
 * **Common tasks**
 *
 * - Provide `layerProtobuf` for collectors that expect binary OTLP payloads.
 * - Provide `layerJson` when inspecting payloads or using an OTLP/HTTP JSON
 *   endpoint.
 * - Provide a custom `OtlpSerialization` service only when an exporter needs a
 *   non-standard body format.
 *
 * **Gotchas**
 *
 * This module only controls the wire format for traces, metrics, and logs.
 * Endpoint paths, authentication headers, batching, retries, and shutdown
 * flushing are handled by the OTLP exporter layers that consume the service.
 *
 * @since 4.0.0
 */
import * as Context from "../../Context.ts";
import * as Layer from "../../Layer.ts";
import * as HttpBody from "../http/HttpBody.ts";
import type { LogsData } from "./OtlpLogger.ts";
import type { MetricsData } from "./OtlpMetrics.ts";
import type { TraceData } from "./OtlpTracer.ts";
declare const OtlpSerialization_base: Context.ServiceClass<OtlpSerialization, "effect/observability/OtlpSerialization", {
    readonly traces: (data: TraceData) => HttpBody.HttpBody;
    readonly metrics: (data: MetricsData) => HttpBody.HttpBody;
    readonly logs: (data: LogsData) => HttpBody.HttpBody;
}>;
/**
 * Service for serializing OTLP traces, metrics, and logs into HTTP request
 * bodies.
 *
 * @category services
 * @since 4.0.0
 */
export declare class OtlpSerialization extends OtlpSerialization_base {
}
/**
 * Provides `OtlpSerialization` using OTLP/HTTP JSON bodies.
 *
 * @category layers
 * @since 4.0.0
 */
export declare const layerJson: Layer.Layer<OtlpSerialization, never, never>;
/**
 * Provides `OtlpSerialization` using protobuf-encoded OTLP bodies with the
 * `application/x-protobuf` content type.
 *
 * @category layers
 * @since 4.0.0
 */
export declare const layerProtobuf: Layer.Layer<OtlpSerialization, never, never>;
export {};
//# sourceMappingURL=OtlpSerialization.d.ts.map