@tinkerlandai/indiana-sdk 0.5.0 → 0.6.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 (47) hide show
  1. package/CHANGELOG.md +22 -1
  2. package/README.md +177 -8
  3. package/README.zh-CN.md +94 -6
  4. package/dist/{ai-usage-BzydP8eN.d.ts → ai-usage-B4W5m4Ie.d.ts} +21 -4
  5. package/dist/chunk-4JBIKJMU.js +4 -0
  6. package/dist/chunk-5TEZEOHX.js +1 -0
  7. package/dist/chunk-5WY3AXSS.js +1 -0
  8. package/dist/chunk-HU2HIDVT.js +11 -0
  9. package/dist/chunk-OHDY27EI.js +1 -0
  10. package/dist/chunk-OK2Q6IJD.js +1 -0
  11. package/dist/chunk-PCVQHHEE.js +1 -0
  12. package/dist/chunk-RMJJOSVZ.js +1 -0
  13. package/dist/chunk-S2MSIA57.js +17 -0
  14. package/dist/chunk-S5TVMQRC.js +1 -0
  15. package/dist/configuration-sync-Bnu8s4pc.d.ts +1314 -0
  16. package/dist/{customer-page-aZb5Twue.d.ts → customer-page-B4FGCVpt.d.ts} +3 -0
  17. package/dist/funnel-runtime-host-L3WILUHK.js +1 -0
  18. package/dist/funnel-runtime-start-Zbd5ro5r.d.ts +30920 -0
  19. package/dist/{growth-rules-D64pEvg9.d.ts → growth-rules-B4YYy64R.d.ts} +8 -1
  20. package/dist/index.d.ts +14950 -5193
  21. package/dist/index.js +1 -1
  22. package/dist/native-shell.js +1 -1
  23. package/dist/openrouter.d.ts +1 -1
  24. package/dist/openrouter.js +1 -1
  25. package/dist/page.d.ts +6 -8
  26. package/dist/page.js +1 -1
  27. package/dist/paywall-TCE5DE5T.js +1 -0
  28. package/dist/popup.d.ts +5 -2
  29. package/dist/popup.js +6 -6
  30. package/dist/server.d.ts +4 -3
  31. package/dist/server.js +1 -1
  32. package/dist/src-VGIVVM27.js +1 -0
  33. package/dist/{visual-editor-agent-FDCV3BXP.js → visual-editor-agent-WW65CMKW.js} +1 -1
  34. package/dist/visual.d.ts +4 -2
  35. package/dist/visual.js +1 -1
  36. package/package.json +1 -1
  37. package/dist/chunk-3OSMEG44.js +0 -17
  38. package/dist/chunk-GA6X57BO.js +0 -1
  39. package/dist/chunk-GTBD4BJ4.js +0 -11
  40. package/dist/chunk-QUW4UOKZ.js +0 -4
  41. package/dist/chunk-RMFH5TWV.js +0 -1
  42. package/dist/chunk-YNUVRZRQ.js +0 -1
  43. package/dist/funnel-runtime-host-RZRB2CY6.js +0 -1
  44. package/dist/funnel-runtime-start-JHA9ES24.d.ts +0 -9199
  45. package/dist/paywall-MYBEOVTQ.js +0 -1
  46. package/dist/src-E2GXK6WA.js +0 -1
  47. /package/dist/{chunk-ZT523F45.js → chunk-BIFEEVQO.js} +0 -0
