export interface MergeResult { status: 'written' | 'unchanged'; /** true when the file did not exist before */ created: boolean; backupPath?: string; } export declare function deepEqual(a: unknown, b: unknown): boolean; /** Deep-sets value at path, creating intermediate objects; leaves everything else untouched. */ export declare function setAtPath(obj: Record, path: string[], value: unknown): void; export declare function getAtPath(obj: Record, path: string[]): unknown; /** * Merges `value` into the JSON file at `jsonPath`, preserving all unrelated * keys. Missing file starts from {}. A pre-existing file is backed up to * `.bak` before being modified. Writes are atomic (tmp + rename); new * files are created with mode 0600, existing files keep their mode. * Throws (without touching the file) when the existing content is not valid JSON. */ export declare function mergeJsonFile(file: string, jsonPath: string[], value: unknown): MergeResult; /** Same atomic tmp+rename pattern as lib/config.ts saveConfig. */ export declare function writeFileAtomic(file: string, content: string, mode: number): void; //# sourceMappingURL=json-file.d.ts.map