@nodii/onboarding 0.0.1 → 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.
Files changed (73) hide show
  1. package/README.md +75 -2
  2. package/dist/chunk-7NS7ENJV.js +232 -0
  3. package/dist/chunk-7NS7ENJV.js.map +1 -0
  4. package/dist/chunk-AZE3NPSY.js +186 -0
  5. package/dist/chunk-AZE3NPSY.js.map +1 -0
  6. package/dist/chunk-BMQINH6O.js +401 -0
  7. package/dist/chunk-BMQINH6O.js.map +1 -0
  8. package/dist/chunk-F75ZJERM.js +199 -0
  9. package/dist/chunk-F75ZJERM.js.map +1 -0
  10. package/dist/chunk-FIRSA7EH.js +3 -0
  11. package/dist/chunk-FIRSA7EH.js.map +1 -0
  12. package/dist/chunk-IPAKPLIF.js +1660 -0
  13. package/dist/chunk-IPAKPLIF.js.map +1 -0
  14. package/dist/chunk-JFDQZ3AC.js +3 -0
  15. package/dist/chunk-JFDQZ3AC.js.map +1 -0
  16. package/dist/chunk-JFIONONR.js +3 -0
  17. package/dist/chunk-JFIONONR.js.map +1 -0
  18. package/dist/chunk-KQTS47FC.js +546 -0
  19. package/dist/chunk-KQTS47FC.js.map +1 -0
  20. package/dist/chunk-LVJM4CTG.js +306 -0
  21. package/dist/chunk-LVJM4CTG.js.map +1 -0
  22. package/dist/chunk-SEKNVHD3.js +59 -0
  23. package/dist/chunk-SEKNVHD3.js.map +1 -0
  24. package/dist/chunk-SIMLMQPT.js +37 -0
  25. package/dist/chunk-SIMLMQPT.js.map +1 -0
  26. package/dist/chunk-U56GQITG.js +79 -0
  27. package/dist/chunk-U56GQITG.js.map +1 -0
  28. package/dist/chunk-U6AXKGYQ.js +101 -0
  29. package/dist/chunk-U6AXKGYQ.js.map +1 -0
  30. package/dist/chunk-VH6FWDWI.js +3 -0
  31. package/dist/chunk-VH6FWDWI.js.map +1 -0
  32. package/dist/chunk-XJTJPBJB.js +191 -0
  33. package/dist/chunk-XJTJPBJB.js.map +1 -0
  34. package/dist/chunk-Z4PA6C2Z.js +3 -0
  35. package/dist/chunk-Z4PA6C2Z.js.map +1 -0
  36. package/dist/client-CqE2dF9A.d.ts +86 -0
  37. package/dist/consent/index.d.ts +59 -0
  38. package/dist/consent/index.js +7 -0
  39. package/dist/consent/index.js.map +1 -0
  40. package/dist/controller-BQb62D0N.d.ts +177 -0
  41. package/dist/dynamic/index.d.ts +235 -0
  42. package/dist/dynamic/index.js +6 -0
  43. package/dist/dynamic/index.js.map +1 -0
  44. package/dist/errors-vJkye4a0.d.ts +110 -0
  45. package/dist/form/index.d.ts +64 -0
  46. package/dist/form/index.js +5 -0
  47. package/dist/form/index.js.map +1 -0
  48. package/dist/index-Dqfa890U.d.ts +83 -0
  49. package/dist/index.d.ts +16 -2
  50. package/dist/index.js +18 -2
  51. package/dist/index.js.map +1 -0
  52. package/dist/model-ESLSEbi0.d.ts +640 -0
  53. package/dist/model-mnjAEtKe.d.ts +253 -0
  54. package/dist/recaptcha/index.d.ts +102 -0
  55. package/dist/recaptcha/index.js +4 -0
  56. package/dist/recaptcha/index.js.map +1 -0
  57. package/dist/render-DC7P2BGQ.js +5 -0
  58. package/dist/render-DC7P2BGQ.js.map +1 -0
  59. package/dist/schema-BrXb9gnh.d.ts +267 -0
  60. package/dist/signup-client-BL5DfarJ.d.ts +392 -0
  61. package/dist/spec/index.d.ts +17 -0
  62. package/dist/spec/index.js +5 -0
  63. package/dist/spec/index.js.map +1 -0
  64. package/dist/submit/index.d.ts +42 -0
  65. package/dist/submit/index.js +6 -0
  66. package/dist/submit/index.js.map +1 -0
  67. package/dist/viewer/index.d.ts +4 -0
  68. package/dist/viewer/index.js +5 -0
  69. package/dist/viewer/index.js.map +1 -0
  70. package/dist/widget/index.d.ts +262 -0
  71. package/dist/widget/index.js +12 -0
  72. package/dist/widget/index.js.map +1 -0
  73. package/package.json +96 -6
