/** * Bloop error reporting and LLM tracing client for TypeScript/Node.js. * Zero external dependencies. */ export interface BloopClientOptions { endpoint: string; projectKey: string; flushInterval?: number; maxBufferSize?: number; environment?: string; release?: string; } export interface SpanData { id: string; span_type: string; name: string; model?: string; provider?: string; parent_span_id?: string; input_tokens: number; output_tokens: number; cost: number; latency_ms: number; time_to_first_token_ms?: number; status: string; error_message?: string; input?: string; output?: string; metadata?: Record; started_at: number; ended_at?: number; } export interface TraceData { id: string; name: string; status: string; session_id?: string; user_id?: string; input?: string; output?: string; metadata?: Record; prompt_name?: string; prompt_version?: string; started_at: number; ended_at?: number; spans: SpanData[]; } export declare class BloopClient { private endpoint; private projectKey; private flushInterval; private maxBufferSize; private environment; private release; private errorBuffer; private traceBuffer; private timer; private closed; constructor(options: BloopClientOptions); capture(params: { errorType: string; message: string; source?: string; stack?: string; routeOrProcedure?: string; screen?: string; metadata?: Record; }): void; trace(options?: { name?: string; traceId?: string; sessionId?: string; userId?: string; promptName?: string; promptVersion?: string; }): Trace; /** @internal */ _sendTrace(data: TraceData): void; wrapOpenAI(openaiClient: T): T; wrapAnthropic(anthropicClient: T): T; wrapPiAiComplete(completeFn: Function): Function; wrapPiAiStream(streamFn: Function): Function; flush(): void; close(): void; private _flushErrors; private _flushTraces; private _post; } export declare class Trace { readonly id: string; name: string; status: string; sessionId?: string; userId?: string; input?: string; output?: string; metadata?: Record; promptName?: string; promptVersion?: string; private client; private spans; private startedAt; private endedAt?; constructor(client: BloopClient, options: { name: string; traceId: string; sessionId?: string; userId?: string; promptName?: string; promptVersion?: string; }); span(options?: { spanType?: string; name?: string; model?: string; provider?: string; parentSpanId?: string; }): Span; /** @internal */ _addSpan(data: SpanData): void; end(): void; } export declare class Span { readonly id: string; spanType: string; name: string; model?: string; provider?: string; parentSpanId?: string; inputTokens: number; outputTokens: number; cost: number; latencyMs: number; timeToFirstTokenMs?: number; status: string; errorMessage?: string; input?: string; output?: string; metadata?: Record; private trace; private startedAt; constructor(trace: Trace, options: { spanType: string; name: string; model?: string; provider?: string; parentSpanId?: string; }); setTokens(inputTokens: number, outputTokens: number): void; setCost(cost: number): void; setLatency(latencyMs: number, timeToFirstTokenMs?: number): void; setError(message: string): void; end(): void; }