import { type ChangePlanRecord, type ChangeRequestRecord, type ChangeResultRecord, type SiteIdentity, type SourceRevision } from "./contracts.ts"; export { sourceRevision, changedSourceFiles } from "./revision.ts"; export { generateEditManifest, publicEditManifest } from "../editing/manifest.ts"; export type { SiteIdentity, SourceRevision, ChangeRequestRecord, ChangePlanRecord, ChangeResultRecord } from "./contracts.ts"; export interface SiteInspection { identity: SiteIdentity; revision: SourceRevision; legacyIdentity: boolean; pendingRequestId?: string; } export declare function inspectSite(siteRoot: string): SiteInspection; export interface PreparedChange { status: "prepared"; request: ChangeRequestRecord; plan: ChangePlanRecord; baselineRevision: SourceRevision; preparedRevision: SourceRevision; baselinePath: string; impactedNodes: string[]; } export declare function prepareChange(siteRoot: string, rawRequest: unknown, rawPlan: unknown): PreparedChange; export interface SetTextOperation { kind: "set_text"; file: string; elementId: string; text: string; } export interface ReplaceMediaOperation { kind: "replace_media"; file: string; elementId: string; src: string; } export interface SetThemeTokenOperation { kind: "set_theme_token"; file: "theme/defaults.json"; token: string; value: string; } export interface MoveSectionOperation { kind: "move_section"; file: string; sectionId: string; beforeSectionId: string; } export type SourceOperation = SetTextOperation | ReplaceMediaOperation | SetThemeTokenOperation | MoveSectionOperation; export interface AppliedChange { status: "draft"; requestId: string; beforeRevision: SourceRevision; afterRevision: SourceRevision; changedFiles: string[]; } export declare function applyOperations(siteRoot: string, requestId: string, operations: SourceOperation[], manifestRevision?: string): AppliedChange; export declare function buildSiteDraft(siteRoot: string): Promise<{ sourceRevision: SourceRevision; buildDigest: string; output: string; }>; export declare function verifyChange(siteRoot: string, requestId: string): Promise; /** Restores a failed or abandoned candidate only while its exact source revision still matches. */ export declare function discardChange(siteRoot: string, requestId: string, candidateRevision: string): { status: "already_discarded"; revision: SourceRevision; restoredFiles: never[]; } | { status: "discarded"; revision: SourceRevision; restoredFiles: string[]; };