import type { BigIntStats } from 'fs'; import { type WorkflowProjectConfigIdentity } from '../workflow-contract/project-config-reader.js'; import { type ClassicArtifactLayout, type ClassicLayoutPaths } from './classic-layout.js'; declare const initializationPermitBrand: unique symbol; declare const ownershipClaimBrand: unique symbol; interface ClassicInitObjectIdentity { dev: string; ino: string; birthtime: string; ctime: string; } interface ClassicInitManifestFile { path: string; size: number; hash: string; identity: ClassicInitObjectIdentity; } interface ClassicInitManifest { directories: string[]; files: ClassicInitManifestFile[]; totalBytes: number; hash: string; } interface ClassicInitOwnershipJournal { schema: 'comet.classic-init-ownership.v1'; id: string; stage: 'initializing' | 'quarantining' | 'quarantined'; artifactLayout: ClassicArtifactLayout; root: 'openspec' | 'docs/openspec'; quarantine: string | null; configIdentity: WorkflowProjectConfigIdentity; rootIdentity: ClassicInitObjectIdentity | null; manifest: ClassicInitManifest | null; readonly [ownershipClaimBrand]?: ClassicInitOwnershipClaim; } interface ClassicInitOwnershipClaim { fileIdentity: BigIntStats; contentHash: string; } interface ClassicInitTestHooks { afterJournalQuarantine?: (operation: string) => void | Promise; afterRootQuarantine?: (quarantine: string) => void | Promise; } interface ClassicInitOperationOptions { testHooks?: ClassicInitTestHooks; } export interface ClassicLayoutInitializationPermit { readonly projectRoot: string; readonly artifactLayout: ClassicArtifactLayout; readonly configIdentity: WorkflowProjectConfigIdentity; readonly ownershipId?: string; readonly [initializationPermitBrand]: true; } export interface ClassicLayoutInitialization extends ClassicLayoutPaths { readonly initializationPermit: ClassicLayoutInitializationPermit; } /** * Persist ownership before an external OpenSpec process is allowed to create a * previously missing Classic root. Existing roots are never claimed. */ export declare function beginClassicLayoutInitialization(projectRoot: string, initialization: ClassicLayoutInitialization, options?: ClassicInitOperationOptions): Promise; /** * Bind the current root object and exact contents to the durable ownership * journal. Rollback is allowed only while this checkpoint remains unchanged. */ export declare function checkpointClassicLayoutInitialization(projectRoot: string, permit: ClassicLayoutInitializationPermit, options?: ClassicInitOperationOptions): Promise; export declare function completeClassicLayoutInitialization(projectRoot: string, permit: ClassicLayoutInitializationPermit, options?: ClassicInitOperationOptions): Promise; export declare function rollbackClassicLayoutInitialization(projectRoot: string, permit: ClassicLayoutInitializationPermit, options?: ClassicInitOperationOptions): Promise; export interface ClassicLayoutInitializationInspection { id: string; stage: ClassicInitOwnershipJournal['stage']; artifactLayout: ClassicArtifactLayout; root: string; quarantine: string | null; allowedStrategies: Array<'continue' | 'rollback'>; } export declare function inspectClassicLayoutInitialization(projectRoot: string): Promise; export declare function repairClassicLayoutInitialization(projectRoot: string, strategy: 'continue' | 'rollback'): Promise; /** * Validate OpenSpec initialization against the explicitly selected Classic * root. A standalone OpenSpec root may already exist at the alternate * location; initialization owns only the selected root and leaves the * alternate root untouched. */ export declare function assertClassicLayoutInitializationSafe(projectRoot: string, desiredLayout: ClassicArtifactLayout, permit?: ClassicLayoutInitializationPermit, expectedConfigIdentity?: WorkflowProjectConfigIdentity): Promise; export {}; //# sourceMappingURL=classic-layout-initialization.d.ts.map