/**
 * Models for LangChain logging and tracing functionality.
 * This module contains data models used for tracking and logging LangChain operations,
 * including metadata storage and run information.
 */
import { Generation, GenerationConfig, MaximLogger, Retrieval, RetrievalConfig, Span, SpanConfig, ToolCall, ToolCallConfig } from "@maximai/maxim-js";
export interface MaximMetadata {
    sessionId?: string;
    traceId?: string;
    spanId?: string;
    chainName?: string;
    spanName?: string;
    traceName?: string;
    generationName?: string;
    retrievalName?: string;
    generationTags?: Record<string, string>;
    retrievalTags?: Record<string, string>;
    traceTags?: Record<string, string>;
    chainTags?: Record<string, string>;
}
export declare const MetadataKeys: string[];
export declare class Metadata implements MaximMetadata {
    sessionId?: string;
    traceId?: string;
    spanId?: string;
    chainName?: string;
    spanName?: string;
    traceName?: string;
    generationName?: string;
    retrievalName?: string;
    generationTags?: Record<string, any>;
    retrievalTags?: Record<string, any>;
    traceTags?: Record<string, any>;
    chainTags?: Record<string, any>;
    constructor(metadata?: Record<string, unknown>);
    toJSON(): Record<string, any>;
}
export declare abstract class Container {
    protected readonly logger: MaximLogger;
    protected readonly _id: string;
    protected readonly _type: "trace" | "span";
    protected readonly _name?: string | undefined;
    protected _parentId?: string | undefined;
    protected _created: boolean;
    constructor(logger: MaximLogger, _id: string, _type: "trace" | "span", _name?: string | undefined, _parentId?: string | undefined, markCreated?: boolean);
    abstract create(tags?: Record<string, string>): void;
    get id(): string;
    get type(): string;
    get parentId(): string | undefined;
    set parentId(id: string | undefined);
    isCreated(): boolean;
    abstract addGeneration(config: GenerationConfig): Generation;
    abstract addToolCall(config: ToolCallConfig): ToolCall;
    abstract addEvent(eventId: string, name: string, tags: Record<string, string>): void;
    abstract addSpan(config: SpanConfig): Span;
    abstract addRetrieval(config: RetrievalConfig): Retrieval;
    abstract addTags(tags: Record<string, string>): void;
    abstract end(): void;
}
export declare class TraceContainer extends Container {
    constructor(logger: MaximLogger, traceId: string, traceName?: string, parentId?: string, markCreated?: boolean);
    create(tags?: Record<string, string>): void;
    addGeneration(config: GenerationConfig): Generation;
    addRetrieval(config: RetrievalConfig): Retrieval;
    addEvent(eventId: string, name: string, tags: Record<string, any>): void;
    addSpan(config: SpanConfig): Span;
    addTags(tags: Record<string, string>): void;
    addToolCall(config: ToolCallConfig): ToolCall;
    end(): void;
}
export declare class SpanContainer extends Container {
    constructor(logger: MaximLogger, spanId: string, spanName?: string, parentId?: string, markCreated?: boolean);
    create(tags?: Record<string, string>): void;
    addGeneration(config: GenerationConfig): Generation;
    addRetrieval(config: RetrievalConfig): Retrieval;
    addEvent(eventId: string, name: string, tags: Record<string, string>): void;
    addSpan(config: SpanConfig): Span;
    addTags(tags: Record<string, string>): void;
    addToolCall(config: ToolCallConfig): ToolCall;
    end(): void;
}
