/**
 * Claude Code Provider
 *
 * Wraps `@anthropic-ai/claude-agent-sdk` so consumers can use a local
 * Claude Code installation — including Claude Pro/Max subscription
 * accounts authenticated via `claude login` — through the same
 * BaseAIProvider interface as the other providers.
 *
 * Tradeoffs vs the direct Anthropic API provider:
 * - Authenticates via the local CLI, so subscription users (no API key)
 *   can use it.
 * - Requires `claude` to be installed and logged in on the host.
 * - Higher latency (shells out to a CLI process per request).
 * - Designed for agent workflows, but used here in single-turn mode
 *   (maxTurns: 1, no tools) for plain text completion.
 *
 * @see https://docs.anthropic.com/claude/docs/claude-code-sdk
 */
import type { AIProviderConfig, CompletionChunk, CompletionParams, CompletionResponse, ProviderInfo } from '../types/index.js';
import { BaseAIProvider } from './base.js';
import { AIProviderError } from '../types/index.js';
/**
 * Configuration for the Claude Code provider. `apiKey` is optional —
 * when omitted the SDK falls back to ANTHROPIC_API_KEY in the
 * environment or the local subscription credentials managed by the
 * `claude` CLI.
 */
export interface ClaudeCodeConfig extends Omit<AIProviderConfig, 'apiKey'> {
    apiKey?: string;
    /**
     * Default model. Accepts SDK aliases (`'sonnet'`, `'opus'`, `'haiku'`,
     * `'inherit'`) or any full Claude model ID.
     * @default 'sonnet'
     */
    defaultModel?: string;
    /**
     * Working directory for the Claude Code session.
     * @default process.cwd()
     */
    cwd?: string;
    /**
     * Tool names the model is allowed to call. Defaults to none, which
     * makes the provider behave as a pure text completion endpoint.
     */
    allowedTools?: string[];
    /**
     * Maximum agent turns. Defaults to 1 for plain completion; raise this
     * if you also pass `allowedTools` and want tool-use loops.
     * @default 1
     */
    maxTurns?: number;
}
export declare class ClaudeCodeProvider extends BaseAIProvider {
    private readonly defaultModel;
    private readonly cwd;
    private readonly allowedTools;
    private readonly maxTurns;
    constructor(config: ClaudeCodeConfig);
    /**
     * apiKey is optional for this provider — the SDK reads
     * ANTHROPIC_API_KEY from the environment or falls back to the local
     * Claude Code credentials. We override the base validator to skip the
     * non-empty apiKey requirement.
     */
    protected validateAndNormalizeConfig(config: AIProviderConfig): AIProviderConfig;
    protected doInitialize(): Promise<void>;
    protected doComplete(params: CompletionParams): Promise<CompletionResponse<string>>;
    protected doStream<T = any>(params: CompletionParams<T>): AsyncIterable<CompletionChunk>;
    getInfo(): ProviderInfo;
    protected mapProviderError(error: any): AIProviderError | null;
    private buildPrompt;
    private buildOptions;
    private errorForSdkAssistantError;
}
