@liustack/pptfast 0.1.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.
@@ -0,0 +1,1076 @@
1
+ import { z } from 'zod';
2
+ export { P as PptfastPlatform, i as installPlatform } from './registry-CYKxZ0-U.js';
3
+
4
+ declare const VERSION = "0.1.0";
5
+
6
+ /** Error class thrown by pptfast's public API surface (validation, rendering, export). */
7
+ declare class PptfastError extends Error {
8
+ }
9
+
10
+ declare const THEME_IDS: readonly ["consulting", "enterprise", "academic", "insight", "campaign", "bloom", "classroom", "ink", "tech", "runway", "journal", "luxe", "heritage"];
11
+ declare const BackgroundSpecSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
12
+ kind: z.ZodLiteral<"color">;
13
+ value: z.ZodString;
14
+ }, z.core.$strict>, z.ZodObject<{
15
+ kind: z.ZodLiteral<"gradient">;
16
+ from: z.ZodString;
17
+ to: z.ZodString;
18
+ direction: z.ZodOptional<z.ZodEnum<{
19
+ tb: "tb";
20
+ lr: "lr";
21
+ diagonal: "diagonal";
22
+ }>>;
23
+ }, z.core.$strict>, z.ZodObject<{
24
+ kind: z.ZodLiteral<"asset">;
25
+ asset_id: z.ZodString;
26
+ overlay: z.ZodOptional<z.ZodObject<{
27
+ color: z.ZodString;
28
+ opacity: z.ZodNumber;
29
+ }, z.core.$strict>>;
30
+ fit: z.ZodOptional<z.ZodEnum<{
31
+ cover: "cover";
32
+ contain: "contain";
33
+ }>>;
34
+ }, z.core.$strict>], "kind">;
35
+ declare const MetaSchema: z.ZodObject<{
36
+ organization: z.ZodOptional<z.ZodString>;
37
+ authors: z.ZodOptional<z.ZodArray<z.ZodObject<{
38
+ name: z.ZodString;
39
+ role: z.ZodOptional<z.ZodString>;
40
+ org: z.ZodOptional<z.ZodString>;
41
+ }, z.core.$strict>>>;
42
+ date: z.ZodOptional<z.ZodString>;
43
+ version: z.ZodOptional<z.ZodString>;
44
+ confidentiality: z.ZodOptional<z.ZodEnum<{
45
+ public: "public";
46
+ internal: "internal";
47
+ confidential: "confidential";
48
+ restricted: "restricted";
49
+ }>>;
50
+ contact: z.ZodOptional<z.ZodObject<{
51
+ name: z.ZodOptional<z.ZodString>;
52
+ email: z.ZodOptional<z.ZodString>;
53
+ phone: z.ZodOptional<z.ZodString>;
54
+ website: z.ZodOptional<z.ZodString>;
55
+ }, z.core.$strict>>;
56
+ copyright: z.ZodOptional<z.ZodString>;
57
+ animation: z.ZodOptional<z.ZodObject<{
58
+ transition: z.ZodOptional<z.ZodEnum<{
59
+ fade: "fade";
60
+ push: "push";
61
+ wipe: "wipe";
62
+ none: "none";
63
+ }>>;
64
+ elements: z.ZodOptional<z.ZodEnum<{
65
+ none: "none";
66
+ auto: "auto";
67
+ }>>;
68
+ }, z.core.$strict>>;
69
+ }, z.core.$strict>;
70
+ declare const AssetsSchema: z.ZodObject<{
71
+ images: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
72
+ src: z.ZodString;
73
+ alt: z.ZodOptional<z.ZodString>;
74
+ error: z.ZodOptional<z.ZodString>;
75
+ }, z.core.$strict>>>;
76
+ }, z.core.$strict>;
77
+ declare const BlockSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
78
+ type: z.ZodLiteral<"bullets">;
79
+ items: z.ZodArray<z.ZodString>;
80
+ style: z.ZodOptional<z.ZodEnum<{
81
+ default: "default";
82
+ checklist: "checklist";
83
+ numbered: "numbered";
84
+ plain: "plain";
85
+ divided: "divided";
86
+ }>>;
87
+ }, z.core.$strict>, z.ZodObject<{
88
+ type: z.ZodLiteral<"paragraph">;
89
+ text: z.ZodString;
90
+ }, z.core.$strict>, z.ZodObject<{
91
+ type: z.ZodLiteral<"quote">;
92
+ text: z.ZodString;
93
+ attribution: z.ZodOptional<z.ZodString>;
94
+ }, z.core.$strict>, z.ZodObject<{
95
+ type: z.ZodLiteral<"callout">;
96
+ variant: z.ZodEnum<{
97
+ info: "info";
98
+ warn: "warn";
99
+ tip: "tip";
100
+ }>;
101
+ text: z.ZodString;
102
+ icon: z.ZodOptional<z.ZodEnum<{
103
+ [x: string]: string;
104
+ }>>;
105
+ }, z.core.$strict>, z.ZodObject<{
106
+ type: z.ZodLiteral<"code">;
107
+ language: z.ZodString;
108
+ code: z.ZodString;
109
+ }, z.core.$strict>, z.ZodObject<{
110
+ type: z.ZodLiteral<"kpi_cards">;
111
+ items: z.ZodArray<z.ZodObject<{
112
+ value: z.ZodString;
113
+ unit: z.ZodOptional<z.ZodString>;
114
+ label: z.ZodString;
115
+ delta: z.ZodOptional<z.ZodEnum<{
116
+ up: "up";
117
+ down: "down";
118
+ flat: "flat";
119
+ }>>;
120
+ icon: z.ZodOptional<z.ZodEnum<{
121
+ [x: string]: string;
122
+ }>>;
123
+ source: z.ZodOptional<z.ZodString>;
124
+ }, z.core.$strict>>;
125
+ }, z.core.$strict>, z.ZodObject<{
126
+ type: z.ZodLiteral<"chart">;
127
+ chart_type: z.ZodEnum<{
128
+ line: "line";
129
+ dumbbell: "dumbbell";
130
+ bar: "bar";
131
+ pie: "pie";
132
+ funnel: "funnel";
133
+ }>;
134
+ direction: z.ZodOptional<z.ZodEnum<{
135
+ horizontal: "horizontal";
136
+ vertical: "vertical";
137
+ }>>;
138
+ style: z.ZodOptional<z.ZodEnum<{
139
+ donut: "donut";
140
+ }>>;
141
+ axes: z.ZodOptional<z.ZodObject<{
142
+ x_title: z.ZodOptional<z.ZodString>;
143
+ y_title: z.ZodOptional<z.ZodString>;
144
+ show_grid: z.ZodOptional<z.ZodBoolean>;
145
+ }, z.core.$strict>>;
146
+ series: z.ZodArray<z.ZodObject<{
147
+ name: z.ZodString;
148
+ data: z.ZodArray<z.ZodObject<{
149
+ x: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
150
+ y: z.ZodNumber;
151
+ }, z.core.$strict>>;
152
+ }, z.core.$strict>>;
153
+ }, z.core.$strict>, z.ZodObject<{
154
+ type: z.ZodLiteral<"flowchart">;
155
+ nodes: z.ZodArray<z.ZodObject<{
156
+ id: z.ZodString;
157
+ label: z.ZodString;
158
+ kind: z.ZodOptional<z.ZodEnum<{
159
+ rect: "rect";
160
+ diamond: "diamond";
161
+ round: "round";
162
+ }>>;
163
+ }, z.core.$strict>>;
164
+ edges: z.ZodArray<z.ZodObject<{
165
+ from: z.ZodString;
166
+ to: z.ZodString;
167
+ label: z.ZodOptional<z.ZodString>;
168
+ }, z.core.$strict>>;
169
+ direction: z.ZodOptional<z.ZodEnum<{
170
+ TB: "TB";
171
+ TD: "TD";
172
+ BT: "BT";
173
+ LR: "LR";
174
+ RL: "RL";
175
+ }>>;
176
+ }, z.core.$strict>, z.ZodObject<{
177
+ type: z.ZodLiteral<"architecture">;
178
+ layers: z.ZodArray<z.ZodObject<{
179
+ title: z.ZodString;
180
+ items: z.ZodArray<z.ZodString>;
181
+ }, z.core.$strict>>;
182
+ }, z.core.$strict>, z.ZodObject<{
183
+ type: z.ZodLiteral<"timeline">;
184
+ layout: z.ZodOptional<z.ZodEnum<{
185
+ horizontal: "horizontal";
186
+ vertical: "vertical";
187
+ }>>;
188
+ milestones: z.ZodArray<z.ZodObject<{
189
+ date: z.ZodString;
190
+ title: z.ZodString;
191
+ desc: z.ZodOptional<z.ZodString>;
192
+ highlight: z.ZodOptional<z.ZodBoolean>;
193
+ }, z.core.$strict>>;
194
+ }, z.core.$strict>, z.ZodObject<{
195
+ type: z.ZodLiteral<"comparison">;
196
+ columns: z.ZodArray<z.ZodString>;
197
+ rows: z.ZodArray<z.ZodObject<{
198
+ label: z.ZodString;
199
+ cells: z.ZodArray<z.ZodString>;
200
+ }, z.core.$strict>>;
201
+ }, z.core.$strict>, z.ZodObject<{
202
+ type: z.ZodLiteral<"icon_cards">;
203
+ items: z.ZodArray<z.ZodObject<{
204
+ icon: z.ZodEnum<{
205
+ [x: string]: string;
206
+ }>;
207
+ title: z.ZodString;
208
+ text: z.ZodString;
209
+ }, z.core.$strict>>;
210
+ }, z.core.$strict>, z.ZodObject<{
211
+ type: z.ZodLiteral<"row_cards">;
212
+ items: z.ZodArray<z.ZodObject<{
213
+ icon: z.ZodOptional<z.ZodEnum<{
214
+ [x: string]: string;
215
+ }>>;
216
+ title: z.ZodString;
217
+ text: z.ZodOptional<z.ZodString>;
218
+ sub: z.ZodOptional<z.ZodString>;
219
+ highlight: z.ZodOptional<z.ZodBoolean>;
220
+ }, z.core.$strict>>;
221
+ }, z.core.$strict>, z.ZodObject<{
222
+ type: z.ZodLiteral<"steps">;
223
+ items: z.ZodArray<z.ZodObject<{
224
+ title: z.ZodString;
225
+ text: z.ZodString;
226
+ }, z.core.$strict>>;
227
+ }, z.core.$strict>, z.ZodObject<{
228
+ type: z.ZodLiteral<"rings">;
229
+ items: z.ZodArray<z.ZodObject<{
230
+ label: z.ZodString;
231
+ desc: z.ZodOptional<z.ZodString>;
232
+ }, z.core.$strict>>;
233
+ }, z.core.$strict>, z.ZodObject<{
234
+ type: z.ZodLiteral<"numbered_cards">;
235
+ items: z.ZodArray<z.ZodObject<{
236
+ title: z.ZodString;
237
+ text: z.ZodOptional<z.ZodString>;
238
+ sub: z.ZodOptional<z.ZodString>;
239
+ }, z.core.$strict>>;
240
+ }, z.core.$strict>, z.ZodObject<{
241
+ type: z.ZodLiteral<"roadmap">;
242
+ items: z.ZodArray<z.ZodObject<{
243
+ title: z.ZodString;
244
+ period: z.ZodOptional<z.ZodString>;
245
+ rows: z.ZodOptional<z.ZodArray<z.ZodObject<{
246
+ label: z.ZodString;
247
+ value: z.ZodString;
248
+ }, z.core.$strict>>>;
249
+ }, z.core.$strict>>;
250
+ }, z.core.$strict>, z.ZodObject<{
251
+ type: z.ZodLiteral<"matrix">;
252
+ x_title: z.ZodOptional<z.ZodString>;
253
+ y_title: z.ZodOptional<z.ZodString>;
254
+ cols: z.ZodNumber;
255
+ items: z.ZodArray<z.ZodObject<{
256
+ title: z.ZodString;
257
+ tag: z.ZodOptional<z.ZodString>;
258
+ tone: z.ZodOptional<z.ZodEnum<{
259
+ info: "info";
260
+ accent: "accent";
261
+ neutral: "neutral";
262
+ }>>;
263
+ }, z.core.$strict>>;
264
+ }, z.core.$strict>, z.ZodObject<{
265
+ type: z.ZodLiteral<"insight_panel">;
266
+ title: z.ZodString;
267
+ rows: z.ZodArray<z.ZodObject<{
268
+ label: z.ZodString;
269
+ text: z.ZodString;
270
+ }, z.core.$strict>>;
271
+ footnote: z.ZodOptional<z.ZodString>;
272
+ }, z.core.$strict>, z.ZodObject<{
273
+ type: z.ZodLiteral<"verdict_banner">;
274
+ text: z.ZodString;
275
+ tone: z.ZodEnum<{
276
+ neutral: "neutral";
277
+ positive: "positive";
278
+ warning: "warning";
279
+ }>;
280
+ icon: z.ZodOptional<z.ZodEnum<{
281
+ [x: string]: string;
282
+ }>>;
283
+ }, z.core.$strict>, z.ZodObject<{
284
+ type: z.ZodLiteral<"citation">;
285
+ sources: z.ZodArray<z.ZodObject<{
286
+ label: z.ZodString;
287
+ url: z.ZodOptional<z.ZodString>;
288
+ ref: z.ZodOptional<z.ZodString>;
289
+ }, z.core.$strict>>;
290
+ }, z.core.$strict>, z.ZodObject<{
291
+ type: z.ZodLiteral<"image">;
292
+ asset_id: z.ZodString;
293
+ caption: z.ZodOptional<z.ZodString>;
294
+ fit: z.ZodDefault<z.ZodEnum<{
295
+ cover: "cover";
296
+ contain: "contain";
297
+ }>>;
298
+ }, z.core.$strict>, z.ZodObject<{
299
+ type: z.ZodLiteral<"image_grid">;
300
+ items: z.ZodArray<z.ZodObject<{
301
+ asset_id: z.ZodString;
302
+ caption: z.ZodOptional<z.ZodString>;
303
+ }, z.core.$strict>>;
304
+ emphasis: z.ZodOptional<z.ZodEnum<{
305
+ none: "none";
306
+ first: "first";
307
+ }>>;
308
+ }, z.core.$strict>, z.ZodObject<{
309
+ type: z.ZodLiteral<"image_compare">;
310
+ left: z.ZodObject<{
311
+ asset_id: z.ZodString;
312
+ label: z.ZodString;
313
+ }, z.core.$strict>;
314
+ right: z.ZodObject<{
315
+ asset_id: z.ZodString;
316
+ label: z.ZodString;
317
+ }, z.core.$strict>;
318
+ style: z.ZodOptional<z.ZodEnum<{
319
+ vs: "vs";
320
+ before_after: "before_after";
321
+ }>>;
322
+ }, z.core.$strict>], "type">;
323
+ declare const SlideSchema: z.ZodObject<{
324
+ type: z.ZodEnum<{
325
+ cover: "cover";
326
+ chapter: "chapter";
327
+ content: "content";
328
+ ending: "ending";
329
+ }>;
330
+ variant: z.ZodOptional<z.ZodEnum<{
331
+ code: "code";
332
+ quote: "quote";
333
+ single: "single";
334
+ two_column: "two_column";
335
+ kpi_focus: "kpi_focus";
336
+ image_focus: "image_focus";
337
+ big_number: "big_number";
338
+ assertion_evidence: "assertion_evidence";
339
+ image_split: "image_split";
340
+ image_top: "image_top";
341
+ image_bottom: "image_bottom";
342
+ image_annotate: "image_annotate";
343
+ aside: "aside";
344
+ }>>;
345
+ heading: z.ZodOptional<z.ZodString>;
346
+ subheading: z.ZodOptional<z.ZodString>;
347
+ blocks: z.ZodDefault<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
348
+ type: z.ZodLiteral<"bullets">;
349
+ items: z.ZodArray<z.ZodString>;
350
+ style: z.ZodOptional<z.ZodEnum<{
351
+ default: "default";
352
+ checklist: "checklist";
353
+ numbered: "numbered";
354
+ plain: "plain";
355
+ divided: "divided";
356
+ }>>;
357
+ }, z.core.$strict>, z.ZodObject<{
358
+ type: z.ZodLiteral<"paragraph">;
359
+ text: z.ZodString;
360
+ }, z.core.$strict>, z.ZodObject<{
361
+ type: z.ZodLiteral<"quote">;
362
+ text: z.ZodString;
363
+ attribution: z.ZodOptional<z.ZodString>;
364
+ }, z.core.$strict>, z.ZodObject<{
365
+ type: z.ZodLiteral<"callout">;
366
+ variant: z.ZodEnum<{
367
+ info: "info";
368
+ warn: "warn";
369
+ tip: "tip";
370
+ }>;
371
+ text: z.ZodString;
372
+ icon: z.ZodOptional<z.ZodEnum<{
373
+ [x: string]: string;
374
+ }>>;
375
+ }, z.core.$strict>, z.ZodObject<{
376
+ type: z.ZodLiteral<"code">;
377
+ language: z.ZodString;
378
+ code: z.ZodString;
379
+ }, z.core.$strict>, z.ZodObject<{
380
+ type: z.ZodLiteral<"kpi_cards">;
381
+ items: z.ZodArray<z.ZodObject<{
382
+ value: z.ZodString;
383
+ unit: z.ZodOptional<z.ZodString>;
384
+ label: z.ZodString;
385
+ delta: z.ZodOptional<z.ZodEnum<{
386
+ up: "up";
387
+ down: "down";
388
+ flat: "flat";
389
+ }>>;
390
+ icon: z.ZodOptional<z.ZodEnum<{
391
+ [x: string]: string;
392
+ }>>;
393
+ source: z.ZodOptional<z.ZodString>;
394
+ }, z.core.$strict>>;
395
+ }, z.core.$strict>, z.ZodObject<{
396
+ type: z.ZodLiteral<"chart">;
397
+ chart_type: z.ZodEnum<{
398
+ line: "line";
399
+ dumbbell: "dumbbell";
400
+ bar: "bar";
401
+ pie: "pie";
402
+ funnel: "funnel";
403
+ }>;
404
+ direction: z.ZodOptional<z.ZodEnum<{
405
+ horizontal: "horizontal";
406
+ vertical: "vertical";
407
+ }>>;
408
+ style: z.ZodOptional<z.ZodEnum<{
409
+ donut: "donut";
410
+ }>>;
411
+ axes: z.ZodOptional<z.ZodObject<{
412
+ x_title: z.ZodOptional<z.ZodString>;
413
+ y_title: z.ZodOptional<z.ZodString>;
414
+ show_grid: z.ZodOptional<z.ZodBoolean>;
415
+ }, z.core.$strict>>;
416
+ series: z.ZodArray<z.ZodObject<{
417
+ name: z.ZodString;
418
+ data: z.ZodArray<z.ZodObject<{
419
+ x: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
420
+ y: z.ZodNumber;
421
+ }, z.core.$strict>>;
422
+ }, z.core.$strict>>;
423
+ }, z.core.$strict>, z.ZodObject<{
424
+ type: z.ZodLiteral<"flowchart">;
425
+ nodes: z.ZodArray<z.ZodObject<{
426
+ id: z.ZodString;
427
+ label: z.ZodString;
428
+ kind: z.ZodOptional<z.ZodEnum<{
429
+ rect: "rect";
430
+ diamond: "diamond";
431
+ round: "round";
432
+ }>>;
433
+ }, z.core.$strict>>;
434
+ edges: z.ZodArray<z.ZodObject<{
435
+ from: z.ZodString;
436
+ to: z.ZodString;
437
+ label: z.ZodOptional<z.ZodString>;
438
+ }, z.core.$strict>>;
439
+ direction: z.ZodOptional<z.ZodEnum<{
440
+ TB: "TB";
441
+ TD: "TD";
442
+ BT: "BT";
443
+ LR: "LR";
444
+ RL: "RL";
445
+ }>>;
446
+ }, z.core.$strict>, z.ZodObject<{
447
+ type: z.ZodLiteral<"architecture">;
448
+ layers: z.ZodArray<z.ZodObject<{
449
+ title: z.ZodString;
450
+ items: z.ZodArray<z.ZodString>;
451
+ }, z.core.$strict>>;
452
+ }, z.core.$strict>, z.ZodObject<{
453
+ type: z.ZodLiteral<"timeline">;
454
+ layout: z.ZodOptional<z.ZodEnum<{
455
+ horizontal: "horizontal";
456
+ vertical: "vertical";
457
+ }>>;
458
+ milestones: z.ZodArray<z.ZodObject<{
459
+ date: z.ZodString;
460
+ title: z.ZodString;
461
+ desc: z.ZodOptional<z.ZodString>;
462
+ highlight: z.ZodOptional<z.ZodBoolean>;
463
+ }, z.core.$strict>>;
464
+ }, z.core.$strict>, z.ZodObject<{
465
+ type: z.ZodLiteral<"comparison">;
466
+ columns: z.ZodArray<z.ZodString>;
467
+ rows: z.ZodArray<z.ZodObject<{
468
+ label: z.ZodString;
469
+ cells: z.ZodArray<z.ZodString>;
470
+ }, z.core.$strict>>;
471
+ }, z.core.$strict>, z.ZodObject<{
472
+ type: z.ZodLiteral<"icon_cards">;
473
+ items: z.ZodArray<z.ZodObject<{
474
+ icon: z.ZodEnum<{
475
+ [x: string]: string;
476
+ }>;
477
+ title: z.ZodString;
478
+ text: z.ZodString;
479
+ }, z.core.$strict>>;
480
+ }, z.core.$strict>, z.ZodObject<{
481
+ type: z.ZodLiteral<"row_cards">;
482
+ items: z.ZodArray<z.ZodObject<{
483
+ icon: z.ZodOptional<z.ZodEnum<{
484
+ [x: string]: string;
485
+ }>>;
486
+ title: z.ZodString;
487
+ text: z.ZodOptional<z.ZodString>;
488
+ sub: z.ZodOptional<z.ZodString>;
489
+ highlight: z.ZodOptional<z.ZodBoolean>;
490
+ }, z.core.$strict>>;
491
+ }, z.core.$strict>, z.ZodObject<{
492
+ type: z.ZodLiteral<"steps">;
493
+ items: z.ZodArray<z.ZodObject<{
494
+ title: z.ZodString;
495
+ text: z.ZodString;
496
+ }, z.core.$strict>>;
497
+ }, z.core.$strict>, z.ZodObject<{
498
+ type: z.ZodLiteral<"rings">;
499
+ items: z.ZodArray<z.ZodObject<{
500
+ label: z.ZodString;
501
+ desc: z.ZodOptional<z.ZodString>;
502
+ }, z.core.$strict>>;
503
+ }, z.core.$strict>, z.ZodObject<{
504
+ type: z.ZodLiteral<"numbered_cards">;
505
+ items: z.ZodArray<z.ZodObject<{
506
+ title: z.ZodString;
507
+ text: z.ZodOptional<z.ZodString>;
508
+ sub: z.ZodOptional<z.ZodString>;
509
+ }, z.core.$strict>>;
510
+ }, z.core.$strict>, z.ZodObject<{
511
+ type: z.ZodLiteral<"roadmap">;
512
+ items: z.ZodArray<z.ZodObject<{
513
+ title: z.ZodString;
514
+ period: z.ZodOptional<z.ZodString>;
515
+ rows: z.ZodOptional<z.ZodArray<z.ZodObject<{
516
+ label: z.ZodString;
517
+ value: z.ZodString;
518
+ }, z.core.$strict>>>;
519
+ }, z.core.$strict>>;
520
+ }, z.core.$strict>, z.ZodObject<{
521
+ type: z.ZodLiteral<"matrix">;
522
+ x_title: z.ZodOptional<z.ZodString>;
523
+ y_title: z.ZodOptional<z.ZodString>;
524
+ cols: z.ZodNumber;
525
+ items: z.ZodArray<z.ZodObject<{
526
+ title: z.ZodString;
527
+ tag: z.ZodOptional<z.ZodString>;
528
+ tone: z.ZodOptional<z.ZodEnum<{
529
+ info: "info";
530
+ accent: "accent";
531
+ neutral: "neutral";
532
+ }>>;
533
+ }, z.core.$strict>>;
534
+ }, z.core.$strict>, z.ZodObject<{
535
+ type: z.ZodLiteral<"insight_panel">;
536
+ title: z.ZodString;
537
+ rows: z.ZodArray<z.ZodObject<{
538
+ label: z.ZodString;
539
+ text: z.ZodString;
540
+ }, z.core.$strict>>;
541
+ footnote: z.ZodOptional<z.ZodString>;
542
+ }, z.core.$strict>, z.ZodObject<{
543
+ type: z.ZodLiteral<"verdict_banner">;
544
+ text: z.ZodString;
545
+ tone: z.ZodEnum<{
546
+ neutral: "neutral";
547
+ positive: "positive";
548
+ warning: "warning";
549
+ }>;
550
+ icon: z.ZodOptional<z.ZodEnum<{
551
+ [x: string]: string;
552
+ }>>;
553
+ }, z.core.$strict>, z.ZodObject<{
554
+ type: z.ZodLiteral<"citation">;
555
+ sources: z.ZodArray<z.ZodObject<{
556
+ label: z.ZodString;
557
+ url: z.ZodOptional<z.ZodString>;
558
+ ref: z.ZodOptional<z.ZodString>;
559
+ }, z.core.$strict>>;
560
+ }, z.core.$strict>, z.ZodObject<{
561
+ type: z.ZodLiteral<"image">;
562
+ asset_id: z.ZodString;
563
+ caption: z.ZodOptional<z.ZodString>;
564
+ fit: z.ZodDefault<z.ZodEnum<{
565
+ cover: "cover";
566
+ contain: "contain";
567
+ }>>;
568
+ }, z.core.$strict>, z.ZodObject<{
569
+ type: z.ZodLiteral<"image_grid">;
570
+ items: z.ZodArray<z.ZodObject<{
571
+ asset_id: z.ZodString;
572
+ caption: z.ZodOptional<z.ZodString>;
573
+ }, z.core.$strict>>;
574
+ emphasis: z.ZodOptional<z.ZodEnum<{
575
+ none: "none";
576
+ first: "first";
577
+ }>>;
578
+ }, z.core.$strict>, z.ZodObject<{
579
+ type: z.ZodLiteral<"image_compare">;
580
+ left: z.ZodObject<{
581
+ asset_id: z.ZodString;
582
+ label: z.ZodString;
583
+ }, z.core.$strict>;
584
+ right: z.ZodObject<{
585
+ asset_id: z.ZodString;
586
+ label: z.ZodString;
587
+ }, z.core.$strict>;
588
+ style: z.ZodOptional<z.ZodEnum<{
589
+ vs: "vs";
590
+ before_after: "before_after";
591
+ }>>;
592
+ }, z.core.$strict>], "type">>>;
593
+ background: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
594
+ kind: z.ZodLiteral<"color">;
595
+ value: z.ZodString;
596
+ }, z.core.$strict>, z.ZodObject<{
597
+ kind: z.ZodLiteral<"gradient">;
598
+ from: z.ZodString;
599
+ to: z.ZodString;
600
+ direction: z.ZodOptional<z.ZodEnum<{
601
+ tb: "tb";
602
+ lr: "lr";
603
+ diagonal: "diagonal";
604
+ }>>;
605
+ }, z.core.$strict>, z.ZodObject<{
606
+ kind: z.ZodLiteral<"asset">;
607
+ asset_id: z.ZodString;
608
+ overlay: z.ZodOptional<z.ZodObject<{
609
+ color: z.ZodString;
610
+ opacity: z.ZodNumber;
611
+ }, z.core.$strict>>;
612
+ fit: z.ZodOptional<z.ZodEnum<{
613
+ cover: "cover";
614
+ contain: "contain";
615
+ }>>;
616
+ }, z.core.$strict>], "kind">>;
617
+ decor: z.ZodOptional<z.ZodObject<{
618
+ kind: z.ZodEnum<{
619
+ big_number: "big_number";
620
+ corner_tag: "corner_tag";
621
+ rule_line: "rule_line";
622
+ quote_marks: "quote_marks";
623
+ geo_dots: "geo_dots";
624
+ }>;
625
+ intensity: z.ZodOptional<z.ZodEnum<{
626
+ subtle: "subtle";
627
+ normal: "normal";
628
+ }>>;
629
+ text: z.ZodOptional<z.ZodString>;
630
+ }, z.core.$strict>>;
631
+ image_side: z.ZodOptional<z.ZodEnum<{
632
+ left: "left";
633
+ right: "right";
634
+ }>>;
635
+ footnote: z.ZodOptional<z.ZodString>;
636
+ }, z.core.$strict>;
637
+ declare const PptxIRSchema: z.ZodObject<{
638
+ version: z.ZodLiteral<"2">;
639
+ filename: z.ZodString;
640
+ theme: z.ZodObject<{
641
+ id: z.ZodEnum<{
642
+ consulting: "consulting";
643
+ enterprise: "enterprise";
644
+ academic: "academic";
645
+ insight: "insight";
646
+ campaign: "campaign";
647
+ bloom: "bloom";
648
+ classroom: "classroom";
649
+ ink: "ink";
650
+ tech: "tech";
651
+ runway: "runway";
652
+ journal: "journal";
653
+ luxe: "luxe";
654
+ heritage: "heritage";
655
+ }>;
656
+ override: z.ZodOptional<z.ZodObject<{
657
+ primary: z.ZodOptional<z.ZodString>;
658
+ accent: z.ZodOptional<z.ZodString>;
659
+ font_heading: z.ZodOptional<z.ZodArray<z.ZodString>>;
660
+ font_body: z.ZodOptional<z.ZodArray<z.ZodString>>;
661
+ }, z.core.$strict>>;
662
+ }, z.core.$strict>;
663
+ meta: z.ZodDefault<z.ZodObject<{
664
+ organization: z.ZodOptional<z.ZodString>;
665
+ authors: z.ZodOptional<z.ZodArray<z.ZodObject<{
666
+ name: z.ZodString;
667
+ role: z.ZodOptional<z.ZodString>;
668
+ org: z.ZodOptional<z.ZodString>;
669
+ }, z.core.$strict>>>;
670
+ date: z.ZodOptional<z.ZodString>;
671
+ version: z.ZodOptional<z.ZodString>;
672
+ confidentiality: z.ZodOptional<z.ZodEnum<{
673
+ public: "public";
674
+ internal: "internal";
675
+ confidential: "confidential";
676
+ restricted: "restricted";
677
+ }>>;
678
+ contact: z.ZodOptional<z.ZodObject<{
679
+ name: z.ZodOptional<z.ZodString>;
680
+ email: z.ZodOptional<z.ZodString>;
681
+ phone: z.ZodOptional<z.ZodString>;
682
+ website: z.ZodOptional<z.ZodString>;
683
+ }, z.core.$strict>>;
684
+ copyright: z.ZodOptional<z.ZodString>;
685
+ animation: z.ZodOptional<z.ZodObject<{
686
+ transition: z.ZodOptional<z.ZodEnum<{
687
+ fade: "fade";
688
+ push: "push";
689
+ wipe: "wipe";
690
+ none: "none";
691
+ }>>;
692
+ elements: z.ZodOptional<z.ZodEnum<{
693
+ none: "none";
694
+ auto: "auto";
695
+ }>>;
696
+ }, z.core.$strict>>;
697
+ }, z.core.$strict>>;
698
+ assets: z.ZodDefault<z.ZodObject<{
699
+ images: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
700
+ src: z.ZodString;
701
+ alt: z.ZodOptional<z.ZodString>;
702
+ error: z.ZodOptional<z.ZodString>;
703
+ }, z.core.$strict>>>;
704
+ }, z.core.$strict>>;
705
+ brand: z.ZodOptional<z.ZodObject<{
706
+ logo_asset_id: z.ZodOptional<z.ZodString>;
707
+ position: z.ZodOptional<z.ZodEnum<{
708
+ tl: "tl";
709
+ tr: "tr";
710
+ bl: "bl";
711
+ br: "br";
712
+ }>>;
713
+ }, z.core.$strict>>;
714
+ slides: z.ZodArray<z.ZodObject<{
715
+ type: z.ZodEnum<{
716
+ cover: "cover";
717
+ chapter: "chapter";
718
+ content: "content";
719
+ ending: "ending";
720
+ }>;
721
+ variant: z.ZodOptional<z.ZodEnum<{
722
+ code: "code";
723
+ quote: "quote";
724
+ single: "single";
725
+ two_column: "two_column";
726
+ kpi_focus: "kpi_focus";
727
+ image_focus: "image_focus";
728
+ big_number: "big_number";
729
+ assertion_evidence: "assertion_evidence";
730
+ image_split: "image_split";
731
+ image_top: "image_top";
732
+ image_bottom: "image_bottom";
733
+ image_annotate: "image_annotate";
734
+ aside: "aside";
735
+ }>>;
736
+ heading: z.ZodOptional<z.ZodString>;
737
+ subheading: z.ZodOptional<z.ZodString>;
738
+ blocks: z.ZodDefault<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
739
+ type: z.ZodLiteral<"bullets">;
740
+ items: z.ZodArray<z.ZodString>;
741
+ style: z.ZodOptional<z.ZodEnum<{
742
+ default: "default";
743
+ checklist: "checklist";
744
+ numbered: "numbered";
745
+ plain: "plain";
746
+ divided: "divided";
747
+ }>>;
748
+ }, z.core.$strict>, z.ZodObject<{
749
+ type: z.ZodLiteral<"paragraph">;
750
+ text: z.ZodString;
751
+ }, z.core.$strict>, z.ZodObject<{
752
+ type: z.ZodLiteral<"quote">;
753
+ text: z.ZodString;
754
+ attribution: z.ZodOptional<z.ZodString>;
755
+ }, z.core.$strict>, z.ZodObject<{
756
+ type: z.ZodLiteral<"callout">;
757
+ variant: z.ZodEnum<{
758
+ info: "info";
759
+ warn: "warn";
760
+ tip: "tip";
761
+ }>;
762
+ text: z.ZodString;
763
+ icon: z.ZodOptional<z.ZodEnum<{
764
+ [x: string]: string;
765
+ }>>;
766
+ }, z.core.$strict>, z.ZodObject<{
767
+ type: z.ZodLiteral<"code">;
768
+ language: z.ZodString;
769
+ code: z.ZodString;
770
+ }, z.core.$strict>, z.ZodObject<{
771
+ type: z.ZodLiteral<"kpi_cards">;
772
+ items: z.ZodArray<z.ZodObject<{
773
+ value: z.ZodString;
774
+ unit: z.ZodOptional<z.ZodString>;
775
+ label: z.ZodString;
776
+ delta: z.ZodOptional<z.ZodEnum<{
777
+ up: "up";
778
+ down: "down";
779
+ flat: "flat";
780
+ }>>;
781
+ icon: z.ZodOptional<z.ZodEnum<{
782
+ [x: string]: string;
783
+ }>>;
784
+ source: z.ZodOptional<z.ZodString>;
785
+ }, z.core.$strict>>;
786
+ }, z.core.$strict>, z.ZodObject<{
787
+ type: z.ZodLiteral<"chart">;
788
+ chart_type: z.ZodEnum<{
789
+ line: "line";
790
+ dumbbell: "dumbbell";
791
+ bar: "bar";
792
+ pie: "pie";
793
+ funnel: "funnel";
794
+ }>;
795
+ direction: z.ZodOptional<z.ZodEnum<{
796
+ horizontal: "horizontal";
797
+ vertical: "vertical";
798
+ }>>;
799
+ style: z.ZodOptional<z.ZodEnum<{
800
+ donut: "donut";
801
+ }>>;
802
+ axes: z.ZodOptional<z.ZodObject<{
803
+ x_title: z.ZodOptional<z.ZodString>;
804
+ y_title: z.ZodOptional<z.ZodString>;
805
+ show_grid: z.ZodOptional<z.ZodBoolean>;
806
+ }, z.core.$strict>>;
807
+ series: z.ZodArray<z.ZodObject<{
808
+ name: z.ZodString;
809
+ data: z.ZodArray<z.ZodObject<{
810
+ x: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
811
+ y: z.ZodNumber;
812
+ }, z.core.$strict>>;
813
+ }, z.core.$strict>>;
814
+ }, z.core.$strict>, z.ZodObject<{
815
+ type: z.ZodLiteral<"flowchart">;
816
+ nodes: z.ZodArray<z.ZodObject<{
817
+ id: z.ZodString;
818
+ label: z.ZodString;
819
+ kind: z.ZodOptional<z.ZodEnum<{
820
+ rect: "rect";
821
+ diamond: "diamond";
822
+ round: "round";
823
+ }>>;
824
+ }, z.core.$strict>>;
825
+ edges: z.ZodArray<z.ZodObject<{
826
+ from: z.ZodString;
827
+ to: z.ZodString;
828
+ label: z.ZodOptional<z.ZodString>;
829
+ }, z.core.$strict>>;
830
+ direction: z.ZodOptional<z.ZodEnum<{
831
+ TB: "TB";
832
+ TD: "TD";
833
+ BT: "BT";
834
+ LR: "LR";
835
+ RL: "RL";
836
+ }>>;
837
+ }, z.core.$strict>, z.ZodObject<{
838
+ type: z.ZodLiteral<"architecture">;
839
+ layers: z.ZodArray<z.ZodObject<{
840
+ title: z.ZodString;
841
+ items: z.ZodArray<z.ZodString>;
842
+ }, z.core.$strict>>;
843
+ }, z.core.$strict>, z.ZodObject<{
844
+ type: z.ZodLiteral<"timeline">;
845
+ layout: z.ZodOptional<z.ZodEnum<{
846
+ horizontal: "horizontal";
847
+ vertical: "vertical";
848
+ }>>;
849
+ milestones: z.ZodArray<z.ZodObject<{
850
+ date: z.ZodString;
851
+ title: z.ZodString;
852
+ desc: z.ZodOptional<z.ZodString>;
853
+ highlight: z.ZodOptional<z.ZodBoolean>;
854
+ }, z.core.$strict>>;
855
+ }, z.core.$strict>, z.ZodObject<{
856
+ type: z.ZodLiteral<"comparison">;
857
+ columns: z.ZodArray<z.ZodString>;
858
+ rows: z.ZodArray<z.ZodObject<{
859
+ label: z.ZodString;
860
+ cells: z.ZodArray<z.ZodString>;
861
+ }, z.core.$strict>>;
862
+ }, z.core.$strict>, z.ZodObject<{
863
+ type: z.ZodLiteral<"icon_cards">;
864
+ items: z.ZodArray<z.ZodObject<{
865
+ icon: z.ZodEnum<{
866
+ [x: string]: string;
867
+ }>;
868
+ title: z.ZodString;
869
+ text: z.ZodString;
870
+ }, z.core.$strict>>;
871
+ }, z.core.$strict>, z.ZodObject<{
872
+ type: z.ZodLiteral<"row_cards">;
873
+ items: z.ZodArray<z.ZodObject<{
874
+ icon: z.ZodOptional<z.ZodEnum<{
875
+ [x: string]: string;
876
+ }>>;
877
+ title: z.ZodString;
878
+ text: z.ZodOptional<z.ZodString>;
879
+ sub: z.ZodOptional<z.ZodString>;
880
+ highlight: z.ZodOptional<z.ZodBoolean>;
881
+ }, z.core.$strict>>;
882
+ }, z.core.$strict>, z.ZodObject<{
883
+ type: z.ZodLiteral<"steps">;
884
+ items: z.ZodArray<z.ZodObject<{
885
+ title: z.ZodString;
886
+ text: z.ZodString;
887
+ }, z.core.$strict>>;
888
+ }, z.core.$strict>, z.ZodObject<{
889
+ type: z.ZodLiteral<"rings">;
890
+ items: z.ZodArray<z.ZodObject<{
891
+ label: z.ZodString;
892
+ desc: z.ZodOptional<z.ZodString>;
893
+ }, z.core.$strict>>;
894
+ }, z.core.$strict>, z.ZodObject<{
895
+ type: z.ZodLiteral<"numbered_cards">;
896
+ items: z.ZodArray<z.ZodObject<{
897
+ title: z.ZodString;
898
+ text: z.ZodOptional<z.ZodString>;
899
+ sub: z.ZodOptional<z.ZodString>;
900
+ }, z.core.$strict>>;
901
+ }, z.core.$strict>, z.ZodObject<{
902
+ type: z.ZodLiteral<"roadmap">;
903
+ items: z.ZodArray<z.ZodObject<{
904
+ title: z.ZodString;
905
+ period: z.ZodOptional<z.ZodString>;
906
+ rows: z.ZodOptional<z.ZodArray<z.ZodObject<{
907
+ label: z.ZodString;
908
+ value: z.ZodString;
909
+ }, z.core.$strict>>>;
910
+ }, z.core.$strict>>;
911
+ }, z.core.$strict>, z.ZodObject<{
912
+ type: z.ZodLiteral<"matrix">;
913
+ x_title: z.ZodOptional<z.ZodString>;
914
+ y_title: z.ZodOptional<z.ZodString>;
915
+ cols: z.ZodNumber;
916
+ items: z.ZodArray<z.ZodObject<{
917
+ title: z.ZodString;
918
+ tag: z.ZodOptional<z.ZodString>;
919
+ tone: z.ZodOptional<z.ZodEnum<{
920
+ info: "info";
921
+ accent: "accent";
922
+ neutral: "neutral";
923
+ }>>;
924
+ }, z.core.$strict>>;
925
+ }, z.core.$strict>, z.ZodObject<{
926
+ type: z.ZodLiteral<"insight_panel">;
927
+ title: z.ZodString;
928
+ rows: z.ZodArray<z.ZodObject<{
929
+ label: z.ZodString;
930
+ text: z.ZodString;
931
+ }, z.core.$strict>>;
932
+ footnote: z.ZodOptional<z.ZodString>;
933
+ }, z.core.$strict>, z.ZodObject<{
934
+ type: z.ZodLiteral<"verdict_banner">;
935
+ text: z.ZodString;
936
+ tone: z.ZodEnum<{
937
+ neutral: "neutral";
938
+ positive: "positive";
939
+ warning: "warning";
940
+ }>;
941
+ icon: z.ZodOptional<z.ZodEnum<{
942
+ [x: string]: string;
943
+ }>>;
944
+ }, z.core.$strict>, z.ZodObject<{
945
+ type: z.ZodLiteral<"citation">;
946
+ sources: z.ZodArray<z.ZodObject<{
947
+ label: z.ZodString;
948
+ url: z.ZodOptional<z.ZodString>;
949
+ ref: z.ZodOptional<z.ZodString>;
950
+ }, z.core.$strict>>;
951
+ }, z.core.$strict>, z.ZodObject<{
952
+ type: z.ZodLiteral<"image">;
953
+ asset_id: z.ZodString;
954
+ caption: z.ZodOptional<z.ZodString>;
955
+ fit: z.ZodDefault<z.ZodEnum<{
956
+ cover: "cover";
957
+ contain: "contain";
958
+ }>>;
959
+ }, z.core.$strict>, z.ZodObject<{
960
+ type: z.ZodLiteral<"image_grid">;
961
+ items: z.ZodArray<z.ZodObject<{
962
+ asset_id: z.ZodString;
963
+ caption: z.ZodOptional<z.ZodString>;
964
+ }, z.core.$strict>>;
965
+ emphasis: z.ZodOptional<z.ZodEnum<{
966
+ none: "none";
967
+ first: "first";
968
+ }>>;
969
+ }, z.core.$strict>, z.ZodObject<{
970
+ type: z.ZodLiteral<"image_compare">;
971
+ left: z.ZodObject<{
972
+ asset_id: z.ZodString;
973
+ label: z.ZodString;
974
+ }, z.core.$strict>;
975
+ right: z.ZodObject<{
976
+ asset_id: z.ZodString;
977
+ label: z.ZodString;
978
+ }, z.core.$strict>;
979
+ style: z.ZodOptional<z.ZodEnum<{
980
+ vs: "vs";
981
+ before_after: "before_after";
982
+ }>>;
983
+ }, z.core.$strict>], "type">>>;
984
+ background: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
985
+ kind: z.ZodLiteral<"color">;
986
+ value: z.ZodString;
987
+ }, z.core.$strict>, z.ZodObject<{
988
+ kind: z.ZodLiteral<"gradient">;
989
+ from: z.ZodString;
990
+ to: z.ZodString;
991
+ direction: z.ZodOptional<z.ZodEnum<{
992
+ tb: "tb";
993
+ lr: "lr";
994
+ diagonal: "diagonal";
995
+ }>>;
996
+ }, z.core.$strict>, z.ZodObject<{
997
+ kind: z.ZodLiteral<"asset">;
998
+ asset_id: z.ZodString;
999
+ overlay: z.ZodOptional<z.ZodObject<{
1000
+ color: z.ZodString;
1001
+ opacity: z.ZodNumber;
1002
+ }, z.core.$strict>>;
1003
+ fit: z.ZodOptional<z.ZodEnum<{
1004
+ cover: "cover";
1005
+ contain: "contain";
1006
+ }>>;
1007
+ }, z.core.$strict>], "kind">>;
1008
+ decor: z.ZodOptional<z.ZodObject<{
1009
+ kind: z.ZodEnum<{
1010
+ big_number: "big_number";
1011
+ corner_tag: "corner_tag";
1012
+ rule_line: "rule_line";
1013
+ quote_marks: "quote_marks";
1014
+ geo_dots: "geo_dots";
1015
+ }>;
1016
+ intensity: z.ZodOptional<z.ZodEnum<{
1017
+ subtle: "subtle";
1018
+ normal: "normal";
1019
+ }>>;
1020
+ text: z.ZodOptional<z.ZodString>;
1021
+ }, z.core.$strict>>;
1022
+ image_side: z.ZodOptional<z.ZodEnum<{
1023
+ left: "left";
1024
+ right: "right";
1025
+ }>>;
1026
+ footnote: z.ZodOptional<z.ZodString>;
1027
+ }, z.core.$strict>>;
1028
+ }, z.core.$strict>;
1029
+ type PptxIR = z.infer<typeof PptxIRSchema>;
1030
+ type Block = z.infer<typeof BlockSchema>;
1031
+ type BackgroundSpec = z.infer<typeof BackgroundSpecSchema>;
1032
+ type Slide = z.infer<typeof SlideSchema>;
1033
+ type Assets = z.infer<typeof AssetsSchema>;
1034
+ type Meta = z.infer<typeof MetaSchema>;
1035
+
1036
+ interface ValidationIssue {
1037
+ path: string;
1038
+ message: string;
1039
+ /** 1-based slide number when the issue is scoped to a slide. */
1040
+ page?: number;
1041
+ }
1042
+ interface ValidateResult {
1043
+ ok: boolean;
1044
+ ir?: PptxIR;
1045
+ errors: ValidationIssue[];
1046
+ }
1047
+ /**
1048
+ * Validate raw JSON against the IR schema, then — once it parses — run the
1049
+ * content-quality gate (`checkIrQuality`) against the parsed IR. Both stages
1050
+ * must pass for `ok: true`. Quality findings are reported the same way as
1051
+ * schema errors (page-scoped, 1-based). `checkIrQuality` itself tags findings
1052
+ * "warn" vs "error", but that split was designed for its original consumer
1053
+ * (surfacing informational warnings in a UI after generation, per its own
1054
+ * docstring) — here it is the pre-generation hard gate, so any finding blocks
1055
+ * (`ok: false`), not only "error"-severity ones. Treating "warn" findings
1056
+ * (e.g. a cover with no heading) as advisory-only would defeat the point of
1057
+ * wiring this in: the spec's core principle is a hard protocol gate, not
1058
+ * hoped-for prompt compliance.
1059
+ */
1060
+ declare function validateIr(input: unknown): ValidateResult;
1061
+ declare function formatIssues(errors: ValidationIssue[]): string;
1062
+ /** Render a single slide to standalone SVG markup (preview / self-check). */
1063
+ declare function renderSlideSvg(ir: PptxIR, slideIndex: number): string;
1064
+ /** Full pipeline: validate → SVG → DrawingML → animation patches → pptx bytes. */
1065
+ declare function generatePptx(input: unknown): Promise<Uint8Array>;
1066
+ interface ThemeInfo {
1067
+ id: string;
1068
+ label: string;
1069
+ colors: Record<string, unknown>;
1070
+ }
1071
+ /** Built-in theme catalog with labels and color tokens. */
1072
+ declare function listThemes(): ThemeInfo[];
1073
+ /** JSON Schema for the IR — feed this to a model before it writes IR. */
1074
+ declare function irJsonSchema(): Record<string, unknown>;
1075
+
1076
+ export { type Assets, type BackgroundSpec, type Block, type Meta, PptfastError, type PptxIR, PptxIRSchema, type Slide, THEME_IDS, type ThemeInfo, VERSION, type ValidateResult, type ValidationIssue, formatIssues, generatePptx, irJsonSchema, listThemes, renderSlideSvg, validateIr };