@onlyworlds/sdk 2.2.3 → 3.0.0

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/dist/index.d.mts CHANGED
@@ -10,17 +10,17 @@ type Brand<B> = {
10
10
  * Branded type for element IDs - ensures type safety for relationships
11
11
  * @template T The element type this ID references
12
12
  */
13
- type ElementId<T extends ElementType> = string & Brand<T>;
13
+ type ElementId<T extends ElementType$1> = string & Brand<T>;
14
14
  /**
15
15
  * Branded type for arrays of element IDs
16
16
  * @template T The element type these IDs reference
17
17
  */
18
- type ElementIds<T extends ElementType> = ElementId<T>[];
18
+ type ElementIds<T extends ElementType$1> = ElementId<T>[];
19
19
  /**
20
20
  * Special type for IDs that can reference ANY element type
21
21
  * Used in cases like Pin.element_type where the target can be any OnlyWorlds element
22
22
  */
23
- type AnyElementId = ElementId<ElementType>;
23
+ type AnyElementId = ElementId<ElementType$1>;
24
24
  /**
25
25
  * Base fields shared by all OnlyWorlds elements
26
26
  */
@@ -79,16 +79,16 @@ interface Ability extends BaseElement {
79
79
  duration?: number;
80
80
  potency?: number;
81
81
  range?: number;
82
- effects?: ElementIds<ElementType.Phenomenon>;
82
+ effects?: ElementIds<ElementType$1.Phenomenon>;
83
83
  challenges?: string;
84
- talents?: ElementIds<ElementType.Trait>;
85
- requisites?: ElementIds<ElementType.Construct>;
84
+ talents?: ElementIds<ElementType$1.Trait>;
85
+ requisites?: ElementIds<ElementType$1.Construct>;
86
86
  prevalence?: string;
87
- tradition?: ElementId<ElementType.Construct>;
88
- source?: ElementId<ElementType.Phenomenon>;
89
- locus?: ElementId<ElementType.Location>;
90
- instruments?: ElementIds<ElementType.Object>;
91
- systems?: ElementIds<ElementType.Construct>;
87
+ tradition?: ElementId<ElementType$1.Construct>;
88
+ source?: ElementId<ElementType$1.Phenomenon>;
89
+ locus?: ElementId<ElementType$1.Location>;
90
+ instruments?: ElementIds<ElementType$1.Object>;
91
+ systems?: ElementIds<ElementType$1.Construct>;
92
92
  }
93
93
  /**
94
94
  * Object element type
@@ -98,17 +98,17 @@ interface Object$1 extends BaseElement {
98
98
  aesthetics?: string;
99
99
  weight?: number;
100
100
  amount?: number;
101
- parent_object?: ElementId<ElementType.Object>;
102
- materials?: ElementIds<ElementType.Construct>;
103
- technology?: ElementIds<ElementType.Construct>;
101
+ parent_object?: ElementId<ElementType$1.Object>;
102
+ materials?: ElementIds<ElementType$1.Construct>;
103
+ technology?: ElementIds<ElementType$1.Construct>;
104
104
  utility?: string;
105
- effects?: ElementIds<ElementType.Phenomenon>;
106
- abilities?: ElementIds<ElementType.Ability>;
107
- consumes?: ElementIds<ElementType.Construct>;
105
+ effects?: ElementIds<ElementType$1.Phenomenon>;
106
+ abilities?: ElementIds<ElementType$1.Ability>;
107
+ consumes?: ElementIds<ElementType$1.Construct>;
108
108
  origins?: string;
109
- location?: ElementId<ElementType.Location>;
110
- language?: ElementId<ElementType.Language>;
111
- affinities?: ElementIds<ElementType.Trait>;
109
+ location?: ElementId<ElementType$1.Location>;
110
+ language?: ElementId<ElementType$1.Language>;
111
+ affinities?: ElementIds<ElementType$1.Trait>;
112
112
  }
113
113
  /**
114
114
  * Character element type
@@ -119,27 +119,27 @@ interface Character extends BaseElement {
119
119
  mentality?: string;
120
120
  height?: number;
121
121
  weight?: number;
122
- species?: ElementIds<ElementType.Species>;
123
- traits?: ElementIds<ElementType.Trait>;
124
- abilities?: ElementIds<ElementType.Ability>;
122
+ species?: ElementIds<ElementType$1.Species>;
123
+ traits?: ElementIds<ElementType$1.Trait>;
124
+ abilities?: ElementIds<ElementType$1.Ability>;
125
125
  background?: string;
126
126
  motivations?: string;
127
127
  birth_date?: number;
128
- birthplace?: ElementId<ElementType.Location>;
129
- languages?: ElementIds<ElementType.Language>;
128
+ birthplace?: ElementId<ElementType$1.Location>;
129
+ languages?: ElementIds<ElementType$1.Language>;
130
130
  reputation?: string;
131
- location?: ElementId<ElementType.Location>;
132
- objects?: ElementIds<ElementType.Object>;
133
- institutions?: ElementIds<ElementType.Institution>;
131
+ location?: ElementId<ElementType$1.Location>;
132
+ objects?: ElementIds<ElementType$1.Object>;
133
+ institutions?: ElementIds<ElementType$1.Institution>;
134
134
  charisma?: number;
135
135
  coercion?: number;
136
136
  competence?: number;
137
137
  compassion?: number;
138
138
  creativity?: number;
139
139
  courage?: number;
140
- family?: ElementIds<ElementType.Family>;
141
- friends?: ElementIds<ElementType.Character>;
142
- rivals?: ElementIds<ElementType.Character>;
140
+ family?: ElementIds<ElementType$1.Family>;
141
+ friends?: ElementIds<ElementType$1.Character>;
142
+ rivals?: ElementIds<ElementType$1.Character>;
143
143
  level?: number;
144
144
  hit_points?: number;
145
145
  STR?: number;
@@ -157,17 +157,17 @@ interface Collective extends BaseElement {
157
157
  composition?: string;
158
158
  count?: number;
159
159
  formation_date?: number;
160
- operator?: ElementId<ElementType.Institution>;
161
- equipment?: ElementIds<ElementType.Construct>;
160
+ operator?: ElementId<ElementType$1.Institution>;
161
+ equipment?: ElementIds<ElementType$1.Construct>;
162
162
  activity?: string;
163
163
  disposition?: string;
164
164
  state?: string;
165
- abilities?: ElementIds<ElementType.Ability>;
166
- symbolism?: ElementIds<ElementType.Construct>;
167
- species?: ElementIds<ElementType.Species>;
168
- characters?: ElementIds<ElementType.Character>;
169
- creatures?: ElementIds<ElementType.Creature>;
170
- phenomena?: ElementIds<ElementType.Phenomenon>;
165
+ abilities?: ElementIds<ElementType$1.Ability>;
166
+ symbolism?: ElementIds<ElementType$1.Construct>;
167
+ species?: ElementIds<ElementType$1.Species>;
168
+ characters?: ElementIds<ElementType$1.Character>;
169
+ creatures?: ElementIds<ElementType$1.Creature>;
170
+ phenomena?: ElementIds<ElementType$1.Phenomenon>;
171
171
  }
172
172
  /**
173
173
  * Construct element type
@@ -180,26 +180,26 @@ interface Construct extends BaseElement {
180
180
  reach?: string;
181
181
  start_date?: number;
182
182
  end_date?: number;
183
- founder?: ElementId<ElementType.Character>;
184
- custodian?: ElementId<ElementType.Institution>;
185
- characters?: ElementIds<ElementType.Character>;
186
- objects?: ElementIds<ElementType.Object>;
187
- locations?: ElementIds<ElementType.Location>;
188
- species?: ElementIds<ElementType.Species>;
189
- creatures?: ElementIds<ElementType.Creature>;
190
- institutions?: ElementIds<ElementType.Institution>;
191
- traits?: ElementIds<ElementType.Trait>;
192
- collectives?: ElementIds<ElementType.Collective>;
193
- zones?: ElementIds<ElementType.Zone>;
194
- abilities?: ElementIds<ElementType.Ability>;
195
- phenomena?: ElementIds<ElementType.Phenomenon>;
196
- languages?: ElementIds<ElementType.Language>;
197
- families?: ElementIds<ElementType.Family>;
198
- relations?: ElementIds<ElementType.Relation>;
199
- titles?: ElementIds<ElementType.Title>;
200
- constructs?: ElementIds<ElementType.Construct>;
201
- events?: ElementIds<ElementType.Event>;
202
- narratives?: ElementIds<ElementType.Narrative>;
183
+ founder?: ElementId<ElementType$1.Character>;
184
+ custodian?: ElementId<ElementType$1.Institution>;
185
+ characters?: ElementIds<ElementType$1.Character>;
186
+ objects?: ElementIds<ElementType$1.Object>;
187
+ locations?: ElementIds<ElementType$1.Location>;
188
+ species?: ElementIds<ElementType$1.Species>;
189
+ creatures?: ElementIds<ElementType$1.Creature>;
190
+ institutions?: ElementIds<ElementType$1.Institution>;
191
+ traits?: ElementIds<ElementType$1.Trait>;
192
+ collectives?: ElementIds<ElementType$1.Collective>;
193
+ zones?: ElementIds<ElementType$1.Zone>;
194
+ abilities?: ElementIds<ElementType$1.Ability>;
195
+ phenomena?: ElementIds<ElementType$1.Phenomenon>;
196
+ languages?: ElementIds<ElementType$1.Language>;
197
+ families?: ElementIds<ElementType$1.Family>;
198
+ relations?: ElementIds<ElementType$1.Relation>;
199
+ titles?: ElementIds<ElementType$1.Title>;
200
+ constructs?: ElementIds<ElementType$1.Construct>;
201
+ events?: ElementIds<ElementType$1.Event>;
202
+ narratives?: ElementIds<ElementType$1.Narrative>;
203
203
  }
204
204
  /**
205
205
  * Creature element type
@@ -209,21 +209,21 @@ interface Creature extends BaseElement {
209
209
  appearance?: string;
210
210
  weight?: number;
211
211
  height?: number;
212
- species?: ElementIds<ElementType.Species>;
212
+ species?: ElementIds<ElementType$1.Species>;
213
213
  habits?: string;
214
214
  demeanor?: string;
215
- traits?: ElementIds<ElementType.Trait>;
216
- abilities?: ElementIds<ElementType.Ability>;
217
- languages?: ElementIds<ElementType.Language>;
215
+ traits?: ElementIds<ElementType$1.Trait>;
216
+ abilities?: ElementIds<ElementType$1.Ability>;
217
+ languages?: ElementIds<ElementType$1.Language>;
218
218
  status?: string;
219
219
  birth_date?: number;
220
- location?: ElementId<ElementType.Location>;
221
- zone?: ElementId<ElementType.Zone>;
220
+ location?: ElementId<ElementType$1.Location>;
221
+ zone?: ElementId<ElementType$1.Zone>;
222
222
  challenge_rating?: number;
223
223
  hit_points?: number;
224
224
  armor_class?: number;
225
225
  speed?: number;
226
- actions?: ElementIds<ElementType.Ability>;
226
+ actions?: ElementIds<ElementType$1.Ability>;
227
227
  }
228
228
  /**
229
229
  * Event element type
@@ -235,23 +235,23 @@ interface Event extends BaseElement {
235
235
  consequences?: string;
236
236
  start_date?: number;
237
237
  end_date?: number;
238
- triggers?: ElementIds<ElementType.Event>;
239
- characters?: ElementIds<ElementType.Character>;
240
- objects?: ElementIds<ElementType.Object>;
241
- locations?: ElementIds<ElementType.Location>;
242
- species?: ElementIds<ElementType.Species>;
243
- creatures?: ElementIds<ElementType.Creature>;
244
- institutions?: ElementIds<ElementType.Institution>;
245
- traits?: ElementIds<ElementType.Trait>;
246
- collectives?: ElementIds<ElementType.Collective>;
247
- zones?: ElementIds<ElementType.Zone>;
248
- abilities?: ElementIds<ElementType.Ability>;
249
- phenomena?: ElementIds<ElementType.Phenomenon>;
250
- languages?: ElementIds<ElementType.Language>;
251
- families?: ElementIds<ElementType.Family>;
252
- relations?: ElementIds<ElementType.Relation>;
253
- titles?: ElementIds<ElementType.Title>;
254
- constructs?: ElementIds<ElementType.Construct>;
238
+ triggers?: ElementIds<ElementType$1.Event>;
239
+ characters?: ElementIds<ElementType$1.Character>;
240
+ objects?: ElementIds<ElementType$1.Object>;
241
+ locations?: ElementIds<ElementType$1.Location>;
242
+ species?: ElementIds<ElementType$1.Species>;
243
+ creatures?: ElementIds<ElementType$1.Creature>;
244
+ institutions?: ElementIds<ElementType$1.Institution>;
245
+ traits?: ElementIds<ElementType$1.Trait>;
246
+ collectives?: ElementIds<ElementType$1.Collective>;
247
+ zones?: ElementIds<ElementType$1.Zone>;
248
+ abilities?: ElementIds<ElementType$1.Ability>;
249
+ phenomena?: ElementIds<ElementType$1.Phenomenon>;
250
+ languages?: ElementIds<ElementType$1.Language>;
251
+ families?: ElementIds<ElementType$1.Family>;
252
+ relations?: ElementIds<ElementType$1.Relation>;
253
+ titles?: ElementIds<ElementType$1.Title>;
254
+ constructs?: ElementIds<ElementType$1.Construct>;
255
255
  }
256
256
  /**
257
257
  * Family element type
@@ -260,16 +260,16 @@ interface Event extends BaseElement {
260
260
  interface Family extends BaseElement {
261
261
  spirit?: string;
262
262
  history?: string;
263
- traditions?: ElementIds<ElementType.Construct>;
264
- traits?: ElementIds<ElementType.Trait>;
265
- abilities?: ElementIds<ElementType.Ability>;
266
- languages?: ElementIds<ElementType.Language>;
267
- ancestors?: ElementIds<ElementType.Character>;
263
+ traditions?: ElementIds<ElementType$1.Construct>;
264
+ traits?: ElementIds<ElementType$1.Trait>;
265
+ abilities?: ElementIds<ElementType$1.Ability>;
266
+ languages?: ElementIds<ElementType$1.Language>;
267
+ ancestors?: ElementIds<ElementType$1.Character>;
268
268
  reputation?: string;
269
- estates?: ElementIds<ElementType.Location>;
270
- governs?: ElementIds<ElementType.Institution>;
271
- heirlooms?: ElementIds<ElementType.Object>;
272
- creatures?: ElementIds<ElementType.Creature>;
269
+ estates?: ElementIds<ElementType$1.Location>;
270
+ governs?: ElementIds<ElementType$1.Institution>;
271
+ heirlooms?: ElementIds<ElementType$1.Object>;
272
+ creatures?: ElementIds<ElementType$1.Creature>;
273
273
  }
274
274
  /**
275
275
  * Institution element type
@@ -278,14 +278,14 @@ interface Family extends BaseElement {
278
278
  interface Institution extends BaseElement {
279
279
  doctrine?: string;
280
280
  founding_date?: number;
281
- parent_institution?: ElementId<ElementType.Institution>;
282
- zones?: ElementIds<ElementType.Zone>;
283
- objects?: ElementIds<ElementType.Object>;
284
- creatures?: ElementIds<ElementType.Creature>;
281
+ parent_institution?: ElementId<ElementType$1.Institution>;
282
+ zones?: ElementIds<ElementType$1.Zone>;
283
+ objects?: ElementIds<ElementType$1.Object>;
284
+ creatures?: ElementIds<ElementType$1.Creature>;
285
285
  status?: string;
286
- allies?: ElementIds<ElementType.Institution>;
287
- adversaries?: ElementIds<ElementType.Institution>;
288
- constructs?: ElementIds<ElementType.Construct>;
286
+ allies?: ElementIds<ElementType$1.Institution>;
287
+ adversaries?: ElementIds<ElementType$1.Institution>;
288
+ constructs?: ElementIds<ElementType$1.Construct>;
289
289
  }
290
290
  /**
291
291
  * Language element type
@@ -296,10 +296,10 @@ interface Language extends BaseElement {
296
296
  grammar?: string;
297
297
  lexicon?: string;
298
298
  writing?: string;
299
- classification?: ElementId<ElementType.Construct>;
299
+ classification?: ElementId<ElementType$1.Construct>;
300
300
  status?: string;
301
- spread?: ElementIds<ElementType.Location>;
302
- dialects?: ElementIds<ElementType.Language>;
301
+ spread?: ElementIds<ElementType$1.Location>;
302
+ dialects?: ElementIds<ElementType$1.Language>;
303
303
  }
304
304
  /**
305
305
  * Law element type
@@ -309,14 +309,14 @@ interface Law extends BaseElement {
309
309
  declaration?: string;
310
310
  purpose?: string;
311
311
  date?: number;
312
- parent_law?: ElementId<ElementType.Law>;
313
- penalties?: ElementIds<ElementType.Construct>;
314
- author?: ElementId<ElementType.Institution>;
315
- locations?: ElementIds<ElementType.Location>;
316
- zones?: ElementIds<ElementType.Zone>;
317
- prohibitions?: ElementIds<ElementType.Construct>;
318
- adjudicators?: ElementIds<ElementType.Title>;
319
- enforcers?: ElementIds<ElementType.Title>;
312
+ parent_law?: ElementId<ElementType$1.Law>;
313
+ penalties?: ElementIds<ElementType$1.Construct>;
314
+ author?: ElementId<ElementType$1.Institution>;
315
+ locations?: ElementIds<ElementType$1.Location>;
316
+ zones?: ElementIds<ElementType$1.Zone>;
317
+ prohibitions?: ElementIds<ElementType$1.Construct>;
318
+ adjudicators?: ElementIds<ElementType$1.Title>;
319
+ enforcers?: ElementIds<ElementType$1.Title>;
320
320
  }
321
321
  /**
322
322
  * Location element type
@@ -326,34 +326,34 @@ interface Location extends BaseElement {
326
326
  form?: string;
327
327
  function?: string;
328
328
  founding_date?: number;
329
- parent_location?: ElementId<ElementType.Location>;
330
- populations?: ElementIds<ElementType.Collective>;
329
+ parent_location?: ElementId<ElementType$1.Location>;
330
+ populations?: ElementIds<ElementType$1.Collective>;
331
331
  political_climate?: string;
332
- primary_power?: ElementId<ElementType.Institution>;
333
- governing_title?: ElementId<ElementType.Title>;
334
- secondary_powers?: ElementIds<ElementType.Institution>;
335
- zone?: ElementId<ElementType.Zone>;
336
- rival?: ElementId<ElementType.Location>;
337
- partner?: ElementId<ElementType.Location>;
332
+ primary_power?: ElementId<ElementType$1.Institution>;
333
+ governing_title?: ElementId<ElementType$1.Title>;
334
+ secondary_powers?: ElementIds<ElementType$1.Institution>;
335
+ zone?: ElementId<ElementType$1.Zone>;
336
+ rival?: ElementId<ElementType$1.Location>;
337
+ partner?: ElementId<ElementType$1.Location>;
338
338
  customs?: string;
339
- founders?: ElementIds<ElementType.Character>;
340
- cults?: ElementIds<ElementType.Construct>;
341
- delicacies?: ElementIds<ElementType.Species>;
342
- extraction_methods?: ElementIds<ElementType.Construct>;
343
- extraction_goods?: ElementIds<ElementType.Construct>;
344
- industry_methods?: ElementIds<ElementType.Construct>;
345
- industry_goods?: ElementIds<ElementType.Construct>;
339
+ founders?: ElementIds<ElementType$1.Character>;
340
+ cults?: ElementIds<ElementType$1.Construct>;
341
+ delicacies?: ElementIds<ElementType$1.Species>;
342
+ extraction_methods?: ElementIds<ElementType$1.Construct>;
343
+ extraction_goods?: ElementIds<ElementType$1.Construct>;
344
+ industry_methods?: ElementIds<ElementType$1.Construct>;
345
+ industry_goods?: ElementIds<ElementType$1.Construct>;
346
346
  infrastructure?: string;
347
- extraction_markets?: ElementIds<ElementType.Location>;
348
- industry_markets?: ElementIds<ElementType.Location>;
349
- currencies?: ElementIds<ElementType.Construct>;
347
+ extraction_markets?: ElementIds<ElementType$1.Location>;
348
+ industry_markets?: ElementIds<ElementType$1.Location>;
349
+ currencies?: ElementIds<ElementType$1.Construct>;
350
350
  architecture?: string;
351
- buildings?: ElementIds<ElementType.Object>;
352
- building_methods?: ElementIds<ElementType.Construct>;
351
+ buildings?: ElementIds<ElementType$1.Object>;
352
+ building_methods?: ElementIds<ElementType$1.Construct>;
353
353
  defensibility?: string;
354
354
  elevation?: number;
355
- fighters?: ElementIds<ElementType.Construct>;
356
- defensive_objects?: ElementIds<ElementType.Object>;
355
+ fighters?: ElementIds<ElementType$1.Construct>;
356
+ defensive_objects?: ElementIds<ElementType$1.Object>;
357
357
  }
358
358
  /**
359
359
  * Phenomenon element type
@@ -363,13 +363,13 @@ interface Phenomenon extends BaseElement {
363
363
  expression?: string;
364
364
  effects?: string;
365
365
  duration?: number;
366
- catalysts?: ElementIds<ElementType.Object>;
367
- empowerments?: ElementIds<ElementType.Ability>;
366
+ catalysts?: ElementIds<ElementType$1.Object>;
367
+ empowerments?: ElementIds<ElementType$1.Ability>;
368
368
  mythology?: string;
369
- system?: ElementId<ElementType.Phenomenon>;
370
- triggers?: ElementIds<ElementType.Construct>;
371
- wielders?: ElementIds<ElementType.Character>;
372
- environments?: ElementIds<ElementType.Location>;
369
+ system?: ElementId<ElementType$1.Phenomenon>;
370
+ triggers?: ElementIds<ElementType$1.Construct>;
371
+ wielders?: ElementIds<ElementType$1.Character>;
372
+ environments?: ElementIds<ElementType$1.Location>;
373
373
  }
374
374
  /**
375
375
  * Relation element type
@@ -380,24 +380,24 @@ interface Relation extends BaseElement {
380
380
  start_date?: number;
381
381
  end_date?: number;
382
382
  intensity?: number;
383
- actor?: ElementId<ElementType.Character>;
384
- events?: ElementIds<ElementType.Event>;
385
- characters?: ElementIds<ElementType.Character>;
386
- objects?: ElementIds<ElementType.Object>;
387
- locations?: ElementIds<ElementType.Location>;
388
- species?: ElementIds<ElementType.Species>;
389
- creatures?: ElementIds<ElementType.Creature>;
390
- institutions?: ElementIds<ElementType.Institution>;
391
- traits?: ElementIds<ElementType.Trait>;
392
- collectives?: ElementIds<ElementType.Collective>;
393
- zones?: ElementIds<ElementType.Zone>;
394
- abilities?: ElementIds<ElementType.Ability>;
395
- phenomena?: ElementIds<ElementType.Phenomenon>;
396
- languages?: ElementIds<ElementType.Language>;
397
- families?: ElementIds<ElementType.Family>;
398
- titles?: ElementIds<ElementType.Title>;
399
- constructs?: ElementIds<ElementType.Construct>;
400
- narratives?: ElementIds<ElementType.Narrative>;
383
+ actor?: ElementId<ElementType$1.Character>;
384
+ events?: ElementIds<ElementType$1.Event>;
385
+ characters?: ElementIds<ElementType$1.Character>;
386
+ objects?: ElementIds<ElementType$1.Object>;
387
+ locations?: ElementIds<ElementType$1.Location>;
388
+ species?: ElementIds<ElementType$1.Species>;
389
+ creatures?: ElementIds<ElementType$1.Creature>;
390
+ institutions?: ElementIds<ElementType$1.Institution>;
391
+ traits?: ElementIds<ElementType$1.Trait>;
392
+ collectives?: ElementIds<ElementType$1.Collective>;
393
+ zones?: ElementIds<ElementType$1.Zone>;
394
+ abilities?: ElementIds<ElementType$1.Ability>;
395
+ phenomena?: ElementIds<ElementType$1.Phenomenon>;
396
+ languages?: ElementIds<ElementType$1.Language>;
397
+ families?: ElementIds<ElementType$1.Family>;
398
+ titles?: ElementIds<ElementType$1.Title>;
399
+ constructs?: ElementIds<ElementType$1.Construct>;
400
+ narratives?: ElementIds<ElementType$1.Narrative>;
401
401
  }
402
402
  /**
403
403
  * Species element type
@@ -407,20 +407,20 @@ interface Species extends BaseElement {
407
407
  appearance?: string;
408
408
  life_span?: number;
409
409
  weight?: number;
410
- nourishment?: ElementIds<ElementType.Species>;
411
- reproduction?: ElementIds<ElementType.Construct>;
412
- adaptations?: ElementIds<ElementType.Ability>;
410
+ nourishment?: ElementIds<ElementType$1.Species>;
411
+ reproduction?: ElementIds<ElementType$1.Construct>;
412
+ adaptations?: ElementIds<ElementType$1.Ability>;
413
413
  instincts?: string;
414
414
  sociality?: string;
415
415
  temperament?: string;
416
416
  communication?: string;
417
417
  aggression?: number;
418
- traits?: ElementIds<ElementType.Trait>;
418
+ traits?: ElementIds<ElementType$1.Trait>;
419
419
  role?: string;
420
- parent_species?: ElementId<ElementType.Species>;
421
- locations?: ElementIds<ElementType.Location>;
422
- zones?: ElementIds<ElementType.Zone>;
423
- affinities?: ElementIds<ElementType.Phenomenon>;
420
+ parent_species?: ElementId<ElementType$1.Species>;
421
+ locations?: ElementIds<ElementType$1.Location>;
422
+ zones?: ElementIds<ElementType$1.Zone>;
423
+ affinities?: ElementIds<ElementType$1.Phenomenon>;
424
424
  }
425
425
  /**
426
426
  * Zone element type
@@ -430,12 +430,12 @@ interface Zone extends BaseElement {
430
430
  role?: string;
431
431
  start_date?: number;
432
432
  end_date?: number;
433
- phenomena?: ElementIds<ElementType.Phenomenon>;
434
- linked_zones?: ElementIds<ElementType.Zone>;
433
+ phenomena?: ElementIds<ElementType$1.Phenomenon>;
434
+ linked_zones?: ElementIds<ElementType$1.Zone>;
435
435
  context?: string;
436
- populations?: ElementIds<ElementType.Collective>;
437
- titles?: ElementIds<ElementType.Title>;
438
- principles?: ElementIds<ElementType.Construct>;
436
+ populations?: ElementIds<ElementType$1.Collective>;
437
+ titles?: ElementIds<ElementType$1.Title>;
438
+ principles?: ElementIds<ElementType$1.Construct>;
439
439
  }
440
440
  /**
441
441
  * Title element type
@@ -446,26 +446,26 @@ interface Title extends BaseElement {
446
446
  eligibility?: string;
447
447
  grant_date?: number;
448
448
  revoke_date?: number;
449
- issuer?: ElementId<ElementType.Institution>;
450
- body?: ElementId<ElementType.Institution>;
451
- superior_title?: ElementId<ElementType.Title>;
452
- holders?: ElementIds<ElementType.Character>;
453
- symbols?: ElementIds<ElementType.Object>;
449
+ issuer?: ElementId<ElementType$1.Institution>;
450
+ body?: ElementId<ElementType$1.Institution>;
451
+ superior_title?: ElementId<ElementType$1.Title>;
452
+ holders?: ElementIds<ElementType$1.Character>;
453
+ symbols?: ElementIds<ElementType$1.Object>;
454
454
  status?: string;
455
455
  history?: string;
456
- characters?: ElementIds<ElementType.Character>;
457
- institutions?: ElementIds<ElementType.Institution>;
458
- families?: ElementIds<ElementType.Family>;
459
- zones?: ElementIds<ElementType.Zone>;
460
- locations?: ElementIds<ElementType.Location>;
461
- objects?: ElementIds<ElementType.Object>;
462
- constructs?: ElementIds<ElementType.Construct>;
463
- laws?: ElementIds<ElementType.Law>;
464
- collectives?: ElementIds<ElementType.Collective>;
465
- creatures?: ElementIds<ElementType.Creature>;
466
- phenomena?: ElementIds<ElementType.Phenomenon>;
467
- species?: ElementIds<ElementType.Species>;
468
- languages?: ElementIds<ElementType.Language>;
456
+ characters?: ElementIds<ElementType$1.Character>;
457
+ institutions?: ElementIds<ElementType$1.Institution>;
458
+ families?: ElementIds<ElementType$1.Family>;
459
+ zones?: ElementIds<ElementType$1.Zone>;
460
+ locations?: ElementIds<ElementType$1.Location>;
461
+ objects?: ElementIds<ElementType$1.Object>;
462
+ constructs?: ElementIds<ElementType$1.Construct>;
463
+ laws?: ElementIds<ElementType$1.Law>;
464
+ collectives?: ElementIds<ElementType$1.Collective>;
465
+ creatures?: ElementIds<ElementType$1.Creature>;
466
+ phenomena?: ElementIds<ElementType$1.Phenomenon>;
467
+ species?: ElementIds<ElementType$1.Species>;
468
+ languages?: ElementIds<ElementType$1.Language>;
469
469
  }
470
470
  /**
471
471
  * Trait element type
@@ -484,8 +484,8 @@ interface Trait extends BaseElement {
484
484
  creativity?: number;
485
485
  courage?: number;
486
486
  significance?: string;
487
- anti_trait?: ElementId<ElementType.Trait>;
488
- empowered_abilities?: ElementIds<ElementType.Ability>;
487
+ anti_trait?: ElementId<ElementType$1.Trait>;
488
+ empowered_abilities?: ElementIds<ElementType$1.Ability>;
489
489
  }
490
490
  /**
491
491
  * Narrative element type
@@ -497,29 +497,29 @@ interface Narrative extends BaseElement {
497
497
  start_date?: number;
498
498
  end_date?: number;
499
499
  order?: number;
500
- parent_narrative?: ElementId<ElementType.Narrative>;
501
- protagonist?: ElementId<ElementType.Character>;
502
- antagonist?: ElementId<ElementType.Character>;
503
- narrator?: ElementId<ElementType.Character>;
504
- conservator?: ElementId<ElementType.Institution>;
505
- events?: ElementIds<ElementType.Event>;
506
- characters?: ElementIds<ElementType.Character>;
507
- objects?: ElementIds<ElementType.Object>;
508
- locations?: ElementIds<ElementType.Location>;
509
- species?: ElementIds<ElementType.Species>;
510
- creatures?: ElementIds<ElementType.Creature>;
511
- institutions?: ElementIds<ElementType.Institution>;
512
- traits?: ElementIds<ElementType.Trait>;
513
- collectives?: ElementIds<ElementType.Collective>;
514
- zones?: ElementIds<ElementType.Zone>;
515
- abilities?: ElementIds<ElementType.Ability>;
516
- phenomena?: ElementIds<ElementType.Phenomenon>;
517
- languages?: ElementIds<ElementType.Language>;
518
- families?: ElementIds<ElementType.Family>;
519
- relations?: ElementIds<ElementType.Relation>;
520
- titles?: ElementIds<ElementType.Title>;
521
- constructs?: ElementIds<ElementType.Construct>;
522
- laws?: ElementIds<ElementType.Law>;
500
+ parent_narrative?: ElementId<ElementType$1.Narrative>;
501
+ protagonist?: ElementId<ElementType$1.Character>;
502
+ antagonist?: ElementId<ElementType$1.Character>;
503
+ narrator?: ElementId<ElementType$1.Character>;
504
+ conservator?: ElementId<ElementType$1.Institution>;
505
+ events?: ElementIds<ElementType$1.Event>;
506
+ characters?: ElementIds<ElementType$1.Character>;
507
+ objects?: ElementIds<ElementType$1.Object>;
508
+ locations?: ElementIds<ElementType$1.Location>;
509
+ species?: ElementIds<ElementType$1.Species>;
510
+ creatures?: ElementIds<ElementType$1.Creature>;
511
+ institutions?: ElementIds<ElementType$1.Institution>;
512
+ traits?: ElementIds<ElementType$1.Trait>;
513
+ collectives?: ElementIds<ElementType$1.Collective>;
514
+ zones?: ElementIds<ElementType$1.Zone>;
515
+ abilities?: ElementIds<ElementType$1.Ability>;
516
+ phenomena?: ElementIds<ElementType$1.Phenomenon>;
517
+ languages?: ElementIds<ElementType$1.Language>;
518
+ families?: ElementIds<ElementType$1.Family>;
519
+ relations?: ElementIds<ElementType$1.Relation>;
520
+ titles?: ElementIds<ElementType$1.Title>;
521
+ constructs?: ElementIds<ElementType$1.Construct>;
522
+ laws?: ElementIds<ElementType$1.Law>;
523
523
  }
524
524
  /**
525
525
  * Map element type
@@ -531,16 +531,16 @@ interface Map extends BaseElement {
531
531
  width?: number;
532
532
  height?: number;
533
533
  depth?: number;
534
- parent_map?: ElementId<ElementType.Map>;
535
- location?: ElementId<ElementType.Location>;
534
+ parent_map?: ElementId<ElementType$1.Map>;
535
+ location?: ElementId<ElementType$1.Location>;
536
536
  }
537
537
  /**
538
538
  * Marker element type
539
539
  * Fields organized by sections: Details
540
540
  */
541
541
  interface Marker extends BaseElement {
542
- map?: ElementId<ElementType.Map>;
543
- zone?: ElementId<ElementType.Zone>;
542
+ map?: ElementId<ElementType$1.Map>;
543
+ zone?: ElementId<ElementType$1.Zone>;
544
544
  x?: number;
545
545
  y?: number;
546
546
  z?: number;
@@ -551,8 +551,8 @@ interface Marker extends BaseElement {
551
551
  * Fields organized by sections: Details
552
552
  */
553
553
  interface Pin extends BaseElement {
554
- map?: ElementId<ElementType.Map>;
555
- element_type?: ElementType;
554
+ map?: ElementId<ElementType$1.Map>;
555
+ element_type?: ElementType$1;
556
556
  element_id?: AnyElementId;
557
557
  /**
558
558
  * X coordinate on map (must be integer)
@@ -838,7 +838,7 @@ interface PinInput extends Omit<Pin, 'map' | 'element_id'> {
838
838
  /**
839
839
  * All available element types in OnlyWorlds
840
840
  */
841
- declare enum ElementType {
841
+ declare enum ElementType$1 {
842
842
  Ability = "ability",
843
843
  Character = "character",
844
844
  Collective = "collective",
@@ -866,13 +866,13 @@ declare enum ElementType {
866
866
  * UI labels for element types - provides proper plural forms
867
867
  * Useful for displaying element type names in user interfaces
868
868
  */
869
- declare const ELEMENT_LABELS: Record<ElementType, string>;
869
+ declare const ELEMENT_LABELS: Record<ElementType$1, string>;
870
870
  /**
871
871
  * Get the plural label for an element type
872
872
  * @param elementType The element type
873
873
  * @returns The plural label string
874
874
  */
875
- declare function getElementLabel(elementType: ElementType): string;
875
+ declare function getElementLabel(elementType: ElementType$1): string;
876
876
  /**
877
877
  * Section metadata for OnlyWorlds elements
878
878
  * Source: sectioned_schema.json
@@ -886,13 +886,13 @@ interface SectionInfo {
886
886
  * Element section definitions - provides organized field groupings for each element type
887
887
  * Enables UI components to display fields in logical sections with proper ordering
888
888
  */
889
- declare const ELEMENT_SECTIONS: Record<ElementType, SectionInfo[]>;
889
+ declare const ELEMENT_SECTIONS: Record<ElementType$1, SectionInfo[]>;
890
890
  /**
891
891
  * Get sections for an element type
892
892
  * @param elementType The element type
893
893
  * @returns Array of section information for the element type
894
894
  */
895
- declare function getElementSections(elementType: ElementType): SectionInfo[];
895
+ declare function getElementSections(elementType: ElementType$1): SectionInfo[];
896
896
  /**
897
897
  * Current OnlyWorlds version
898
898
  * Synced with https://github.com/OnlyWorlds/OnlyWorlds/blob/main/VERSION
@@ -903,7 +903,7 @@ declare const ONLYWORLDS_VERSION: "00.30.00";
903
903
  * These are the uniform, monochrome icons used in the OnlyWorlds frontend
904
904
  * Compatible with Google Material Icons font
905
905
  */
906
- declare const ELEMENT_ICONS: Record<ElementType, string>;
906
+ declare const ELEMENT_ICONS: Record<ElementType$1, string>;
907
907
  /**
908
908
  * Field type definitions for OnlyWorlds elements
909
909
  */
@@ -2709,13 +2709,13 @@ declare const FIELD_SCHEMA: {
2709
2709
  * @param id The string ID to brand
2710
2710
  * @returns Branded ElementId
2711
2711
  */
2712
- declare function createElementId<T extends ElementType>(id: string): ElementId<T>;
2712
+ declare function createElementId<T extends ElementType$1>(id: string): ElementId<T>;
2713
2713
  /**
2714
2714
  * Creates typed element IDs array from string array
2715
2715
  * @param ids The string IDs to brand
2716
2716
  * @returns Branded ElementIds array
2717
2717
  */
2718
- declare function createElementIds<T extends ElementType>(ids: string[]): ElementIds<T>;
2718
+ declare function createElementIds<T extends ElementType$1>(ids: string[]): ElementIds<T>;
2719
2719
  /**
2720
2720
  * Creates an AnyElementId that can reference any element type
2721
2721
  * @param id The string ID to brand
@@ -3118,4 +3118,344 @@ declare class OnlyWorldsClient {
3118
3118
  */
3119
3119
  declare function getElementIcon(type: string): string;
3120
3120
 
3121
- export { type Ability, type AbilityInput, type AccessKeyResponse, type AnyElementId, type ApiResponse, type BaseElement, type Character, type CharacterInput, type Collective, type CollectiveInput, type Construct, type ConstructInput, type Creature, type CreatureInput, ELEMENT_ICONS, ELEMENT_LABELS, ELEMENT_SECTIONS, type ElementId, type ElementIds, ElementType, type EncryptionInfo, type Event, type EventInput, FIELD_SCHEMA, type Family, type FamilyInput, type FieldInfo, type FieldType, GameTier, type Institution, type InstitutionInput, type Language, type LanguageInput, type Law, type LawInput, type ListOptions, type Location, type LocationInput, type Map, type MapInput, type Marker, type MarkerInput, type Narrative, type NarrativeInput, ONLYWORLDS_VERSION, type Object$1 as Object, type ObjectInput, OnlyWorldsClient, type OnlyWorldsConfig, type Phenomenon, type PhenomenonInput, type Pin, type PinInput, type Relation, type RelationInput, type RevokeAllSessionsResponse, type RevokeSessionResponse, type SectionInfo, type Species, type SpeciesInput, type Title, type TitleInput, type TokenConsumeParams, type TokenConsumeResponse, type TokenStatus, type Trait, type TraitInput, type World, type WorldInput, type Zone, type ZoneInput, createAnyElementId, createElementId, createElementIds, getElementIcon, getElementLabel, getElementSections };
3121
+ /** Every element carries these. The extension index signature admits namespaced
3122
+ * pass-through fields (atlas_* / shadow_* / x_*) returned verbatim by the server. */
3123
+ interface OwElementBase {
3124
+ /** Element type slug (server-managed, read-only). */
3125
+ type: string;
3126
+ /** Unique identifier, uuidv7 format. */
3127
+ id: string;
3128
+ /** Name of the element. */
3129
+ name: string;
3130
+ /** Any kind of details about the element. */
3131
+ description?: string;
3132
+ /** The top level category to which the element belongs. */
3133
+ supertype?: string;
3134
+ /** The sub level category through which the element is further classified. */
3135
+ subtype?: string;
3136
+ /** URL to an image representing the element. */
3137
+ image_url?: string;
3138
+ /** Creation timestamp (server-managed, read-only). */
3139
+ created_at?: string;
3140
+ /** Last-update timestamp (server-managed, read-only). */
3141
+ updated_at?: string;
3142
+ /** Per-world change cursor, stamped on every write (server-managed, read-only). */
3143
+ change_seq?: number;
3144
+ /** Namespaced extension fields (atlas_* / shadow_* / x_*), returned verbatim. */
3145
+ [ext: string]: unknown;
3146
+ }
3147
+ type ElementType = 'ability' | 'character' | 'collective' | 'construct' | 'creature' | 'event' | 'family' | 'institution' | 'language' | 'law' | 'location' | 'map' | 'marker' | 'narrative' | 'object' | 'phenomenon' | 'pin' | 'relation' | 'species' | 'title' | 'trait' | 'zone';
3148
+ declare const ELEMENT_TYPES: ElementType[];
3149
+
3150
+ /**
3151
+ * keel v2 engine absorbed from Assembly's ow-v2-client v0.9.0 (Kael),
3152
+ * wire-corrected against live staging fixtures 2026-07-18.
3153
+ *
3154
+ * OnlyWorlds v2 (keel) wire types -- the NON-generated, hand-owned wire shapes
3155
+ * (envelopes, pages, bulk, changes, config). Per-type element field typing is
3156
+ * generated (types.generated.ts). One-shape principle: a field reads the way it
3157
+ * writes -- links are UUID arrays (or UUID/null), same name both directions.
3158
+ * No `_ids` suffix in v2.
3159
+ */
3160
+
3161
+ /** An element as read from / written to the v2 API. Loose base + extension keys. */
3162
+ type OwElement = OwElementBase;
3163
+ /** Spatial types live under spatial/ in the OW Folder Format. */
3164
+ declare const SPATIAL_TYPES: readonly ElementType[];
3165
+ interface OwWorldMeta {
3166
+ id: string;
3167
+ name: string;
3168
+ updated_at?: string;
3169
+ public_read?: boolean;
3170
+ [field: string]: unknown;
3171
+ }
3172
+ /** List envelope: cursor-paginated. */
3173
+ interface OwPage<T = OwElement> {
3174
+ data: T[];
3175
+ has_more: boolean;
3176
+ next_cursor: string | null;
3177
+ }
3178
+ /** /changes feed -- discriminated union on `op`. Apply in order -> convergence. */
3179
+ type OwChange = {
3180
+ op: 'upsert';
3181
+ id: string;
3182
+ type: string;
3183
+ element: OwElement;
3184
+ updated_at: string;
3185
+ [k: string]: unknown;
3186
+ } | {
3187
+ op: 'delete';
3188
+ id: string;
3189
+ type: string;
3190
+ deleted_at: string;
3191
+ [k: string]: unknown;
3192
+ };
3193
+ /**
3194
+ * /changes response. Wire shape verified in keel source (core/changes.py) and
3195
+ * pinned here: {cursor, changes, has_more, head}.
3196
+ */
3197
+ interface OwChangesPage {
3198
+ /** Opaque compound cursor -- persist verbatim, never parse, never expires. */
3199
+ cursor: string;
3200
+ changes: OwChange[];
3201
+ has_more: boolean;
3202
+ /**
3203
+ * World's current change_seq. If a persisted cursor is ever AHEAD of head,
3204
+ * the server rewound (disaster restore) -- re-baseline from cursor zero
3205
+ * instead of assuming caught-up.
3206
+ */
3207
+ head: number;
3208
+ }
3209
+ interface OwBulkItem {
3210
+ type: ElementType | string;
3211
+ element: OwElement | Record<string, unknown>;
3212
+ }
3213
+ /**
3214
+ * One slot of a /bulk response. WIRE-CORRECTED (fixtures P2a/P2c): `status` is
3215
+ * the NUMERIC HTTP status of that slot (201/400/...), success slots echo
3216
+ * created_at/updated_at, error slots carry an OwErrorBody under `error`.
3217
+ */
3218
+ interface OwBulkItemResult {
3219
+ status: number;
3220
+ id?: string;
3221
+ created_at?: string;
3222
+ updated_at?: string;
3223
+ error?: OwErrorBody;
3224
+ }
3225
+ /** The wire error envelope carried in error slots and thrown errors. */
3226
+ interface OwErrorBody {
3227
+ type?: string;
3228
+ code?: string;
3229
+ message?: string;
3230
+ param?: string | null;
3231
+ doc_url?: string;
3232
+ }
3233
+ /**
3234
+ * /bulk response. WIRE-CORRECTED (fixtures P2a/P2c): the array key is `items`,
3235
+ * not `results`. `wasReplay` is populated by the client from the (lowercase on
3236
+ * the wire) Idempotent-Replay response header (fixture P2b) -- not a wire field.
3237
+ */
3238
+ interface OwBulkResponse {
3239
+ errors: boolean;
3240
+ items: OwBulkItemResult[];
3241
+ /** Client-derived: true when the server replayed a prior Idempotency-Key. */
3242
+ wasReplay?: boolean;
3243
+ [k: string]: unknown;
3244
+ }
3245
+ interface OwLinkEdit {
3246
+ add?: string[];
3247
+ remove?: string[];
3248
+ }
3249
+ interface ListParams {
3250
+ limit?: number;
3251
+ cursor?: string;
3252
+ /** One-level stub expansion, e.g. ['friends', 'location']. */
3253
+ expand?: string[];
3254
+ /** Sparse include-set of field names. */
3255
+ fields?: string[];
3256
+ /**
3257
+ * Blessed Django-style filters: __icontains, __in, __gte, __lte, __isnull,
3258
+ * supertype/subtype equality. Unknown params 422 loudly server-side -- the
3259
+ * client passes them through and lets the platform name the typo.
3260
+ */
3261
+ filter?: Record<string, string | number | boolean>;
3262
+ }
3263
+ interface OwClientConfig {
3264
+ /** ow_w_ / ow_r_ / ow_a_ prefixed key, or grandfathered 10-digit legacy key. */
3265
+ apiKey: string;
3266
+ /**
3267
+ * Optional. Required for writes when the world has a PIN, and for legacy-key
3268
+ * reads of private worlds. Prefixed keys read PIN-less. String, not number --
3269
+ * '0123' !== 123.
3270
+ */
3271
+ apiPin?: string;
3272
+ /** Default: https://www.onlyworlds.com/api/v2 */
3273
+ baseUrl?: string;
3274
+ /**
3275
+ * Page size for element lists. Default 100 (server default; max 1000).
3276
+ * Deliberately visible in config: page size is a citizenship property.
3277
+ */
3278
+ pageSize?: number;
3279
+ /**
3280
+ * Page size for /changes pulls. Default 100. Live precedents: Obsidian 100,
3281
+ * Atlas 250, MCP 25. /changes is the platform's heaviest route -- be polite.
3282
+ */
3283
+ changesPageSize?: number;
3284
+ /** Injectable for tests / fake-keel harnesses. Defaults to globalThis.fetch. */
3285
+ fetch?: typeof globalThis.fetch;
3286
+ }
3287
+
3288
+ /**
3289
+ * keel v2 engine absorbed from Assembly's ow-v2-client v0.9.0 (Kael),
3290
+ * wire-corrected against live staging fixtures 2026-07-18.
3291
+ *
3292
+ * keel error envelope handling. The error contract is part of the contract:
3293
+ * envelopes carry a machine `code` and a `doc_url` fragment anchored at
3294
+ * onlyworlds.github.io/api/errors -- surface both, always. The live wire
3295
+ * envelope also carries `type` and `param` (fixtures P4a/P2c); both are
3296
+ * surfaced on the thrown error.
3297
+ */
3298
+ /** Auth codes are distinguishable by design; client recovery UX differs per code. */
3299
+ type OwAuthErrorCode = 'invalid_credentials' | 'key_revoked' | 'world_gone';
3300
+ declare class OwApiError extends Error {
3301
+ readonly status: number;
3302
+ /** Machine error code from the keel envelope, e.g. 'invalid_credentials'. */
3303
+ readonly code: string | null;
3304
+ /** Error family from the envelope, e.g. 'invalid_request', 'not_found'. */
3305
+ readonly type: string | null;
3306
+ /** Offending field/param named by the envelope (422/400), else null. */
3307
+ readonly param: string | null;
3308
+ /** Documentation link from the envelope -- show it to users/logs verbatim. */
3309
+ readonly docUrl: string | null;
3310
+ /** Raw parsed envelope (or body text when the body wasn't JSON). */
3311
+ readonly detail: unknown;
3312
+ constructor(status: number, code: string | null, message: string, docUrl: string | null, detail: unknown, type?: string | null, param?: string | null);
3313
+ get isAuthError(): boolean;
3314
+ /** 422s/400s name the offending param/field -- typos error loudly platform-wide. */
3315
+ get isValidationError(): boolean;
3316
+ /** Same Idempotency-Key replayed with a different payload. */
3317
+ get isIdempotencyConflict(): boolean;
3318
+ }
3319
+ /** Network-level failure (fetch rejected) -- no envelope to parse. */
3320
+ declare class OwNetworkError extends Error {
3321
+ readonly cause2: unknown;
3322
+ constructor(message: string, cause: unknown);
3323
+ }
3324
+ /** Parse a wire envelope into OwApiError parts (exported for the error type-tests). */
3325
+ declare function parseEnvelope(status: number, body: unknown): OwApiError;
3326
+ /** Build an OwApiError from a non-2xx response, tolerating non-JSON bodies. */
3327
+ declare function errorFromResponse(res: Response): Promise<OwApiError>;
3328
+
3329
+ /**
3330
+ * keel v2 engine absorbed from Assembly's ow-v2-client v0.9.0 (Kael),
3331
+ * wire-corrected against live staging fixtures 2026-07-18.
3332
+ *
3333
+ * OnlyWorlds key-kind detection. Prefixes make leaked keys grep-scannable
3334
+ * (Stripe/GitHub precedent) -- and tell a client what auth shape to expect.
3335
+ */
3336
+ type OwKeyKind =
3337
+ /** ow_w_ -- world key, read + write. Writes need the world's PIN if it has one. */
3338
+ 'write'
3339
+ /** ow_r_ -- world key, read-only, works bare (no PIN). The share-with-players primitive. */
3340
+ | 'read'
3341
+ /** ow_a_ -- account Bearer token for /account/* routes; can mint world keys. */
3342
+ | 'account'
3343
+ /** Grandfathered 10-digit key. Needs PIN to read private worlds. */
3344
+ | 'legacy' | 'unknown';
3345
+ /** Demo range 0000000000-0000000009: read-only aliases, safe as live read gates. */
3346
+ declare function isDemoKey(key: string): boolean;
3347
+ declare function detectKeyKind(key: string): OwKeyKind;
3348
+ /** Can this key kind ever perform world writes? (PIN is a separate, per-world question.) */
3349
+ declare function kindCanWrite(kind: OwKeyKind): boolean;
3350
+ /**
3351
+ * Should a credential UI ask for a PIN with this key?
3352
+ * Prefixed keys read PIN-less; legacy keys may need it; writes on pinned
3353
+ * worlds always need it. 'optional' means: show the field, don't require it.
3354
+ */
3355
+ declare function pinExpectation(kind: OwKeyKind): 'never' | 'optional' | 'required-for-private-reads';
3356
+
3357
+ /**
3358
+ * keel v2 engine absorbed from Assembly's ow-v2-client v0.9.0 (Kael),
3359
+ * wire-corrected against live staging fixtures 2026-07-18.
3360
+ *
3361
+ * OwV2Client -- thin typed fetch client for the keel v2 API.
3362
+ *
3363
+ * Deliberately thin: no caching, no sync state, no retry policy -- those belong
3364
+ * to callers (sync engines, tools, games). What IS encoded here is the wire
3365
+ * contract and its safety rails: payload read-only-field stripping, opaque
3366
+ * cursors, idempotency headers, doc_url-bearing errors, polite page sizes, and
3367
+ * client-side UUID minting so idempotent retries are structurally safe.
3368
+ */
3369
+
3370
+ declare class OwV2Client {
3371
+ readonly baseUrl: string;
3372
+ readonly keyKind: OwKeyKind;
3373
+ readonly pageSize: number;
3374
+ readonly changesPageSize: number;
3375
+ private readonly apiKey;
3376
+ private readonly apiPin;
3377
+ private readonly fetchImpl;
3378
+ constructor(config: OwClientConfig);
3379
+ /** GET /health -- unauthenticated liveness pulse. */
3380
+ health(): Promise<unknown>;
3381
+ /**
3382
+ * GET /world -- world meta (name, calendar/time fields, public_read).
3383
+ * GOTCHA (by server design): world-meta edits do NOT appear in /changes and
3384
+ * do not bump change_seq. Poll getWorld().updated_at for meta freshness.
3385
+ */
3386
+ getWorld(): Promise<OwWorldMeta>;
3387
+ /** PATCH /world -- partial world-meta update. */
3388
+ patchWorld(partial: Record<string, unknown>): Promise<OwWorldMeta>;
3389
+ /** GET /{type}/ -- one cursor page. */
3390
+ list(type: ElementType | string, params?: ListParams): Promise<OwPage>;
3391
+ /** Cursor-walk every page of a type. Politeness: uses config pageSize. */
3392
+ listAll(type: ElementType | string, params?: Omit<ListParams, 'cursor'>): AsyncGenerator<OwElement>;
3393
+ /** GET /{type}/{id}/ -- optional one-level stub expansion / sparse fields. */
3394
+ get(type: ElementType | string, id: string, opts?: Pick<ListParams, 'expand' | 'fields'>): Promise<OwElement>;
3395
+ /**
3396
+ * POST /{type}/ -- create. Mints an RFC-4122 UUID for element.id when the
3397
+ * caller omits one (design ruling D29d) so a retry carrying the same
3398
+ * Idempotency-Key is structurally safe. Callers MAY still supply their own id.
3399
+ */
3400
+ create(type: ElementType | string, element: OwElement | Record<string, unknown>, opts?: {
3401
+ idempotencyKey?: string;
3402
+ }): Promise<OwElement>;
3403
+ /** PUT /{type}/{id}/ -- upsert-by-client-id. The local-first write primitive. */
3404
+ upsert(type: ElementType | string, id: string, element: OwElement | Record<string, unknown>): Promise<OwElement>;
3405
+ /**
3406
+ * PATCH /{type}/{id}/ -- partial update. DESTRUCTIVE on sent fields: arrays
3407
+ * replace wholesale, omitted fields stay untouched. For link arrays prefer
3408
+ * editLinks() -- atomic server-side merge, no read-before-write.
3409
+ */
3410
+ patch(type: ElementType | string, id: string, partial: Record<string, unknown>): Promise<OwElement>;
3411
+ /**
3412
+ * DELETE /{type}/{id}/ -- idempotent (204 on absent). Server writes a
3413
+ * tombstone AND scrubs the id from every other element's links in the same
3414
+ * transaction -- no client-side unlink pass needed, ever.
3415
+ */
3416
+ delete(type: ElementType | string, id: string): Promise<void>;
3417
+ /**
3418
+ * POST /{type}/{id}/links/{field} with {add, remove} -- atomic link merge.
3419
+ * Dedupes, tolerates already-present/already-absent ids. Returns the FULL
3420
+ * updated element (fixture P5). Use this for all relationship editing; it
3421
+ * retires the read-merge-PATCH dance.
3422
+ */
3423
+ editLinks(type: ElementType | string, id: string, field: string, edit: OwLinkEdit): Promise<OwElement>;
3424
+ /**
3425
+ * POST /bulk -- up to ~1000 items. Partial success by default (HTTP 200
3426
+ * always; inspect per-slot numeric `status` + top-level `errors` flag);
3427
+ * atomic:true for all-or-nothing. Link validation runs against batch U
3428
+ * database -- send in any order, cycles included; no client topo-sort.
3429
+ * Success slots echo server-authoritative timestamps: set your sync baseline
3430
+ * from this response alone. When an idempotencyKey is replayed, the returned
3431
+ * response carries wasReplay:true (read from the Idempotent-Replay header).
3432
+ */
3433
+ bulk(items: OwBulkItem[], opts?: {
3434
+ atomic?: boolean;
3435
+ idempotencyKey?: string;
3436
+ }): Promise<OwBulkResponse>;
3437
+ /**
3438
+ * GET /changes -- one page of the world's ordered change feed.
3439
+ * Cursor is OPAQUE and never expires: persist verbatim, never parse.
3440
+ * Zero/absent cursor = full export (byte-aligned with the Folder Format).
3441
+ * Rewind rule: if your persisted position is ahead of page.head, the server
3442
+ * was restored -- re-baseline from cursor zero; do not assume caught-up.
3443
+ * Citizenship: heaviest route on the platform; default page size is polite.
3444
+ */
3445
+ changes(opts?: {
3446
+ since?: string;
3447
+ limit?: number;
3448
+ }): Promise<OwChangesPage>;
3449
+ /**
3450
+ * Walk the feed from `since` (or from zero = full export) to the current
3451
+ * tail, yielding ops in order. Returns the final cursor via the generator's
3452
+ * return value; persist it for the next incremental pull.
3453
+ */
3454
+ changesAll(since?: string): AsyncGenerator<OwChange, {
3455
+ cursor: string;
3456
+ head: number;
3457
+ }>;
3458
+ private request;
3459
+ }
3460
+
3461
+ export { type Ability, type AbilityInput, type AccessKeyResponse, type AnyElementId, type ApiResponse, type BaseElement, type Character, type CharacterInput, type Collective, type CollectiveInput, type Construct, type ConstructInput, type Creature, type CreatureInput, ELEMENT_ICONS, ELEMENT_LABELS, ELEMENT_SECTIONS, ELEMENT_TYPES, type ElementId, type ElementIds, ElementType$1 as ElementType, type EncryptionInfo, type Event, type EventInput, FIELD_SCHEMA, type Family, type FamilyInput, type FieldInfo, type FieldType, GameTier, type Institution, type InstitutionInput, type Language, type LanguageInput, type Law, type LawInput, type ListOptions, type ListParams, type Location, type LocationInput, type Map, type MapInput, type Marker, type MarkerInput, type Narrative, type NarrativeInput, ONLYWORLDS_VERSION, type Object$1 as Object, type ObjectInput, OnlyWorldsClient, type OnlyWorldsConfig, OwApiError, type OwAuthErrorCode, type OwBulkItem, type OwBulkItemResult, type OwBulkResponse, type OwChange, type OwChangesPage, type OwClientConfig, type OwElement, type OwElementBase, type OwErrorBody, type OwKeyKind, type OwLinkEdit, OwNetworkError, type OwPage, OwV2Client, type OwWorldMeta, type Phenomenon, type PhenomenonInput, type Pin, type PinInput, type Relation, type RelationInput, type RevokeAllSessionsResponse, type RevokeSessionResponse, SPATIAL_TYPES, type SectionInfo, type Species, type SpeciesInput, type Title, type TitleInput, type TokenConsumeParams, type TokenConsumeResponse, type TokenStatus, type Trait, type TraitInput, type ElementType as V2ElementType, type World, type WorldInput, type Zone, type ZoneInput, createAnyElementId, createElementId, createElementIds, detectKeyKind, errorFromResponse, getElementIcon, getElementLabel, getElementSections, isDemoKey, kindCanWrite, parseEnvelope, pinExpectation };