@@ -0,0 +1,640 @@
1
+ import { z } from 'zod/v3';
2
+
3
+ /**
4
+ * D540 §1 onboarding-spec model — mirrors the LOCKED hub REST contract:
5
+ * GET /api/v1/public/onboarding/spec (PublicOnboardingSpecResponse)
6
+ *
7
+ * Response shape (hub JSON Schema, both tiers identical):
8
+ * {
9
+ * specVersion: string (monotonic; echo on submit; stale ⇒ 409),
10
+ * onboarderTier: "platform" | "tenant",
11
+ * botChallenge: { provider: "recaptcha", siteKey: string },
12
+ * forms: {
13
+ * contact: { fields: SpecField[] },
14
+ * signup: { steps: [{ stage: "lead"|"prospect"|"activation",
15
+ * fields: SpecField[] }] }
16
+ * }
17
+ * }
18
+ *
19
+ * SpecField (required: key, type, label, required):
20
+ * { key, type, label, required, validation?, options?, serviceSelection?,
21
+ * piiClass?: "none"|"context"|"always"|"reference" }
22
+ *
23
+ * The Zod schema below validates a fetched spec BEFORE the SDK renders
24
+ * anything from it — a malformed spec throws OnboardingSpecInvalidError
25
+ * (a half-parsed spec could silently drop required fields).
26
+ */
27
+
28
+ type OnboarderTier = "platform" | "tenant";
29
+ type PiiClass = "none" | "context" | "always" | "reference";
30
+ type SpecStage = "lead" | "prospect" | "activation";
31
+ type TerminalStage = "prospect" | "inactive" | "active";
32
+ /**
33
+ * Field keys are interpolated into DOM element ids and (historically) CSS
34
+ * selectors by the widget layer. Constrain them to a strict identifier
35
+ * alphabet so a MALICIOUS or compromised onboarder spec cannot smuggle CSS
36
+ * metacharacters or selector-breakout payloads (e.g. `evil], [onclick=…`)
37
+ * through the fetched spec. A spec with an out-of-alphabet key is REJECTED
38
+ * at parse time → OnboardingSpecInvalidError (fail-closed; never rendered).
39
+ * This is layer 1; the widget also CSS.escapes ids as defense-in-depth.
40
+ */
41
+ declare const FIELD_KEY_PATTERN: RegExp;
42
+ declare const specFieldSchema: z.ZodObject<{
43
+ key: z.ZodString;
44
+ type: z.ZodString;
45
+ label: z.ZodString;
46
+ required: z.ZodBoolean;
47
+ validation: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
48
+ options: z.ZodOptional<z.ZodArray<z.ZodUnknown, "many">>;
49
+ serviceSelection: z.ZodOptional<z.ZodBoolean>;
50
+ piiClass: z.ZodOptional<z.ZodEnum<["none", "context", "always", "reference"]>>;
51
+ }, "strip", z.ZodTypeAny, {
52
+ type: string;
53
+ required: boolean;
54
+ key: string;
55
+ label: string;
56
+ options?: unknown[] | undefined;
57
+ validation?: Record<string, unknown> | undefined;
58
+ serviceSelection?: boolean | undefined;
59
+ piiClass?: "none" | "context" | "always" | "reference" | undefined;
60
+ }, {
61
+ type: string;
62
+ required: boolean;
63
+ key: string;
64
+ label: string;
65
+ options?: unknown[] | undefined;
66
+ validation?: Record<string, unknown> | undefined;
67
+ serviceSelection?: boolean | undefined;
68
+ piiClass?: "none" | "context" | "always" | "reference" | undefined;
69
+ }>;
70
+ type SpecField = z.infer<typeof specFieldSchema>;
71
+ declare const specStepSchema: z.ZodObject<{
72
+ stage: z.ZodEnum<["lead", "prospect", "activation"]>;
73
+ fields: z.ZodArray<z.ZodObject<{
74
+ key: z.ZodString;
75
+ type: z.ZodString;
76
+ label: z.ZodString;
77
+ required: z.ZodBoolean;
78
+ validation: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
79
+ options: z.ZodOptional<z.ZodArray<z.ZodUnknown, "many">>;
80
+ serviceSelection: z.ZodOptional<z.ZodBoolean>;
81
+ piiClass: z.ZodOptional<z.ZodEnum<["none", "context", "always", "reference"]>>;
82
+ }, "strip", z.ZodTypeAny, {
83
+ type: string;
84
+ required: boolean;
85
+ key: string;
86
+ label: string;
87
+ options?: unknown[] | undefined;
88
+ validation?: Record<string, unknown> | undefined;
89
+ serviceSelection?: boolean | undefined;
90
+ piiClass?: "none" | "context" | "always" | "reference" | undefined;
91
+ }, {
92
+ type: string;
93
+ required: boolean;
94
+ key: string;
95
+ label: string;
96
+ options?: unknown[] | undefined;
97
+ validation?: Record<string, unknown> | undefined;
98
+ serviceSelection?: boolean | undefined;
99
+ piiClass?: "none" | "context" | "always" | "reference" | undefined;
100
+ }>, "many">;
101
+ }, "strip", z.ZodTypeAny, {
102
+ stage: "lead" | "prospect" | "activation";
103
+ fields: {
104
+ type: string;
105
+ required: boolean;
106
+ key: string;
107
+ label: string;
108
+ options?: unknown[] | undefined;
109
+ validation?: Record<string, unknown> | undefined;
110
+ serviceSelection?: boolean | undefined;
111
+ piiClass?: "none" | "context" | "always" | "reference" | undefined;
112
+ }[];
113
+ }, {
114
+ stage: "lead" | "prospect" | "activation";
115
+ fields: {
116
+ type: string;
117
+ required: boolean;
118
+ key: string;
119
+ label: string;
120
+ options?: unknown[] | undefined;
121
+ validation?: Record<string, unknown> | undefined;
122
+ serviceSelection?: boolean | undefined;
123
+ piiClass?: "none" | "context" | "always" | "reference" | undefined;
124
+ }[];
125
+ }>;
126
+ type SpecStep = z.infer<typeof specStepSchema>;
127
+ declare const onboardingSpecSchema: z.ZodObject<{
128
+ specVersion: z.ZodString;
129
+ onboarderTier: z.ZodEnum<["platform", "tenant"]>;
130
+ botChallenge: z.ZodOptional<z.ZodObject<{
131
+ provider: z.ZodLiteral<"recaptcha">;
132
+ siteKey: z.ZodString;
133
+ }, "strip", z.ZodTypeAny, {
134
+ provider: "recaptcha";
135
+ siteKey: string;
136
+ }, {
137
+ provider: "recaptcha";
138
+ siteKey: string;
139
+ }>>;
140
+ forms: z.ZodObject<{
141
+ contact: z.ZodObject<{
142
+ fields: z.ZodArray<z.ZodObject<{
143
+ key: z.ZodString;
144
+ type: z.ZodString;
145
+ label: z.ZodString;
146
+ required: z.ZodBoolean;
147
+ validation: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
148
+ options: z.ZodOptional<z.ZodArray<z.ZodUnknown, "many">>;
149
+ serviceSelection: z.ZodOptional<z.ZodBoolean>;
150
+ piiClass: z.ZodOptional<z.ZodEnum<["none", "context", "always", "reference"]>>;
151
+ }, "strip", z.ZodTypeAny, {
152
+ type: string;
153
+ required: boolean;
154
+ key: string;
155
+ label: string;
156
+ options?: unknown[] | undefined;
157
+ validation?: Record<string, unknown> | undefined;
158
+ serviceSelection?: boolean | undefined;
159
+ piiClass?: "none" | "context" | "always" | "reference" | undefined;
160
+ }, {
161
+ type: string;
162
+ required: boolean;
163
+ key: string;
164
+ label: string;
165
+ options?: unknown[] | undefined;
166
+ validation?: Record<string, unknown> | undefined;
167
+ serviceSelection?: boolean | undefined;
168
+ piiClass?: "none" | "context" | "always" | "reference" | undefined;
169
+ }>, "many">;
170
+ }, "strip", z.ZodTypeAny, {
171
+ fields: {
172
+ type: string;
173
+ required: boolean;
174
+ key: string;
175
+ label: string;
176
+ options?: unknown[] | undefined;
177
+ validation?: Record<string, unknown> | undefined;
178
+ serviceSelection?: boolean | undefined;
179
+ piiClass?: "none" | "context" | "always" | "reference" | undefined;
180
+ }[];
181
+ }, {
182
+ fields: {
183
+ type: string;
184
+ required: boolean;
185
+ key: string;
186
+ label: string;
187
+ options?: unknown[] | undefined;
188
+ validation?: Record<string, unknown> | undefined;
189
+ serviceSelection?: boolean | undefined;
190
+ piiClass?: "none" | "context" | "always" | "reference" | undefined;
191
+ }[];
192
+ }>;
193
+ signup: z.ZodObject<{
194
+ steps: z.ZodArray<z.ZodObject<{
195
+ stage: z.ZodEnum<["lead", "prospect", "activation"]>;
196
+ fields: z.ZodArray<z.ZodObject<{
197
+ key: z.ZodString;
198
+ type: z.ZodString;
199
+ label: z.ZodString;
200
+ required: z.ZodBoolean;
201
+ validation: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
202
+ options: z.ZodOptional<z.ZodArray<z.ZodUnknown, "many">>;
203
+ serviceSelection: z.ZodOptional<z.ZodBoolean>;
204
+ piiClass: z.ZodOptional<z.ZodEnum<["none", "context", "always", "reference"]>>;
205
+ }, "strip", z.ZodTypeAny, {
206
+ type: string;
207
+ required: boolean;
208
+ key: string;
209
+ label: string;
210
+ options?: unknown[] | undefined;
211
+ validation?: Record<string, unknown> | undefined;
212
+ serviceSelection?: boolean | undefined;
213
+ piiClass?: "none" | "context" | "always" | "reference" | undefined;
214
+ }, {
215
+ type: string;
216
+ required: boolean;
217
+ key: string;
218
+ label: string;
219
+ options?: unknown[] | undefined;
220
+ validation?: Record<string, unknown> | undefined;
221
+ serviceSelection?: boolean | undefined;
222
+ piiClass?: "none" | "context" | "always" | "reference" | undefined;
223
+ }>, "many">;
224
+ }, "strip", z.ZodTypeAny, {
225
+ stage: "lead" | "prospect" | "activation";
226
+ fields: {
227
+ type: string;
228
+ required: boolean;
229
+ key: string;
230
+ label: string;
231
+ options?: unknown[] | undefined;
232
+ validation?: Record<string, unknown> | undefined;
233
+ serviceSelection?: boolean | undefined;
234
+ piiClass?: "none" | "context" | "always" | "reference" | undefined;
235
+ }[];
236
+ }, {
237
+ stage: "lead" | "prospect" | "activation";
238
+ fields: {
239
+ type: string;
240
+ required: boolean;
241
+ key: string;
242
+ label: string;
243
+ options?: unknown[] | undefined;
244
+ validation?: Record<string, unknown> | undefined;
245
+ serviceSelection?: boolean | undefined;
246
+ piiClass?: "none" | "context" | "always" | "reference" | undefined;
247
+ }[];
248
+ }>, "many">;
249
+ }, "strip", z.ZodTypeAny, {
250
+ steps: {
251
+ stage: "lead" | "prospect" | "activation";
252
+ fields: {
253
+ type: string;
254
+ required: boolean;
255
+ key: string;
256
+ label: string;
257
+ options?: unknown[] | undefined;
258
+ validation?: Record<string, unknown> | undefined;
259
+ serviceSelection?: boolean | undefined;
260
+ piiClass?: "none" | "context" | "always" | "reference" | undefined;
261
+ }[];
262
+ }[];
263
+ }, {
264
+ steps: {
265
+ stage: "lead" | "prospect" | "activation";
266
+ fields: {
267
+ type: string;
268
+ required: boolean;
269
+ key: string;
270
+ label: string;
271
+ options?: unknown[] | undefined;
272
+ validation?: Record<string, unknown> | undefined;
273
+ serviceSelection?: boolean | undefined;
274
+ piiClass?: "none" | "context" | "always" | "reference" | undefined;
275
+ }[];
276
+ }[];
277
+ }>;
278
+ }, "strip", z.ZodTypeAny, {
279
+ contact: {
280
+ fields: {
281
+ type: string;
282
+ required: boolean;
283
+ key: string;
284
+ label: string;
285
+ options?: unknown[] | undefined;
286
+ validation?: Record<string, unknown> | undefined;
287
+ serviceSelection?: boolean | undefined;
288
+ piiClass?: "none" | "context" | "always" | "reference" | undefined;
289
+ }[];
290
+ };
291
+ signup: {
292
+ steps: {
293
+ stage: "lead" | "prospect" | "activation";
294
+ fields: {
295
+ type: string;
296
+ required: boolean;
297
+ key: string;
298
+ label: string;
299
+ options?: unknown[] | undefined;
300
+ validation?: Record<string, unknown> | undefined;
301
+ serviceSelection?: boolean | undefined;
302
+ piiClass?: "none" | "context" | "always" | "reference" | undefined;
303
+ }[];
304
+ }[];
305
+ };
306
+ }, {
307
+ contact: {
308
+ fields: {
309
+ type: string;
310
+ required: boolean;
311
+ key: string;
312
+ label: string;
313
+ options?: unknown[] | undefined;
314
+ validation?: Record<string, unknown> | undefined;
315
+ serviceSelection?: boolean | undefined;
316
+ piiClass?: "none" | "context" | "always" | "reference" | undefined;
317
+ }[];
318
+ };
319
+ signup: {
320
+ steps: {
321
+ stage: "lead" | "prospect" | "activation";
322
+ fields: {
323
+ type: string;
324
+ required: boolean;
325
+ key: string;
326
+ label: string;
327
+ options?: unknown[] | undefined;
328
+ validation?: Record<string, unknown> | undefined;
329
+ serviceSelection?: boolean | undefined;
330
+ piiClass?: "none" | "context" | "always" | "reference" | undefined;
331
+ }[];
332
+ }[];
333
+ };
334
+ }>;
335
+ consentPack: z.ZodOptional<z.ZodEffects<z.ZodObject<{
336
+ documents: z.ZodArray<z.ZodEffects<z.ZodObject<{
337
+ legalDocumentId: z.ZodString;
338
+ docType: z.ZodEnum<["tos", "privacy", "dpa", "custom"]>;
339
+ customKey: z.ZodNullable<z.ZodString>;
340
+ title: z.ZodString;
341
+ versionNo: z.ZodNumber;
342
+ contentHash: z.ZodString;
343
+ downloadUrl: z.ZodString;
344
+ acceptanceLevel: z.ZodEnum<["checkbox", "scroll_then_accept", "open_then_accept"]>;
345
+ required: z.ZodBoolean;
346
+ }, "strict", z.ZodTypeAny, {
347
+ legalDocumentId: string;
348
+ docType: "custom" | "tos" | "privacy" | "dpa";
349
+ customKey: string | null;
350
+ title: string;
351
+ versionNo: number;
352
+ contentHash: string;
353
+ downloadUrl: string;
354
+ acceptanceLevel: "checkbox" | "scroll_then_accept" | "open_then_accept";
355
+ required: boolean;
356
+ }, {
357
+ legalDocumentId: string;
358
+ docType: "custom" | "tos" | "privacy" | "dpa";
359
+ customKey: string | null;
360
+ title: string;
361
+ versionNo: number;
362
+ contentHash: string;
363
+ downloadUrl: string;
364
+ acceptanceLevel: "checkbox" | "scroll_then_accept" | "open_then_accept";
365
+ required: boolean;
366
+ }>, {
367
+ legalDocumentId: string;
368
+ docType: "custom" | "tos" | "privacy" | "dpa";
369
+ customKey: string | null;
370
+ title: string;
371
+ versionNo: number;
372
+ contentHash: string;
373
+ downloadUrl: string;
374
+ acceptanceLevel: "checkbox" | "scroll_then_accept" | "open_then_accept";
375
+ required: boolean;
376
+ }, {
377
+ legalDocumentId: string;
378
+ docType: "custom" | "tos" | "privacy" | "dpa";
379
+ customKey: string | null;
380
+ title: string;
381
+ versionNo: number;
382
+ contentHash: string;
383
+ downloadUrl: string;
384
+ acceptanceLevel: "checkbox" | "scroll_then_accept" | "open_then_accept";
385
+ required: boolean;
386
+ }>, "many">;
387
+ }, "strict", z.ZodTypeAny, {
388
+ documents: {
389
+ legalDocumentId: string;
390
+ docType: "custom" | "tos" | "privacy" | "dpa";
391
+ customKey: string | null;
392
+ title: string;
393
+ versionNo: number;
394
+ contentHash: string;
395
+ downloadUrl: string;
396
+ acceptanceLevel: "checkbox" | "scroll_then_accept" | "open_then_accept";
397
+ required: boolean;
398
+ }[];
399
+ }, {
400
+ documents: {
401
+ legalDocumentId: string;
402
+ docType: "custom" | "tos" | "privacy" | "dpa";
403
+ customKey: string | null;
404
+ title: string;
405
+ versionNo: number;
406
+ contentHash: string;
407
+ downloadUrl: string;
408
+ acceptanceLevel: "checkbox" | "scroll_then_accept" | "open_then_accept";
409
+ required: boolean;
410
+ }[];
411
+ }>, {
412
+ documents: {
413
+ legalDocumentId: string;
414
+ docType: "custom" | "tos" | "privacy" | "dpa";
415
+ customKey: string | null;
416
+ title: string;
417
+ versionNo: number;
418
+ contentHash: string;
419
+ downloadUrl: string;
420
+ acceptanceLevel: "checkbox" | "scroll_then_accept" | "open_then_accept";
421
+ required: boolean;
422
+ }[];
423
+ }, {
424
+ documents: {
425
+ legalDocumentId: string;
426
+ docType: "custom" | "tos" | "privacy" | "dpa";
427
+ customKey: string | null;
428
+ title: string;
429
+ versionNo: number;
430
+ contentHash: string;
431
+ downloadUrl: string;
432
+ acceptanceLevel: "checkbox" | "scroll_then_accept" | "open_then_accept";
433
+ required: boolean;
434
+ }[];
435
+ }>>;
436
+ }, "strip", z.ZodTypeAny, {
437
+ specVersion: string;
438
+ onboarderTier: "platform" | "tenant";
439
+ forms: {
440
+ contact: {
441
+ fields: {
442
+ type: string;
443
+ required: boolean;
444
+ key: string;
445
+ label: string;
446
+ options?: unknown[] | undefined;
447
+ validation?: Record<string, unknown> | undefined;
448
+ serviceSelection?: boolean | undefined;
449
+ piiClass?: "none" | "context" | "always" | "reference" | undefined;
450
+ }[];
451
+ };
452
+ signup: {
453
+ steps: {
454
+ stage: "lead" | "prospect" | "activation";
455
+ fields: {
456
+ type: string;
457
+ required: boolean;
458
+ key: string;
459
+ label: string;
460
+ options?: unknown[] | undefined;
461
+ validation?: Record<string, unknown> | undefined;
462
+ serviceSelection?: boolean | undefined;
463
+ piiClass?: "none" | "context" | "always" | "reference" | undefined;
464
+ }[];
465
+ }[];
466
+ };
467
+ };
468
+ botChallenge?: {
469
+ provider: "recaptcha";
470
+ siteKey: string;
471
+ } | undefined;
472
+ consentPack?: {
473
+ documents: {
474
+ legalDocumentId: string;
475
+ docType: "custom" | "tos" | "privacy" | "dpa";
476
+ customKey: string | null;
477
+ title: string;
478
+ versionNo: number;
479
+ contentHash: string;
480
+ downloadUrl: string;
481
+ acceptanceLevel: "checkbox" | "scroll_then_accept" | "open_then_accept";
482
+ required: boolean;
483
+ }[];
484
+ } | undefined;
485
+ }, {
486
+ specVersion: string;
487
+ onboarderTier: "platform" | "tenant";
488
+ forms: {
489
+ contact: {
490
+ fields: {
491
+ type: string;
492
+ required: boolean;
493
+ key: string;
494
+ label: string;
495
+ options?: unknown[] | undefined;
496
+ validation?: Record<string, unknown> | undefined;
497
+ serviceSelection?: boolean | undefined;
498
+ piiClass?: "none" | "context" | "always" | "reference" | undefined;
499
+ }[];
500
+ };
501
+ signup: {
502
+ steps: {
503
+ stage: "lead" | "prospect" | "activation";
504
+ fields: {
505
+ type: string;
506
+ required: boolean;
507
+ key: string;
508
+ label: string;
509
+ options?: unknown[] | undefined;
510
+ validation?: Record<string, unknown> | undefined;
511
+ serviceSelection?: boolean | undefined;
512
+ piiClass?: "none" | "context" | "always" | "reference" | undefined;
513
+ }[];
514
+ }[];
515
+ };
516
+ };
517
+ botChallenge?: {
518
+ provider: "recaptcha";
519
+ siteKey: string;
520
+ } | undefined;
521
+ consentPack?: {
522
+ documents: {
523
+ legalDocumentId: string;
524
+ docType: "custom" | "tos" | "privacy" | "dpa";
525
+ customKey: string | null;
526
+ title: string;
527
+ versionNo: number;
528
+ contentHash: string;
529
+ downloadUrl: string;
530
+ acceptanceLevel: "checkbox" | "scroll_then_accept" | "open_then_accept";
531
+ required: boolean;
532
+ }[];
533
+ } | undefined;
534
+ }>;
535
+ type OnboardingSpec = z.infer<typeof onboardingSpecSchema>;
536
+ /**
537
+ * Parse an unknown value as an OnboardingSpec.
538
+ * Returns a SafeParseReturnType (inferred).
539
+ */
540
+ declare function validateOnboardingSpec(value: unknown): z.SafeParseReturnType<{
541
+ specVersion: string;
542
+ onboarderTier: "platform" | "tenant";
543
+ forms: {
544
+ contact: {
545
+ fields: {
546
+ type: string;
547
+ required: boolean;
548
+ key: string;
549
+ label: string;
550
+ options?: unknown[] | undefined;
551
+ validation?: Record<string, unknown> | undefined;
552
+ serviceSelection?: boolean | undefined;
553
+ piiClass?: "none" | "context" | "always" | "reference" | undefined;
554
+ }[];
555
+ };
556
+ signup: {
557
+ steps: {
558
+ stage: "lead" | "prospect" | "activation";
559
+ fields: {
560
+ type: string;
561
+ required: boolean;
562
+ key: string;
563
+ label: string;
564
+ options?: unknown[] | undefined;
565
+ validation?: Record<string, unknown> | undefined;
566
+ serviceSelection?: boolean | undefined;
567
+ piiClass?: "none" | "context" | "always" | "reference" | undefined;
568
+ }[];
569
+ }[];
570
+ };
571
+ };
572
+ botChallenge?: {
573
+ provider: "recaptcha";
574
+ siteKey: string;
575
+ } | undefined;
576
+ consentPack?: {
577
+ documents: {
578
+ legalDocumentId: string;
579
+ docType: "custom" | "tos" | "privacy" | "dpa";
580
+ customKey: string | null;
581
+ title: string;
582
+ versionNo: number;
583
+ contentHash: string;
584
+ downloadUrl: string;
585
+ acceptanceLevel: "checkbox" | "scroll_then_accept" | "open_then_accept";
586
+ required: boolean;
587
+ }[];
588
+ } | undefined;
589
+ }, {
590
+ specVersion: string;
591
+ onboarderTier: "platform" | "tenant";
592
+ forms: {
593
+ contact: {
594
+ fields: {
595
+ type: string;
596
+ required: boolean;
597
+ key: string;
598
+ label: string;
599
+ options?: unknown[] | undefined;
600
+ validation?: Record<string, unknown> | undefined;
601
+ serviceSelection?: boolean | undefined;
602
+ piiClass?: "none" | "context" | "always" | "reference" | undefined;
603
+ }[];
604
+ };
605
+ signup: {
606
+ steps: {
607
+ stage: "lead" | "prospect" | "activation";
608
+ fields: {
609
+ type: string;
610
+ required: boolean;
611
+ key: string;
612
+ label: string;
613
+ options?: unknown[] | undefined;
614
+ validation?: Record<string, unknown> | undefined;
615
+ serviceSelection?: boolean | undefined;
616
+ piiClass?: "none" | "context" | "always" | "reference" | undefined;
617
+ }[];
618
+ }[];
619
+ };
620
+ };
621
+ botChallenge?: {
622
+ provider: "recaptcha";
623
+ siteKey: string;
624
+ } | undefined;
625
+ consentPack?: {
626
+ documents: {
627
+ legalDocumentId: string;
628
+ docType: "custom" | "tos" | "privacy" | "dpa";
629
+ customKey: string | null;
630
+ title: string;
631
+ versionNo: number;
632
+ contentHash: string;
633
+ downloadUrl: string;
634
+ acceptanceLevel: "checkbox" | "scroll_then_accept" | "open_then_accept";
635
+ required: boolean;
636
+ }[];
637
+ } | undefined;
638
+ }>;
639
+
640
+ export { FIELD_KEY_PATTERN as F, type OnboarderTier as O, type PiiClass as P, type SpecField as S, type TerminalStage as T, type OnboardingSpec as a, type SpecStage as b, type SpecStep as c, specStepSchema as d, onboardingSpecSchema as o, specFieldSchema as s, validateOnboardingSpec as v };