import type { OperationIr } from "../ir/operations.js"; import type { AuthoringApiClient } from "../api/client.js"; import type { Plan, PlanOptions } from "./plan-types.js"; export { buildAction, type BuildActionOptions } from "./build-action.js"; export { buildSiblingCreateNames, buildFieldTargetRefKeys } from "./plan-refs.js"; export type { FieldDiffEntry, PrunedItemSnapshot, PlannedAction, PlanSummary, Plan, PlanEvent, PlanOptions, } from "./plan-types.js"; /** * `scai provision recipe plan` and `scai provision recipe push` share this read-then-diff path: * * for each op: * resolve the target item (path-based for CreateItem, captured-id * based for update-style ops) * read remote state; diff against IR * emit mutation per policy (create / update / skip / error) * * Sitecore's Authoring API server-assigns itemIds on `createItem`. The * IR carries deterministic uuidv5 refKeys (recipe-internal) plus * Sitecore paths (deterministic from recipe + envProfile roots). On each * push, the executor maintains a per-run `capturedItemIds: Map` populated from `getItem(by path)` and `createItem` * responses. Subsequent ops resolve their target by refKey → captured * itemId, and `ref-recipe` field values resolve through the same map. */ export declare const buildPlan: (ir: OperationIr, client: AuthoringApiClient, options?: PlanOptions) => Promise;