import type { UsageDelta } from './cost.js'; export declare class InferenceError extends Error { readonly cause?: unknown | undefined; constructor(message: string, cause?: unknown | undefined); } export interface InferenceRequest { readonly system: string; readonly user: string; readonly model?: string; readonly maxTokens?: number; } export interface InferenceResponse { readonly text: string; readonly usage: UsageDelta; readonly backend: 'cli' | 'sdk'; } export interface InferenceBackend { readonly kind: 'cli' | 'sdk'; isAvailable(): Promise; run(req: InferenceRequest): Promise; } export declare class ClaudeCliBackend implements InferenceBackend { private readonly bin; readonly kind: "cli"; constructor(bin?: string); isAvailable(): Promise; run(req: InferenceRequest): Promise; } export declare class AnthropicSdkBackend implements InferenceBackend { private readonly apiKey?; readonly kind: "sdk"; constructor(apiKey?: string | undefined); isAvailable(): Promise; run(req: InferenceRequest): Promise; } export interface SelectBackendOptions { /** When true, the SDK fallback is allowed without prompting. */ readonly allowApiKeyFallback?: boolean; /** When set, takes precedence over auto-selection. */ readonly preferred?: 'cli' | 'sdk'; /** Override the claude CLI binary path. */ readonly claudeBin?: string; readonly logger?: (msg: string) => void; /** When true and stdin is a TTY, prompt before falling back to SDK. */ readonly interactive?: boolean; } export interface SelectBackendResult { readonly backend: InferenceBackend | null; readonly reason: 'cli-available' | 'sdk-fallback-confirmed' | 'sdk-fallback-allowed-by-flag' | 'sdk-preferred' | 'declined-fallback' | 'no-backend-available'; readonly insideClaudeCode: boolean; } export declare function isInsideClaudeCodeSession(): boolean; export declare function selectBackend(options?: SelectBackendOptions): Promise; //# sourceMappingURL=inference.d.ts.map