/**
 * `flattenOtlpExportToNdjson` — flatten an `OtlpExport` (the shape
 * `exportRunAsOtlp` produces) into the per-line JSON the analyst's
 * `OtlpFileTraceStore` index reads. Replaces three per-consumer OTLP
 * flatteners with one canonical projection.
 *
 * Pure function, no I/O — the caller does `.map(JSON.stringify).join('\n')`
 * and writes the file (consumers want control over rotation + naming).
 */
import type { OtlpExport } from '../trace/otel';
export interface OtlpFlatLine {
    trace_id: string;
    span_id: string;
    parent_span_id: string | null;
    name: string;
    kind: string;
    start_time: string;
    end_time: string;
    status: {
        code: 'STATUS_CODE_OK' | 'STATUS_CODE_ERROR' | 'STATUS_CODE_UNSET';
        message?: string;
    };
    resource: {
        attributes: Record<string, string | number | boolean>;
    };
    attributes: Record<string, string | number | boolean>;
    events?: Array<{
        name: string;
        timeUnixNano?: string;
        attributes?: Record<string, unknown>;
    }>;
}
export interface FlattenOtlpOptions {
    /** `'openinference'` (default) mirrors legacy per-span attributes into the
     *  canonical OpenInference vocabulary the analyst readers consume. `'none'`
     *  passes attributes through untouched. */
    attributeVocabulary?: 'openinference' | 'none';
    /** Override the numeric-kind → otlp-string mapping. */
    kindMap?: Partial<Record<number, string>>;
}
export declare function flattenOtlpExportToNdjson(otlpExport: OtlpExport, opts?: FlattenOtlpOptions): OtlpFlatLine[];
//# sourceMappingURL=otlp-flatten.d.ts.map