export interface AiConfigTemplate {
    baseUrl: string;
    apiKey: string;
    model: string;
    models?: string[];
}
export interface ClaudeCodeConfig {
    env?: {
        ANTHROPIC_BASE_URL?: string;
        ANTHROPIC_AUTH_TOKEN?: string;
        ANTHROPIC_MODEL?: string;
    };
}
export interface OpenCodeProviderConfig {
    npm?: string;
    model?: string;
    options?: {
        baseURL?: string;
        apiKey?: string;
    };
    models?: Record<string, {
        name: string;
        modalities?: {
            input: string[];
            output: string[];
        };
    }>;
}
export interface OpenCodeConfig {
    provider?: {
        default?: OpenCodeProviderConfig;
    };
}
export interface CodexModelProviderConfig {
    name?: string;
    base_url?: string;
    wire_api?: "responses" | "chat" | string;
    env_key?: string;
    env_key_instructions?: string;
    requires_openai_auth?: boolean;
}
export interface CodexConfig {
    model?: string;
    model_provider?: string;
    openai_base_url?: string;
    model_providers?: Record<string, CodexModelProviderConfig>;
}
export interface AiConfigPaths {
    acodeConfigFile: string;
    claudecodeConfigFile: string;
    codexConfigFile: string;
    opencodeConfigFile: string;
}
export declare function buildToolSpecificAiConfig(template: AiConfigTemplate): {
    acode: OpenCodeConfig;
    claudecode: ClaudeCodeConfig;
    codex: CodexConfig;
    opencode: OpenCodeConfig;
} | null;
export declare class AiConfigService {
    private readonly paths;
    constructor(paths: AiConfigPaths);
    readClaudeCodeConfig(): Promise<ClaudeCodeConfig>;
    readAcodeConfig(): Promise<OpenCodeConfig>;
    readOpenCodeConfig(): Promise<OpenCodeConfig>;
    readCodexConfig(): Promise<CodexConfig>;
    writeClaudeCodeConfig(config: ClaudeCodeConfig): Promise<void>;
    writeAcodeConfig(config: OpenCodeConfig): Promise<void>;
    writeOpenCodeConfig(config: OpenCodeConfig): Promise<void>;
    writeCodexConfig(config: CodexConfig): Promise<void>;
    applyClaudeCodeConfig(patch: ClaudeCodeConfig): Promise<ClaudeCodeConfig>;
    applyOpenCodeConfig(patch: OpenCodeConfig): Promise<OpenCodeConfig>;
    applyAcodeConfig(patch: OpenCodeConfig): Promise<OpenCodeConfig>;
    applyCodexConfig(patch: CodexConfig): Promise<CodexConfig>;
    applyAiConfigTemplate(template: AiConfigTemplate): Promise<{
        acode: OpenCodeConfig;
        claudecode: ClaudeCodeConfig;
        codex: CodexConfig;
        opencode: OpenCodeConfig;
    } | null>;
}
//# sourceMappingURL=ai-config-service.d.ts.map