import { LogService } from "../logger";
import { InitLlmGenerationConfig, LlmErrorType, LLmGenerationStopReason, LlmMessage, LlmStreamEvent, LlmStreamProviderResponseChunkEvent, LlmStreamResponseEvent, LlmStreamToolCallEvent, MessageIdGenerator } 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;
    messageIdGenerator: MessageIdGenerator;
    providerManager: JorElProviderManager;
    modelManager: JorElModelManager;
    constructor(config?: InitLlmGenerationConfig);
    /**
     * Applies model-specific defaults and overrides to messages and config
     * @param messages - The messages to apply the defaults and overrides to
     * @param config - The config to apply the defaults and overrides to
     * @param modelEntry - The model entry to apply (with potential defaults)
     */
    private applyModelDefaultsAndOverrides;
    /**
     * 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[];
        stopReason: LLmGenerationStopReason;
        error?: {
            message: string;
            type: LlmErrorType;
        };
    }>;
    /**
     * 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<LlmStreamProviderResponseChunkEvent | LlmStreamToolCallEvent | LlmStreamResponseEvent, 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<LlmStreamEvent, void, unknown>;
    /**
     * Helper method to set a tool call to error state
     */
    private setCallToError;
    /**
     * Helper method to create a buffered stream from content chunks
     */
    private createBufferedStream;
    /**
     * 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)
     * @param abortSignal - AbortSignal to cancel the embedding request (optional)
     */
    generateEmbedding(text: string, model?: string, abortSignal?: AbortSignal): Promise<number[]>;
}
