/**
 * Tool LLM — internal LLM access for tool operations.
 *
 * Provides a lightweight interface for tool-internal LLM calls:
 * semantic diff, auto-heal, commit messages, prompt hooks, etc.
 *
 * Resolution order:
 *   1. tools.llmProvider + tools.llmModel from config (if both set)
 *   2. Currently selected provider/model from providerRegistry
 *
 * Design constraints:
 *   - Never throws from ToolLLM.chat() — returns empty string on any error
 *   - Logs failures via logger.debug (tool LLM failures are expected when no key)
 *   - Singleton pattern — import `toolLLM` for use
 */
import type { ConfigManager } from './manager.js';
import type { LLMProvider } from '../providers/interface.js';
import type { ProviderRegistry } from '../providers/registry.js';
/** Resolved provider + model pair for tool-internal LLM calls. */
export interface ResolvedToolLLM {
    provider: LLMProvider;
    modelId: string;
}
export interface ToolLLMDeps {
    readonly configManager: Pick<ConfigManager, 'get'>;
    readonly providerRegistry: Pick<ProviderRegistry, 'get' | 'getCurrentModel' | 'getForModel'>;
}
/**
 * Resolve the LLM provider and model to use for tool-internal operations.
 *
 * Resolution order:
 *   1. If tools.llmProvider + tools.llmModel are both set in config, use those.
 *   2. Otherwise fall back to the currently selected provider/model.
 *
 * Returns null if resolution fails (e.g. unknown provider name).
 */
export declare function resolveToolLLM(deps: ToolLLMDeps): ResolvedToolLLM | null;
/** Chat options for tool-internal LLM calls. */
export interface ToolLLMChatOptions {
    maxTokens?: number;
    systemPrompt?: string;
}
/**
 * ToolLLM — lightweight LLM interface for internal tool operations.
 *
 * Usage:
 *   const result = await toolLLM.chat('Generate a commit message for: ...');
 *
 * Always returns a string — empty string on any failure.
 */
export declare class ToolLLM {
    private readonly deps;
    constructor(deps: ToolLLMDeps);
    /**
     * Send a single-turn prompt to the tool LLM.
     *
     * @param prompt   The user prompt to send.
     * @param options  Optional maxTokens and systemPrompt.
     * @returns        The assistant's text response, or empty string on failure.
     */
    chat(prompt: string, options?: ToolLLMChatOptions): Promise<string>;
}
//# sourceMappingURL=tool-llm.d.ts.map