import { ReasoningEffort } from '../core-entities/enums';
export interface LlmContentPart {
    text: string;
}
export interface LlmContent {
    role: 'user' | 'model' | 'tool';
    parts: LlmContentPart[];
    tool_calls?: LlmToolCall[];
    tool_call_id?: string;
    tool_name?: string;
    thoughts?: string;
    shortId?: string;
}
export { ReasoningEffort };
export interface LlmReasoningConfig {
    effort?: ReasoningEffort;
}
export interface LlmGenerationConfig {
    temperature?: number;
    maxOutputTokens?: number;
    topP?: number;
    topK?: number;
    reasoning?: LlmReasoningConfig;
}
export interface LlmFunctionTool {
    type: 'function';
    function: {
        name: string;
        description: string;
        parameters: object;
    };
}
export interface LlmToolCall {
    id: string;
    type: 'function' | 'web_search' | 'retrieval';
    function: {
        name: string;
        arguments: object | string;
    };
}
export interface LlmProviderRequest {
    prompt: string;
    systemInstruction?: string;
    history?: LlmContent[];
    modelId?: string;
    generationConfig?: LlmGenerationConfig;
    tools?: LlmFunctionTool[];
    tool_choice?: 'auto' | 'required' | 'none';
    onToken?: (token: string, isFirst: boolean, thoughtChunk?: string) => void;
    abortController?: AbortController;
}
export interface LlmModel {
    id: string;
    name: string;
    provider: 'openrouter' | 'zai' | 'alibaba' | 'ollama' | 'openai' | 'custom';
}
export interface LlmUsage {
    inputTokens?: number;
    outputTokens?: number;
    cachedTokens?: number;
}
export interface LlmResponse {
    text: string;
    usage?: LlmUsage;
    tool_calls?: LlmToolCall[];
    thoughts?: string;
}
export interface LlmProvider {
    generateContent(request: LlmProviderRequest): Promise<LlmResponse>;
    getModels(): Promise<LlmModel[]>;
}
export declare const LLM_PROVIDER = "LLM_PROVIDER";
