import type { Span as AgentsSpan, Trace as AgentsTrace, TracingProcessor } from "@openai/agents";
import { SpanData } from "@openai/agents-core/dist/tracing/spans";
import type { MaximLogger } from "../logger";
/**
 * A tracing processor for the OpenAI Agents SDK that forwards trace and span
 * lifecycle events into Maxim.
 *
 * @example
 * ```ts
 * import { addTraceProcessor, setTraceProcessors } from "@openai/agents";
 * import { Maxim } from "@maximai/maxim-js";
 * import { MaximOpenAIAgentsProcessor } from "@maximai/maxim-js/openai-agents";
 *
 * const maxim = new Maxim({ apiKey: process.env.MAXIM_API_KEY! });
 * const logger = await maxim.logger({ id: "my-app" });
 *
 * // Add alongside the default OpenAI exporter
 * addTraceProcessor(new MaximOpenAIAgentsProcessor(logger));
 *
 * // Or replace all processors (disables default OpenAI exporter)
 * // setTraceProcessors([new MaximOpenAIAgentsProcessor(logger)]);
 * ```
 *
 * Trace metadata recognized on the OpenAI Agents trace
 * (only `traceTags`, `traceMetadata`, and `traceMetrics` are read at both onTraceStart and onTraceEnd, the rest is only read at onTraceStart):
 * - `traceId`: string — override the Maxim trace id (default: Agent's `traceId`)
 * - `traceName`: string — set the Maxim trace name
 * - `traceSessionId`: string — associate the trace to a session
 * - `traceTags`: Record<string,string> — tags to add on the trace
 * - `traceMetadata`: Record<string,unknown> — metadata to add on the trace
 * - `traceMetrics`: Record<string,number> — numeric metrics to add on the trace
 * - `traceSpanId`: string — id for the single top-level span
 * - `traceSpanName`: string — name for the top-level span
 * - `traceSpanTags`: Record<string,string> — tags for the top-level span
 *
 * Unsupported span types:
 * - "speech" | "transcription" | "speech_group" (currently ignored)
 *
 * Notes:
 * - No automatic flush is performed. Manage shutdown/flush in your app
 *   lifecycle (e.g., `await maxim.cleanup()`).
 */
export declare class MaximOpenAIAgentsProcessor implements TracingProcessor {
    private readonly logger;
    private readonly traceStates;
    private readonly spanStates;
    private readonly generationStates;
    private readonly toolCallStates;
    constructor(logger: MaximLogger);
    shutdown(): Promise<void>;
    forceFlush(): Promise<void>;
    onTraceStart(trace: AgentsTrace): Promise<void>;
    onTraceEnd(trace: AgentsTrace): Promise<void>;
    onSpanStart(span: AgentsSpan<SpanData>): Promise<void>;
    onSpanEnd(span: AgentsSpan<SpanData>): Promise<void>;
}
