/** * `bitmagic forge --edit` — which level is being edited, and the request an * edit job is frozen with. * * Pure over the project's world.json so the resolution rules are testable * without a project on disk: `--level` names a level by id, by exact name, or * by a unique case-insensitive name; omitted, it means the ONE level this * project could edit, and anything else is refused with the candidates named. * A level can be edited when its `.vwld` asset records the forge job that * built it (or, for older levels, carries the job id in its source GLB key — * see `parentForgeJobId`). */ import { type ForgeJobInput, type ForgeReusePlan, type ForgeArtifact } from '@bitmagic/world-forger/pipeline/index.js'; import { type JsonObject } from '../project/world-json.js'; export interface EditTarget { levelId: string; name: string; vwldAssetId: string; parentJobId: string; } export declare function resolveEditTarget(world: JsonObject, levelArg: string | undefined): EditTarget; /** The frozen request of an edit job: the level's own name, the parent it edits, the level it replaces. */ export declare function buildEditJobInput(options: { target: EditTarget; editPrompt: string; gameId: string; groundPlane?: boolean; }): ForgeJobInput; /** A plan that reuses nothing — what a terminal frame without one means. */ export declare function bakeEverythingPlan(artifact: ForgeArtifact, reason: string): ForgeReusePlan;