import { type Attributes, type Context, type Tracer } from '@opentelemetry/api'; import type { OtelClientConfig, EventType, OtelClientSpan, OtelClientStepSpan, CloudEvent } from './types'; import { TraceStep } from './trace-step'; import type { CloudEventMapperResult, CloudEventMapperDataItem, CloudEventMapperSubjectsArray } from '../../cloudEvents'; type ItemWithObject = { object: string; [key: string]: unknown; }; export declare const BUS_STYLE_SNAPSHOT_CONTEXT_KEY: 'context'; export type GroupedItems = { updated: ItemWithObject[]; notUpdated: ItemWithObject[]; }; /** Item shape from event.data array or event.subjects (CloudEvent source of truth) */ type GroupableItem = CloudEventMapperDataItem | CloudEventMapperSubjectsArray[number]; /** * Groups items by their `object` property, detecting before/after pairs. * Used for event data (CloudEventMapperDataItem[]) and subjects (CloudEventMapperSubjectsArray). */ export declare function groupByObjectProperty(items: Array): GroupedItems; export type CloudEventBaseAttributes = Record; /** * Processes a CloudEvent into OpenTelemetry span attributes. * CloudEventMapperResult is the single source of truth (from cloudEvents/mapper). */ export declare function processCloudEventAttributes(cloudEvent: CloudEventMapperResult, time: Date, config?: OtelClientConfig | null): Attributes; /** * Processes event data object into CloudEvents event_data attributes. * Exported for use by ReporterTelemetryClient. */ export declare function processObjectData(eventData: Record, attributes: Attributes): void; /** @deprecated Use OtelClientConfig */ export type ProcessCloudEventAttributesConfig = OtelClientConfig; /** * Processes CloudEvent attributes for OpenTelemetry spans. * CloudEvent extends CloudEventMapperResult, so typed events are accepted. */ export declare function processAttributes(cloudEvent: CloudEventMapperResult, time: Date, config?: OtelClientConfig | null): Attributes; export declare class BaseOtelClient { protected config: OtelClientConfig | null; tracer: Tracer | null; protected tracerProvider: any | null; protected initialized: boolean; sessionId: string | null; protected initTracer(_config: OtelClientConfig): void; init(config: OtelClientConfig): void; send(cloudEvent: CloudEvent): void; processAttributes(cloudEvent: CloudEvent, time: Date): Attributes; startSpan(cloudEvent: CloudEvent, parentCtx?: Context): OtelClientSpan | undefined; startStepSpan(cloudEvent: CloudEvent, parentCtx?: Context): OtelClientStepSpan | undefined; traceStep(cloudEvent: CloudEvent): TraceStep | undefined; forceFlush(): Promise; shutdown(): Promise; } export {};