/**
 * KICI_ environment variable to config path mapping and overlay.
 *
 * Converts KICI_-prefixed env vars to nested config paths and applies
 * them as overrides on top of a config object.
 *
 * Multi-app env var convention:
 * - App name in YAML: `main-org` -> env segment: `MAIN_ORG` (hyphen to underscore, uppercased)
 * - Example: KICI_PROVIDERS_GITHUB_MAIN_ORG_APP_ID -> providers.github[name=main-org].appId
 */
/**
 * Convert a KICI_ env var key to a config path array.
 * Returns null for non-KICI_ keys or unknown mappings.
 *
 * Handles two patterns:
 * 1. Direct mappings (KICI_DATABASE_URL -> ['database', 'url'])
 * 2. Multi-app GitHub provider (KICI_PROVIDERS_GITHUB_<NAME>_<FIELD> ->
 *    ['providers', 'github', '<name-lowered>', '<camelField>'])
 */
export declare function envKeyToConfigPath(key: string): string[] | null;
/**
 * Apply KICI_ env var overrides onto a config object.
 * Iterates all env vars, maps KICI_ ones to paths, and deep-sets values.
 *
 * @param config - Base config object (cloned, not mutated)
 * @param env - Process environment
 * @returns New config object with env overrides applied
 */
export declare function applyEnvOverrides(config: Record<string, unknown>, env: NodeJS.ProcessEnv): Record<string, unknown>;
/**
 * Deep merge two objects. Objects merge recursively, arrays replace,
 * undefined/null values in source do NOT override target.
 */
export declare function deepMerge(target: Record<string, unknown>, source: Record<string, unknown>): Record<string, unknown>;
/**
 * Set a value at a nested path in an object.
 * Creates intermediate objects as needed.
 */
export declare function deepSetByPath(obj: Record<string, unknown>, path: string[], value: unknown): void;
/**
 * Get a value at a nested path in an object.
 * Returns undefined if path doesn't exist.
 */
export declare function deepGetByPath(obj: Record<string, unknown>, path: string[]): unknown;
//# sourceMappingURL=env-overlay.d.ts.map