@snaptrude/plugin-core 0.2.5 → 0.2.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # @snaptrude/plugin-core
2
2
 
3
+ ## 0.2.6
4
+
5
+ ### Patch Changes
6
+
7
+ - c17d287: Add bulk space APIs: `space.bulkCreate`, `space.bulkUpdate`, and `space.bulkDelete`. Each batches its work into a single undo/redo step. All items are validated up front and the call throws if any item is invalid (nothing is applied), consistent with the single-item space methods. `bulkCreate` supports `spaceType`/`massType`/`departmentId` per item and returns `{ spaceIds }`; `bulkUpdate` takes geometry (`profile`+`extrudeHeight`) and/or nested `properties` per item and returns `{ spaces }` (one echoed result per item, like `update`); `bulkDelete` returns `{ deletedSpaceIds }`.
8
+ - 0683194: bulk apis
9
+
3
10
  ## 0.2.5
4
11
 
5
12
  ### Patch Changes
@@ -236,6 +236,103 @@ export declare abstract class PluginSpaceApi {
236
236
  * ```
237
237
  */
238
238
  abstract update(args: PluginSpaceUpdateArgs): PluginApiReturn<PluginSpaceUpdateResult>;
239
+ /**
240
+ * Create many spaces in a single undoable operation.
241
+ *
242
+ * Each item is either a rectangular box (`kind: "rectangular"`) or an
243
+ * extruded profile (`kind: "profile"`), and may optionally set `room_type`,
244
+ * `spaceType`, `massType`, and `departmentId`. All creations — and the
245
+ * optional property assignments — are batched into **one** command, so the
246
+ * entire batch is undone/redone in a single step.
247
+ *
248
+ * All items are validated first; if any item is invalid the call **throws**
249
+ * and no spaces are created (nothing is applied) — consistent with the
250
+ * single-item create methods.
251
+ *
252
+ * @param args - {@linkcode PluginSpaceBulkCreateArgs} with an `items` array
253
+ * @returns A {@linkcode PluginSpaceBulkCreateResult} with the `spaceIds` of
254
+ * the created spaces, in input order
255
+ * @throws If any item has invalid dimensions, height, or profile
256
+ *
257
+ * # Example
258
+ * ```ts
259
+ * const { vec3 } = snaptrude.core.math
260
+ *
261
+ * const { spaceIds } = await snaptrude.entity.space.bulkCreate({
262
+ * items: [
263
+ * {
264
+ * kind: "rectangular",
265
+ * position: vec3.new(0, 0, 0),
266
+ * dimensions: { width: 5, height: 3, depth: 4 },
267
+ * spaceType: "Room",
268
+ * departmentId: "CORE",
269
+ * },
270
+ * {
271
+ * kind: "profile",
272
+ * profile: await snaptrude.core.geom.profile.fromLinePoints({
273
+ * points: [vec3.new(0, 0, 0), vec3.new(8, 0, 0), vec3.new(8, 0, 6), vec3.new(0, 0, 6)],
274
+ * }),
275
+ * extrudeHeight: 3,
276
+ * position: vec3.new(10, 0, 0),
277
+ * massType: "Room",
278
+ * },
279
+ * ],
280
+ * })
281
+ * ```
282
+ */
283
+ abstract bulkCreate(args: PluginSpaceBulkCreateArgs): PluginApiReturn<PluginSpaceBulkCreateResult>;
284
+ /**
285
+ * Update many existing spaces in a single undoable operation.
286
+ *
287
+ * Each item targets an existing space by `spaceId` and may change its
288
+ * geometry (`profile` + `extrudeHeight`, which must be supplied together) and/or
289
+ * its `properties` (`room_type`, `massType`, `spaceType`, `departmentId` —
290
+ * nested under `properties`, mirroring {@linkcode PluginSpaceApi.update}). All
291
+ * changes are batched into **one** command, so the entire batch is
292
+ * undone/redone in a single step.
293
+ *
294
+ * All items are validated first; if any item is invalid — an unknown
295
+ * `spaceId`, a non-positive height, or supplying only one of
296
+ * `profile`/`extrudeHeight` — the call **throws** and no changes are applied.
297
+ *
298
+ * @param args - {@linkcode PluginSpaceBulkUpdateArgs} with an `items` array
299
+ * @returns A {@linkcode PluginSpaceBulkUpdateResult} echoing one
300
+ * {@linkcode PluginSpaceUpdateResult} per item in `spaces`, in input order
301
+ * @throws If any item targets an unknown space, has a non-positive height, or
302
+ * supplies only one of `profile`/`extrudeHeight`
303
+ *
304
+ * # Example
305
+ * ```ts
306
+ * const { spaces } = await snaptrude.entity.space.bulkUpdate({
307
+ * items: [
308
+ * { spaceId: "space-a", properties: { room_type: "Kitchen", spaceType: "Room" } },
309
+ * { spaceId: "space-b", profile, extrudeHeight: 4 },
310
+ * ],
311
+ * })
312
+ * ```
313
+ */
314
+ abstract bulkUpdate(args: PluginSpaceBulkUpdateArgs): PluginApiReturn<PluginSpaceBulkUpdateResult>;
315
+ /**
316
+ * Delete many spaces in a single undoable operation.
317
+ *
318
+ * All deletions are batched into **one** command, so the entire batch is
319
+ * undone/redone in a single step.
320
+ *
321
+ * All IDs are validated first; if any ID is unknown or is not a space the
322
+ * call **throws** and no spaces are deleted — consistent with the single-item
323
+ * {@linkcode PluginSpaceApi.delete}.
324
+ *
325
+ * @param args - {@linkcode PluginSpaceBulkDeleteArgs} with a `spaceIds` array
326
+ * @returns A {@linkcode PluginSpaceBulkDeleteResult} with `deletedSpaceIds`
327
+ * (the removed IDs, in input order)
328
+ * @throws If any ID does not resolve to an existing space
329
+ *
330
+ * # Example
331
+ * ```ts
332
+ * await snaptrude.entity.space.bulkDelete({ spaceIds: ["space-a", "space-b"] })
333
+ * ```
334
+ */
335
+ abstract bulkDelete(args: PluginSpaceBulkDeleteArgs): PluginApiReturn<PluginSpaceBulkDeleteResult>;
239
336
  }
240
337
  /**
241
338
  * Arguments for {@linkcode PluginSpaceApi.createRectangular}.
@@ -813,4 +910,581 @@ export declare const PluginSpaceUpdateResult: z.ZodObject<{
813
910
  departmentId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
814
911
  }, z.core.$strip>;
815
912
  export type PluginSpaceUpdateResult = z.infer<typeof PluginSpaceUpdateResult>;
913
+ /**
914
+ * A single item for {@linkcode PluginSpaceApi.bulkCreate}.
915
+ *
916
+ * Discriminated on `kind`:
917
+ * - `"rectangular"` — a box defined by `position` + `dimensions` (mirrors
918
+ * {@linkcode PluginSpaceCreateRectangularArgs})
919
+ * - `"profile"` — an extruded `profile` (with optional `innerProfiles`) by
920
+ * `extrudeHeight` at `position` (mirrors {@linkcode PluginSpaceCreateFromProfileArgs})
921
+ *
922
+ * Every item may optionally set `room_type`, `spaceType`, `massType`, and
923
+ * `departmentId`; these are applied within the same single undo step as the
924
+ * creation.
925
+ */
926
+ export declare const PluginSpaceBulkCreateItem: z.ZodDiscriminatedUnion<[z.ZodObject<{
927
+ kind: z.ZodLiteral<"rectangular">;
928
+ position: z.ZodObject<{
929
+ x: z.ZodNumber;
930
+ y: z.ZodNumber;
931
+ z: z.ZodNumber;
932
+ }, z.core.$strip>;
933
+ dimensions: z.ZodObject<{
934
+ width: z.ZodNumber;
935
+ height: z.ZodNumber;
936
+ depth: z.ZodNumber;
937
+ }, z.core.$strip>;
938
+ room_type: z.ZodOptional<z.ZodString>;
939
+ spaceType: z.ZodOptional<z.ZodEnum<{
940
+ Room: "Room";
941
+ "Program Block": "Program Block";
942
+ Balcony: "Balcony";
943
+ Road: "Road";
944
+ Garden: "Garden";
945
+ Deck: "Deck";
946
+ Pool: "Pool";
947
+ Walkway: "Walkway";
948
+ Envelope: "Envelope";
949
+ Parking: "Parking";
950
+ }>>;
951
+ massType: z.ZodOptional<z.ZodEnum<{
952
+ Room: "Room";
953
+ Plinth: "Plinth";
954
+ Void: "Void";
955
+ Pergola: "Pergola";
956
+ Furniture: "Furniture";
957
+ "Facade element": "Facade element";
958
+ "Generic mass": "Generic mass";
959
+ Department: "Department";
960
+ Building: "Building";
961
+ "Revit Import": "Revit Import";
962
+ Mass: "Mass";
963
+ Site: "Site";
964
+ }>>;
965
+ departmentId: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
966
+ DEFAULT: "DEFAULT";
967
+ SITE: "SITE";
968
+ ENVELOPE: "ENVELOPE";
969
+ CORE: "CORE";
970
+ }>, z.ZodUUID]>>;
971
+ }, z.core.$strip>, z.ZodObject<{
972
+ kind: z.ZodLiteral<"profile">;
973
+ profile: z.ZodObject<{
974
+ curves: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
975
+ curveType: z.ZodLiteral<"Line">;
976
+ startPoint: z.ZodObject<{
977
+ x: z.ZodNumber;
978
+ y: z.ZodNumber;
979
+ z: z.ZodNumber;
980
+ }, z.core.$strip>;
981
+ endPoint: z.ZodObject<{
982
+ x: z.ZodNumber;
983
+ y: z.ZodNumber;
984
+ z: z.ZodNumber;
985
+ }, z.core.$strip>;
986
+ }, z.core.$strip>, z.ZodObject<{
987
+ curveType: z.ZodLiteral<"Arc">;
988
+ startPoint: z.ZodObject<{
989
+ x: z.ZodNumber;
990
+ y: z.ZodNumber;
991
+ z: z.ZodNumber;
992
+ }, z.core.$strip>;
993
+ endPoint: z.ZodObject<{
994
+ x: z.ZodNumber;
995
+ y: z.ZodNumber;
996
+ z: z.ZodNumber;
997
+ }, z.core.$strip>;
998
+ centrePoint: z.ZodObject<{
999
+ x: z.ZodNumber;
1000
+ y: z.ZodNumber;
1001
+ z: z.ZodNumber;
1002
+ }, z.core.$strip>;
1003
+ axis: z.ZodObject<{
1004
+ x: z.ZodNumber;
1005
+ y: z.ZodNumber;
1006
+ z: z.ZodNumber;
1007
+ }, z.core.$strip>;
1008
+ }, z.core.$strip>], "curveType">>;
1009
+ }, z.core.$strip>;
1010
+ innerProfiles: z.ZodOptional<z.ZodArray<z.ZodObject<{
1011
+ curves: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
1012
+ curveType: z.ZodLiteral<"Line">;
1013
+ startPoint: z.ZodObject<{
1014
+ x: z.ZodNumber;
1015
+ y: z.ZodNumber;
1016
+ z: z.ZodNumber;
1017
+ }, z.core.$strip>;
1018
+ endPoint: z.ZodObject<{
1019
+ x: z.ZodNumber;
1020
+ y: z.ZodNumber;
1021
+ z: z.ZodNumber;
1022
+ }, z.core.$strip>;
1023
+ }, z.core.$strip>, z.ZodObject<{
1024
+ curveType: z.ZodLiteral<"Arc">;
1025
+ startPoint: z.ZodObject<{
1026
+ x: z.ZodNumber;
1027
+ y: z.ZodNumber;
1028
+ z: z.ZodNumber;
1029
+ }, z.core.$strip>;
1030
+ endPoint: z.ZodObject<{
1031
+ x: z.ZodNumber;
1032
+ y: z.ZodNumber;
1033
+ z: z.ZodNumber;
1034
+ }, z.core.$strip>;
1035
+ centrePoint: z.ZodObject<{
1036
+ x: z.ZodNumber;
1037
+ y: z.ZodNumber;
1038
+ z: z.ZodNumber;
1039
+ }, z.core.$strip>;
1040
+ axis: z.ZodObject<{
1041
+ x: z.ZodNumber;
1042
+ y: z.ZodNumber;
1043
+ z: z.ZodNumber;
1044
+ }, z.core.$strip>;
1045
+ }, z.core.$strip>], "curveType">>;
1046
+ }, z.core.$strip>>>;
1047
+ extrudeHeight: z.ZodNumber;
1048
+ position: z.ZodObject<{
1049
+ x: z.ZodNumber;
1050
+ y: z.ZodNumber;
1051
+ z: z.ZodNumber;
1052
+ }, z.core.$strip>;
1053
+ room_type: z.ZodOptional<z.ZodString>;
1054
+ spaceType: z.ZodOptional<z.ZodEnum<{
1055
+ Room: "Room";
1056
+ "Program Block": "Program Block";
1057
+ Balcony: "Balcony";
1058
+ Road: "Road";
1059
+ Garden: "Garden";
1060
+ Deck: "Deck";
1061
+ Pool: "Pool";
1062
+ Walkway: "Walkway";
1063
+ Envelope: "Envelope";
1064
+ Parking: "Parking";
1065
+ }>>;
1066
+ massType: z.ZodOptional<z.ZodEnum<{
1067
+ Room: "Room";
1068
+ Plinth: "Plinth";
1069
+ Void: "Void";
1070
+ Pergola: "Pergola";
1071
+ Furniture: "Furniture";
1072
+ "Facade element": "Facade element";
1073
+ "Generic mass": "Generic mass";
1074
+ Department: "Department";
1075
+ Building: "Building";
1076
+ "Revit Import": "Revit Import";
1077
+ Mass: "Mass";
1078
+ Site: "Site";
1079
+ }>>;
1080
+ departmentId: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
1081
+ DEFAULT: "DEFAULT";
1082
+ SITE: "SITE";
1083
+ ENVELOPE: "ENVELOPE";
1084
+ CORE: "CORE";
1085
+ }>, z.ZodUUID]>>;
1086
+ }, z.core.$strip>], "kind">;
1087
+ export type PluginSpaceBulkCreateItem = z.infer<typeof PluginSpaceBulkCreateItem>;
1088
+ /**
1089
+ * Arguments for {@linkcode PluginSpaceApi.bulkCreate}.
1090
+ *
1091
+ * | Property | Type | Description |
1092
+ * |---|---|---|
1093
+ * | `items` | {@linkcode PluginSpaceBulkCreateItem}`[]` | Spaces to create |
1094
+ */
1095
+ export declare const PluginSpaceBulkCreateArgs: z.ZodObject<{
1096
+ items: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
1097
+ kind: z.ZodLiteral<"rectangular">;
1098
+ position: z.ZodObject<{
1099
+ x: z.ZodNumber;
1100
+ y: z.ZodNumber;
1101
+ z: z.ZodNumber;
1102
+ }, z.core.$strip>;
1103
+ dimensions: z.ZodObject<{
1104
+ width: z.ZodNumber;
1105
+ height: z.ZodNumber;
1106
+ depth: z.ZodNumber;
1107
+ }, z.core.$strip>;
1108
+ room_type: z.ZodOptional<z.ZodString>;
1109
+ spaceType: z.ZodOptional<z.ZodEnum<{
1110
+ Room: "Room";
1111
+ "Program Block": "Program Block";
1112
+ Balcony: "Balcony";
1113
+ Road: "Road";
1114
+ Garden: "Garden";
1115
+ Deck: "Deck";
1116
+ Pool: "Pool";
1117
+ Walkway: "Walkway";
1118
+ Envelope: "Envelope";
1119
+ Parking: "Parking";
1120
+ }>>;
1121
+ massType: z.ZodOptional<z.ZodEnum<{
1122
+ Room: "Room";
1123
+ Plinth: "Plinth";
1124
+ Void: "Void";
1125
+ Pergola: "Pergola";
1126
+ Furniture: "Furniture";
1127
+ "Facade element": "Facade element";
1128
+ "Generic mass": "Generic mass";
1129
+ Department: "Department";
1130
+ Building: "Building";
1131
+ "Revit Import": "Revit Import";
1132
+ Mass: "Mass";
1133
+ Site: "Site";
1134
+ }>>;
1135
+ departmentId: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
1136
+ DEFAULT: "DEFAULT";
1137
+ SITE: "SITE";
1138
+ ENVELOPE: "ENVELOPE";
1139
+ CORE: "CORE";
1140
+ }>, z.ZodUUID]>>;
1141
+ }, z.core.$strip>, z.ZodObject<{
1142
+ kind: z.ZodLiteral<"profile">;
1143
+ profile: z.ZodObject<{
1144
+ curves: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
1145
+ curveType: z.ZodLiteral<"Line">;
1146
+ startPoint: z.ZodObject<{
1147
+ x: z.ZodNumber;
1148
+ y: z.ZodNumber;
1149
+ z: z.ZodNumber;
1150
+ }, z.core.$strip>;
1151
+ endPoint: z.ZodObject<{
1152
+ x: z.ZodNumber;
1153
+ y: z.ZodNumber;
1154
+ z: z.ZodNumber;
1155
+ }, z.core.$strip>;
1156
+ }, z.core.$strip>, z.ZodObject<{
1157
+ curveType: z.ZodLiteral<"Arc">;
1158
+ startPoint: z.ZodObject<{
1159
+ x: z.ZodNumber;
1160
+ y: z.ZodNumber;
1161
+ z: z.ZodNumber;
1162
+ }, z.core.$strip>;
1163
+ endPoint: z.ZodObject<{
1164
+ x: z.ZodNumber;
1165
+ y: z.ZodNumber;
1166
+ z: z.ZodNumber;
1167
+ }, z.core.$strip>;
1168
+ centrePoint: z.ZodObject<{
1169
+ x: z.ZodNumber;
1170
+ y: z.ZodNumber;
1171
+ z: z.ZodNumber;
1172
+ }, z.core.$strip>;
1173
+ axis: z.ZodObject<{
1174
+ x: z.ZodNumber;
1175
+ y: z.ZodNumber;
1176
+ z: z.ZodNumber;
1177
+ }, z.core.$strip>;
1178
+ }, z.core.$strip>], "curveType">>;
1179
+ }, z.core.$strip>;
1180
+ innerProfiles: z.ZodOptional<z.ZodArray<z.ZodObject<{
1181
+ curves: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
1182
+ curveType: z.ZodLiteral<"Line">;
1183
+ startPoint: z.ZodObject<{
1184
+ x: z.ZodNumber;
1185
+ y: z.ZodNumber;
1186
+ z: z.ZodNumber;
1187
+ }, z.core.$strip>;
1188
+ endPoint: z.ZodObject<{
1189
+ x: z.ZodNumber;
1190
+ y: z.ZodNumber;
1191
+ z: z.ZodNumber;
1192
+ }, z.core.$strip>;
1193
+ }, z.core.$strip>, z.ZodObject<{
1194
+ curveType: z.ZodLiteral<"Arc">;
1195
+ startPoint: z.ZodObject<{
1196
+ x: z.ZodNumber;
1197
+ y: z.ZodNumber;
1198
+ z: z.ZodNumber;
1199
+ }, z.core.$strip>;
1200
+ endPoint: z.ZodObject<{
1201
+ x: z.ZodNumber;
1202
+ y: z.ZodNumber;
1203
+ z: z.ZodNumber;
1204
+ }, z.core.$strip>;
1205
+ centrePoint: z.ZodObject<{
1206
+ x: z.ZodNumber;
1207
+ y: z.ZodNumber;
1208
+ z: z.ZodNumber;
1209
+ }, z.core.$strip>;
1210
+ axis: z.ZodObject<{
1211
+ x: z.ZodNumber;
1212
+ y: z.ZodNumber;
1213
+ z: z.ZodNumber;
1214
+ }, z.core.$strip>;
1215
+ }, z.core.$strip>], "curveType">>;
1216
+ }, z.core.$strip>>>;
1217
+ extrudeHeight: z.ZodNumber;
1218
+ position: z.ZodObject<{
1219
+ x: z.ZodNumber;
1220
+ y: z.ZodNumber;
1221
+ z: z.ZodNumber;
1222
+ }, z.core.$strip>;
1223
+ room_type: z.ZodOptional<z.ZodString>;
1224
+ spaceType: z.ZodOptional<z.ZodEnum<{
1225
+ Room: "Room";
1226
+ "Program Block": "Program Block";
1227
+ Balcony: "Balcony";
1228
+ Road: "Road";
1229
+ Garden: "Garden";
1230
+ Deck: "Deck";
1231
+ Pool: "Pool";
1232
+ Walkway: "Walkway";
1233
+ Envelope: "Envelope";
1234
+ Parking: "Parking";
1235
+ }>>;
1236
+ massType: z.ZodOptional<z.ZodEnum<{
1237
+ Room: "Room";
1238
+ Plinth: "Plinth";
1239
+ Void: "Void";
1240
+ Pergola: "Pergola";
1241
+ Furniture: "Furniture";
1242
+ "Facade element": "Facade element";
1243
+ "Generic mass": "Generic mass";
1244
+ Department: "Department";
1245
+ Building: "Building";
1246
+ "Revit Import": "Revit Import";
1247
+ Mass: "Mass";
1248
+ Site: "Site";
1249
+ }>>;
1250
+ departmentId: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
1251
+ DEFAULT: "DEFAULT";
1252
+ SITE: "SITE";
1253
+ ENVELOPE: "ENVELOPE";
1254
+ CORE: "CORE";
1255
+ }>, z.ZodUUID]>>;
1256
+ }, z.core.$strip>], "kind">>;
1257
+ }, z.core.$strip>;
1258
+ export type PluginSpaceBulkCreateArgs = z.infer<typeof PluginSpaceBulkCreateArgs>;
1259
+ /**
1260
+ * Result of {@linkcode PluginSpaceApi.bulkCreate}.
1261
+ *
1262
+ * | Property | Type | Description |
1263
+ * |---|---|---|
1264
+ * | `spaceIds` | `string[]` | IDs of the created spaces, in input order |
1265
+ */
1266
+ export declare const PluginSpaceBulkCreateResult: z.ZodObject<{
1267
+ spaceIds: z.ZodArray<z.ZodString>;
1268
+ }, z.core.$strip>;
1269
+ export type PluginSpaceBulkCreateResult = z.infer<typeof PluginSpaceBulkCreateResult>;
1270
+ /**
1271
+ * A single item for {@linkcode PluginSpaceApi.bulkUpdate}.
1272
+ *
1273
+ * Targets an existing space by `spaceId`. Geometry fields `profile` and
1274
+ * `extrudeHeight` must be supplied **together** (mirrors
1275
+ * {@linkcode PluginSpaceUpdateGeometryFromProfileArgs}). Property changes are
1276
+ * nested under `properties`, mirroring {@linkcode PluginSpaceUpdateArgs}.
1277
+ *
1278
+ * | Property | Type | Description |
1279
+ * |---|---|---|
1280
+ * | `spaceId` | `string` | The space to update |
1281
+ * | `profile` | {@linkcode PProfile}`?` | New floor shape (requires `extrudeHeight`) |
1282
+ * | `extrudeHeight` | `number?` | New extrusion height (requires `profile`) |
1283
+ * | `properties` | `object?` | Property changes (same shape as {@linkcode PluginSpaceUpdateArgs.properties}) |
1284
+ */
1285
+ export declare const PluginSpaceBulkUpdateItem: z.ZodObject<{
1286
+ spaceId: z.ZodString;
1287
+ profile: z.ZodOptional<z.ZodObject<{
1288
+ curves: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
1289
+ curveType: z.ZodLiteral<"Line">;
1290
+ startPoint: z.ZodObject<{
1291
+ x: z.ZodNumber;
1292
+ y: z.ZodNumber;
1293
+ z: z.ZodNumber;
1294
+ }, z.core.$strip>;
1295
+ endPoint: z.ZodObject<{
1296
+ x: z.ZodNumber;
1297
+ y: z.ZodNumber;
1298
+ z: z.ZodNumber;
1299
+ }, z.core.$strip>;
1300
+ }, z.core.$strip>, z.ZodObject<{
1301
+ curveType: z.ZodLiteral<"Arc">;
1302
+ startPoint: z.ZodObject<{
1303
+ x: z.ZodNumber;
1304
+ y: z.ZodNumber;
1305
+ z: z.ZodNumber;
1306
+ }, z.core.$strip>;
1307
+ endPoint: z.ZodObject<{
1308
+ x: z.ZodNumber;
1309
+ y: z.ZodNumber;
1310
+ z: z.ZodNumber;
1311
+ }, z.core.$strip>;
1312
+ centrePoint: z.ZodObject<{
1313
+ x: z.ZodNumber;
1314
+ y: z.ZodNumber;
1315
+ z: z.ZodNumber;
1316
+ }, z.core.$strip>;
1317
+ axis: z.ZodObject<{
1318
+ x: z.ZodNumber;
1319
+ y: z.ZodNumber;
1320
+ z: z.ZodNumber;
1321
+ }, z.core.$strip>;
1322
+ }, z.core.$strip>], "curveType">>;
1323
+ }, z.core.$strip>>;
1324
+ extrudeHeight: z.ZodOptional<z.ZodNumber>;
1325
+ properties: z.ZodOptional<z.ZodObject<{
1326
+ room_type: z.ZodOptional<z.ZodString>;
1327
+ massType: z.ZodOptional<z.ZodEnum<{
1328
+ Room: "Room";
1329
+ Plinth: "Plinth";
1330
+ Void: "Void";
1331
+ Pergola: "Pergola";
1332
+ Furniture: "Furniture";
1333
+ "Facade element": "Facade element";
1334
+ "Generic mass": "Generic mass";
1335
+ Department: "Department";
1336
+ Building: "Building";
1337
+ "Revit Import": "Revit Import";
1338
+ Mass: "Mass";
1339
+ Site: "Site";
1340
+ }>>;
1341
+ spaceType: z.ZodOptional<z.ZodEnum<{
1342
+ Room: "Room";
1343
+ "Program Block": "Program Block";
1344
+ Balcony: "Balcony";
1345
+ Road: "Road";
1346
+ Garden: "Garden";
1347
+ Deck: "Deck";
1348
+ Pool: "Pool";
1349
+ Walkway: "Walkway";
1350
+ Envelope: "Envelope";
1351
+ Parking: "Parking";
1352
+ }>>;
1353
+ departmentId: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
1354
+ DEFAULT: "DEFAULT";
1355
+ SITE: "SITE";
1356
+ ENVELOPE: "ENVELOPE";
1357
+ CORE: "CORE";
1358
+ }>, z.ZodUUID]>>;
1359
+ }, z.core.$strip>>;
1360
+ }, z.core.$strip>;
1361
+ export type PluginSpaceBulkUpdateItem = z.infer<typeof PluginSpaceBulkUpdateItem>;
1362
+ /**
1363
+ * Arguments for {@linkcode PluginSpaceApi.bulkUpdate}.
1364
+ *
1365
+ * | Property | Type | Description |
1366
+ * |---|---|---|
1367
+ * | `items` | {@linkcode PluginSpaceBulkUpdateItem}`[]` | Spaces to update |
1368
+ */
1369
+ export declare const PluginSpaceBulkUpdateArgs: z.ZodObject<{
1370
+ items: z.ZodArray<z.ZodObject<{
1371
+ spaceId: z.ZodString;
1372
+ profile: z.ZodOptional<z.ZodObject<{
1373
+ curves: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
1374
+ curveType: z.ZodLiteral<"Line">;
1375
+ startPoint: z.ZodObject<{
1376
+ x: z.ZodNumber;
1377
+ y: z.ZodNumber;
1378
+ z: z.ZodNumber;
1379
+ }, z.core.$strip>;
1380
+ endPoint: z.ZodObject<{
1381
+ x: z.ZodNumber;
1382
+ y: z.ZodNumber;
1383
+ z: z.ZodNumber;
1384
+ }, z.core.$strip>;
1385
+ }, z.core.$strip>, z.ZodObject<{
1386
+ curveType: z.ZodLiteral<"Arc">;
1387
+ startPoint: z.ZodObject<{
1388
+ x: z.ZodNumber;
1389
+ y: z.ZodNumber;
1390
+ z: z.ZodNumber;
1391
+ }, z.core.$strip>;
1392
+ endPoint: z.ZodObject<{
1393
+ x: z.ZodNumber;
1394
+ y: z.ZodNumber;
1395
+ z: z.ZodNumber;
1396
+ }, z.core.$strip>;
1397
+ centrePoint: z.ZodObject<{
1398
+ x: z.ZodNumber;
1399
+ y: z.ZodNumber;
1400
+ z: z.ZodNumber;
1401
+ }, z.core.$strip>;
1402
+ axis: z.ZodObject<{
1403
+ x: z.ZodNumber;
1404
+ y: z.ZodNumber;
1405
+ z: z.ZodNumber;
1406
+ }, z.core.$strip>;
1407
+ }, z.core.$strip>], "curveType">>;
1408
+ }, z.core.$strip>>;
1409
+ extrudeHeight: z.ZodOptional<z.ZodNumber>;
1410
+ properties: z.ZodOptional<z.ZodObject<{
1411
+ room_type: z.ZodOptional<z.ZodString>;
1412
+ massType: z.ZodOptional<z.ZodEnum<{
1413
+ Room: "Room";
1414
+ Plinth: "Plinth";
1415
+ Void: "Void";
1416
+ Pergola: "Pergola";
1417
+ Furniture: "Furniture";
1418
+ "Facade element": "Facade element";
1419
+ "Generic mass": "Generic mass";
1420
+ Department: "Department";
1421
+ Building: "Building";
1422
+ "Revit Import": "Revit Import";
1423
+ Mass: "Mass";
1424
+ Site: "Site";
1425
+ }>>;
1426
+ spaceType: z.ZodOptional<z.ZodEnum<{
1427
+ Room: "Room";
1428
+ "Program Block": "Program Block";
1429
+ Balcony: "Balcony";
1430
+ Road: "Road";
1431
+ Garden: "Garden";
1432
+ Deck: "Deck";
1433
+ Pool: "Pool";
1434
+ Walkway: "Walkway";
1435
+ Envelope: "Envelope";
1436
+ Parking: "Parking";
1437
+ }>>;
1438
+ departmentId: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
1439
+ DEFAULT: "DEFAULT";
1440
+ SITE: "SITE";
1441
+ ENVELOPE: "ENVELOPE";
1442
+ CORE: "CORE";
1443
+ }>, z.ZodUUID]>>;
1444
+ }, z.core.$strip>>;
1445
+ }, z.core.$strip>>;
1446
+ }, z.core.$strip>;
1447
+ export type PluginSpaceBulkUpdateArgs = z.infer<typeof PluginSpaceBulkUpdateArgs>;
1448
+ /**
1449
+ * Result of {@linkcode PluginSpaceApi.bulkUpdate}.
1450
+ *
1451
+ * Echoes one {@linkcode PluginSpaceUpdateResult} per item, in input order —
1452
+ * the same per-space shape returned by {@linkcode PluginSpaceApi.update}.
1453
+ *
1454
+ * | Property | Type | Description |
1455
+ * |---|---|---|
1456
+ * | `spaces` | {@linkcode PluginSpaceUpdateResult}`[]` | Per-item updated values, in input order |
1457
+ */
1458
+ export declare const PluginSpaceBulkUpdateResult: z.ZodObject<{
1459
+ spaces: z.ZodArray<z.ZodObject<{
1460
+ spaceId: z.ZodString;
1461
+ room_type: z.ZodOptional<z.ZodString>;
1462
+ massType: z.ZodOptional<z.ZodString>;
1463
+ spaceType: z.ZodOptional<z.ZodString>;
1464
+ departmentId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1465
+ }, z.core.$strip>>;
1466
+ }, z.core.$strip>;
1467
+ export type PluginSpaceBulkUpdateResult = z.infer<typeof PluginSpaceBulkUpdateResult>;
1468
+ /**
1469
+ * Arguments for {@linkcode PluginSpaceApi.bulkDelete}.
1470
+ *
1471
+ * | Property | Type | Description |
1472
+ * |---|---|---|
1473
+ * | `spaceIds` | `string[]` | The space IDs to delete |
1474
+ */
1475
+ export declare const PluginSpaceBulkDeleteArgs: z.ZodObject<{
1476
+ spaceIds: z.ZodArray<z.ZodString>;
1477
+ }, z.core.$strip>;
1478
+ export type PluginSpaceBulkDeleteArgs = z.infer<typeof PluginSpaceBulkDeleteArgs>;
1479
+ /**
1480
+ * Result of {@linkcode PluginSpaceApi.bulkDelete}.
1481
+ *
1482
+ * | Property | Type | Description |
1483
+ * |---|---|---|
1484
+ * | `deletedSpaceIds` | `string[]` | The space IDs that were removed |
1485
+ */
1486
+ export declare const PluginSpaceBulkDeleteResult: z.ZodObject<{
1487
+ deletedSpaceIds: z.ZodArray<z.ZodString>;
1488
+ }, z.core.$strip>;
1489
+ export type PluginSpaceBulkDeleteResult = z.infer<typeof PluginSpaceBulkDeleteResult>;
816
1490
  //# sourceMappingURL=space.d.ts.map