/** Projection-owned read/modify/write adapter for managed text regions. */ import * as Effect from "effect/Effect"; import * as FileSystem from "effect/FileSystem"; import * as Option from "effect/Option"; import * as Path from "effect/Path"; import { type AppError } from "../app-error/index.js"; import { type FileCommentStyle, type RegionMarker, type RegionName } from "./marker-grammar.js"; export type ManagedRegionState = { readonly state: "absent"; readonly reasonCode: "managed-region-absent"; } | { readonly state: "complete"; readonly reasonCode: "managed-region-complete"; readonly start: number; readonly end: number; readonly lines: ReadonlyArray; readonly body: string; readonly startMarker: RegionMarker; } | { readonly state: "malformed"; readonly reasonCode: "managed-region-malformed"; readonly message: string; } | { readonly state: "unsupported-version"; readonly reasonCode: "managed-region-unsupported-version"; readonly message: string; }; export interface ManagedRegionReconciliation { readonly existed: boolean; readonly existing: string; readonly updated: string; readonly changed: boolean; readonly observedRegion: Option.Option; readonly owner: string; readonly state: ManagedRegionState["state"]; readonly reasonCode: ManagedRegionState["reasonCode"]; } /** Inspect one region without guessing through duplicate, nested, or unpaired markers. */ export declare const inspectManagedRegion: (content: string, region: RegionName, style: FileCommentStyle) => ManagedRegionState; /** * Compare generated bodies by meaning that common formatters preserve. Code * fences retain their line structure; prose wraps, trailing whitespace, and * Markdown table padding do not create drift. */ export declare const normalizeManagedBody: (content: string) => string; export declare const renderManagedRegion: (args: { readonly content: string; readonly state: ManagedRegionState; readonly region: RegionName; readonly owner: string; readonly rendered: string; readonly style: FileCommentStyle; }) => string; /** Reconcile one AXM-owned region while preserving all surrounding bytes. */ export declare const reconcileManagedRegionFile: (args: { readonly targetPath: string; readonly displayPath: string; readonly region: RegionName; readonly owner: string; readonly rendered: string; readonly dryRun?: boolean; readonly removeEmptyFile?: boolean; readonly preserveEmptyFile?: boolean; readonly writeWhenMissing?: boolean; readonly unsupportedTargetDetail?: string; }) => Effect.Effect; //# sourceMappingURL=managed-region-adapter.d.ts.map