@cardanvil/frame-kit 0.5.0 → 0.7.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.
Files changed (90) hide show
  1. package/README.md +119 -0
  2. package/dist/authoring/collectorInfo.d.ts +17 -0
  3. package/dist/authoring/collectorInfo.js +62 -0
  4. package/dist/authoring/index.d.ts +2 -0
  5. package/dist/authoring/index.js +2 -0
  6. package/dist/authoring/layoutDefaults.d.ts +20 -2
  7. package/dist/authoring/layoutDefaults.js +48 -13
  8. package/dist/authoring/opacityStops.d.ts +8 -0
  9. package/dist/authoring/opacityStops.js +17 -0
  10. package/dist/cli/index.d.ts +1 -0
  11. package/dist/cli/index.js +1 -0
  12. package/dist/cli/loadFrame.js +1 -1
  13. package/dist/cli/main.js +88 -0
  14. package/dist/cli/sourceWatcher.d.ts +40 -0
  15. package/dist/cli/sourceWatcher.js +100 -0
  16. package/dist/cli/studio/boxSets.d.ts +33 -0
  17. package/dist/cli/studio/boxSets.js +90 -0
  18. package/dist/cli/studio/edit/applyEdits.d.ts +71 -0
  19. package/dist/cli/studio/edit/applyEdits.js +177 -0
  20. package/dist/cli/studio/edit/impact.d.ts +53 -0
  21. package/dist/cli/studio/edit/impact.js +87 -0
  22. package/dist/cli/studio/edit/resolveModule.d.ts +10 -0
  23. package/dist/cli/studio/edit/resolveModule.js +55 -0
  24. package/dist/cli/studio/edit/resolvePath.d.ts +53 -0
  25. package/dist/cli/studio/edit/resolvePath.js +606 -0
  26. package/dist/cli/studio/edit/sourceIndex.d.ts +29 -0
  27. package/dist/cli/studio/edit/sourceIndex.js +73 -0
  28. package/dist/cli/studio/edit/ts.d.ts +14 -0
  29. package/dist/cli/studio/edit/ts.js +34 -0
  30. package/dist/cli/studio/serve.d.ts +23 -0
  31. package/dist/cli/studio/serve.js +516 -0
  32. package/dist/cli/studio/session.d.ts +73 -0
  33. package/dist/cli/studio/session.js +154 -0
  34. package/dist/cli/trim.d.ts +62 -0
  35. package/dist/cli/trim.js +251 -0
  36. package/dist/cli/watch.d.ts +3 -0
  37. package/dist/cli/watch.js +20 -89
  38. package/dist/layout/assetPlacement.d.ts +71 -0
  39. package/dist/layout/assetPlacement.js +104 -0
  40. package/dist/layout/border.d.ts +27 -0
  41. package/dist/layout/border.js +31 -0
  42. package/dist/layout/boxOverrides.d.ts +28 -0
  43. package/dist/layout/boxOverrides.js +95 -0
  44. package/dist/layout/color.d.ts +23 -0
  45. package/dist/layout/color.js +53 -0
  46. package/dist/layout/cutouts.d.ts +28 -0
  47. package/dist/layout/cutouts.js +29 -0
  48. package/dist/layout/decorations.d.ts +73 -0
  49. package/dist/layout/decorations.js +104 -0
  50. package/dist/layout/frameLayers.d.ts +163 -0
  51. package/dist/layout/frameLayers.js +433 -0
  52. package/dist/layout/index.d.ts +27 -0
  53. package/dist/layout/index.js +27 -0
  54. package/dist/layout/paint.d.ts +36 -0
  55. package/dist/layout/paint.js +148 -0
  56. package/dist/layout/powerToughnessRow.d.ts +26 -0
  57. package/dist/layout/powerToughnessRow.js +13 -0
  58. package/dist/layout/resolveFrameAsset.d.ts +37 -0
  59. package/dist/layout/resolveFrameAsset.js +66 -0
  60. package/dist/layout/rulesSlide.d.ts +13 -0
  61. package/dist/layout/rulesSlide.js +33 -0
  62. package/dist/layout/settings.d.ts +26 -0
  63. package/dist/layout/settings.js +62 -0
  64. package/dist/layout/textStyle.d.ts +29 -0
  65. package/dist/layout/textStyle.js +28 -0
  66. package/dist/layout/turn.d.ts +54 -0
  67. package/dist/layout/turn.js +107 -0
  68. package/dist/manifest/contract.d.ts +6103 -9063
  69. package/dist/manifest/contract.js +48 -1
  70. package/dist/manifest/testFrame.js +9 -0
  71. package/dist/schema/collectorInfo.d.ts +95 -0
  72. package/dist/schema/collectorInfo.js +80 -0
  73. package/dist/schema/condition.d.ts +67 -0
  74. package/dist/schema/condition.js +47 -0
  75. package/dist/schema/frame.d.ts +17213 -24450
  76. package/dist/schema/frame.js +418 -14
  77. package/dist/schema/frameAssets.d.ts +56 -34
  78. package/dist/schema/frameAssets.js +96 -2
  79. package/dist/schema/index.d.ts +3 -0
  80. package/dist/schema/index.js +3 -0
  81. package/dist/schema/layout.d.ts +29 -4
  82. package/dist/schema/layout.js +27 -2
  83. package/dist/schema/paint.d.ts +202 -0
  84. package/dist/schema/paint.js +109 -0
  85. package/dist/studio/assets/PlantinMTProRgIt-D0FB51kb.woff2 +0 -0
  86. package/dist/studio/assets/beleren-b-B3lFvodX.ttf +0 -0
  87. package/dist/studio/assets/beleren-bsc-yvL6mU7X.ttf +0 -0
  88. package/dist/studio/assets/index-BnhNwm_r.js +74 -0
  89. package/dist/studio/index.html +12 -0
  90. package/package.json +16 -5
