import { type SeatCheckpoint } from "@cotal-ai/workspace"; /** One admitted seat this restore is about to place, with the destination paths it lands on. */ export interface SeatRestoreRequest { readonly name: string; /** The directory the checkpoint was read from, re-verified here over the files as they are now. */ readonly directory: string; readonly checkpoint: SeatCheckpoint; /** The working tree the manager will launch this seat in, from the retained inventory. */ readonly cwd: string; /** The session id the retained inventory says this seat reopens, when it has one. A pointer that * names a different session is not this seat's pointer. */ readonly inventorySessionId?: string; } export interface SeatRestoreOptions { /** The destination workspace root, the anchor a `workspace-root` destination resolves against. */ readonly root: string; readonly seats: readonly SeatRestoreRequest[]; /** Reports each promoted seat, so the command can print what it placed. */ readonly onPromoted?: (seat: { name: string; cwd: string; superseded?: string; }) => void; } /** Every refusal below. The message names the seat, the step, and what git or tar actually said. */ export declare class SeatRestoreError extends Error { constructor(message: string); } /** * Restore every admitted seat, or leave every live `cwd` as it was. * * Two phases. Every seat is staged first, so a refusal on the last seat costs nothing on the first. * Only once every staging directory is complete does any promotion happen, and a failure during the * promotion phase puts back what this call moved: the renames it made are undone in reverse and the * session files it exclusively created are removed, so the destination is where it started and the * whole set can be retried once the refusal is understood. */ export declare function restoreSeatCheckpoints(options: SeatRestoreOptions): void; //# sourceMappingURL=seat-restore.d.ts.map