import type OpenAI from 'openai'; export type Role = 'system' | 'user' | 'assistant' | 'tool'; export interface Message { role: Role; content: string | null; tool_calls?: OpenAI.Chat.ChatCompletionMessageFunctionToolCall[]; tool_call_id?: string; name?: string; } export interface CrowcoderConfig { apiKey: string; apiKeys?: string[]; baseURL: string; model: string; fallbackModel?: string; provider: string; maxTokens: number; temperature: number; maxTurns?: number; permissionMode: 'ask' | 'auto' | 'yolo'; alwaysAllowedTools?: string[]; dryRun?: boolean; theme?: 'full' | 'compact' | 'minimal'; palette?: string; showThinking?: boolean; voice?: VoiceConfig; memory?: MemoryConfig; sandbox?: SandboxConfig; } export interface SandboxConfig { /** off (no wrap) | standard (cwd + /tmp writable, net allowed) | strict (cwd-only) */ level?: 'off' | 'standard' | 'strict'; } export interface MemoryConfig { enabled?: boolean; globalScope?: boolean; projectScope?: boolean; } export interface VoiceConfig { enabled?: boolean; stt?: VoiceSttConfig; tts?: VoiceTtsConfig; accessibility?: VoiceAccessibilityConfig; } export interface VoiceSttConfig { apiKey?: string; baseURL?: string; model?: string; dictationKey?: string; autoSubmit?: boolean; } export interface VoiceTtsConfig { apiKey?: string; baseURL?: string; model?: string; assistantVoiceId?: string; userVoiceId?: string; echoUser?: boolean; skipCode?: boolean; speed?: number; stability?: number; similarityBoost?: number; } export interface VoiceAccessibilityConfig { screenReader?: boolean; audioCues?: boolean; announceErrors?: boolean; announceModeSwitches?: boolean; askBeforeDestructive?: boolean; longResponseThreshold?: number; } export interface ProviderPreset { name: string; baseURL: string; defaultModel: string; requiresKey: boolean; } export declare const PROVIDERS: Record;