/**
 * Draft management wrapper.
 *
 * Encapsulates the DraftInterface to provide a clean internal API
 * for managing draft file operations within the AppShell.
 * External consumers (tools) should not interact with this directly.
 */
import type { DraftInterface } from "../../../draft-interface.js";
/**
 * Draft changes categorized by operation type.
 */
export interface DraftChanges {
    /** Files that have been edited (content modified) */
    edits: string[];
    /** Files that have been added (new files) */
    additions: string[];
    /** Files that have been deleted */
    deletions: string[];
}
/**
 * Manages draft file operations.
 *
 * This class wraps the DraftInterface to provide a simplified API
 * for the AppShell filesystem operations. It handles all draft
 * creation, deletion, and query operations internally.
 */
export declare class DraftManager {
    private readonly draftInterface;
    constructor(draftInterface: DraftInterface);
    /**
     * Creates a draft file with the given content.
     *
     * This stages a file write that can be committed or discarded.
     * Parent directories are created automatically.
     *
     * @param filePath - Relative path of the file
     * @param content - Content to write
     */
    createDraft(filePath: string, content: string): Promise<void>;
    /**
     * Creates a draft marker without content.
     *
     * Used to mark a file as having a pending draft without
     * specifying the content immediately.
     *
     * @param filePath - Relative path of the file
     */
    createDraftMarker(filePath: string): Promise<void>;
    /**
     * Creates a draft deletion for a file.
     *
     * This stages a file deletion that can be committed or discarded.
     *
     * @param filePath - Relative path of the file to delete
     */
    createDraftDelete(filePath: string): Promise<void>;
    /**
     * Checks if there are any pending draft changes.
     *
     * @returns true if there are uncommitted draft changes
     */
    hasDraftChanges(): Promise<boolean>;
    /**
     * Gets a unified diff of pending draft changes.
     *
     * @param paths - Optional specific paths to diff. If empty, diffs all changes.
     * @returns Unified diff string
     */
    getDraftDiff(paths?: string[]): Promise<string>;
    /**
     * Gets categorized draft changes.
     *
     * @returns Object containing arrays of edited, added, and deleted paths
     */
    getDraftChanges(): Promise<DraftChanges>;
    /**
     * Gets the underlying DraftInterface.
     *
     * This should only be used for advanced operations that require
     * direct access to the draft interface. Prefer using the methods
     * on this class when possible.
     *
     * @internal
     */
    getInterface(): DraftInterface;
}
//# sourceMappingURL=draft-manager.d.ts.map