@@ -7,13 +7,13 @@ import { z } from "zod";
7
7
  */
8
8
  export declare const FRAME_COLORS: readonly ["w", "u", "b", "r", "g", "m", "a", "c", "l", "v"];
9
9
  export declare const FrameColorEnum: z.ZodEnum<{
10
+ a: "a";
10
11
  w: "w";
11
12
  u: "u";
12
13
  b: "b";
13
14
  r: "r";
14
15
  g: "g";
15
16
  m: "m";
16
- a: "a";
17
17
  c: "c";
18
18
  l: "l";
19
19
  v: "v";
@@ -21,13 +21,13 @@ export declare const FrameColorEnum: z.ZodEnum<{
21
21
  export type FrameColor = z.infer<typeof FrameColorEnum>;
22
22
  /** Image URLs keyed by frame color. Every frame family is a (partial) color set. */
23
23
  export declare const ColorSetSchema: z.ZodRecord<z.ZodEnum<{
24
+ a: "a";
24
25
  w: "w";
25
26
  u: "u";
26
27
  b: "b";
27
28
  r: "r";
28
29
  g: "g";
29
30
  m: "m";
30
- a: "a";
31
31
  c: "c";
32
32
  l: "l";
33
33
  v: "v";
@@ -67,13 +67,13 @@ export type DfcIconSet = z.infer<typeof DfcIconSetSchema>;
67
67
  */
68
68
  export declare const BASE_COLORS: readonly ["w", "u", "b", "r", "g", "m", "a", "c", "l", "v", "c2"];
69
69
  export declare const BaseColorEnum: z.ZodEnum<{
70
+ a: "a";
70
71
  w: "w";
71
72
  u: "u";
72
73
  b: "b";
73
74
  r: "r";
74
75
  g: "g";
75
76
  m: "m";
76
- a: "a";
77
77
  c: "c";
78
78
  l: "l";
79
79
  v: "v";
@@ -81,13 +81,13 @@ export declare const BaseColorEnum: z.ZodEnum<{
81
81
  }>;
82
82
  export type BaseColor = z.infer<typeof BaseColorEnum>;
83
83
  export declare const BaseColorSetSchema: z.ZodRecord<z.ZodEnum<{
84
+ a: "a";
84
85
  w: "w";
85
86
  u: "u";
86
87
  b: "b";
87
88
  r: "r";
88
89
  g: "g";
89
90
  m: "m";
90
- a: "a";
91
91
  c: "c";
92
92
  l: "l";
93
93
  v: "v";
@@ -97,73 +97,73 @@ export type BaseColorSet = z.infer<typeof BaseColorSetSchema>;
97
97
  /** Legendary-crown asset sets, grouped by variant. */
98
98
  export declare const CrownAssetsSchema: z.ZodObject<{
99
99
  base: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
100
+ a: "a";
100
101
  w: "w";
101
102
  u: "u";
102
103
  b: "b";
103
104
  r: "r";
104
105
  g: "g";
105
106
  m: "m";
106
- a: "a";
107
107
  c: "c";
108
108
  l: "l";
109
109
  v: "v";
110
110
  }> & z.core.$partial, z.ZodString>>;
111
111
  ub: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
112
+ a: "a";
112
113
  w: "w";
113
114
  u: "u";
114
115
  b: "b";
115
116
  r: "r";
116
117
  g: "g";
117
118
  m: "m";
118
- a: "a";
119
119
  c: "c";
120
120
  l: "l";
121
121
  v: "v";
122
122
  }> & z.core.$partial, z.ZodString>>;
123
123
  nickname: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
124
+ a: "a";
124
125
  w: "w";
125
126
  u: "u";
126
127
  b: "b";
127
128
  r: "r";
128
129
  g: "g";
129
130
  m: "m";
130
- a: "a";
131
131
  c: "c";
132
132
  l: "l";
133
133
  v: "v";
134
134
  }> & z.core.$partial, z.ZodString>>;
135
135
  nicknameUb: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
136
+ a: "a";
136
137
  w: "w";
137
138
  u: "u";
138
139
  b: "b";
139
140
  r: "r";
140
141
  g: "g";
141
142
  m: "m";
142
- a: "a";
143
143
  c: "c";
144
144
  l: "l";
145
145
  v: "v";
146
146
  }> & z.core.$partial, z.ZodString>>;
147
147
  nyxInsert: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
148
+ a: "a";
148
149
  w: "w";
149
150
  u: "u";
150
151
  b: "b";
151
152
  r: "r";
152
153
  g: "g";
153
154
  m: "m";
154
- a: "a";
155
155
  c: "c";
156
156
  l: "l";
157
157
  v: "v";
158
158
  }> & z.core.$partial, z.ZodString>>;
159
159
  nyxInsertUb: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
160
+ a: "a";
160
161
  w: "w";
161
162
  u: "u";
162
163
  b: "b";
163
164
  r: "r";
164
165
  g: "g";
165
166
  m: "m";
166
- a: "a";
167
167
  c: "c";
168
168
  l: "l";
169
169
  v: "v";
@@ -175,7 +175,7 @@ export declare const PlaneswalkerAssetConfigSchema: z.ZodObject<{
175
175
  plus: z.ZodString;
176
176
  minus: z.ZodString;
177
177
  zero: z.ZodString;
178
- separator: z.ZodString;
178
+ separator: z.ZodOptional<z.ZodString>;
179
179
  startingLoyalty: z.ZodString;
180
180
  masks: z.ZodOptional<z.ZodObject<{
181
181
  regular: z.ZodOptional<z.ZodString>;
@@ -197,25 +197,25 @@ export declare const SagaAssetConfigSchema: z.ZodObject<{
197
197
  badge: z.ZodString;
198
198
  divider: z.ZodString;
199
199
  banner: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
200
+ a: "a";
200
201
  w: "w";
201
202
  u: "u";
202
203
  b: "b";
203
204
  r: "r";
204
205
  g: "g";
205
206
  m: "m";
206
- a: "a";
207
207
  c: "c";
208
208
  l: "l";
209
209
  v: "v";
210
210
  }> & z.core.$partial, z.ZodString>>;
211
211
  bannerTransform: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
212
+ a: "a";
212
213
  w: "w";
213
214
  u: "u";
214
215
  b: "b";
215
216
  r: "r";
216
217
  g: "g";
217
218
  m: "m";
218
- a: "a";
219
219
  c: "c";
220
220
  l: "l";
221
221
  v: "v";
@@ -228,6 +228,10 @@ export declare const SagaAssetConfigSchema: z.ZodObject<{
228
228
  right: z.ZodString;
229
229
  stripe: z.ZodString;
230
230
  }, z.core.$strip>>;
231
+ bannerOrigin: z.ZodOptional<z.ZodObject<{
232
+ x: z.ZodNumber;
233
+ y: z.ZodNumber;
234
+ }, z.core.$strip>>;
231
235
  bannerReadAheadMasks: z.ZodOptional<z.ZodObject<{
232
236
  right: z.ZodString;
233
237
  stripe: z.ZodString;
@@ -237,172 +241,172 @@ export type SagaAssetConfig = z.infer<typeof SagaAssetConfigSchema>;
237
241
  /** The full frame-asset tree for a layout. */
238
242
  export declare const FrameAssetsSchema: z.ZodObject<{
239
243
  base: z.ZodRecord<z.ZodEnum<{
244
+ a: "a";
240
245
  w: "w";
241
246
  u: "u";
242
247
  b: "b";
243
248
  r: "r";
244
249
  g: "g";
245
250
  m: "m";
246
- a: "a";
247
251
  c: "c";
248
252
  l: "l";
249
253
  v: "v";
250
254
  c2: "c2";
251
255
  }> & z.core.$partial, z.ZodString>;
252
256
  tall: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
257
+ a: "a";
253
258
  w: "w";
254
259
  u: "u";
255
260
  b: "b";
256
261
  r: "r";
257
262
  g: "g";
258
263
  m: "m";
259
- a: "a";
260
264
  c: "c";
261
265
  l: "l";
262
266
  v: "v";
263
267
  }> & z.core.$partial, z.ZodString>>;
264
268
  land: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
269
+ a: "a";
265
270
  w: "w";
266
271
  u: "u";
267
272
  b: "b";
268
273
  r: "r";
269
274
  g: "g";
270
275
  m: "m";
271
- a: "a";
272
276
  c: "c";
273
277
  l: "l";
274
278
  v: "v";
275
279
  }> & z.core.$partial, z.ZodString>>;
276
280
  nyx: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
281
+ a: "a";
277
282
  w: "w";
278
283
  u: "u";
279
284
  b: "b";
280
285
  r: "r";
281
286
  g: "g";
282
287
  m: "m";
283
- a: "a";
284
288
  c: "c";
285
289
  l: "l";
286
290
  v: "v";
287
291
  }> & z.core.$partial, z.ZodString>>;
288
292
  creature: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
293
+ a: "a";
289
294
  w: "w";
290
295
  u: "u";
291
296
  b: "b";
292
297
  r: "r";
293
298
  g: "g";
294
299
  m: "m";
295
- a: "a";
296
300
  c: "c";
297
301
  l: "l";
298
302
  v: "v";
299
303
  }> & z.core.$partial, z.ZodString>>;
300
304
  pt: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
305
+ a: "a";
301
306
  w: "w";
302
307
  u: "u";
303
308
  b: "b";
304
309
  r: "r";
305
310
  g: "g";
306
311
  m: "m";
307
- a: "a";
308
312
  c: "c";
309
313
  l: "l";
310
314
  v: "v";
311
315
  }> & z.core.$partial, z.ZodString>>;
