import { ChatCompletionMessage, CompletionRequest } from "../../models/prompt";
import { LogWriter } from "../writer";
import { Attachment } from "./attachment";
import { EvaluatableBaseContainer } from "./base";
export interface GenerationError {
    message: string;
    code?: string;
    type?: string;
}
export interface ChatCompletionResult {
    id: string;
    object: string;
    created: number;
    model: string;
    choices: Array<ChatCompletionChoice>;
    usage: Usage;
    error?: GenerationError;
}
export interface TextCompletionResult {
    id: string;
    object: string;
    created: number;
    model: string;
    choices: Array<TextCompletionChoice>;
    usage: Usage;
    error?: GenerationError;
}
interface Logprobs {
    text_offset?: Array<number>;
    token_logprobs?: Array<number>;
    tokens?: Array<string>;
    top_logprobs?: Array<Record<string, number>>;
}
interface ChatCompletionChoice {
    index: number;
    message: ChatCompletionMessage;
    logprobs: Logprobs | null;
    finish_reason: string;
}
interface TextCompletionChoice {
    index: number;
    text: string;
    logprobs: Logprobs | null;
    finish_reason: string;
}
interface Usage {
    prompt_tokens: number;
    completion_tokens: number;
    total_tokens: number;
}
export type GenerationConfig = {
    id: string;
    name?: string;
    provider: "openai" | "bedrock" | "anthropic" | "huggingface" | "azure" | "together" | "groq" | "google";
    model: string;
    maximPromptId?: string;
    messages: (CompletionRequest | ChatCompletionMessage)[];
    modelParameters: Record<string, any>;
    tags?: Record<string, string>;
};
export declare class Generation extends EvaluatableBaseContainer {
    private model?;
    private provider?;
    private maximPromptId?;
    private modelParameters?;
    constructor(config: GenerationConfig, writer: LogWriter);
    setModel(model: string): void;
    static setModel_(writer: LogWriter, id: string, model: string): void;
    addMessages(messages: (CompletionRequest | ChatCompletionMessage)[]): void;
    static addMessages_(writer: LogWriter, id: string, messages: (CompletionRequest | ChatCompletionMessage)[]): void;
    setModelParameters(modelParameters: Record<string, any>): void;
    static setModelParameters_(writer: LogWriter, id: string, modelParameters: Record<string, any>): void;
    result(result: TextCompletionResult | ChatCompletionResult): void;
    static result_(writer: LogWriter, id: string, result: TextCompletionResult | ChatCompletionResult): void;
    error(error: GenerationError): void;
    static error_(writer: LogWriter, id: string, error: GenerationError): void;
    addAttachment(attachment: Attachment): void;
    static addAttachment_(writer: LogWriter, id: string, attachment: Attachment): void;
    static end_(writer: LogWriter, id: string, data?: any): void;
    data(): any;
}
export {};
