import { Attributes, Context, SpanStatusCode, TimeInput } from "@opentelemetry/api"; import { Observable } from "@pumped-fn/lite-extension-observable"; //#region src/index.d.ts declare namespace Otel { interface Exception { readonly name?: string; readonly message: string; readonly stack?: string; } interface Span { setAttributes(attributes: Attributes): this; setStatus(status: { readonly code: SpanStatusCode; readonly message?: string; }): this; recordException(error: Exception, time?: TimeInput): void; end(endTime?: TimeInput): void; } interface Tracer { startSpan(name: string, options?: { readonly attributes?: Attributes; readonly startTime?: TimeInput; }, context?: Context): Span; } interface Options { readonly name?: string; readonly tracer?: Tracer; readonly spanName?: (event: Observable.Event) => string; readonly attributes?: (event: Observable.Event) => Attributes; } interface Sink extends Observable.Sink { pending(): number; } } declare function sink(options?: Otel.Options): Otel.Sink; declare const otel: { readonly sink: typeof sink; }; //#endregion export { Otel, otel };