import type { FileOperationResult } from "../core/config.js";
import type { ICopyStrategy, StrategyContext } from "./strategy.interface.js";
/**
 * Produce the exact copy-contents result without reading or writing files.
 * @param sourceContent - Lisa-managed source block
 * @param destinationContent - Existing host content
 * @returns Content that apply would persist
 */
export declare function mergeCopyContents(sourceContent: string, destinationContent: string): string;
/**
 * Copy-contents strategy: Block-based merge for .gitignore-style files
 * - Create new files silently
 * - Replace content between "# BEGIN: AI GUARDRAILS" and "# END: AI GUARDRAILS" markers
 * - If markers don't exist, append entire content to bottom
 * - Preserves all custom user-added content outside the block
 */
export declare class CopyContentsStrategy implements ICopyStrategy {
    readonly name: "copy-contents";
    /**
     * Handle the case where destination doesn't exist
     * @param sourcePath Source file path
     * @param destPath Destination file path
     * @param relativePath Relative path
     * @param context Strategy context
     * @returns Result of copying the file
     */
    private handleNewFile;
    /**
     * Handle merging content into existing file
     * @param destPath Destination file path
     * @param relativePath Relative path
     * @param mergedContent The merged content
     * @param context Strategy context
     * @returns Result of the merge operation
     */
    private handleMerge;
    /**
     * Overwrite the destination with the full source content.
     *
     * Used when a copy-contents source carries no guardrails block: such a file
     * cannot be block-merged, and the append fallback would duplicate the entire
     * file on every content change. Overwriting matches the file's intent (a
     * fully Lisa-managed file) and is idempotent.
     * @param destPath Destination file path
     * @param relativePath Relative path
     * @param sourceContent Full source content to write
     * @param context Strategy context
     * @returns Result of the overwrite operation
     */
    private handleOverwrite;
    /**
     * Apply copy-contents strategy: Create, replace block, or append to file
     * @param sourcePath - Source file path
     * @param destPath - Destination file path
     * @param relativePath - Relative path for logging
     * @param context - Strategy context with config and callbacks
     * @returns Result of the copy-contents operation
     */
    apply(sourcePath: string, destPath: string, relativePath: string, context: StrategyContext): Promise<FileOperationResult>;
}
//# sourceMappingURL=copy-contents.d.ts.map