import { MaximCache } from "../cache/cache";
import { ChatCompletionMessage, CompletionRequest } from "../models/prompt";
import { ErrorConfig, Error as MaximError } from "./components";
import { ChatCompletionResult, Generation, GenerationConfig, GenerationError, TextCompletionResult } from "./components/generation";
import { Retrieval, RetrievalConfig } from "./components/retrieval";
import { Session, SessionConfig } from "./components/session";
import { Span, SpanConfig } from "./components/span";
import { ToolCall, ToolCallConfig, ToolCallError } from "./components/toolCall";
import { Trace, TraceConfig } from "./components/trace";
export type LoggerConfig = {
    id: string;
    autoFlush?: boolean;
    flushIntervalSeconds?: number;
};
export declare class MaximLogger {
    private _id;
    private readonly writer;
    private readonly isDebug;
    constructor(params: {
        config: LoggerConfig;
        apiKey: string;
        baseUrl: string;
        isDebug?: boolean;
        cache: MaximCache;
        raiseExceptions: boolean;
    });
    session(config: SessionConfig): Session;
    trace(config: TraceConfig): Trace;
    get id(): string;
    cleanup(): Promise<void>;
    sessionTag(sessionId: string, key: string, value: string): void;
    sessionEnd(sessionId: string, data?: any): void;
    sessionFeedback(sessionId: string, feedback: {
        score: number;
        comment?: string;
    }): void;
    sessionTrace(sessionId: string, config: TraceConfig): Trace;
    sessionEvaluate(sessionId: string): import("./components").EvaluateContainer;
    traceGeneration(traceId: string, config: GenerationConfig): Generation;
    traceToolCall(traceId: string, config: ToolCallConfig): ToolCall;
    traceRetrieval(traceId: string, config: RetrievalConfig): Retrieval;
    traceOutput(traceId: string, output: string): void;
    traceError(traceId: string, config: ErrorConfig): MaximError;
    traceInput(traceId: string, input: string): void;
    traceSpan(traceId: string, config: SpanConfig): Span;
    traceAddToSession(traceId: string, sessionId: string): void;
    traceTag(traceId: string, key: string, value: string): void;
    traceEvent(traceId: string, eventId: string, eventName: string, tags?: Record<string, string>, metadata?: Record<string, unknown>): void;
    traceEvent(traceId: string, eventName: string, tags?: Record<string, string>, metadata?: Record<string, unknown>): void;
    traceFeedback(traceId: string, feedback: {
        score: number;
        comment?: string;
    }): void;
    traceMetadata(traceId: string, metadata: Record<string, unknown>): void;
    traceEvaluate(traceId: string): import("./components").EvaluateContainer;
    traceEnd(traceId: string, data?: any): void;
    generationSetModel(generationId: string, model: string): void;
    generationAddTag(generationId: string, key: string, value: string): void;
    generationAddMessage(generationId: string, messages: (CompletionRequest | ChatCompletionMessage)[]): void;
    generationSetModelParameters(generationId: string, modelParameters: Record<string, any>): void;
    generationResult(generationId: string, result: TextCompletionResult | ChatCompletionResult): void;
    generationError(generationId: string, error: GenerationError): void;
    generationMetadata(generationId: string, metadata: Record<string, unknown>): void;
    generationEvaluate(generationId: string): import("./components").EvaluateContainer;
    generationEnd(generationId: string, data?: any): void;
    spanGeneration(spanId: string, config: GenerationConfig): Generation;
    spanRetrieval(spanId: string, config: RetrievalConfig): Retrieval;
    spanToolCall(spanId: string, config: ToolCallConfig): ToolCall;
    spanSpan(spanId: string, config: SpanConfig): Span;
    spanTag(spanId: string, key: string, value: string): void;
    spanError(spanId: string, config: ErrorConfig): MaximError;
    spanEvent(spanId: string, eventId: string, eventName: string, tags?: Record<string, string>, metadata?: Record<string, unknown>): void;
    spanEvent(spanId: string, eventName: string, tags?: Record<string, string>, metadata?: Record<string, unknown>): void;
    spanMetadata(spanId: string, metadata: Record<string, unknown>): void;
    spanEvaluate(spanId: string): import("./components").EvaluateContainer;
    spanEnd(spanId: string, data?: any): void;
    retrievalEnd(retrievalId: string): void;
    retrievalAddTag(retrievalId: string, key: string, value: string): void;
    retrievalInput(retrievalId: string, input: string): void;
    retrievalOutput(retrievalId: string, output: string): void;
    retrievalMetadata(retrievalId: string, metadata: Record<string, unknown>): void;
    retrievalEvaluate(retrievalId: string): import("./components").EvaluateContainer;
    toolCallResult(toolCallId: string, result: string): void;
    toolCallError(toolCallId: string, error: ToolCallError): void;
    toolCallAddTag(toolCallId: string, key: string, value: string): void;
    toolCallMetadata(toolCallId: string, metadata: Record<string, unknown>): void;
    flush(): void;
}