312
316
  crown: z.ZodOptional<z.ZodObject<{
313
317
  base: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
318
+ a: "a";
314
319
  w: "w";
315
320
  u: "u";
316
321
  b: "b";
317
322
  r: "r";
318
323
  g: "g";
319
324
  m: "m";
320
- a: "a";
321
325
  c: "c";
322
326
  l: "l";
323
327
  v: "v";
324
328
  }> & z.core.$partial, z.ZodString>>;
325
329
  ub: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
330
+ a: "a";
326
331
  w: "w";
327
332
  u: "u";
328
333
  b: "b";
329
334
  r: "r";
330
335
  g: "g";
331
336
  m: "m";
332
- a: "a";
333
337
  c: "c";
334
338
  l: "l";
335
339
  v: "v";
336
340
  }> & z.core.$partial, z.ZodString>>;
337
341
  nickname: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
342
+ a: "a";
338
343
  w: "w";
339
344
  u: "u";
340
345
  b: "b";
341
346
  r: "r";
342
347
  g: "g";
343
348
  m: "m";
344
- a: "a";
345
349
  c: "c";
346
350
  l: "l";
347
351
  v: "v";
348
352
  }> & z.core.$partial, z.ZodString>>;
349
353
  nicknameUb: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
354
+ a: "a";
350
355
  w: "w";
