import { LogService } from "../logger";
import { InitLlmGenerationConfig, LlmMessage, LlmStreamResponse, LlmStreamResponseChunk, LlmStreamResponseMessages, LlmStreamResponseWithToolCalls, LlmStreamToolCallCompleted, LlmStreamToolCallStarted } from "../providers";
import { JorElGenerationConfigWithTools, JorElGenerationOutput } from "./jorel";
import { JorElModelManager } from "./jorel.models";
import { JorElProviderManager } from "./jorel.providers";
export declare class JorElCoreStore {
    defaultConfig: InitLlmGenerationConfig;
    logger: LogService;
    providerManager: JorElProviderManager;
    modelManager: JorElModelManager;
    constructor(config?: InitLlmGenerationConfig);
    /**
     * Applies model-specific overrides to messages and config
     * @param messages - The messages to apply the overrides to
     * @param config - The config to apply the overrides to
     * @param modelName - The name of the model to apply the overrides to
     */
    private applyModelOverrides;
    /**
     * Generate a response for a given set of messages
     * @param messages - The messages to generate a response for
     * @param config - The config to use for this generation
     * @param config.model - Model to use for this generation (optional)
     * @param config.systemMessage - System message to include in this request (optional)
     * @param config.temperature - Temperature for this request (optional)
     * @param config.tools - Tools to use for this request (optional)
     */
    generate(messages: LlmMessage[], config?: JorElGenerationConfigWithTools): Promise<JorElGenerationOutput>;
    /**
     * Internal method to generate a response and process tool calls until a final response is generated
     * @param messages - The messages to generate a response for
     * @param config - The config to use for this generation
     * @param autoApprove - Whether to auto-approve tool calls
     */
    generateAndProcessTools(messages: LlmMessage[], config?: JorElGenerationConfigWithTools, autoApprove?: boolean): Promise<{
        output: JorElGenerationOutput;
        messages: LlmMessage[];
    }>;
    /**
     * Generate a stream of response chunks for a given set of messages
     * @param messages - The messages to generate a response for
     * @param config - The config to use for this generation
     */
    generateContentStream(messages: LlmMessage[], config?: JorElGenerationConfigWithTools): AsyncGenerator<LlmStreamResponseChunk | LlmStreamResponse | LlmStreamResponseWithToolCalls, void, unknown>;
    /**
     * Generate a stream of response chunks for a given set of messages and process tool calls until a final response is generated
     * @param messages - The messages to generate a response for
     * @param config - The config to use for this generation
     * @param autoApprove - Whether to auto-approve tool calls
     */
    generateStreamAndProcessTools(messages: LlmMessage[], config?: JorElGenerationConfigWithTools, autoApprove?: boolean): AsyncGenerator<LlmStreamResponseChunk | LlmStreamResponse | LlmStreamResponseWithToolCalls | LlmStreamResponseMessages | LlmStreamToolCallStarted | LlmStreamToolCallCompleted, void, unknown>;
    /**
     * Helper method to set a tool call to error state
     */
    private setCallToError;
    /**
     * Generate an embedding for a given text
     * @param text - The text to generate an embedding for
     * @param model - The model to use for this generation (optional)
     */
    generateEmbedding(text: string, model?: string): Promise<number[]>;
}
