export declare const COMMIT_OPERATIONS: readonly ["tile_set", "tile_fill", "tile_erase", "tile_clear", "tileset_assign", "node_property", "node_add", "tileset_physics_layer_add", "tile_collision_set", "tileset_physics_layer_set", "tileset_physics_layer_remove", "tileset_navigation_layer_add", "tile_navigation_set", "tileset_custom_data_layer_add", "tile_custom_data_set", "tile_collision_clear"]; /** * 直接修改外部 .tres TileSet 资源(非场景实例)的 op——save 分支据此收集待保存资源, * handler 层据此对 tileset_path 做项目内校验。physics/navigation/custom data 三层全可编程。 */ export declare const TILESET_RESOURCE_OPS: ReadonlySet; export type CommitOp = typeof COMMIT_OPERATIONS[number]; /** * IMPORTANT-7 (review): 校验 operations 数组结构。每个 op 必须有合法 op 字段 * (对齐 COMMIT_OPERATIONS)。原 scene-commit-tool 用 as unknown as CommitOperation[] 无运行时校验, * 畸形 op(op 字段缺失/非法值)会让 generateCommitScript 运行时崩溃或生成畸形 .gd。 * @returns null 全部合法;否则首条错误信息(含索引与合法值清单)。 */ export declare function validateCommitOperations(operations: Array>): string | null; interface TileSetOp { op: 'tile_set'; node_path: string; coords: { x: number; y: number; }; source_id: number; atlas: { x: number; y: number; }; alternative_tile?: number; } interface TileFillOp { op: 'tile_fill'; node_path: string; region: { x: number; y: number; w: number; h: number; }; source_id: number; atlas: { x: number; y: number; }; alternative_tile?: number; } interface TileEraseOp { op: 'tile_erase'; node_path: string; coords: { x: number; y: number; }; } interface TileClearOp { op: 'tile_clear'; node_path: string; } interface TilesetAssignOp { op: 'tileset_assign'; node_path: string; tileset_path: string; } interface NodePropertyOp { op: 'node_property'; path: string; property: string; value: unknown; } interface NodeAddOp { op: 'node_add'; parent: string; name: string; type: string; properties?: Record; } interface TilesetPhysicsLayerAddOp { op: 'tileset_physics_layer_add'; tileset_path: string; collision_layer?: number; collision_mask?: number; } interface TileCollisionSetOp { op: 'tile_collision_set'; tileset_path: string; source_id: number; atlas: { x: number; y: number; }; alternative_tile?: number; physics_layer: number; shape: 'rect' | 'polygon'; /** polygon 模式必填自定义点集;rect 模式必须省略(全格四点运行时由 tile_size 生成,等价编辑器按 F) */ points?: Array<{ x: number; y: number; }>; one_way?: boolean; } interface TilesetPhysicsLayerSetOp { op: 'tileset_physics_layer_set'; tileset_path: string; layer: number; collision_layer?: number; collision_mask?: number; } interface TilesetPhysicsLayerRemoveOp { op: 'tileset_physics_layer_remove'; tileset_path: string; layer: number; } interface TilesetNavigationLayerAddOp { op: 'tileset_navigation_layer_add'; tileset_path: string; layers?: number; } interface TileNavigationSetOp { op: 'tile_navigation_set'; tileset_path: string; source_id: number; atlas: { x: number; y: number; }; alternative_tile?: number; navigation_layer: number; shape: 'rect' | 'polygon'; points?: Array<{ x: number; y: number; }>; } /** custom data layer 的 value 类型白名单 → Variant.Type 枚举(引擎侧) */ export declare const CUSTOM_DATA_TYPES: Readonly>; interface TilesetCustomDataLayerAddOp { op: 'tileset_custom_data_layer_add'; tileset_path: string; name: string; type?: string; } interface TileCustomDataSetOp { op: 'tile_custom_data_set'; tileset_path: string; source_id: number; atlas: { x: number; y: number; }; alternative_tile?: number; layer: number; value: unknown; } interface TileCollisionClearOp { op: 'tile_collision_clear'; tileset_path: string; source_id: number; atlas: { x: number; y: number; }; alternative_tile?: number; physics_layer: number; } export type CommitOperation = TileSetOp | TileFillOp | TileEraseOp | TileClearOp | TilesetAssignOp | NodePropertyOp | NodeAddOp | TilesetPhysicsLayerAddOp | TileCollisionSetOp | TilesetPhysicsLayerSetOp | TilesetPhysicsLayerRemoveOp | TilesetNavigationLayerAddOp | TileNavigationSetOp | TilesetCustomDataLayerAddOp | TileCustomDataSetOp | TileCollisionClearOp; /** 资源层配置 op 直接修改外部 .tres(非场景实例)——save 分支据此收集待保存资源。 */ export declare function collectTilesetPaths(operations: CommitOperation[]): string[]; /** * Generate a complete GDScript that executes all operations in sequence, * optionally saves the scene, and reports structured results. */ export declare function generateCommitScript(scenePath: string, operations: CommitOperation[], save: boolean, stopOnError?: boolean): string; export {};