import type { FullAutoErrorMode } from "./auto-approval-mode.js";
import type { Model, Provider } from "./providers.js";
import { AutoApprovalMode } from "./auto-approval-mode.js";
export declare const DEFAULT_AGENTIC_MODEL = "openai/o4-mini";
export declare const DEFAULT_FULL_CONTEXT_MODEL = "openai/gpt-4.1";
export declare const DEFAULT_APPROVAL_MODE = AutoApprovalMode.SUGGEST;
export declare const DEFAULT_INSTRUCTIONS = "";
export declare const DEFAULT_SHELL_MAX_BYTES: number;
export declare const DEFAULT_SHELL_MAX_LINES = 256;
export declare const CONFIG_DIR: string;
export declare const CONFIG_JSON_FILEPATH: string;
export declare const CONFIG_YAML_FILEPATH: string;
export declare const CONFIG_YML_FILEPATH: string;
export declare const CONFIG_FILEPATH: string;
export declare const INSTRUCTIONS_FILEPATH: string;
export declare const OPENAI_TIMEOUT_MS: number | undefined;
export declare const OPENAI_BASE_URL: string;
export declare let OPENAI_API_KEY: string;
export declare const DEFAULT_REASONING_EFFORT = "high";
export declare const OPENAI_ORGANIZATION: string;
export declare const OPENAI_PROJECT: string;
export declare const CODEX_UNSAFE_ALLOW_NO_SANDBOX: boolean;
export declare function setApiKey(apiKey: string): void;
export declare function getBaseUrl(provider?: Provider): string | undefined;
export declare function getEnvKey(provider?: Provider): string | undefined;
export declare function getApiKey(provider?: Provider): string | undefined;
export type StoredConfig = {
    model?: string;
    provider?: string;
    approvalMode?: AutoApprovalMode;
    fullAutoErrorMode?: FullAutoErrorMode;
    memory?: MemoryConfig;
    /** Whether to enable desktop notifications for responses (defaults to false) */
    notify?: boolean;
    /** Disable server-side response storage (send full transcript each request) */
    disableResponseStorage?: boolean;
    providers?: Record<string, {
        name: string;
        baseURL: string;
        envKey: string;
    }>;
    history?: {
        maxSize?: number;
        saveHistory?: boolean;
        sensitivePatterns?: Array<string>;
    };
    tools?: {
        shell?: {
            maxBytes?: number;
            maxLines?: number;
        };
    };
    /** User-defined safe commands */
    safeCommands?: Array<string>;
    /** MCP server configuration */
    mcp?: {
        [serverName: string]: {
            command?: string;
            args?: Array<string>;
            url?: string;
            type?: "stdio" | "sse";
            enabled?: boolean;
        };
    };
};
export declare const EMPTY_STORED_CONFIG: StoredConfig;
export type MemoryConfig = {
    enabled: boolean;
};
export type AppConfig = {
    apiKey?: string;
    model: Model;
    instructions?: string;
    approvalMode?: AutoApprovalMode;
    fullAutoErrorMode?: FullAutoErrorMode;
    memory?: MemoryConfig;
    /** Whether to enable desktop notifications for responses (defaults to false) */
    notify?: boolean;
    providers?: Record<string, {
        name: string;
        baseURL: string;
        envKey: string;
    }>;
    history?: {
        maxSize: number;
        saveHistory: boolean;
        sensitivePatterns: Array<string>;
    };
    /** MCP server configuration */
    mcp?: {
        [serverName: string]: {
            command?: string;
            args?: Array<string>;
            url?: string;
            type?: "stdio" | "sse";
            enabled?: boolean;
        };
    };
    tools?: {
        shell?: {
            maxBytes: number;
            maxLines: number;
        };
    };
};
export declare const PRETTY_PRINT: boolean;
export declare const PROJECT_DOC_MAX_BYTES: number;
export declare function discoverProjectDocPath(startDir: string): string | null;
/**
 * Load the project documentation markdown (codex.md) if present. If the file
 * exceeds {@link PROJECT_DOC_MAX_BYTES} it will be truncated and a warning is
 * logged.
 *
 * @param cwd The current working directory of the caller
 * @param explicitPath If provided, skips discovery and loads the given path
 */
export declare function loadProjectDoc(cwd: string, explicitPath?: string): string;
export type LoadConfigOptions = {
    /** Working directory used for project doc discovery */
    cwd?: string;
    /** Disable inclusion of the project doc */
    disableProjectDoc?: boolean;
    /** Explicit path to project doc (overrides discovery) */
    projectDocPath?: string;
    /** Whether we are in fullcontext mode. */
    isFullContext?: boolean;
};
export declare const loadConfig: (configPath?: string | undefined, instructionsPath?: string | undefined, options?: LoadConfigOptions) => AppConfig;
export declare const saveConfig: (config: AppConfig, configPath?: string, instructionsPath?: string) => void;
