export type Role = "system" | "user" | "assistant";
export type MessageContent = {
    type: "text" | "image" | "audio" | "video";
    role: Role;
    value: string;
    mimeType?: string;
    extractedText?: string;
};
export type Feedback = {
    rating?: "up" | "down";
    comment?: string;
    submittedAt?: Date;
    labels?: string[];
};
export declare class OptimaizClient {
    private config;
    constructor(config: {
        token: string;
    });
    private post;
    startTrace(data: {
        traceId?: string;
        agentId?: string;
        flowId?: string;
        threadId?: string;
        sessionId?: string;
        userId?: string;
        promptTemplate?: MessageContent[];
        promptVariables?: Record<string, string>;
        provider: string;
        model: string;
        modelParams?: Record<string, any>;
        metadata?: Record<string, any>;
        tags?: string[];
    }): Promise<any>;
    appendResponse(data: {
        traceId: string;
        rawResponse?: any;
        provider?: string;
        model?: string;
        threadId?: string;
        userId?: string;
        agentId?: string;
        flowId?: string;
        sessionId?: string;
    }): Promise<any>;
    finalizeTrace(traceId: string): Promise<any>;
    logError(traceId: string, error: {
        message: string;
        code?: string;
        details?: any;
    }): Promise<any>;
    sendFeedback(traceId: string, feedback: Feedback): Promise<any>;
    composePrompts(templates: {
        role: Role;
        content: string;
        type?: MessageContent["type"];
    }[], variables: Record<string, string>): {
        prompts: MessageContent[];
        promptTemplates: MessageContent[];
        promptVariables: Record<string, string>;
    };
    wrapLLMCall<T>({ traceId, agentId, flowId, threadId, sessionId, userId, promptTemplate, promptVariables, provider, model, modelParams, metadata, tags, call, }: {
        traceId?: string;
        agentId?: string;
        flowId?: string;
        threadId?: string;
        userId?: string;
        sessionId?: string;
        promptTemplate?: MessageContent[];
        promptVariables?: Record<string, string>;
        provider: string;
        model: string;
        modelParams?: Record<string, any>;
        metadata?: Record<string, any>;
        tags?: string[];
        call: () => Promise<T>;
    }): Promise<{
        response: T;
        traceId: string;
    }>;
    generatePromptFromTools({ toolInfo, toolInput, }: {
        toolInfo: Array<{
            name: string;
            description?: string;
            parameters?: any;
        }>;
        toolInput: {
            name: string;
            arguments: Record<string, any>;
        };
    }): {
        promptTemplate: MessageContent[];
        promptVariables: Record<string, string>;
    };
    call(data: {
        traceId?: string;
        promptTemplate: MessageContent[];
        promptVariables: Record<string, string>;
        modelParams?: Record<string, any>;
        threadId?: string;
        userId?: string;
        agentId?: string;
        flowId?: string;
        sessionId?: string;
        metadata?: Record<string, any>;
        tags?: string[];
    }): Promise<{
        data: any;
        error?: any;
    }>;
}
