import type { FileOperationResult } from "../core/config.js";
import type { ICopyStrategy, StrategyContext } from "./strategy.interface.js";
/**
 * Produce the exact JSON merge result without filesystem access.
 * @param source - Lisa template object
 * @param destination - Existing host object
 * @returns Merged object with Lisa values taking precedence
 */
export declare function mergeTemplateJson(source: Record<string, unknown>, destination: Record<string, unknown>): Record<string, unknown>;
/**
 * Merge strategy: Deep merge JSON files (Lisa values take precedence)
 * - Project values serve as defaults
 * - Lisa values take precedence on conflicts
 * - Handle nested paths (.claude/settings.json)
 */
export declare class MergeStrategy implements ICopyStrategy {
    readonly name: "merge";
    /**
     * Apply merge strategy: Deep merge JSON files with project values taking precedence
     * @param sourcePath - Source JSON file path
     * @param destPath - Destination JSON file path
     * @param relativePath - Relative path for logging
     * @param context - Strategy context with config and callbacks
     * @returns Result of the merge operation
     */
    apply(sourcePath: string, destPath: string, relativePath: string, context: StrategyContext): Promise<FileOperationResult>;
}
//# sourceMappingURL=merge.d.ts.map