import { ModelManager } from '../model';
import { ReActConfig, ReActResult, ReActTool } from './types';
import { ReActStateManager } from './state';
/**
 * ReAct engine that orchestrates the reasoning and acting loop
 */
export declare class ReActEngine {
    private modelManager;
    private state;
    private tools;
    constructor(modelManager: ModelManager);
    /**
     * Register a tool for use in ReAct loops
     */
    registerTool(tool: ReActTool): void;
    /**
     * Unregister a tool
     */
    unregisterTool(name: string): void;
    /**
     * Get all registered tools
     */
    getTools(): ReActTool[];
    /**
     * Execute a ReAct loop
     */
    execute(task: string, systemPrompt: string, config?: ReActConfig, options?: {
        model?: string;
        abortSignal?: AbortSignal;
    }): Promise<ReActResult>;
    /**
     * Enforce final answer if not provided by the model
     */
    private enforceFinalAnswer;
    /**
     * Get the current state
     */
    getState(): ReActStateManager;
    /**
     * Reset the state
     */
    reset(): void;
}