@@ -0,0 +1,1314 @@
1
+ import { z } from 'zod';
2
+ import { S as StackNode } from './screen-16d-xADb.js';
3
+
4
+ declare const configurationScopeSchema: z.ZodObject<{
5
+ projectId: z.ZodString;
6
+ environment: z.ZodEnum<{
7
+ sandbox: "sandbox";
8
+ live: "live";
9
+ }>;
10
+ environmentId: z.ZodUUID;
11
+ }, z.core.$strict>;
12
+ declare const sdkConfigurationManifestSchema: z.ZodObject<{
13
+ kind: z.ZodLiteral<"sdk_configuration">;
14
+ schemaVersion: z.ZodLiteral<1>;
15
+ scope: z.ZodObject<{
16
+ projectId: z.ZodString;
17
+ environment: z.ZodEnum<{
18
+ sandbox: "sandbox";
19
+ live: "live";
20
+ }>;
21
+ environmentId: z.ZodUUID;
22
+ }, z.core.$strict>;
23
+ revision: z.ZodNumber;
24
+ generation: z.ZodString;
25
+ policy: z.ZodObject<{
26
+ refreshIntervalSeconds: z.ZodNumber;
27
+ maxControlAgeSeconds: z.ZodNumber;
28
+ }, z.core.$strict>;
29
+ gb: z.ZodObject<{
30
+ features: z.ZodNullable<z.ZodString>;
31
+ pageExperiments: z.ZodNullable<z.ZodString>;
32
+ }, z.core.$strict>;
33
+ artifacts: z.ZodRecord<z.ZodString, z.ZodObject<{
34
+ kind: z.ZodEnum<{
35
+ funnel: "funnel";
36
+ gb_features: "gb_features";
37
+ gb_page_experiments: "gb_page_experiments";
38
+ }>;
39
+ formatVersion: z.ZodNumber;
40
+ url: z.ZodString;
41
+ sha256: z.ZodString;
42
+ byteLength: z.ZodNumber;
43
+ generation: z.ZodOptional<z.ZodString>;
44
+ }, z.core.$strict>>;
45
+ funnels: z.ZodRecord<z.ZodUUID, z.ZodObject<{
46
+ state: z.ZodEnum<{
47
+ active: "active";
48
+ archived: "archived";
49
+ paused: "paused";
50
+ }>;
51
+ controlRevision: z.ZodNumber;
52
+ evaluationMode: z.ZodEnum<{
53
+ local: "local";
54
+ remote: "remote";
55
+ }>;
56
+ evaluationRevision: z.ZodNumber;
57
+ currentVersionId: z.ZodUUID;
58
+ versions: z.ZodRecord<z.ZodUUID, z.ZodObject<{
59
+ artifact: z.ZodString;
60
+ dependencies: z.ZodObject<{
61
+ features: z.ZodArray<z.ZodString>;
62
+ experiments: z.ZodRecord<z.ZodUUID, z.ZodArray<z.ZodString>>;
63
+ savedGroups: z.ZodArray<z.ZodString>;
64
+ }, z.core.$strict>;
65
+ definitionDigest: z.ZodOptional<z.ZodString>;
66
+ couponDigests: z.ZodOptional<z.ZodRecord<z.ZodUUID, z.ZodString>>;
67
+ }, z.core.$strict>>;
68
+ }, z.core.$strict>>;
69
+ }, z.core.$strict>;
70
+ type SdkConfigurationManifest = z.infer<typeof sdkConfigurationManifestSchema>;
71
+ type ConfigurationScope = z.infer<typeof configurationScopeSchema>;
72
+
73
+ type ConfigurationStorage = {
74
+ getItem(key: string): string | null | Promise<string | null>;
75
+ setItem(key: string, value: string): void | Promise<void>;
76
+ };
77
+
78
+ type ConfigurationSyncOptions = {
79
+ /** Public configuration origin; defaults to https://api.tinker.cash. */
80
+ origin?: string;
81
+ scope: ConfigurationScope;
82
+ fetch?: typeof globalThis.fetch;
83
+ storage?: ConfigurationStorage | null;
84
+ assetOrigins?: string[];
85
+ onError?: (error: unknown) => void;
86
+ };
87
+ type Manifest = SdkConfigurationManifest;
88
+ type Listener = () => void;
89
+ /** Public configuration only. No credential, Customer state, accepted visit or business command lives here. */
90
+ declare function createConfigurationSync(options: ConfigurationSyncOptions): {
91
+ scope: Readonly<{
92
+ projectId: string;
93
+ environment: "sandbox" | "live";
94
+ environmentId: string;
95
+ }>;
96
+ refresh: () => Promise<Manifest>;
97
+ subscribe: (listener: Listener) => () => void;
98
+ assertFresh: () => void;
99
+ assertFeatures(generation?: string): void;
100
+ readonly fresh: boolean;
101
+ readonly snapshot: {
102
+ kind: "sdk_configuration";
103
+ schemaVersion: 1;
104
+ scope: {
105
+ projectId: string;
106
+ environment: "sandbox" | "live";
107
+ environmentId: string;
108
+ };
109
+ revision: number;
110
+ generation: string;
111
+ policy: {
112
+ refreshIntervalSeconds: number;
113
+ maxControlAgeSeconds: number;
114
+ };
115
+ gb: {
116
+ features: string | null;
117
+ pageExperiments: string | null;
118
+ };
119
+ artifacts: Record<string, {
120
+ kind: "funnel" | "gb_features" | "gb_page_experiments";
121
+ formatVersion: number;
122
+ url: string;
123
+ sha256: string;
124
+ byteLength: number;
125
+ generation?: string | undefined;
126
+ }>;
127
+ funnels: Record<string, {
128
+ state: "active" | "archived" | "paused";
129
+ controlRevision: number;
130
+ evaluationMode: "local" | "remote";
131
+ evaluationRevision: number;
132
+ currentVersionId: string;
133
+ versions: Record<string, {
134
+ artifact: string;
135
+ dependencies: {
136
+ features: string[];
137
+ experiments: Record<string, string[]>;
138
+ savedGroups: string[];
139
+ };
140
+ definitionDigest?: string | undefined;
141
+ couponDigests?: Record<string, string> | undefined;
142
+ }>;
143
+ }>;
144
+ } | null;
145
+ readonly remainingMs: number;
146
+ features(): Promise<{
147
+ evaluatedAt: string;
148
+ expiresAt: string;
149
+ scope: {
150
+ projectId: string;
151
+ environment: "sandbox" | "live";
152
+ };
153
+ features: Record<string, {
154
+ defaultValue?: z.core.util.JSONType | undefined;
155
+ rules?: {
156
+ id?: string | undefined;
157
+ force?: z.core.util.JSONType | undefined;
158
+ variations?: z.core.util.JSONType[] | undefined;
159
+ key?: string | undefined;
160
+ range?: [number, number] | undefined;
161
+ tracks?: {
162
+ experiment: {
163
+ key: string;
164
+ variations: [z.core.util.JSONType, z.core.util.JSONType, ...z.core.util.JSONType[]];
165
+ urlPatterns?: {
166
+ include: boolean;
167
+ type: "regex" | "simple";
168
+ pattern: string;
169
+ }[] | undefined;
170
+ force?: number | undefined;
171
+ active?: boolean | undefined;
172
+ persistQueryString?: boolean | undefined;
173
+ condition?: Record<string, z.core.util.JSONType> | undefined;
174
+ parentConditions?: {
175
+ id: string;
176
+ condition: Record<string, z.core.util.JSONType>;
177
+ gate?: boolean | undefined;
178
+ }[] | undefined;
179
+ weights?: number[] | undefined;
180
+ coverage?: number | undefined;
181
+ hashAttribute?: string | undefined;
182
+ fallbackAttribute?: string | undefined;
183
+ hashVersion?: 2 | undefined;
184
+ disableStickyBucketing?: boolean | undefined;
185
+ bucketVersion?: number | undefined;
186
+ minBucketVersion?: number | undefined;
187
+ filters?: {
188
+ seed: string;
189
+ hashVersion: 2;
190
+ ranges: [number, number][];
191
+ attribute?: string | undefined;
192
+ }[] | undefined;
193
+ ranges?: [number, number][] | undefined;
194
+ meta?: {
195
+ key?: string | undefined;
196
+ name?: string | undefined;
197
+ passthrough?: boolean | undefined;
198
+ }[] | undefined;
199
+ seed?: string | undefined;
200
+ name?: string | undefined;
201
+ phase?: string | undefined;
202
+ };
203
+ result: {
204
+ value: z.core.util.JSONType;
205
+ variationId: number;
206
+ key: string;
207
+ inExperiment: boolean;
208
+ hashAttribute: string;
209
+ hashValue: string;
210
+ featureId: string | null;
211
+ name?: string | undefined;
212
+ bucket?: number | undefined;
213
+ passthrough?: boolean | undefined;
214
+ hashUsed?: boolean | undefined;
215
+ stickyBucketUsed?: boolean | undefined;
216
+ };
217
+ }[] | undefined;
218
+ condition?: Record<string, z.core.util.JSONType> | undefined;
219
+ parentConditions?: {
220
+ id: string;
221
+ condition: Record<string, z.core.util.JSONType>;
222
+ gate?: boolean | undefined;
223
+ }[] | undefined;
224
+ weights?: number[] | undefined;
225
+ coverage?: number | undefined;
226
+ hashAttribute?: string | undefined;
227
+ fallbackAttribute?: string | undefined;
228
+ hashVersion?: 2 | undefined;
229
+ disableStickyBucketing?: boolean | undefined;
230
+ bucketVersion?: number | undefined;
231
+ minBucketVersion?: number | undefined;
232
+ filters?: {
233
+ seed: string;
234
+ hashVersion: 2;
235
+ ranges: [number, number][];
236
+ attribute?: string | undefined;
237
+ }[] | undefined;
238
+ ranges?: [number, number][] | undefined;
239
+ meta?: {
240
+ key?: string | undefined;
241
+ name?: string | undefined;
242
+ passthrough?: boolean | undefined;
243
+ }[] | undefined;
244
+ seed?: string | undefined;
245
+ name?: string | undefined;
246
+ phase?: string | undefined;
247
+ }[] | undefined;
248
+ }>;
249
+ generation: string;
250
+ savedGroups: Record<string, {
251
+ type: "hashed";
252
+ attributeKey: string;
253
+ values: string[];
254
+ } | {
255
+ type: "list";
256
+ attributeKey: string;
257
+ values: (string | number)[];
258
+ } | {
259
+ type: "condition";
260
+ condition: Record<string, z.core.util.JSONType>;
261
+ }>;
262
+ experiments: Record<string, {
263
+ key: string;
264
+ variations: [z.core.util.JSONType, z.core.util.JSONType, ...z.core.util.JSONType[]];
265
+ urlPatterns?: {
266
+ include: boolean;
267
+ type: "regex" | "simple";
268
+ pattern: string;
269
+ }[] | undefined;
270
+ force?: number | undefined;
271
+ active?: boolean | undefined;
272
+ persistQueryString?: boolean | undefined;
273
+ condition?: Record<string, z.core.util.JSONType> | undefined;
274
+ parentConditions?: {
275
+ id: string;
276
+ condition: Record<string, z.core.util.JSONType>;
277
+ gate?: boolean | undefined;
278
+ }[] | undefined;
279
+ weights?: number[] | undefined;
280
+ coverage?: number | undefined;
281
+ hashAttribute?: string | undefined;
282
+ fallbackAttribute?: string | undefined;
283
+ hashVersion?: 2 | undefined;
284
+ disableStickyBucketing?: boolean | undefined;
285
+ bucketVersion?: number | undefined;
286
+ minBucketVersion?: number | undefined;
287
+ filters?: {
288
+ seed: string;
289
+ hashVersion: 2;
290
+ ranges: [number, number][];
291
+ attribute?: string | undefined;
292
+ }[] | undefined;
293
+ ranges?: [number, number][] | undefined;
294
+ meta?: {
295
+ key?: string | undefined;
296
+ name?: string | undefined;
297
+ passthrough?: boolean | undefined;
298
+ }[] | undefined;
299
+ seed?: string | undefined;
300
+ name?: string | undefined;
301
+ phase?: string | undefined;
302
+ }>;
303
+ analyticsConfig: {
304
+ eventsEnabled: boolean;
305
+ experimentViewsEnabled: boolean;
306
+ featureUsageEnabled: boolean;
307
+ };
308
+ remoteFeatures: string[];
309
+ }>;
310
+ pageExperiments: () => Promise<{
311
+ environmentId: string;
312
+ trackExposures: boolean;
313
+ generation: string;
314
+ experiments: {
315
+ key: string;
316
+ changeId: string;
317
+ variations: {
318
+ urlRedirect: string;
319
+ }[];
320
+ name?: string | undefined;
321
+ coverage?: number | undefined;
322
+ condition?: Record<string, z.core.util.JSONType> | undefined;
323
+ seed?: string | undefined;
324
+ hashVersion?: 2 | undefined;
325
+ ranges?: [number, number][] | undefined;
326
+ force?: number | undefined;
327
+ urlPatterns?: {
328
+ include: boolean;
329
+ type: "regex" | "simple";
330
+ pattern: string;
331
+ }[] | undefined;
332
+ persistQueryString?: boolean | undefined;
333
+ hashAttribute?: string | undefined;
334
+ phase?: string | undefined;
335
+ filters?: {
336
+ seed: string;
337
+ hashVersion: 2;
338
+ ranges: [number, number][];
339
+ attribute?: string | undefined;
340
+ }[] | undefined;
341
+ parentConditions?: {
342
+ id: string;
343
+ condition: Record<string, z.core.util.JSONType>;
344
+ gate?: boolean | undefined;
345
+ }[] | undefined;
346
+ weights?: number[] | undefined;
347
+ fallbackAttribute?: string | undefined;
348
+ disableStickyBucketing?: boolean | undefined;
349
+ bucketVersion?: number | undefined;
350
+ minBucketVersion?: number | undefined;
351
+ meta?: {
352
+ key?: string | undefined;
353
+ name?: string | undefined;
354
+ passthrough?: boolean | undefined;
355
+ }[] | undefined;
356
+ }[];
357
+ savedGroups: Record<string, {
358
+ type: "hashed";
359
+ attributeKey: string;
360
+ values: string[];
361
+ } | {
362
+ type: "list";
363
+ attributeKey: string;
364
+ values: (string | number)[];
365
+ } | {
366
+ type: "condition";
367
+ condition: Record<string, z.core.util.JSONType>;
368
+ }>;
369
+ }>;
370
+ funnel: (funnelId: string, versionId?: string) => Promise<{
371
+ document: {
372
+ graph: {
373
+ version: 5;
374
+ entry: string;
375
+ nodes: ({
376
+ type: "entry";
377
+ next: string;
378
+ id: string;
379
+ name: string;
380
+ position?: {
381
+ x: number;
382
+ y: number;
383
+ } | undefined;
384
+ } | {
385
+ type: "screen";
386
+ screenId: string;
387
+ presentation: {
388
+ type: "modal";
389
+ size: "sm" | "md" | "lg";
390
+ } | {
391
+ type: "sheet";
392
+ size: "sm" | "md" | "lg";
393
+ } | {
394
+ type: "fullscreen";
395
+ } | {
396
+ type: "inline";
397
+ };
398
+ outputs: Record<string, string>;
399
+ id: string;
400
+ name: string;
401
+ offering?: {
402
+ source: "variable";
403
+ key: string;
404
+ } | {
405
+ source: "fixed";
406
+ versionId: string;
407
+ } | undefined;
408
+ position?: {
409
+ x: number;
410
+ y: number;
411
+ } | undefined;
412
+ } | {
413
+ type: "offering";
414
+ configuration: {
415
+ source: "fixed";
416
+ versionId: string;
417
+ } | {
418
+ source: "feature";
419
+ featureKey: string;
420
+ };
421
+ writes: {
422
+ value: string;
423
+ };
424
+ next: string;
425
+ id: string;
426
+ name: string;
427
+ position?: {
428
+ x: number;
429
+ y: number;
430
+ } | undefined;
431
+ } | {
432
+ type: "coupon";
433
+ couponId: string;
434
+ writes: {
435
+ value: string;
436
+ };
437
+ next: string;
438
+ id: string;
439
+ name: string;
440
+ position?: {
441
+ x: number;
442
+ y: number;
443
+ } | undefined;
444
+ } | {
445
+ type: "coupons";
446
+ couponIds: string[];
447
+ writes: {
448
+ value: string;
449
+ };
450
+ next: string;
451
+ id: string;
452
+ name: string;
453
+ position?: {
454
+ x: number;
455
+ y: number;
456
+ } | undefined;
457
+ } | {
458
+ type: "output";
459
+ value: {
460
+ type: "bundle";
461
+ coupons: {
462
+ source: "literal";
463
+ value: z.core.util.JSONType;
464
+ } | {
465
+ source: "variable";
466
+ key: string;
467
+ path?: string | undefined;
468
+ };
469
+ data: {
470
+ source: "literal";
471
+ value: z.core.util.JSONType;
472
+ } | {
473
+ source: "variable";
474
+ key: string;
475
+ path?: string | undefined;
476
+ };
477
+ paywall?: {
478
+ source: "literal";
479
+ value: z.core.util.JSONType;
480
+ } | {
481
+ source: "variable";
482
+ key: string;
483
+ path?: string | undefined;
484
+ } | undefined;
485
+ offering?: {
486
+ source: "literal";
487
+ value: z.core.util.JSONType;
488
+ } | {
489
+ source: "variable";
490
+ key: string;
491
+ path?: string | undefined;
492
+ } | undefined;
493
+ } | {
494
+ type: "literal";
495
+ value: z.core.util.JSONType;
496
+ } | {
497
+ type: "variable";
498
+ key: string;
499
+ path?: string | undefined;
500
+ } | {
501
+ type: "feature";
502
+ featureKey: string;
503
+ } | {
504
+ type: "selection";
505
+ screenId: string;
506
+ offeringKey: string;
507
+ };
508
+ id: string;
509
+ name: string;
510
+ position?: {
511
+ x: number;
512
+ y: number;
513
+ } | undefined;
514
+ } | {
515
+ type: "condition";
516
+ cases: {
517
+ condition: Record<string, z.core.util.JSONType>;
518
+ target: string;
519
+ }[];
520
+ default: string;
521
+ id: string;
522
+ name: string;
523
+ position?: {
524
+ x: number;
525
+ y: number;
526
+ } | undefined;
527
+ } | {
528
+ type: "feature";
529
+ featureKey: string;
530
+ writes: {
531
+ value: string;
532
+ };
533
+ next: string;
534
+ id: string;
535
+ name: string;
536
+ position?: {
537
+ x: number;
538
+ y: number;
539
+ } | undefined;
540
+ } | {
541
+ type: "split";
542
+ experimentId: string;
543
+ routes: Record<string, string>;
544
+ notParticipating: string;
545
+ id: string;
546
+ name: string;
547
+ position?: {
548
+ x: number;
549
+ y: number;
550
+ } | undefined;
551
+ } | {
552
+ execution: {
553
+ maxAttempts: number;
554
+ retryDelaySeconds: number;
555
+ backoff: "fixed" | "exponential";
556
+ requestTimeoutSeconds: number;
557
+ timeoutSeconds: number;
558
+ };
559
+ action: {
560
+ type: "external_task";
561
+ endpointId: string;
562
+ taskKey: string;
563
+ inputs: Record<string, {
564
+ source: "literal";
565
+ value: z.core.util.JSONType;
566
+ } | {
567
+ source: "variable";
568
+ key: string;
569
+ path?: string | undefined;
570
+ }>;
571
+ outputs: Record<string, "string" | "number" | "boolean" | "strings">;
572
+ } | {
573
+ type: "claim_offer";
574
+ coupon: {
575
+ source: "literal";
576
+ value: z.core.util.JSONType;
577
+ } | {
578
+ source: "variable";
579
+ key: string;
580
+ path?: string | undefined;
581
+ };
582
+ } | {
583
+ type: "event";
584
+ event: string;
585
+ } | {
586
+ type: "api";
587
+ operation: "update" | "refund" | "setupPayment" | "readBalanceSource" | "adjustBalance" | "readUsage" | "setUsage" | "manageBalanceGrant" | "listBalanceGrants" | "restoreNativePurchase" | "readPaymentSetup" | "verifySubscriptions" | "previewAttach" | "attach" | "readSubscriptionOperation" | "previewUpdate" | "readSubscriptionUpdate" | "previewRefund" | "readRefund" | "readBillingControls" | "prepareBillingAuthorization" | "confirmBillingAuthorization" | "setBillingCoupons" | "revokeBillingAuthorization" | "listBillingInvoices" | "confirmBillingAdjustment" | "manageBillingLimits" | "manageUsageEntity" | "readUsageAnalytics" | "readCreditAnalytics" | "submitUsageBatch" | "readUsageBatch" | "checkEntitlement" | "resolveOffering" | "readHoldings" | "readLedger" | "readBillingInvoice" | "readCreditStatement" | "quoteBalance" | "trackUsage" | "mutateBalance" | "redeemReward" | "createReferralCode" | "claimRewardProduct" | "readSeats" | "manageSeat" | "redeemCoupon" | "listOffers" | "grantOffer";
588
+ inputs: Record<string, {
589
+ source: "literal";
590
+ value: z.core.util.JSONType;
591
+ } | {
592
+ source: "variable";
593
+ key: string;
594
+ path?: string | undefined;
595
+ }>;
596
+ outputs: Record<string, {
597
+ path: string;
598
+ type: "string" | "number" | "boolean" | "strings";
599
+ nullable?: boolean | undefined;
600
+ aggregation?: "count" | "exists" | undefined;
601
+ where?: Record<string, string | number | boolean | (string | number | boolean | null)[] | null> | undefined;
602
+ }>;
603
+ };
604
+ success: string;
605
+ cancel: string;
606
+ unavailable: string;
607
+ failure: string;
608
+ type: "action";
609
+ id: string;
610
+ name: string;
611
+ writes?: Record<string, string> | undefined;
612
+ position?: {
613
+ x: number;
614
+ y: number;
615
+ } | undefined;
616
+ } | {
617
+ type: "external_page";
618
+ url: string;
619
+ openIn: "same_window" | "new_window";
620
+ opened: string;
621
+ failed: string;
622
+ id: string;
623
+ name: string;
624
+ position?: {
625
+ x: number;
626
+ y: number;
627
+ } | undefined;
628
+ } | {
629
+ type: "end";
630
+ outcome: "failed" | "completed" | "closed" | "ineligible";
631
+ id: string;
632
+ name: string;
633
+ output?: {
634
+ type: "literal";
635
+ value: z.core.util.JSONType;
636
+ } | {
637
+ type: "variable";
638
+ key: string;
639
+ path?: string | undefined;
640
+ } | {
641
+ type: "feature";
642
+ featureKey: string;
643
+ } | undefined;
644
+ position?: {
645
+ x: number;
646
+ y: number;
647
+ } | undefined;
648
+ } | {
649
+ type: "wait";
650
+ wait: {
651
+ type: "duration";
652
+ delaySeconds: number;
653
+ elapsed: string;
654
+ } | {
655
+ type: "event";
656
+ eventName: string;
657
+ outputs: Record<string, "string" | "number" | "boolean" | "strings">;
658
+ timeoutSeconds: number;
659
+ received: string;
660
+ timeout: string;
661
+ };
662
+ id: string;
663
+ name: string;
664
+ writes?: Record<string, string> | undefined;
665
+ position?: {
666
+ x: number;
667
+ y: number;
668
+ } | undefined;
669
+ })[];
670
+ };
671
+ displayName: string;
672
+ kind: "funnel";
673
+ schemaVersion: 4;
674
+ screens: ({
675
+ id: string;
676
+ type: "owned";
677
+ document: {
678
+ kind: "screen";
679
+ schemaVersion: 4;
680
+ name: string;
681
+ surface: "paywall" | "popup" | "onboarding" | "page";
682
+ presentation: {
683
+ type: "modal";
684
+ size: "sm" | "md" | "lg";
685
+ } | {
686
+ type: "sheet";
687
+ size: "sm" | "md" | "lg";
688
+ } | {
689
+ type: "fullscreen";
690
+ };
691
+ theme: {
692
+ primary: string;
693
+ background: string;
694
+ text: string;
695
+ radius: "none" | "full" | "sm" | "md" | "lg";
696
+ font: "system" | "serif" | "rounded" | "mono";
697
+ };
698
+ pages: {
699
+ id: string;
700
+ name: string;
701
+ root: StackNode;
702
+ theme?: {
703
+ primary: string;
704
+ background: string;
705
+ text: string;
706
+ radius: "none" | "full" | "sm" | "md" | "lg";
707
+ font: "system" | "serif" | "rounded" | "mono";
708
+ } | undefined;
709
+ editorPosition?: {
710
+ x: number;
711
+ y: number;
712
+ } | undefined;
713
+ }[];
714
+ strings: {
715
+ defaultLocale: string;
716
+ locales: Record<string, Record<string, string>>;
717
+ };
718
+ actions: ({
719
+ type: "navigate";
720
+ close: false;
721
+ pageId: string;
722
+ id: string;
723
+ event: string;
724
+ properties: Record<string, string | number | boolean | null>;
725
+ } | {
726
+ type: "event";
727
+ close: boolean;
728
+ id: string;
729
+ event: string;
730
+ properties: Record<string, string | number | boolean | null>;
731
+ } | {
732
+ type: "close";
733
+ close: true;
734
+ id: string;
735
+ event: string;
736
+ properties: Record<string, string | number | boolean | null>;
737
+ } | {
738
+ type: "open_url";
739
+ close: boolean;
740
+ url: string;
741
+ id: string;
742
+ event: string;
743
+ properties: Record<string, string | number | boolean | null>;
744
+ } | {
745
+ type: "claim_offer";
746
+ close: boolean;
747
+ couponId: string;
748
+ id: string;
749
+ event: string;
750
+ properties: Record<string, string | number | boolean | null>;
751
+ })[];
752
+ initialPageId?: string | undefined;
753
+ };
754
+ publicData?: {
755
+ couponDigests: Record<string, string>;
756
+ variables: Record<string, Record<string, Partial<Record<"offer.headline" | "offer.name" | "offer.description" | "offer.eligibility" | "offer.validity" | "offer.terms" | "offer.discount" | "offer.months" | "offer.ends_at", string>>>>;
757
+ locales: Record<string, {
758
+ plans: Record<string, never>;
759
+ nodes: Record<string, {
760
+ base: {
761
+ couponId?: string | undefined;
762
+ label?: string | undefined;
763
+ text?: string | undefined;
764
+ alt?: string | undefined;
765
+ html?: string | undefined;
766
+ countdownAt?: string | undefined;
767
+ missing?: string[] | undefined;
768
+ };
769
+ }>;
770
+ pickers: Record<string, never>;
771
+ diagnostics: {
772
+ nodeId: string;
773
+ message: string;
774
+ }[];
775
+ }>;
776
+ } | undefined;
777
+ } | {
778
+ id: string;
779
+ type: "paywall";
780
+ paywallVersionId: string;
781
+ })[];
782
+ references: Record<string, {
783
+ type: "flag";
784
+ key: string;
785
+ } | {
786
+ type: "experiment";
787
+ id: string;
788
+ } | {
789
+ type: "saved_group";
790
+ id: string;
791
+ } | {
792
+ type: "config";
793
+ key: string;
794
+ } | {
795
+ type: "constant";
796
+ key: string;
797
+ } | {
798
+ type: "paywall_version";
799
+ id: string;
800
+ } | {
801
+ type: "offering_version";
802
+ id: string;
803
+ } | {
804
+ type: "reward";
805
+ id: string;
806
+ }>;
807
+ inputs: {
808
+ variable: string;
809
+ screenId: string;
810
+ componentId: string;
811
+ required: boolean;
812
+ }[];
813
+ variables: Record<string, {
814
+ nullable: boolean;
815
+ type: "string" | "number" | "boolean" | "array" | "strings" | "json" | "offering_version" | "reward" | "paywall_version";
816
+ source: {
817
+ type: "input";
818
+ } | {
819
+ type: "node";
820
+ } | {
821
+ type: "attribute" | "parameter";
822
+ key: string;
823
+ };
824
+ enum?: string[] | undefined;
825
+ items?: {
826
+ type: "string" | "number" | "boolean" | "strings" | "json" | "offering_version" | "reward" | "paywall_version";
827
+ nullable: boolean;
828
+ enum?: string[] | undefined;
829
+ } | undefined;
830
+ }>;
831
+ outputSchema: {
832
+ nullable: boolean;
833
+ type: "string" | "number" | "boolean" | "array" | "strings" | "json" | "offering_version" | "reward" | "paywall_version";
834
+ enum?: string[] | undefined;
835
+ items?: {
836
+ type: "string" | "number" | "boolean" | "strings" | "json" | "offering_version" | "reward" | "paywall_version";
837
+ nullable: boolean;
838
+ enum?: string[] | undefined;
839
+ } | undefined;
840
+ };
841
+ execution: {
842
+ runTimeoutSeconds: number;
843
+ maxTransitions: number;
844
+ };
845
+ };
846
+ growth: {
847
+ evaluatedAt: string;
848
+ expiresAt: string;
849
+ scope: {
850
+ projectId: string;
851
+ environment: "sandbox" | "live";
852
+ };
853
+ features: Record<string, {
854
+ defaultValue?: z.core.util.JSONType | undefined;
855
+ rules?: {
856
+ id?: string | undefined;
857
+ force?: z.core.util.JSONType | undefined;
858
+ variations?: z.core.util.JSONType[] | undefined;
859
+ key?: string | undefined;
860
+ range?: [number, number] | undefined;
861
+ tracks?: {
862
+ experiment: {
863
+ key: string;
864
+ variations: [z.core.util.JSONType, z.core.util.JSONType, ...z.core.util.JSONType[]];
865
+ urlPatterns?: {
866
+ include: boolean;
867
+ type: "regex" | "simple";
868
+ pattern: string;
869
+ }[] | undefined;
870
+ force?: number | undefined;
871
+ active?: boolean | undefined;
872
+ persistQueryString?: boolean | undefined;
873
+ condition?: Record<string, z.core.util.JSONType> | undefined;
874
+ parentConditions?: {
875
+ id: string;
876
+ condition: Record<string, z.core.util.JSONType>;
877
+ gate?: boolean | undefined;
878
+ }[] | undefined;
879
+ weights?: number[] | undefined;
880
+ coverage?: number | undefined;
881
+ hashAttribute?: string | undefined;
882
+ fallbackAttribute?: string | undefined;
883
+ hashVersion?: 2 | undefined;
884
+ disableStickyBucketing?: boolean | undefined;
885
+ bucketVersion?: number | undefined;
886
+ minBucketVersion?: number | undefined;
887
+ filters?: {
888
+ seed: string;
889
+ hashVersion: 2;
890
+ ranges: [number, number][];
891
+ attribute?: string | undefined;
892
+ }[] | undefined;
893
+ ranges?: [number, number][] | undefined;
894
+ meta?: {
895
+ key?: string | undefined;
896
+ name?: string | undefined;
897
+ passthrough?: boolean | undefined;
898
+ }[] | undefined;
899
+ seed?: string | undefined;
900
+ name?: string | undefined;
901
+ phase?: string | undefined;
902
+ };
903
+ result: {
904
+ value: z.core.util.JSONType;
905
+ variationId: number;
906
+ key: string;
907
+ inExperiment: boolean;
908
+ hashAttribute: string;
909
+ hashValue: string;
910
+ featureId: string | null;
911
+ name?: string | undefined;
912
+ bucket?: number | undefined;
913
+ passthrough?: boolean | undefined;
914
+ hashUsed?: boolean | undefined;
915
+ stickyBucketUsed?: boolean | undefined;
916
+ };
917
+ }[] | undefined;
918
+ condition?: Record<string, z.core.util.JSONType> | undefined;
919
+ parentConditions?: {
920
+ id: string;
921
+ condition: Record<string, z.core.util.JSONType>;
922
+ gate?: boolean | undefined;
923
+ }[] | undefined;
924
+ weights?: number[] | undefined;
925
+ coverage?: number | undefined;
926
+ hashAttribute?: string | undefined;
927
+ fallbackAttribute?: string | undefined;
928
+ hashVersion?: 2 | undefined;
929
+ disableStickyBucketing?: boolean | undefined;
930
+ bucketVersion?: number | undefined;
931
+ minBucketVersion?: number | undefined;
932
+ filters?: {
933
+ seed: string;
934
+ hashVersion: 2;
935
+ ranges: [number, number][];
936
+ attribute?: string | undefined;
937
+ }[] | undefined;
938
+ ranges?: [number, number][] | undefined;
939
+ meta?: {
940
+ key?: string | undefined;
941
+ name?: string | undefined;
942
+ passthrough?: boolean | undefined;
943
+ }[] | undefined;
944
+ seed?: string | undefined;
945
+ name?: string | undefined;
946
+ phase?: string | undefined;
947
+ }[] | undefined;
948
+ }>;
949
+ generation: string;
950
+ savedGroups: Record<string, {
951
+ type: "hashed";
952
+ attributeKey: string;
953
+ values: string[];
954
+ } | {
955
+ type: "list";
956
+ attributeKey: string;
957
+ values: (string | number)[];
958
+ } | {
959
+ type: "condition";
960
+ condition: Record<string, z.core.util.JSONType>;
961
+ }>;
962
+ experiments: Record<string, {
963
+ key: string;
964
+ variations: [z.core.util.JSONType, z.core.util.JSONType, ...z.core.util.JSONType[]];
965
+ urlPatterns?: {
966
+ include: boolean;
967
+ type: "regex" | "simple";
968
+ pattern: string;
969
+ }[] | undefined;
970
+ force?: number | undefined;
971
+ active?: boolean | undefined;
972
+ persistQueryString?: boolean | undefined;
973
+ condition?: Record<string, z.core.util.JSONType> | undefined;
974
+ parentConditions?: {
975
+ id: string;
976
+ condition: Record<string, z.core.util.JSONType>;
977
+ gate?: boolean | undefined;
978
+ }[] | undefined;
979
+ weights?: number[] | undefined;
980
+ coverage?: number | undefined;
981
+ hashAttribute?: string | undefined;
982
+ fallbackAttribute?: string | undefined;
983
+ hashVersion?: 2 | undefined;
984
+ disableStickyBucketing?: boolean | undefined;
985
+ bucketVersion?: number | undefined;
986
+ minBucketVersion?: number | undefined;
987
+ filters?: {
988
+ seed: string;
989
+ hashVersion: 2;
990
+ ranges: [number, number][];
991
+ attribute?: string | undefined;
992
+ }[] | undefined;
993
+ ranges?: [number, number][] | undefined;
994
+ meta?: {
995
+ key?: string | undefined;
996
+ name?: string | undefined;
997
+ passthrough?: boolean | undefined;
998
+ }[] | undefined;
999
+ seed?: string | undefined;
1000
+ name?: string | undefined;
1001
+ phase?: string | undefined;
1002
+ }>;
1003
+ analyticsConfig: {
1004
+ eventsEnabled: boolean;
1005
+ experimentViewsEnabled: boolean;
1006
+ featureUsageEnabled: boolean;
1007
+ };
1008
+ remoteFeatures: string[];
1009
+ } | undefined;
1010
+ versionId: string;
1011
+ control: {
1012
+ state: "active" | "archived" | "paused";
1013
+ controlRevision: number;
1014
+ evaluationMode: "local" | "remote";
1015
+ evaluationRevision: number;
1016
+ currentVersionId: string;
1017
+ versions: Record<string, {
1018
+ artifact: string;
1019
+ dependencies: {
1020
+ features: string[];
1021
+ experiments: Record<string, string[]>;
1022
+ savedGroups: string[];
1023
+ };
1024
+ definitionDigest?: string | undefined;
1025
+ couponDigests?: Record<string, string> | undefined;
1026
+ }>;
1027
+ };
1028
+ manifest: {
1029
+ kind: "sdk_configuration";
1030
+ schemaVersion: 1;
1031
+ scope: {
1032
+ projectId: string;
1033
+ environment: "sandbox" | "live";
1034
+ environmentId: string;
1035
+ };
1036
+ revision: number;
1037
+ generation: string;
1038
+ policy: {
1039
+ refreshIntervalSeconds: number;
1040
+ maxControlAgeSeconds: number;
1041
+ };
1042
+ gb: {
1043
+ features: string | null;
1044
+ pageExperiments: string | null;
1045
+ };
1046
+ artifacts: Record<string, {
1047
+ kind: "funnel" | "gb_features" | "gb_page_experiments";
1048
+ formatVersion: number;
1049
+ url: string;
1050
+ sha256: string;
1051
+ byteLength: number;
1052
+ generation?: string | undefined;
1053
+ }>;
1054
+ funnels: Record<string, {
1055
+ state: "active" | "archived" | "paused";
1056
+ controlRevision: number;
1057
+ evaluationMode: "local" | "remote";
1058
+ evaluationRevision: number;
1059
+ currentVersionId: string;
1060
+ versions: Record<string, {
1061
+ artifact: string;
1062
+ dependencies: {
1063
+ features: string[];
1064
+ experiments: Record<string, string[]>;
1065
+ savedGroups: string[];
1066
+ };
1067
+ definitionDigest?: string | undefined;
1068
+ couponDigests?: Record<string, string> | undefined;
1069
+ }>;
1070
+ }>;
1071
+ };
1072
+ }>;
1073
+ localFunnel(funnelId: string, versionId?: string): Promise<{
1074
+ evaluationMode: "local";
1075
+ growth: {
1076
+ scope: {
1077
+ projectId: string;
1078
+ environment: "sandbox" | "live";
1079
+ };
1080
+ generation: string;
1081
+ evaluatedAt: string;
1082
+ expiresAt: string | null;
1083
+ features: Record<string, {
1084
+ defaultValue?: z.core.util.JSONType | undefined;
1085
+ rules?: {
1086
+ id?: string | undefined;
1087
+ force?: z.core.util.JSONType | undefined;
1088
+ variations?: z.core.util.JSONType[] | undefined;
1089
+ key?: string | undefined;
1090
+ range?: [number, number] | undefined;
1091
+ tracks?: {
1092
+ experiment: {
1093
+ key: string;
1094
+ variations: [z.core.util.JSONType, z.core.util.JSONType, ...z.core.util.JSONType[]];
1095
+ urlPatterns?: {
1096
+ include: boolean;
1097
+ type: "regex" | "simple";
1098
+ pattern: string;
1099
+ }[] | undefined;
1100
+ force?: number | undefined;
1101
+ active?: boolean | undefined;
1102
+ persistQueryString?: boolean | undefined;
1103
+ condition?: Record<string, z.core.util.JSONType> | undefined;
1104
+ parentConditions?: {
1105
+ id: string;
1106
+ condition: Record<string, z.core.util.JSONType>;
1107
+ gate?: boolean | undefined;
1108
+ }[] | undefined;
1109
+ weights?: number[] | undefined;
1110
+ coverage?: number | undefined;
1111
+ hashAttribute?: string | undefined;
1112
+ fallbackAttribute?: string | undefined;
1113
+ hashVersion?: 2 | undefined;
1114
+ disableStickyBucketing?: boolean | undefined;
1115
+ bucketVersion?: number | undefined;
1116
+ minBucketVersion?: number | undefined;
1117
+ filters?: {
1118
+ seed: string;
1119
+ hashVersion: 2;
1120
+ ranges: [number, number][];
1121
+ attribute?: string | undefined;
1122
+ }[] | undefined;
1123
+ ranges?: [number, number][] | undefined;
1124
+ meta?: {
1125
+ key?: string | undefined;
1126
+ name?: string | undefined;
1127
+ passthrough?: boolean | undefined;
1128
+ }[] | undefined;
1129
+ seed?: string | undefined;
1130
+ name?: string | undefined;
1131
+ phase?: string | undefined;
1132
+ };
1133
+ result: {
1134
+ value: z.core.util.JSONType;
1135
+ variationId: number;
1136
+ key: string;
1137
+ inExperiment: boolean;
1138
+ hashAttribute: string;
1139
+ hashValue: string;
1140
+ featureId: string | null;
1141
+ name?: string | undefined;
1142
+ bucket?: number | undefined;
1143
+ passthrough?: boolean | undefined;
1144
+ hashUsed?: boolean | undefined;
1145
+ stickyBucketUsed?: boolean | undefined;
1146
+ };
1147
+ }[] | undefined;
1148
+ condition?: Record<string, z.core.util.JSONType> | undefined;
1149
+ parentConditions?: {
1150
+ id: string;
1151
+ condition: Record<string, z.core.util.JSONType>;
1152
+ gate?: boolean | undefined;
1153
+ }[] | undefined;
1154
+ weights?: number[] | undefined;
1155
+ coverage?: number | undefined;
1156
+ hashAttribute?: string | undefined;
1157
+ fallbackAttribute?: string | undefined;
1158
+ hashVersion?: 2 | undefined;
1159
+ disableStickyBucketing?: boolean | undefined;
1160
+ bucketVersion?: number | undefined;
1161
+ minBucketVersion?: number | undefined;
1162
+ filters?: {
1163
+ seed: string;
1164
+ hashVersion: 2;
1165
+ ranges: [number, number][];
1166
+ attribute?: string | undefined;
1167
+ }[] | undefined;
1168
+ ranges?: [number, number][] | undefined;
1169
+ meta?: {
1170
+ key?: string | undefined;
1171
+ name?: string | undefined;
1172
+ passthrough?: boolean | undefined;
1173
+ }[] | undefined;
1174
+ seed?: string | undefined;
1175
+ name?: string | undefined;
1176
+ phase?: string | undefined;
1177
+ }[] | undefined;
1178
+ }>;
1179
+ savedGroups: Record<string, {
1180
+ type: "hashed";
1181
+ attributeKey: string;
1182
+ values: string[];
1183
+ } | {
1184
+ type: "list";
1185
+ attributeKey: string;
1186
+ values: (string | number)[];
1187
+ } | {
1188
+ type: "condition";
1189
+ condition: Record<string, z.core.util.JSONType>;
1190
+ }>;
1191
+ experiments: Record<string, {
1192
+ key: string;
1193
+ variations: [z.core.util.JSONType, z.core.util.JSONType, ...z.core.util.JSONType[]];
1194
+ urlPatterns?: {
1195
+ include: boolean;
1196
+ type: "regex" | "simple";
1197
+ pattern: string;
1198
+ }[] | undefined;
1199
+ force?: number | undefined;
1200
+ active?: boolean | undefined;
1201
+ persistQueryString?: boolean | undefined;
1202
+ condition?: Record<string, z.core.util.JSONType> | undefined;
1203
+ parentConditions?: {
1204
+ id: string;
1205
+ condition: Record<string, z.core.util.JSONType>;
1206
+ gate?: boolean | undefined;
1207
+ }[] | undefined;
1208
+ weights?: number[] | undefined;
1209
+ coverage?: number | undefined;
1210
+ hashAttribute?: string | undefined;
1211
+ fallbackAttribute?: string | undefined;
1212
+ hashVersion?: 2 | undefined;
1213
+ disableStickyBucketing?: boolean | undefined;
1214
+ bucketVersion?: number | undefined;
1215
+ minBucketVersion?: number | undefined;
1216
+ filters?: {
1217
+ seed: string;
1218
+ hashVersion: 2;
1219
+ ranges: [number, number][];
1220
+ attribute?: string | undefined;
1221
+ }[] | undefined;
1222
+ ranges?: [number, number][] | undefined;
1223
+ meta?: {
1224
+ key?: string | undefined;
1225
+ name?: string | undefined;
1226
+ passthrough?: boolean | undefined;
1227
+ }[] | undefined;
1228
+ seed?: string | undefined;
1229
+ name?: string | undefined;
1230
+ phase?: string | undefined;
1231
+ }>;
1232
+ };
1233
+ conditions: Record<string, {
1234
+ condition: Record<string, z.core.util.JSONType>;
1235
+ port: string;
1236
+ }[]>;
1237
+ scope: {
1238
+ projectId: string;
1239
+ environment: "sandbox" | "live";
1240
+ };
1241
+ funnelId: string;
1242
+ versionId: string;
1243
+ evaluationRevision: number;
1244
+ expiresAt: string | null;
1245
+ topology: {
1246
+ entry: string;
1247
+ nodes: {
1248
+ id: string;
1249
+ type: "output" | "action" | "condition" | "split" | "end" | "coupon" | "coupons" | "screen" | "offering" | "feature" | "entry" | "external_page" | "wait";
1250
+ outputs: Record<string, string>;
1251
+ writes: Record<string, string>;
1252
+ resources: {
1253
+ screenId?: string | undefined;
1254
+ paywallVersionId?: string | undefined;
1255
+ couponId?: string | undefined;
1256
+ couponIds?: string[] | undefined;
1257
+ experimentId?: string | undefined;
1258
+ featureKey?: string | undefined;
1259
+ offeringVersionId?: string | undefined;
1260
+ };
1261
+ }[];
1262
+ };
1263
+ evaluation: {
1264
+ maxTransitions: number;
1265
+ variables: Record<string, {
1266
+ nullable: boolean;
1267
+ type: "string" | "number" | "boolean" | "array" | "strings" | "json" | "offering_version" | "reward" | "paywall_version";
1268
+ source: {
1269
+ type: "input";
1270
+ } | {
1271
+ type: "node";
1272
+ } | {
1273
+ type: "attribute" | "parameter";
1274
+ key: string;
1275
+ };
1276
+ enum?: string[] | undefined;
1277
+ items?: {
1278
+ type: "string" | "number" | "boolean" | "strings" | "json" | "offering_version" | "reward" | "paywall_version";
1279
+ nullable: boolean;
1280
+ enum?: string[] | undefined;
1281
+ } | undefined;
1282
+ }>;
1283
+ outputSchema: {
1284
+ nullable: boolean;
1285
+ type: "string" | "number" | "boolean" | "array" | "strings" | "json" | "offering_version" | "reward" | "paywall_version";
1286
+ enum?: string[] | undefined;
1287
+ items?: {
1288
+ type: "string" | "number" | "boolean" | "strings" | "json" | "offering_version" | "reward" | "paywall_version";
1289
+ nullable: boolean;
1290
+ enum?: string[] | undefined;
1291
+ } | undefined;
1292
+ };
1293
+ terminals: Record<string, {
1294
+ outcome: "failed" | "completed" | "closed" | "ineligible";
1295
+ output: {
1296
+ type: "literal";
1297
+ value: z.core.util.JSONType;
1298
+ } | {
1299
+ type: "variable";
1300
+ key: string;
1301
+ path?: string | undefined;
1302
+ } | {
1303
+ type: "feature";
1304
+ featureKey: string;
1305
+ } | null;
1306
+ }>;
1307
+ };
1308
+ }>;
1309
+ assertFunnel(funnelId: string, controlRevision?: number, versionId?: string): void;
1310
+ destroy(): void;
1311
+ };
1312
+ type ConfigurationSync = ReturnType<typeof createConfigurationSync>;
1313
+
1314
+ export { type ConfigurationSync as C, type ConfigurationStorage as a, type ConfigurationSyncOptions as b, createConfigurationSync as c };