import type OpenAI from 'openai';
export type Role = 'system' | 'user' | 'assistant' | 'tool';
export type ReasoningEffort = 'none' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh';
export interface Message {
    role: Role;
    content: string | null;
    tool_calls?: OpenAI.Chat.ChatCompletionMessageFunctionToolCall[];
    tool_call_id?: string;
    name?: string;
}
export interface GrawkusConfig {
    apiKey: string;
    apiKeys?: string[];
    baseURL: string;
    model: string;
    modelAliases?: Record<string, string>;
    fallbackModel?: string;
    provider: string;
    openaiAuth?: OpenAIAuthConfig;
    maxTokens: number;
    contextWindowTokens?: number;
    temperature: number;
    maxTurns?: number;
    permissionMode: 'ask' | 'auto' | 'yolo';
    alwaysAllowedTools?: string[];
    dryRun?: boolean;
    theme?: 'full' | 'compact' | 'minimal';
    palette?: string;
    showThinking?: boolean;
    reasoningEffort?: ReasoningEffort;
    voice?: VoiceConfig;
    memory?: MemoryConfig;
    sandbox?: SandboxConfig;
    swarm?: SwarmConfig;
    footer?: FooterConfig;
    import?: ImportConfig;
}
export interface OpenAIAuthConfig {
    type: 'api_key' | 'codex_oauth';
    /** CODEX_HOME override for reading Codex CLI auth; defaults to $CODEX_HOME or ~/.codex. */
    codexHome?: string;
    /** Codex OAuth calls use the ChatGPT Codex Responses backend. */
    chatgptBaseURL?: string;
    /** Read tokens from Codex CLI auth.json at request time instead of storing them here. */
    useCodexAuthFile?: boolean;
}
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 SwarmConfig {
    setupWizard?: boolean;
    maxAgents?: number;
    defaultBudget?: string;
    defaultTarget?: string;
    defaultAssets?: string;
    defaultQuality?: string;
}
export interface FooterConfig {
    enabled?: boolean;
    template?: string;
    openingPrompt?: string;
}
export interface ImportConfig {
    defaultSource?: 'auto' | 'claude' | 'codex' | 'mempalace';
    autoSyncOnStartup?: boolean;
    syncLimit?: number;
}
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<string, ProviderPreset>;