351
356
  u: "u";
352
357
  b: "b";
353
358
  r: "r";
354
359
  g: "g";
355
360
  m: "m";
356
- a: "a";
357
361
  c: "c";
358
362
  l: "l";
359
363
  v: "v";
360
364
  }> & z.core.$partial, z.ZodString>>;
361
365
  nyxInsert: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
366
+ a: "a";
362
367
  w: "w";
363
368
  u: "u";
364
369
  b: "b";
365
370
  r: "r";
366
371
  g: "g";
367
372
  m: "m";
368
- a: "a";
369
373
  c: "c";
370
374
  l: "l";
371
375
  v: "v";
372
376
  }> & z.core.$partial, z.ZodString>>;
373
377
  nyxInsertUb: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
378
+ a: "a";
374
379
  w: "w";
375
380
  u: "u";
376
381
  b: "b";
377
382
  r: "r";
378
383
  g: "g";
379
384
  m: "m";
380
- a: "a";
381
385
  c: "c";
382
386
  l: "l";
383
387
  v: "v";
384
388
  }> & z.core.$partial, z.ZodString>>;
385
389
  }, z.core.$strip>>;
386
390
  nickname: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
391
+ a: "a";
387
392
  w: "w";
388
393
  u: "u";
389
394
  b: "b";
