import type { LoopState, ModelDecision, ModelResponder } from './loop.js';
interface ToolSpec {
    name: string;
    description: string;
    input_schema: {
        type: 'object';
        properties: Record<string, unknown>;
        required?: string[];
    };
}
export declare const COMPUTER_TOOLS: ToolSpec[];
export interface ClaudeResponderConfig {
    baseUrl?: string;
    apiKey?: string;
    model?: string;
    maxTokens?: number;
    fetchImpl?: typeof fetch;
}
export declare const DEFAULT_CLAUDE_BASE_URL = "https://api.anthropic.com";
export declare const DEFAULT_CLAUDE_MODEL = "claude-sonnet-4-6";
export declare const ANTHROPIC_VERSION = "2023-06-01";
export declare function resolveApiKey(config: ClaudeResponderConfig, env?: NodeJS.ProcessEnv): string;
export declare function buildSystemPrompt(state: LoopState): string;
type AnthropicBlock = {
    type: 'text';
    text: string;
} | {
    type: 'tool_use';
    id: string;
    name: string;
    input: Record<string, unknown>;
} | {
    type: 'tool_result';
    tool_use_id: string;
    content: string;
};
interface AnthropicMessage {
    role: 'user' | 'assistant';
    content: AnthropicBlock[];
}
export declare function buildMessages(state: LoopState): AnthropicMessage[];
export declare function parseDecision(body: unknown): ModelDecision;
export declare function makeClaudeResponder(config?: ClaudeResponderConfig): ModelResponder;
export {};
