import type { PortableTool } from "../portable-tool.js";
export declare const CHECKPOINT_TOOL_NAME: "checkpoint";
export type CheckpointAction = "create" | "list" | "restore" | "diff";
export interface CheckpointToolParams {
    action: CheckpointAction;
    /** Checkpoint ID (for restore/diff) */
    checkpointId?: string;
    /** Optional message for create */
    message?: string;
    /** File paths to restore (partial restore). If empty, restores all. */
    paths?: string[];
}
export declare const CHECKPOINT_TOOL_SCHEMA: {
    readonly type: "object";
    readonly properties: {
        readonly action: {
            readonly type: "string";
            readonly enum: readonly ["create", "list", "restore", "diff"];
            readonly description: string;
        };
        readonly checkpointId: {
            readonly type: "string";
            readonly description: "Checkpoint ID. Required for restore and diff.";
        };
        readonly message: {
            readonly type: "string";
            readonly description: "Optional descriptive message for the checkpoint.";
        };
        readonly paths: {
            readonly type: "array";
            readonly items: {
                readonly type: "string";
            };
            readonly description: "File paths to restore (partial restore). Omit to restore everything.";
        };
    };
    readonly required: readonly ["action"];
};
export interface Checkpoint {
    id: string;
    message: string;
    timestamp: string;
    fileCount: number;
}
export interface CheckpointResult {
    success: boolean;
    checkpoint?: Checkpoint;
    checkpoints?: Checkpoint[];
    diff?: string;
    error?: string;
}
/**
 * Host-provided checkpoint backend.
 * Uses shadow git repos (isolated from user project) for snapshots.
 */
export interface CheckpointToolDeps {
    /** Create a snapshot of the current workspace state */
    createCheckpoint(message?: string): Promise<CheckpointResult>;
    /** List all available checkpoints */
    listCheckpoints(): Promise<CheckpointResult>;
    /** Restore workspace to a checkpoint state (optionally partial) */
    restoreCheckpoint(checkpointId: string, paths?: string[]): Promise<CheckpointResult>;
    /** Show diff between current state and a checkpoint */
    diffCheckpoint(checkpointId: string): Promise<CheckpointResult>;
}
export declare function createCheckpointTool(deps: CheckpointToolDeps): PortableTool<CheckpointToolParams>;