390
395
  r: "r";
391
396
  g: "g";
392
397
  m: "m";
393
- a: "a";
394
398
  c: "c";
395
399
  l: "l";
396
400
  v: "v";
397
401
  }> & z.core.$partial, z.ZodString>>;
398
402
  tokenTitle: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
403
+ a: "a";
399
404
  w: "w";
400
405
  u: "u";
401
406
  b: "b";
402
407
  r: "r";
403
408
  g: "g";
404
409
  m: "m";
405
- a: "a";
406
410
  c: "c";
407
411
  l: "l";
408
412
  v: "v";
@@ -412,7 +416,7 @@ export declare const FrameAssetsSchema: z.ZodObject<{
412
416
  plus: z.ZodString;
413
417
  minus: z.ZodString;
414
418
  zero: z.ZodString;
415
- separator: z.ZodString;
419
+ separator: z.ZodOptional<z.ZodString>;
416
420
  startingLoyalty: z.ZodString;
417
421
  masks: z.ZodOptional<z.ZodObject<{
418
422
  regular: z.ZodOptional<z.ZodString>;
@@ -427,25 +431,25 @@ export declare const FrameAssetsSchema: z.ZodObject<{
427
431
  badge: z.ZodString;
428
432
  divider: z.ZodString;
429
433
  banner: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
434
+ a: "a";
430
435
  w: "w";
431
436
  u: "u";
432
437
  b: "b";
433
438
  r: "r";
434
439
  g: "g";
435
440
  m: "m";
436
- a: "a";
437
441
  c: "c";
438
442
  l: "l";
439
443
  v: "v";
440
444
  }> & z.core.$partial, z.ZodString>>;
441
445
  bannerTransform: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
446
+ a: "a";
442
447
  w: "w";
443
448
  u: "u";
444
449
  b: "b";
445
450
  r: "r";
446
451
  g: "g";
447
452
  m: "m";
448
- a: "a";
449
453
  c: "c";
450
454
  l: "l";
451
455
  v: "v";
@@ -458,12 +462,18 @@ export declare const FrameAssetsSchema: z.ZodObject<{
458
462
  right: z.ZodString;
459
463
  stripe: z.ZodString;
460
464
  }, z.core.$strip>>;
465
+ bannerOrigin: z.ZodOptional<z.ZodObject<{
466
+ x: z.ZodNumber;
467
+ y: z.ZodNumber;
468
+ }, z.core.$strip>>;
461
469
  bannerReadAheadMasks: z.ZodOptional<z.ZodObject<{
462
470
  right: z.ZodString;
463
471
  stripe: z.ZodString;
464
472
  }, z.core.$strip>>;
465
473
  }, z.core.$strip>>;
474
+ sectionDivider: z.ZodOptional<z.ZodString>;
466
475
  extendedOverlay: z.ZodOptional<z.ZodString>;
476
+ fullBorder: z.ZodOptional<z.ZodString>;
467
477
  dfcIcon: z.ZodOptional<z.ZodString>;
468
478
  dfcIconSet: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
469
479
  convertdfc: "convertdfc";
@@ -476,42 +486,50 @@ export declare const FrameAssetsSchema: z.ZodObject<{
476
486
  upsidedowndfc: "upsidedowndfc";
477
487
  }> & z.core.$partial, z.ZodString>>;
478
488
  dfcIconColorSet: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
489
+ a: "a";
479
490
  w: "w";
480
491
  u: "u";
481
492
  b: "b";
482
493
  r: "r";
483
494
  g: "g";
484
495
  m: "m";
485
- a: "a";
486
496
  c: "c";
487
497
  l: "l";
488
498
  v: "v";
489
499
  }> & z.core.$partial, z.ZodString>>;
