import { ChatCompletionMessage, CompletionRequest } from "../models/prompt";
import type { Attachment } from "../types";
import { Error as MaximError, type ErrorConfig } from "./components/error";
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";
import { CommitLog } from "./components/types";
import type { MaximLogger } from "./logger";
export type LogLinePushConfig = {
    apiKey: string;
    baseUrl?: string;
    repositoryId: string;
    logs: CommitLog[];
    debug?: boolean;
};
type IMaximLogger = {
    [K in keyof MaximLogger]: MaximLogger[K];
};
/**
 * A logger class for creating log lines without initializing a Maxim instance.
 *
 * This class implements MaximLogger but captures logs internally instead of sending them.
 * Use `drain()` to get captured logs and `LogLine.push()` to send them.
 *
 * @example
 * const logLine = new LogLine();
 *
 * // add logs
 * logLine.trace({ id: 'trace-1', name: 'My trace' });
 * logLine.traceInput('trace-1', 'user input');
 * logLine.traceEnd('trace-1');
 *
 * // fetch all the commit logs
 * const logs = logLine.drain();
 *
 * // send the logs to server
 * await LogLine.push({
 *   apiKey: process.env.MAXIM_API_KEY,
 *   repositoryId: 'my-repo-id',
 *   logs,
 * });
 */
export declare class LogLine implements IMaximLogger {
    private _captureWriter;
    /**
     * Drains all captured logs and returns them. Clears the internal buffer.
     */
    drain(): CommitLog[];
    /**
     * Returns all captured logs without clearing the buffer.
     */
    get logs(): CommitLog[];
    static push(config: LogLinePushConfig): Promise<void>;
    session(config: SessionConfig): Session;
    sessionTag(sessionId: string, key: string, value: string): void;
    sessionEnd(sessionId: string, data?: any): void;
    sessionFeedback(sessionId: string, feedback: {
        score: number;
        comment?: string;
    }): void;
    sessionAddMetric(sessionId: string, name: string, value: number): void;
    sessionTrace(sessionId: string, config: TraceConfig): Trace;
    sessionEvaluate(sessionId: string): import("./components").EvaluateContainer;
    trace(config: TraceConfig): Trace;
    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;
    traceAddMetric(traceId: string, name: string, value: number): void;
    traceAddAttachment(traceId: string, attachment: Attachment): void;
    traceTag(traceId: string, key: string, value: string): void;
    traceEvent(traceId: string, eventIdOrName: string, eventNameOrTags?: string | Record<string, string>, tagsOrMetadata?: Record<string, string> | Record<string, unknown>, 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;
    generationAddMetric(generationId: string, name: string, value: number): 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;
    generationSetName(generationId: string, name: string): void;
    generationAddAttachment(generationId: string, attachment: Attachment): 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, eventIdOrName: string, eventNameOrTags?: string | Record<string, string>, tagsOrMetadata?: Record<string, string> | Record<string, unknown>, 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;
    spanAddAttachment(spanId: string, attachment: Attachment): void;
    retrievalEnd(retrievalId: string): void;
    retrievalAddTag(retrievalId: string, key: string, value: string): void;
    retrievalInput(retrievalId: string, input: string): void;
    retrievalAddMetric(retrievalId: string, name: string, value: number): void;
    retrievalOutput(retrievalId: string, output: string | 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;
    /**
     * @deprecated **DO NOT USE.**
     */
    get id(): string;
    /**
     * @deprecated **DO NOT USE.** Use `LogLine.push()` instead.
     */
    cleanup(): Promise<void>;
    /**
     * @deprecated **DO NOT USE.** Use `LogLine.push()` instead.
     */
    flush(): Promise<void>;
}
export {};