490
500
  flipside: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
501
+ a: "a";
491
502
  w: "w";
492
503
  u: "u";
493
504
  b: "b";
494
505
  r: "r";
495
506
  g: "g";
496
507
  m: "m";
497
- a: "a";
498
508
  c: "c";
499
509
  l: "l";
500
510
  v: "v";
501
511
  }> & z.core.$partial, z.ZodString>>;
502
512
  lessonIcon: z.ZodOptional<z.ZodString>;
513
+ dividerBar: z.ZodOptional<z.ZodEnum<{
514
+ old: "old";
515
+ }>>;
516
+ dividerBarScale: z.ZodOptional<z.ZodNumber>;
517
+ dividerBarGapBefore: z.ZodOptional<z.ZodNumber>;
518
+ dividerBarGapAfter: z.ZodOptional<z.ZodNumber>;
503
519
  }, z.core.$strip>;
504
520
  export type FrameAssets = z.infer<typeof FrameAssetsSchema>;
505
521
  /**
506
522
  * Section masks the renderer actually reads. `rightHalf` overrides the global
507
523
  * default (`globalMasks.rightHalf`) when a layout ships its own. The legacy
508
- * `frame`/`border` mask keys are intentionally absent — nothing reads them.
524
+ * `frame` mask key is intentionally absent — nothing reads it.
509
525
  */
510
526
  export declare const LayoutMasksSchema: z.ZodObject<{
511
527
  pinlines: z.ZodOptional<z.ZodString>;
512
528
  titleAndType: z.ZodOptional<z.ZodString>;
513
529
  rules: z.ZodOptional<z.ZodString>;
514
530
  noBorder: z.ZodOptional<z.ZodString>;
531
+ border: z.ZodOptional<z.ZodString>;
532
+ borderFull: z.ZodOptional<z.ZodString>;
515
533
  legendary: z.ZodOptional<z.ZodString>;
516
534
  legendaryTransform: z.ZodOptional<z.ZodString>;
517
535
  noBorderTransform: z.ZodOptional<z.ZodString>;
@@ -522,10 +540,14 @@ export declare const LayoutMasksSchema: z.ZodObject<{
522
540
  extended: z.ZodOptional<z.ZodString>;
523
541
  topHalf: z.ZodOptional<z.ZodString>;
524
542
  bottomHalf: z.ZodOptional<z.ZodString>;
543
+ rulesRight: z.ZodOptional<z.ZodString>;
544
+ adventureRules: z.ZodOptional<z.ZodString>;
545
+ adventureRulesRight: z.ZodOptional<z.ZodString>;
546
+ wings: z.ZodOptional<z.ZodString>;
525
547
  }, z.core.$strip>;
526
548
  export type LayoutMasks = z.infer<typeof LayoutMasksSchema>;
527
549
  /** Mask names an overlay may reference. `rightHalf` falls back to globalMasks. */
528
- export type OverlayMaskName = "pinlines" | "titleAndType" | "rules" | "rightHalf" | "title" | "type";
550
+ export type OverlayMaskName = "pinlines" | "titleAndType" | "rules" | "rightHalf" | "title" | "type" | "rulesRight" | "adventureRules" | "adventureRulesRight" | "wings";
529
551
  /**
530
552
  * A structured reference to one frame image. "c2" is valid only in the base
531
553
  * family; land/nyx/tall families use plain frame colors.
@@ -64,7 +64,8 @@ export const PlaneswalkerAssetConfigSchema = z.object({
64
64
  plus: AssetUrlSchema,
65
65
  minus: AssetUrlSchema,
66
66
  zero: AssetUrlSchema,
67
- separator: AssetUrlSchema,
67
+ /** Drawn between the ability bands; not needed with `abilityBacking` off. */
68
+ separator: AssetUrlSchema.optional(),
68
69
  startingLoyalty: AssetUrlSchema,
69
70
  /** Ability box masks. */
70
71
  masks: PlaneswalkerMasksSchema.optional(),
@@ -88,6 +89,19 @@ export const SagaAssetConfigSchema = z.object({
88
89
  bannerTransform: ColorSetSchema.optional(),
89
90
  bannerMasks: BannerMasksSchema.optional(),
90
91
  bannerTransformMasks: BannerMasksSchema.optional(),
92
+ /**
93
+ * Where the banners and their masks sit on the sheet: the top-left corner
94
+ * of every one of them. Set it when they are trimmed to their visible part
95
+ * — `frame-kit trim --shared` cuts them all to one rectangle and prints this
96
+ * position. Omitted, they are full sheets, drawn from the corner. A read-ahead
97
+ * banner is moved down from here as one piece, masks and all.
98
+ */
99
+ bannerOrigin: z.object({ x: z.number(), y: z.number() }).optional(),
100
+ /**
101
+ * @deprecated Read-ahead cards use `bannerTransformMasks`, moved down with
102
+ * their banner. Still accepted so a frame that declares these loads, but
103
+ * never drawn.
104
+ */
91
105
  bannerReadAheadMasks: BannerMasksSchema.optional(),
92
106
  });
93
107
  /** The full frame-asset tree for a layout. */
@@ -112,8 +126,24 @@ export const FrameAssetsSchema = z.object({
112
126
  black: AssetUrlSchema.optional(),
113
127
  planeswalker: PlaneswalkerAssetConfigSchema.optional(),
114
128
  saga: SagaAssetConfigSchema.optional(),
129
+ /**
130
+ * Drawn between the sections of a column — a Case's steps, a Class's
131
+ * levels — the way a Saga's divider is drawn between its chapters: across
132
+ * nine tenths of the `abilities` box, centered, at its own aspect ratio.
133
+ * Without it the sections keep only their gaps.
134
+ */
135
+ sectionDivider: AssetUrlSchema.optional(),
115
136
  /** Extended-art overlay drawn on top of the masked frame. */
116
137
  extendedOverlay: AssetUrlSchema.optional(),
138
+ /**
139
+ * Border art drawn *under* the base frame while the `useFullBorder` template
140
+ * setting is on — for a frame whose base art leaves part of the ring empty.
141
+ * It is one image for every color, cut by the same cutouts as the frame
142
+ * ("No Border" among them), and filled with the border color when one is
143
+ * picked: on its own, before the base frame goes on top, so the frame's own
144
+ * art is never repainted.
145
+ */
146
+ fullBorder: AssetUrlSchema.optional(),
117
147
  /**
118
148
  * Legacy single DFC icon overlaid on the crown of transform cards. Superseded
119
149
  * by `dfcIconSet` (resolved from the card's actual `frame_effects`); kept as
@@ -145,17 +175,63 @@ export const FrameAssetsSchema = z.object({
145
175
  * see `getCardLayout`) in place of the usual `dfcIconSet`/`dfcIcon` mark.
146
176
  */
147
177
  lessonIcon: AssetUrlSchema.optional(),
178
+ /**
179
+ * Selects a built-in rules-text divider bar (between oracle and flavor
180
+ * text) instead of the app's default. Not an `AssetUrlSchema` — these are
181
+ * shared app assets any layout can opt into, not something a frame package
182
+ * bundles itself.
183
+ */
184
+ dividerBar: z.enum(["old"]).optional(),
185
+ /**
186
+ * Scales the divider bar's width (and, following its aspect ratio,
187
+ * height) relative to the app default. 1 = default size.
188
+ */
189
+ dividerBarScale: z.number().optional(),
190
+ /**
191
+ * Scales the gap between the oracle text and the divider bar. 1 =
192
+ * default gap.
193
+ */
194
+ dividerBarGapBefore: z.number().optional(),
195
+ /**
196
+ * Scales the gap between the divider bar and the flavor text. 1 =
197
+ * default gap.
198
+ */
199
+ dividerBarGapAfter: z.number().optional(),
148
200
  });
149
201
  /**
150
202
  * Section masks the renderer actually reads. `rightHalf` overrides the global
151
203
  * default (`globalMasks.rightHalf`) when a layout ships its own. The legacy
152
- * `frame`/`border` mask keys are intentionally absent — nothing reads them.
204
+ * `frame` mask key is intentionally absent — nothing reads it.
153
205
  */
154
206
  export const LayoutMasksSchema = z.object({
155
207
  pinlines: AssetUrlSchema.optional(),
156
208
  titleAndType: AssetUrlSchema.optional(),
157
209
  rules: AssetUrlSchema.optional(),
158
210
  noBorder: AssetUrlSchema.optional(),
211
+ /**
212
+ * Alpha mask opaque only over the outer border ring itself (everything
213
+ * else — art, text boxes, and the framing surface between them —
214
+ * transparent). Clipped via `destination-in` to isolate the ring's shape
215
+ * so the global border-color setting can recolor just that ring. Distinct
216
+ * from `noBorder`, which cuts the internal framing band too for the
217
+ * extended-art trim — the two are not interchangeable.
218
+ */
219
+ border: AssetUrlSchema.optional(),
220
+ /**
221
+ * Full-coverage variant of `border`, opaque over the whole outer ring
222
+ * including the strip the collector line sits on.
223
+ *
224
+ * A frame ships this only when its plain `border` mask deliberately covers
225
+ * *less* than the whole ring — m15's stops short of the collector strip, so
226
+ * that the default border recolor leaves the collector line on its original
227
+ * black. A `useFullBorder` template setting swaps this in for `border`, and
228
+ * draws `frameAssets.fullBorder` when the frame ships one.
229
+ *
230
+ * The renderer does not work out which text that puts on the recolored
231
+ * ring: a box that should adapt says so in its `overrides`, as m15's
232
+ * collector info does with `settings: { useFullBorder: true }`.
233
+ */
234
+ borderFull: AssetUrlSchema.optional(),
159
235
  legendary: AssetUrlSchema.optional(),
160
236
  /** Legendary crown mask variant for transforming MDFC front faces — the
161
237
  * composited top-half frame uses a different legendary crown cutout than
@@ -180,4 +256,22 @@ export const LayoutMasksSchema = z.object({
180
256
  */
181
257
  topHalf: AssetUrlSchema.optional(),
182
258
  bottomHalf: AssetUrlSchema.optional(),
259
+ /**
260
+ * A storybook Adventure's text box is an open book, each page coloured on
261
+ * its own: the right page (`rules`) by the card, the left page
262
+ * (`adventureRules`) by its adventure. A two-colour page lays its second
263
+ * colour over the first through `rulesRight`/`adventureRulesRight`, a copy
264
+ * of the page's mask faded in towards its right edge. A layout that ships
265
+ * `adventureRules` has its pages coloured this way — see
266
+ * `selectStorybookFrameLayers`.
267
+ */
268
+ rulesRight: AssetUrlSchema.optional(),
269
+ adventureRules: AssetUrlSchema.optional(),
270
+ adventureRulesRight: AssetUrlSchema.optional(),
271
+ /**
272
+ * The storybook's page edges either side of the book. A two-colour gold
273
+ * card halves its frame between its colours, and lays gold over these as
274
+ * it does over the title and type bars.
275
+ */
276
+ wings: AssetUrlSchema.optional(),
183
277
  });
@@ -1,5 +1,8 @@
1
1
  export * from "./assetUrl.js";
2
+ export * from "./collectorInfo.js";
3
+ export * from "./condition.js";
2
4
  export * from "./frame.js";
3
5
  export * from "./frameAssets.js";
4
6
  export * from "./frameMeta.js";
5
7
  export * from "./layout.js";
8
+ export * from "./paint.js";
@@ -1,5 +1,8 @@
1
1
  export * from "./assetUrl.js";
2
+ export * from "./collectorInfo.js";
3
+ export * from "./condition.js";
2
4
  export * from "./frame.js";
3
5
  export * from "./frameAssets.js";
4
6
  export * from "./frameMeta.js";
5
7
  export * from "./layout.js";
8
+ export * from "./paint.js";