@tinkerlandai/indiana-sdk 0.1.0 → 0.2.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.
@@ -1,6 +1,6 @@
1
1
  import * as zod from 'zod';
2
2
  import { z } from 'zod';
3
- import { O as OfferingItem, A as ApiInput, F as FoundationApi } from './ai-usage-DX99gvfl.js';
3
+ import { O as OfferingItem, A as ApiInput, F as FoundationApi } from './ai-usage-CO0lDavO.js';
4
4
  import { S as StackNode, e as ScreenSelection } from './screen-DfuSw6Tz.js';
5
5
 
6
6
  declare const scopeSchema: z.ZodObject<{
@@ -280,7 +280,21 @@ declare const funnelCommandSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
280
280
  operation: z.ZodLiteral<"start">;
281
281
  funnelId: z.ZodUUID;
282
282
  requestId: z.ZodUUID;
283
- customerToken: z.ZodString;
283
+ customer: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
284
+ type: z.ZodLiteral<"id">;
285
+ value: z.ZodUUID;
286
+ }, z.core.$strict>, z.ZodObject<{
287
+ type: z.ZodLiteral<"externalUserId">;
288
+ value: z.ZodString;
289
+ }, z.core.$strict>], "type">>;
290
+ customerData: z.ZodOptional<z.ZodObject<{
291
+ name: z.ZodOptional<z.ZodString>;
292
+ email: z.ZodOptional<z.ZodUnion<readonly [z.ZodEmail, z.ZodLiteral<"">]>>;
293
+ attributes: z.ZodOptional<z.ZodIntersection<z.ZodRecord<z.ZodString, z.ZodJSONSchema>, z.ZodObject<{
294
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
295
+ }, z.core.$strip>>>;
296
+ fingerprint: z.ZodOptional<z.ZodString>;
297
+ }, z.core.$strict>>;
284
298
  locale: z.ZodString;
285
299
  parameters: z.ZodRecord<z.ZodString, z.ZodJSONSchema>;
286
300
  }, z.core.$strict>, z.ZodObject<{
@@ -1709,6 +1723,25 @@ declare const funnelRunViewSchema: z.ZodObject<{
1709
1723
  catalogAmountMinor: z.ZodNumber;
1710
1724
  automaticTax: z.ZodBoolean;
1711
1725
  execution: z.ZodNullable<z.ZodObject<{
1726
+ append: z.ZodOptional<z.ZodObject<{
1727
+ subscriptionId: z.ZodString;
1728
+ customerId: z.ZodString;
1729
+ sourceItems: z.ZodArray<z.ZodObject<{
1730
+ id: z.ZodString;
1731
+ price_id: z.ZodString;
1732
+ quantity: z.ZodNumber;
1733
+ discounts: z.ZodOptional<z.ZodArray<z.ZodObject<{
1734
+ id: z.ZodString;
1735
+ coupon: z.ZodString;
1736
+ start: z.ZodNumber;
1737
+ end: z.ZodNullable<z.ZodNumber>;
1738
+ }, z.core.$strict>>>;
1739
+ }, z.core.$strict>>;
1740
+ prorationDate: z.ZodNumber;
1741
+ amountMinor: z.ZodNumber;
1742
+ periodStartMs: z.ZodNumber;
1743
+ periodEndMs: z.ZodNumber;
1744
+ }, z.core.$strict>>;
1712
1745
  provider: z.ZodLiteral<"stripe">;
1713
1746
  executor: z.ZodEnum<{
1714
1747
  merchant: "merchant";
@@ -1750,9 +1783,9 @@ declare const funnelRunViewSchema: z.ZodObject<{
1750
1783
  }, z.core.$strict>>;
1751
1784
  }, z.core.$strict>>;
1752
1785
  discounts: z.ZodArray<z.ZodObject<{
1753
- coupon: z.ZodUUID;
1786
+ coupon: z.ZodString;
1754
1787
  terms: z.ZodObject<{
1755
- id: z.ZodUUID;
1788
+ id: z.ZodString;
1756
1789
  name: z.ZodString;
1757
1790
  percent_off: z.ZodOptional<z.ZodNumber>;
1758
1791
  amount_off: z.ZodOptional<z.ZodNumber>;
@@ -1776,6 +1809,7 @@ declare const funnelRunViewSchema: z.ZodObject<{
1776
1809
  operation: z.ZodNullable<z.ZodObject<{
1777
1810
  operationId: z.ZodUUID;
1778
1811
  orderId: z.ZodUUID;
1812
+ append: z.ZodOptional<z.ZodBoolean>;
1779
1813
  status: z.ZodEnum<{
1780
1814
  pending: "pending";
1781
1815
  cancelled: "cancelled";
@@ -1788,6 +1822,25 @@ declare const funnelRunViewSchema: z.ZodObject<{
1788
1822
  }>;
1789
1823
  checkoutUrl: z.ZodNullable<z.ZodURL>;
1790
1824
  execution: z.ZodNullable<z.ZodObject<{
1825
+ append: z.ZodOptional<z.ZodObject<{
1826
+ subscriptionId: z.ZodString;
1827
+ customerId: z.ZodString;
1828
+ sourceItems: z.ZodArray<z.ZodObject<{
1829
+ id: z.ZodString;
1830
+ price_id: z.ZodString;
1831
+ quantity: z.ZodNumber;
1832
+ discounts: z.ZodOptional<z.ZodArray<z.ZodObject<{
1833
+ id: z.ZodString;
1834
+ coupon: z.ZodString;
1835
+ start: z.ZodNumber;
1836
+ end: z.ZodNullable<z.ZodNumber>;
1837
+ }, z.core.$strict>>>;
1838
+ }, z.core.$strict>>;
1839
+ prorationDate: z.ZodNumber;
1840
+ amountMinor: z.ZodNumber;
1841
+ periodStartMs: z.ZodNumber;
1842
+ periodEndMs: z.ZodNumber;
1843
+ }, z.core.$strict>>;
1791
1844
  provider: z.ZodLiteral<"stripe">;
1792
1845
  executor: z.ZodEnum<{
1793
1846
  merchant: "merchant";
@@ -1829,9 +1882,9 @@ declare const funnelRunViewSchema: z.ZodObject<{
1829
1882
  }, z.core.$strict>>;
1830
1883
  }, z.core.$strict>>;
1831
1884
  discounts: z.ZodArray<z.ZodObject<{
1832
- coupon: z.ZodUUID;
1885
+ coupon: z.ZodString;
1833
1886
  terms: z.ZodObject<{
1834
- id: z.ZodUUID;
1887
+ id: z.ZodString;
1835
1888
  name: z.ZodString;
1836
1889
  percent_off: z.ZodOptional<z.ZodNumber>;
1837
1890
  amount_off: z.ZodOptional<z.ZodNumber>;
@@ -3324,6 +3377,25 @@ declare const funnelRuntimeResponseSchema: z.ZodObject<{
3324
3377
  catalogAmountMinor: z.ZodNumber;
3325
3378
  automaticTax: z.ZodBoolean;
3326
3379
  execution: z.ZodNullable<z.ZodObject<{
3380
+ append: z.ZodOptional<z.ZodObject<{
3381
+ subscriptionId: z.ZodString;
3382
+ customerId: z.ZodString;
3383
+ sourceItems: z.ZodArray<z.ZodObject<{
3384
+ id: z.ZodString;
3385
+ price_id: z.ZodString;
3386
+ quantity: z.ZodNumber;
3387
+ discounts: z.ZodOptional<z.ZodArray<z.ZodObject<{
3388
+ id: z.ZodString;
3389
+ coupon: z.ZodString;
3390
+ start: z.ZodNumber;
3391
+ end: z.ZodNullable<z.ZodNumber>;
3392
+ }, z.core.$strict>>>;
3393
+ }, z.core.$strict>>;
3394
+ prorationDate: z.ZodNumber;
3395
+ amountMinor: z.ZodNumber;
3396
+ periodStartMs: z.ZodNumber;
3397
+ periodEndMs: z.ZodNumber;
3398
+ }, z.core.$strict>>;
3327
3399
  provider: z.ZodLiteral<"stripe">;
3328
3400
  executor: z.ZodEnum<{
3329
3401
  merchant: "merchant";
@@ -3365,9 +3437,9 @@ declare const funnelRuntimeResponseSchema: z.ZodObject<{
3365
3437
  }, z.core.$strict>>;
3366
3438
  }, z.core.$strict>>;
3367
3439
  discounts: z.ZodArray<z.ZodObject<{
3368
- coupon: z.ZodUUID;
3440
+ coupon: z.ZodString;
3369
3441
  terms: z.ZodObject<{
3370
- id: z.ZodUUID;
3442
+ id: z.ZodString;
3371
3443
  name: z.ZodString;
3372
3444
  percent_off: z.ZodOptional<z.ZodNumber>;
3373
3445
  amount_off: z.ZodOptional<z.ZodNumber>;
@@ -3391,6 +3463,7 @@ declare const funnelRuntimeResponseSchema: z.ZodObject<{
3391
3463
  operation: z.ZodNullable<z.ZodObject<{
3392
3464
  operationId: z.ZodUUID;
3393
3465
  orderId: z.ZodUUID;
3466
+ append: z.ZodOptional<z.ZodBoolean>;
3394
3467
  status: z.ZodEnum<{
3395
3468
  pending: "pending";
3396
3469
  cancelled: "cancelled";
@@ -3403,6 +3476,25 @@ declare const funnelRuntimeResponseSchema: z.ZodObject<{
3403
3476
  }>;
3404
3477
  checkoutUrl: z.ZodNullable<z.ZodURL>;
3405
3478
  execution: z.ZodNullable<z.ZodObject<{
3479
+ append: z.ZodOptional<z.ZodObject<{
3480
+ subscriptionId: z.ZodString;
3481
+ customerId: z.ZodString;
3482
+ sourceItems: z.ZodArray<z.ZodObject<{
3483
+ id: z.ZodString;
3484
+ price_id: z.ZodString;
3485
+ quantity: z.ZodNumber;
3486
+ discounts: z.ZodOptional<z.ZodArray<z.ZodObject<{
3487
+ id: z.ZodString;
3488
+ coupon: z.ZodString;
3489
+ start: z.ZodNumber;
3490
+ end: z.ZodNullable<z.ZodNumber>;
3491
+ }, z.core.$strict>>>;
3492
+ }, z.core.$strict>>;
3493
+ prorationDate: z.ZodNumber;
3494
+ amountMinor: z.ZodNumber;
3495
+ periodStartMs: z.ZodNumber;
3496
+ periodEndMs: z.ZodNumber;
3497
+ }, z.core.$strict>>;
3406
3498
  provider: z.ZodLiteral<"stripe">;
3407
3499
  executor: z.ZodEnum<{
3408
3500
  merchant: "merchant";
@@ -3444,9 +3536,9 @@ declare const funnelRuntimeResponseSchema: z.ZodObject<{
3444
3536
  }, z.core.$strict>>;
3445
3537
  }, z.core.$strict>>;
3446
3538
  discounts: z.ZodArray<z.ZodObject<{
3447
- coupon: z.ZodUUID;
3539
+ coupon: z.ZodString;
3448
3540
  terms: z.ZodObject<{
3449
- id: z.ZodUUID;
3541
+ id: z.ZodString;
3450
3542
  name: z.ZodString;
3451
3543
  percent_off: z.ZodOptional<z.ZodNumber>;
3452
3544
  amount_off: z.ZodOptional<z.ZodNumber>;
@@ -3846,6 +3938,25 @@ declare const funnelRuntimeResponseSchema: z.ZodObject<{
3846
3938
  catalogAmountMinor: z.ZodNumber;
3847
3939
  automaticTax: z.ZodBoolean;
3848
3940
  execution: z.ZodNullable<z.ZodObject<{
3941
+ append: z.ZodOptional<z.ZodObject<{
3942
+ subscriptionId: z.ZodString;
3943
+ customerId: z.ZodString;
3944
+ sourceItems: z.ZodArray<z.ZodObject<{
3945
+ id: z.ZodString;
3946
+ price_id: z.ZodString;
3947
+ quantity: z.ZodNumber;
3948
+ discounts: z.ZodOptional<z.ZodArray<z.ZodObject<{
3949
+ id: z.ZodString;
3950
+ coupon: z.ZodString;
3951
+ start: z.ZodNumber;
3952
+ end: z.ZodNullable<z.ZodNumber>;
3953
+ }, z.core.$strict>>>;
3954
+ }, z.core.$strict>>;
3955
+ prorationDate: z.ZodNumber;
3956
+ amountMinor: z.ZodNumber;
3957
+ periodStartMs: z.ZodNumber;
3958
+ periodEndMs: z.ZodNumber;
3959
+ }, z.core.$strict>>;
3849
3960
  provider: z.ZodLiteral<"stripe">;
3850
3961
  executor: z.ZodEnum<{
3851
3962
  merchant: "merchant";
@@ -3887,9 +3998,9 @@ declare const funnelRuntimeResponseSchema: z.ZodObject<{
3887
3998
  }, z.core.$strict>>;
3888
3999
  }, z.core.$strict>>;
3889
4000
  discounts: z.ZodArray<z.ZodObject<{
3890
- coupon: z.ZodUUID;
4001
+ coupon: z.ZodString;
3891
4002
  terms: z.ZodObject<{
3892
- id: z.ZodUUID;
4003
+ id: z.ZodString;
3893
4004
  name: z.ZodString;
3894
4005
  percent_off: z.ZodOptional<z.ZodNumber>;
3895
4006
  amount_off: z.ZodOptional<z.ZodNumber>;
@@ -3913,6 +4024,7 @@ declare const funnelRuntimeResponseSchema: z.ZodObject<{
3913
4024
  operation: z.ZodNullable<z.ZodObject<{
3914
4025
  operationId: z.ZodUUID;
3915
4026
  orderId: z.ZodUUID;
4027
+ append: z.ZodOptional<z.ZodBoolean>;
3916
4028
  status: z.ZodEnum<{
3917
4029
  pending: "pending";
3918
4030
  cancelled: "cancelled";
@@ -3925,6 +4037,25 @@ declare const funnelRuntimeResponseSchema: z.ZodObject<{
3925
4037
  }>;
3926
4038
  checkoutUrl: z.ZodNullable<z.ZodURL>;
3927
4039
  execution: z.ZodNullable<z.ZodObject<{
4040
+ append: z.ZodOptional<z.ZodObject<{
4041
+ subscriptionId: z.ZodString;
4042
+ customerId: z.ZodString;
4043
+ sourceItems: z.ZodArray<z.ZodObject<{
4044
+ id: z.ZodString;
4045
+ price_id: z.ZodString;
4046
+ quantity: z.ZodNumber;
4047
+ discounts: z.ZodOptional<z.ZodArray<z.ZodObject<{
4048
+ id: z.ZodString;
4049
+ coupon: z.ZodString;
4050
+ start: z.ZodNumber;
4051
+ end: z.ZodNullable<z.ZodNumber>;
4052
+ }, z.core.$strict>>>;
4053
+ }, z.core.$strict>>;
4054
+ prorationDate: z.ZodNumber;
4055
+ amountMinor: z.ZodNumber;
4056
+ periodStartMs: z.ZodNumber;
4057
+ periodEndMs: z.ZodNumber;
4058
+ }, z.core.$strict>>;
3928
4059
  provider: z.ZodLiteral<"stripe">;
3929
4060
  executor: z.ZodEnum<{
3930
4061
  merchant: "merchant";
@@ -3966,9 +4097,9 @@ declare const funnelRuntimeResponseSchema: z.ZodObject<{
3966
4097
  }, z.core.$strict>>;
3967
4098
  }, z.core.$strict>>;
3968
4099
  discounts: z.ZodArray<z.ZodObject<{
3969
- coupon: z.ZodUUID;
4100
+ coupon: z.ZodString;
3970
4101
  terms: z.ZodObject<{
3971
- id: z.ZodUUID;
4102
+ id: z.ZodString;
3972
4103
  name: z.ZodString;
3973
4104
  percent_off: z.ZodOptional<z.ZodNumber>;
3974
4105
  amount_off: z.ZodOptional<z.ZodNumber>;
@@ -4114,6 +4245,7 @@ declare const funnelRuntimeResponseSchema: z.ZodObject<{
4114
4245
  }, z.core.$strict>>;
4115
4246
  }, z.core.$strict>>;
4116
4247
  runToken: z.ZodOptional<z.ZodString>;
4248
+ customerId: z.ZodOptional<z.ZodUUID>;
4117
4249
  }, z.core.$strict>;
4118
4250
  type FunnelRunView = z.infer<typeof funnelRunViewSchema>;
4119
4251
  type FunnelRuntimeResponse = z.infer<typeof funnelRuntimeResponseSchema>;
@@ -4122,16 +4254,31 @@ declare const funnelDecisionSchema: z.ZodObject<{
4122
4254
  requestId: z.ZodUUID;
4123
4255
  decisionId: z.ZodUUID;
4124
4256
  customerId: z.ZodUUID;
4257
+ externalUserId: z.ZodNullable<z.ZodString>;
4125
4258
  versionId: z.ZodUUID;
4126
4259
  receiptId: z.ZodUUID;
4127
4260
  value: z.ZodJSONSchema;
4128
4261
  }, z.core.$strict>;
4129
4262
  declare const funnelDecisionCommandSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
4130
- operation: z.ZodLiteral<"decide">;
4131
4263
  funnelId: z.ZodUUID;
4132
4264
  requestId: z.ZodUUID;
4133
- customerId: z.ZodUUID;
4265
+ customer: z.ZodDiscriminatedUnion<[z.ZodObject<{
4266
+ type: z.ZodLiteral<"id">;
4267
+ value: z.ZodUUID;
4268
+ }, z.core.$strict>, z.ZodObject<{
4269
+ type: z.ZodLiteral<"externalUserId">;
4270
+ value: z.ZodString;
4271
+ }, z.core.$strict>], "type">;
4272
+ customerData: z.ZodOptional<z.ZodObject<{
4273
+ name: z.ZodOptional<z.ZodString>;
4274
+ email: z.ZodOptional<z.ZodUnion<readonly [z.ZodEmail, z.ZodLiteral<"">]>>;
4275
+ attributes: z.ZodOptional<z.ZodIntersection<z.ZodRecord<z.ZodString, z.ZodJSONSchema>, z.ZodObject<{
4276
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
4277
+ }, z.core.$strip>>>;
4278
+ fingerprint: z.ZodOptional<z.ZodString>;
4279
+ }, z.core.$strict>>;
4134
4280
  attributes: z.ZodRecord<z.ZodString, z.ZodJSONSchema>;
4281
+ operation: z.ZodLiteral<"decide">;
4135
4282
  }, z.core.$strict>, z.ZodObject<{
4136
4283
  operation: z.ZodLiteral<"read_decision">;
4137
4284
  decisionId: z.ZodUUID;
@@ -4151,6 +4298,52 @@ declare const funnelDecisionCommandSchema: z.ZodDiscriminatedUnion<[z.ZodObject<
4151
4298
  type FunnelDecision = z.infer<typeof funnelDecisionSchema>;
4152
4299
  type FunnelDecisionCommand = z.infer<typeof funnelDecisionCommandSchema>;
4153
4300
 
4301
+ /** One Funnel identity represents one merchant campaign, across its published Versions. */
4302
+ declare const funnelCampaignCommandSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
4303
+ funnelId: z.ZodUUID;
4304
+ requestId: z.ZodUUID;
4305
+ customer: z.ZodDiscriminatedUnion<[z.ZodObject<{
4306
+ type: z.ZodLiteral<"id">;
4307
+ value: z.ZodUUID;
4308
+ }, z.core.$strict>, z.ZodObject<{
4309
+ type: z.ZodLiteral<"externalUserId">;
4310
+ value: z.ZodString;
4311
+ }, z.core.$strict>], "type">;
4312
+ customerData: z.ZodOptional<z.ZodObject<{
4313
+ name: z.ZodOptional<z.ZodString>;
4314
+ email: z.ZodOptional<z.ZodUnion<readonly [z.ZodEmail, z.ZodLiteral<"">]>>;
4315
+ attributes: z.ZodOptional<z.ZodIntersection<z.ZodRecord<z.ZodString, z.ZodJSONSchema>, z.ZodObject<{
4316
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
4317
+ }, z.core.$strip>>>;
4318
+ fingerprint: z.ZodOptional<z.ZodString>;
4319
+ }, z.core.$strict>>;
4320
+ attributes: z.ZodRecord<z.ZodString, z.ZodJSONSchema>;
4321
+ operation: z.ZodLiteral<"campaign_decide">;
4322
+ }, z.core.$strict>, z.ZodObject<{
4323
+ operation: z.ZodLiteral<"campaign_start">;
4324
+ funnelId: z.ZodUUID;
4325
+ requestId: z.ZodUUID;
4326
+ customer: z.ZodDiscriminatedUnion<[z.ZodObject<{
4327
+ type: z.ZodLiteral<"id">;
4328
+ value: z.ZodUUID;
4329
+ }, z.core.$strict>, z.ZodObject<{
4330
+ type: z.ZodLiteral<"externalUserId">;
4331
+ value: z.ZodString;
4332
+ }, z.core.$strict>], "type">;
4333
+ customerData: z.ZodOptional<z.ZodObject<{
4334
+ name: z.ZodOptional<z.ZodString>;
4335
+ email: z.ZodOptional<z.ZodUnion<readonly [z.ZodEmail, z.ZodLiteral<"">]>>;
4336
+ attributes: z.ZodOptional<z.ZodIntersection<z.ZodRecord<z.ZodString, z.ZodJSONSchema>, z.ZodObject<{
4337
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
4338
+ }, z.core.$strip>>>;
4339
+ fingerprint: z.ZodOptional<z.ZodString>;
4340
+ }, z.core.$strict>>;
4341
+ locale: z.ZodString;
4342
+ parameters: z.ZodRecord<z.ZodString, z.ZodJSONSchema>;
4343
+ cooldownSeconds: z.ZodNumber;
4344
+ }, z.core.$strict>], "operation">;
4345
+ type FunnelCampaignCommand = z.infer<typeof funnelCampaignCommandSchema>;
4346
+
4154
4347
  declare const featurePayloadSchema: z.ZodObject<{
4155
4348
  scope: z.ZodObject<{
4156
4349
  projectId: z.ZodString;
@@ -5390,6 +5583,25 @@ declare const subscriptionAttachQuoteSchema: z.ZodObject<{
5390
5583
  catalogAmountMinor: z.ZodNumber;
5391
5584
  automaticTax: z.ZodBoolean;
5392
5585
  execution: z.ZodNullable<z.ZodObject<{
5586
+ append: z.ZodOptional<z.ZodObject<{
5587
+ subscriptionId: z.ZodString;
5588
+ customerId: z.ZodString;
5589
+ sourceItems: z.ZodArray<z.ZodObject<{
5590
+ id: z.ZodString;
5591
+ price_id: z.ZodString;
5592
+ quantity: z.ZodNumber;
5593
+ discounts: z.ZodOptional<z.ZodArray<z.ZodObject<{
5594
+ id: z.ZodString;
5595
+ coupon: z.ZodString;
5596
+ start: z.ZodNumber;
5597
+ end: z.ZodNullable<z.ZodNumber>;
5598
+ }, z.core.$strict>>>;
5599
+ }, z.core.$strict>>;
5600
+ prorationDate: z.ZodNumber;
5601
+ amountMinor: z.ZodNumber;
5602
+ periodStartMs: z.ZodNumber;
5603
+ periodEndMs: z.ZodNumber;
5604
+ }, z.core.$strict>>;
5393
5605
  provider: z.ZodLiteral<"stripe">;
5394
5606
  executor: z.ZodEnum<{
5395
5607
  merchant: "merchant";
@@ -5431,9 +5643,9 @@ declare const subscriptionAttachQuoteSchema: z.ZodObject<{
5431
5643
  }, z.core.$strict>>;
5432
5644
  }, z.core.$strict>>;
5433
5645
  discounts: z.ZodArray<z.ZodObject<{
5434
- coupon: z.ZodUUID;
5646
+ coupon: z.ZodString;
5435
5647
  terms: z.ZodObject<{
5436
- id: z.ZodUUID;
5648
+ id: z.ZodString;
5437
5649
  name: z.ZodString;
5438
5650
  percent_off: z.ZodOptional<z.ZodNumber>;
5439
5651
  amount_off: z.ZodOptional<z.ZodNumber>;
@@ -5458,6 +5670,7 @@ declare const subscriptionAttachQuoteSchema: z.ZodObject<{
5458
5670
  declare const subscriptionOperationSchema: z.ZodObject<{
5459
5671
  operationId: z.ZodUUID;
5460
5672
  orderId: z.ZodUUID;
5673
+ append: z.ZodOptional<z.ZodBoolean>;
5461
5674
  status: z.ZodEnum<{
5462
5675
  pending: "pending";
5463
5676
  cancelled: "cancelled";
@@ -5470,6 +5683,25 @@ declare const subscriptionOperationSchema: z.ZodObject<{
5470
5683
  }>;
5471
5684
  checkoutUrl: z.ZodNullable<z.ZodURL>;
5472
5685
  execution: z.ZodNullable<z.ZodObject<{
5686
+ append: z.ZodOptional<z.ZodObject<{
5687
+ subscriptionId: z.ZodString;
5688
+ customerId: z.ZodString;
5689
+ sourceItems: z.ZodArray<z.ZodObject<{
5690
+ id: z.ZodString;
5691
+ price_id: z.ZodString;
5692
+ quantity: z.ZodNumber;
5693
+ discounts: z.ZodOptional<z.ZodArray<z.ZodObject<{
5694
+ id: z.ZodString;
5695
+ coupon: z.ZodString;
5696
+ start: z.ZodNumber;
5697
+ end: z.ZodNullable<z.ZodNumber>;
5698
+ }, z.core.$strict>>>;
5699
+ }, z.core.$strict>>;
5700
+ prorationDate: z.ZodNumber;
5701
+ amountMinor: z.ZodNumber;
5702
+ periodStartMs: z.ZodNumber;
5703
+ periodEndMs: z.ZodNumber;
5704
+ }, z.core.$strict>>;
5473
5705
  provider: z.ZodLiteral<"stripe">;
5474
5706
  executor: z.ZodEnum<{
5475
5707
  merchant: "merchant";
@@ -5511,9 +5743,9 @@ declare const subscriptionOperationSchema: z.ZodObject<{
5511
5743
  }, z.core.$strict>>;
5512
5744
  }, z.core.$strict>>;
5513
5745
  discounts: z.ZodArray<z.ZodObject<{
5514
- coupon: z.ZodUUID;
5746
+ coupon: z.ZodString;
5515
5747
  terms: z.ZodObject<{
5516
- id: z.ZodUUID;
5748
+ id: z.ZodString;
5517
5749
  name: z.ZodString;
5518
5750
  percent_off: z.ZodOptional<z.ZodNumber>;
5519
5751
  amount_off: z.ZodOptional<z.ZodNumber>;
@@ -6650,6 +6882,7 @@ declare function createFunnelDecisionClient(options: IndianaServerOptions & {
6650
6882
  requestId: string;
6651
6883
  decisionId: string;
6652
6884
  customerId: string;
6885
+ externalUserId: string | null;
6653
6886
  versionId: string;
6654
6887
  receiptId: string;
6655
6888
  value: zod.JSONType;
@@ -6668,6 +6901,7 @@ declare function createFunnelDecisionClient(options: IndianaServerOptions & {
6668
6901
  requestId: string;
6669
6902
  decisionId: string;
6670
6903
  customerId: string;
6904
+ externalUserId: string | null;
6671
6905
  versionId: string;
6672
6906
  receiptId: string;
6673
6907
  value: zod.JSONType;
@@ -6730,130 +6964,1311 @@ declare function createFunnelOrchestrationClient(options: IndianaServerOptions):
6730
6964
  }>;
6731
6965
  };
6732
6966
 
6733
- /** Generate on the trusted host and retain in its HttpOnly cookie; reuse for creation retries. */
6734
- declare function createGuestToken(): string;
6735
- interface IndianaServerOptions extends IndianaOptions {
6736
- apiKey: string;
6737
- scope: Scope;
6738
- }
6739
- declare function createIndianaServer(options: IndianaServerOptions): FoundationApi;
6740
-
6741
- /** Rotate short-lived browser access without starting or authorizing another run. */
6742
- declare function renewFunnelRun(options: IndianaServerOptions, input: {
6743
- runId: string;
6744
- customerId: string;
6745
- }): Promise<{
6746
- scope: {
6747
- projectId: string;
6748
- environment: "sandbox" | "live";
6749
- };
6750
- run: {
6751
- id: string;
6752
- source: {
6753
- type: "funnel";
6754
- id: string;
6755
- versionId: string;
6967
+ type FunnelCampaignStartInput = Omit<Extract<FunnelCampaignCommand, {
6968
+ operation: "campaign_start";
6969
+ }>, "operation" | "funnelId">;
6970
+ /** Explicit merchant entry controls. Canonical Runs/events, never localStorage or Redis authority. */
6971
+ declare function createFunnelCampaignClient(options: IndianaServerOptions & {
6972
+ funnelId: string;
6973
+ }): {
6974
+ /** Returns the original accepted request/decision, even when this lookup has a new request ID. */
6975
+ decide(input: FunnelDecisionInput): Promise<{
6976
+ requestId: string;
6977
+ decisionId: string;
6978
+ customerId: string;
6979
+ externalUserId: string | null;
6980
+ versionId: string;
6981
+ receiptId: string;
6982
+ value: zod.JSONType;
6983
+ }>;
6984
+ /** Call shown on the returned Run only after actual presentation. Closing without showing consumes no window. */
6985
+ start(input: FunnelCampaignStartInput): Promise<{
6986
+ scope: {
6987
+ projectId: string;
6988
+ environment: "sandbox" | "live";
6756
6989
  };
6757
- revision: number;
6758
- visit: number;
6759
- nodeId: string;
6760
- nodeType: "action" | "output" | "split" | "end" | "coupon" | "screen" | "offering" | "feature" | "condition" | "entry" | "wait";
6761
- status: "failed" | "running" | "completed" | "closed" | "ineligible" | "waiting";
6762
- canBack: boolean;
6763
- authenticated: boolean;
6764
- locale: string;
6765
- answers: Record<string, string | boolean | string[]>;
6766
- parameters: Record<string, zod.JSONType>;
6767
- variables: Record<string, zod.JSONType>;
6768
- output: zod.JSONType;
6769
- screen: {
6990
+ run: {
6770
6991
  id: string;
6771
- document: {
6772
- kind: "screen";
6773
- schemaVersion: 4;
6774
- name: string;
6775
- surface: "paywall" | "popup" | "onboarding" | "page";
6776
- presentation: {
6777
- type: "modal";
6778
- size: "sm" | "md" | "lg";
6779
- } | {
6780
- type: "sheet";
6781
- size: "sm" | "md" | "lg";
6782
- } | {
6783
- type: "fullscreen";
6784
- };
6785
- theme: {
6786
- primary: string;
6787
- background: string;
6788
- text: string;
6789
- radius: "none" | "full" | "sm" | "md" | "lg";
6790
- font: "system" | "serif" | "rounded" | "mono";
6791
- };
6792
- pages: {
6793
- id: string;
6992
+ source: {
6993
+ type: "funnel";
6994
+ id: string;
6995
+ versionId: string;
6996
+ };
6997
+ revision: number;
6998
+ visit: number;
6999
+ nodeId: string;
7000
+ nodeType: "action" | "output" | "split" | "end" | "coupon" | "screen" | "offering" | "feature" | "condition" | "entry" | "wait";
7001
+ status: "failed" | "running" | "completed" | "closed" | "ineligible" | "waiting";
7002
+ canBack: boolean;
7003
+ authenticated: boolean;
7004
+ locale: string;
7005
+ answers: Record<string, string | boolean | string[]>;
7006
+ parameters: Record<string, zod.JSONType>;
7007
+ variables: Record<string, zod.JSONType>;
7008
+ output: zod.JSONType;
7009
+ screen: {
7010
+ id: string;
7011
+ document: {
7012
+ kind: "screen";
7013
+ schemaVersion: 4;
6794
7014
  name: string;
6795
- root: StackNode;
6796
- theme?: {
7015
+ surface: "paywall" | "popup" | "onboarding" | "page";
7016
+ presentation: {
7017
+ type: "modal";
7018
+ size: "sm" | "md" | "lg";
7019
+ } | {
7020
+ type: "sheet";
7021
+ size: "sm" | "md" | "lg";
7022
+ } | {
7023
+ type: "fullscreen";
7024
+ };
7025
+ theme: {
6797
7026
  primary: string;
6798
7027
  background: string;
6799
7028
  text: string;
6800
7029
  radius: "none" | "full" | "sm" | "md" | "lg";
6801
7030
  font: "system" | "serif" | "rounded" | "mono";
6802
- } | undefined;
6803
- editorPosition?: {
6804
- x: number;
6805
- y: number;
6806
- } | undefined;
6807
- }[];
6808
- strings: {
6809
- defaultLocale: string;
6810
- locales: Record<string, Record<string, string>>;
7031
+ };
7032
+ pages: {
7033
+ id: string;
7034
+ name: string;
7035
+ root: StackNode;
7036
+ theme?: {
7037
+ primary: string;
7038
+ background: string;
7039
+ text: string;
7040
+ radius: "none" | "full" | "sm" | "md" | "lg";
7041
+ font: "system" | "serif" | "rounded" | "mono";
7042
+ } | undefined;
7043
+ editorPosition?: {
7044
+ x: number;
7045
+ y: number;
7046
+ } | undefined;
7047
+ }[];
7048
+ strings: {
7049
+ defaultLocale: string;
7050
+ locales: Record<string, Record<string, string>>;
7051
+ };
7052
+ actions: ({
7053
+ type: "navigate";
7054
+ close: false;
7055
+ pageId: string;
7056
+ id: string;
7057
+ event: string;
7058
+ properties: Record<string, string | number | boolean | null>;
7059
+ } | {
7060
+ type: "event";
7061
+ close: boolean;
7062
+ id: string;
7063
+ event: string;
7064
+ properties: Record<string, string | number | boolean | null>;
7065
+ } | {
7066
+ type: "close";
7067
+ close: true;
7068
+ id: string;
7069
+ event: string;
7070
+ properties: Record<string, string | number | boolean | null>;
7071
+ } | {
7072
+ type: "open_url";
7073
+ close: boolean;
7074
+ url: string;
7075
+ id: string;
7076
+ event: string;
7077
+ properties: Record<string, string | number | boolean | null>;
7078
+ } | {
7079
+ type: "claim_offer";
7080
+ close: boolean;
7081
+ couponId: string;
7082
+ id: string;
7083
+ event: string;
7084
+ properties: Record<string, string | number | boolean | null>;
7085
+ })[];
7086
+ initialPageId?: string | undefined;
6811
7087
  };
6812
- actions: ({
6813
- type: "navigate";
6814
- close: false;
6815
- pageId: string;
6816
- id: string;
6817
- event: string;
6818
- properties: Record<string, string | number | boolean | null>;
6819
- } | {
6820
- type: "event";
6821
- close: boolean;
6822
- id: string;
6823
- event: string;
6824
- properties: Record<string, string | number | boolean | null>;
7088
+ presentation: {
7089
+ type: "modal";
7090
+ size: "sm" | "md" | "lg";
6825
7091
  } | {
6826
- type: "close";
6827
- close: true;
6828
- id: string;
6829
- event: string;
6830
- properties: Record<string, string | number | boolean | null>;
7092
+ type: "sheet";
7093
+ size: "sm" | "md" | "lg";
6831
7094
  } | {
6832
- type: "open_url";
6833
- close: boolean;
6834
- url: string;
6835
- id: string;
6836
- event: string;
6837
- properties: Record<string, string | number | boolean | null>;
7095
+ type: "fullscreen";
6838
7096
  } | {
6839
- type: "claim_offer";
6840
- close: boolean;
6841
- couponId: string;
6842
- id: string;
6843
- event: string;
6844
- properties: Record<string, string | number | boolean | null>;
6845
- })[];
6846
- initialPageId?: string | undefined;
6847
- };
6848
- presentation: {
6849
- type: "modal";
6850
- size: "sm" | "md" | "lg";
6851
- } | {
6852
- type: "sheet";
6853
- size: "sm" | "md" | "lg";
6854
- } | {
6855
- type: "fullscreen";
6856
- } | {
7097
+ type: "inline";
7098
+ };
7099
+ outputs: string[];
7100
+ inputs: {
7101
+ key: string;
7102
+ componentId: string;
7103
+ required: boolean;
7104
+ }[];
7105
+ capabilities: {
7106
+ nodes: Record<string, {
7107
+ base: {
7108
+ text?: string | undefined;
7109
+ label?: string | undefined;
7110
+ alt?: string | undefined;
7111
+ html?: string | undefined;
7112
+ price?: {
7113
+ current: string;
7114
+ original: string | null;
7115
+ period: string;
7116
+ } | undefined;
7117
+ code?: string | undefined;
7118
+ countdownAt?: string | undefined;
7119
+ planId?: string | undefined;
7120
+ planVersionId?: string | undefined;
7121
+ currency?: "USD" | "EUR" | "CNY" | "GBP" | "JPY" | "CAD" | "AUD" | "NZD" | "CHF" | "HKD" | "SGD" | "KRW" | "INR" | "BRL" | "MXN" | "TWD" | "THB" | "IDR" | "MYR" | "PHP" | "VND" | "ZAR" | "AED" | "SAR" | "SEK" | "NOK" | "DKK" | "PLN" | "CZK" | "HUF" | "ILS" | "TRY" | "RON" | undefined;
7122
+ couponId?: string | undefined;
7123
+ offerId?: string | undefined;
7124
+ unavailable?: boolean | undefined;
7125
+ unavailableReason?: string | undefined;
7126
+ missing?: string[] | undefined;
7127
+ };
7128
+ picker?: string | undefined;
7129
+ byPlan?: Record<string, {
7130
+ text?: string | undefined;
7131
+ label?: string | undefined;
7132
+ alt?: string | undefined;
7133
+ html?: string | undefined;
7134
+ price?: {
7135
+ current: string;
7136
+ original: string | null;
7137
+ period: string;
7138
+ } | undefined;
7139
+ code?: string | undefined;
7140
+ countdownAt?: string | undefined;
7141
+ planId?: string | undefined;
7142
+ planVersionId?: string | undefined;
7143
+ currency?: "USD" | "EUR" | "CNY" | "GBP" | "JPY" | "CAD" | "AUD" | "NZD" | "CHF" | "HKD" | "SGD" | "KRW" | "INR" | "BRL" | "MXN" | "TWD" | "THB" | "IDR" | "MYR" | "PHP" | "VND" | "ZAR" | "AED" | "SAR" | "SEK" | "NOK" | "DKK" | "PLN" | "CZK" | "HUF" | "ILS" | "TRY" | "RON" | undefined;
7144
+ couponId?: string | undefined;
7145
+ offerId?: string | undefined;
7146
+ unavailable?: boolean | undefined;
7147
+ unavailableReason?: string | undefined;
7148
+ missing?: string[] | undefined;
7149
+ }> | undefined;
7150
+ }>;
7151
+ plans: Record<string, {
7152
+ id: string;
7153
+ versionId: string;
7154
+ available: boolean;
7155
+ name: string;
7156
+ price: string;
7157
+ period: string;
7158
+ currency?: "USD" | "EUR" | "CNY" | "GBP" | "JPY" | "CAD" | "AUD" | "NZD" | "CHF" | "HKD" | "SGD" | "KRW" | "INR" | "BRL" | "MXN" | "TWD" | "THB" | "IDR" | "MYR" | "PHP" | "VND" | "ZAR" | "AED" | "SAR" | "SEK" | "NOK" | "DKK" | "PLN" | "CZK" | "HUF" | "ILS" | "TRY" | "RON" | undefined;
7159
+ }>;
7160
+ pickers: Record<string, {
7161
+ options: string[];
7162
+ selected: string | null;
7163
+ }>;
7164
+ diagnostics: {
7165
+ nodeId: string;
7166
+ message: string;
7167
+ }[];
7168
+ paywall?: {
7169
+ internal_feature_id: string;
7170
+ name: string;
7171
+ kind: "access" | "metered" | "credit";
7172
+ quantity: string;
7173
+ allowed: boolean;
7174
+ reason: "unavailable" | "insufficient_balance" | "limit_exceeded" | "awaiting_topup" | "authorization_required" | "payment_blocked" | "cash_budget_exceeded" | "not_entitled" | "capacity_exceeded" | "authentication_required" | null;
7175
+ preview: {
7176
+ scenario: "feature_flag" | "usage_limit";
7177
+ candidates: {
7178
+ productId: string;
7179
+ productVersionId: string;
7180
+ name: string;
7181
+ action: "purchase" | "upgrade" | "addon" | "topup";
7182
+ membershipId: string | null;
7183
+ currency: "USD" | "EUR" | "CNY" | "GBP" | "JPY" | "CAD" | "AUD" | "NZD" | "CHF" | "HKD" | "SGD" | "KRW" | "INR" | "BRL" | "MXN" | "TWD" | "THB" | "IDR" | "MYR" | "PHP" | "VND" | "ZAR" | "AED" | "SAR" | "SEK" | "NOK" | "DKK" | "PLN" | "CZK" | "HUF" | "ILS" | "TRY" | "RON";
7184
+ amountMinor: string;
7185
+ interval: "week" | "month" | "year" | "free" | "one_time";
7186
+ intervalCount: number;
7187
+ }[];
7188
+ } | null;
7189
+ } | undefined;
7190
+ };
7191
+ customerData: {
7192
+ nodes: Record<string, {
7193
+ source: "membership" | "credit_balance" | "credit_transactions" | "billing" | "billing_controls" | "customer_plans" | "credit_packs" | "credit_pack_orders" | "offer_history";
7194
+ status: "error" | "ready" | "idle" | "loading";
7195
+ stale: boolean;
7196
+ preview: boolean;
7197
+ resources: {
7198
+ key: string;
7199
+ name: string;
7200
+ spendable: string;
7201
+ reserved: string;
7202
+ available: string;
7203
+ expiry: string | null;
7204
+ sources: {
7205
+ id: string;
7206
+ label: string;
7207
+ detail: string[];
7208
+ facts: {
7209
+ label: string;
7210
+ value: string;
7211
+ }[];
7212
+ value?: string | undefined;
7213
+ status?: string | undefined;
7214
+ purchaseId?: string | undefined;
7215
+ invoiceUrl?: string | undefined;
7216
+ billingActions?: {
7217
+ action: "invoice_open";
7218
+ label: string;
7219
+ }[] | undefined;
7220
+ membershipActions?: {
7221
+ value: string;
7222
+ label: string;
7223
+ }[] | undefined;
7224
+ }[];
7225
+ sourceCount: number;
7226
+ sourcePage: number;
7227
+ hasNextSources: boolean;
7228
+ hasPreviousSources: boolean;
7229
+ }[];
7230
+ rows: {
7231
+ id: string;
7232
+ label: string;
7233
+ detail: string[];
7234
+ facts: {
7235
+ label: string;
7236
+ value: string;
7237
+ }[];
7238
+ value?: string | undefined;
7239
+ status?: string | undefined;
7240
+ purchaseId?: string | undefined;
7241
+ invoiceUrl?: string | undefined;
7242
+ billingActions?: {
7243
+ action: "invoice_open";
7244
+ label: string;
7245
+ }[] | undefined;
7246
+ membershipActions?: {
7247
+ value: string;
7248
+ label: string;
7249
+ }[] | undefined;
7250
+ }[];
7251
+ hasNext: boolean;
7252
+ hasPrevious: boolean;
7253
+ page: number;
7254
+ filter: string;
7255
+ errorCode?: string | undefined;
7256
+ errorMessage?: string | undefined;
7257
+ updatedAt?: string | undefined;
7258
+ buyingId?: string | undefined;
7259
+ membershipBusy?: boolean | undefined;
7260
+ billingBusy?: boolean | undefined;
7261
+ membershipReview?: {
7262
+ title: string;
7263
+ note: string;
7264
+ facts: {
7265
+ label: string;
7266
+ value: string;
7267
+ }[];
7268
+ } | undefined;
7269
+ membershipResult?: string | undefined;
7270
+ }>;
7271
+ };
7272
+ dataCursors: Record<string, {
7273
+ kind: "ledger";
7274
+ cursor: {
7275
+ at: string;
7276
+ id: string;
7277
+ type: "usage" | "invoice" | "source" | "debt" | "transaction" | "settlement";
7278
+ };
7279
+ } | {
7280
+ kind: "billing";
7281
+ cursor: string;
7282
+ } | null>;
7283
+ offeringKey?: string | undefined;
7284
+ } | null;
7285
+ paywall: {
7286
+ receiptId: string;
7287
+ resolution: {
7288
+ id: string;
7289
+ paywallId: string;
7290
+ version: number;
7291
+ document: {
7292
+ schemaVersion: 3;
7293
+ kind: "paywall";
7294
+ name: string;
7295
+ presentation: {
7296
+ type: "modal";
7297
+ size: "sm" | "md" | "lg";
7298
+ } | {
7299
+ type: "sheet";
7300
+ size: "sm" | "md" | "lg";
7301
+ } | {
7302
+ type: "fullscreen";
7303
+ } | {
7304
+ type: "inline";
7305
+ };
7306
+ products: {
7307
+ items: {
7308
+ productVersionId: string;
7309
+ label: string;
7310
+ }[];
7311
+ defaultProductVersionId: string | null;
7312
+ grouping?: {
7313
+ tiers: {
7314
+ id: string;
7315
+ name: string;
7316
+ }[];
7317
+ assignments: {
7318
+ productVersionId: string;
7319
+ tierId: string;
7320
+ period: "month" | "year";
7321
+ }[];
7322
+ } | undefined;
7323
+ };
7324
+ offeringVersionId: string | null;
7325
+ offeringId: string | null;
7326
+ screen: {
7327
+ kind: "screen";
7328
+ schemaVersion: 4;
7329
+ name: string;
7330
+ surface: "paywall" | "popup" | "onboarding" | "page";
7331
+ presentation: {
7332
+ type: "modal";
7333
+ size: "sm" | "md" | "lg";
7334
+ } | {
7335
+ type: "sheet";
7336
+ size: "sm" | "md" | "lg";
7337
+ } | {
7338
+ type: "fullscreen";
7339
+ };
7340
+ theme: {
7341
+ primary: string;
7342
+ background: string;
7343
+ text: string;
7344
+ radius: "none" | "full" | "sm" | "md" | "lg";
7345
+ font: "system" | "serif" | "rounded" | "mono";
7346
+ };
7347
+ pages: {
7348
+ id: string;
7349
+ name: string;
7350
+ root: StackNode;
7351
+ theme?: {
7352
+ primary: string;
7353
+ background: string;
7354
+ text: string;
7355
+ radius: "none" | "full" | "sm" | "md" | "lg";
7356
+ font: "system" | "serif" | "rounded" | "mono";
7357
+ } | undefined;
7358
+ editorPosition?: {
7359
+ x: number;
7360
+ y: number;
7361
+ } | undefined;
7362
+ }[];
7363
+ strings: {
7364
+ defaultLocale: string;
7365
+ locales: Record<string, Record<string, string>>;
7366
+ };
7367
+ actions: ({
7368
+ type: "navigate";
7369
+ close: false;
7370
+ pageId: string;
7371
+ id: string;
7372
+ event: string;
7373
+ properties: Record<string, string | number | boolean | null>;
7374
+ } | {
7375
+ type: "event";
7376
+ close: boolean;
7377
+ id: string;
7378
+ event: string;
7379
+ properties: Record<string, string | number | boolean | null>;
7380
+ } | {
7381
+ type: "close";
7382
+ close: true;
7383
+ id: string;
7384
+ event: string;
7385
+ properties: Record<string, string | number | boolean | null>;
7386
+ } | {
7387
+ type: "open_url";
7388
+ close: boolean;
7389
+ url: string;
7390
+ id: string;
7391
+ event: string;
7392
+ properties: Record<string, string | number | boolean | null>;
7393
+ } | {
7394
+ type: "claim_offer";
7395
+ close: boolean;
7396
+ couponId: string;
7397
+ id: string;
7398
+ event: string;
7399
+ properties: Record<string, string | number | boolean | null>;
7400
+ })[];
7401
+ initialPageId?: string | undefined;
7402
+ };
7403
+ buttons: Record<string, {
7404
+ type: "checkout";
7405
+ product: {
7406
+ type: "picker";
7407
+ pickerId: string;
7408
+ allowedProductVersionIds: string[];
7409
+ } | {
7410
+ type: "fixed";
7411
+ productVersionId: string;
7412
+ };
7413
+ } | {
7414
+ type: "close";
7415
+ } | {
7416
+ type: "action";
7417
+ action: {
7418
+ type: "event";
7419
+ event: string;
7420
+ } | {
7421
+ type: "open_url";
7422
+ url: string;
7423
+ };
7424
+ }>;
7425
+ requirement?: {
7426
+ internal_feature_id: string;
7427
+ quantity: string;
7428
+ properties: {
7429
+ [k: string]: string;
7430
+ };
7431
+ entityId?: string | undefined;
7432
+ } | undefined;
7433
+ };
7434
+ offering: {
7435
+ id: string;
7436
+ offeringId: string;
7437
+ version: number;
7438
+ document: {
7439
+ lookupKey: string;
7440
+ displayName: string;
7441
+ items: OfferingItem[];
7442
+ metadata: Record<string, zod.JSONType>;
7443
+ };
7444
+ };
7445
+ capabilities: {
7446
+ nodes: Record<string, {
7447
+ base: {
7448
+ text?: string | undefined;
7449
+ label?: string | undefined;
7450
+ alt?: string | undefined;
7451
+ html?: string | undefined;
7452
+ price?: {
7453
+ current: string;
7454
+ original: string | null;
7455
+ period: string;
7456
+ } | undefined;
7457
+ code?: string | undefined;
7458
+ countdownAt?: string | undefined;
7459
+ planId?: string | undefined;
7460
+ planVersionId?: string | undefined;
7461
+ currency?: "USD" | "EUR" | "CNY" | "GBP" | "JPY" | "CAD" | "AUD" | "NZD" | "CHF" | "HKD" | "SGD" | "KRW" | "INR" | "BRL" | "MXN" | "TWD" | "THB" | "IDR" | "MYR" | "PHP" | "VND" | "ZAR" | "AED" | "SAR" | "SEK" | "NOK" | "DKK" | "PLN" | "CZK" | "HUF" | "ILS" | "TRY" | "RON" | undefined;
7462
+ couponId?: string | undefined;
7463
+ offerId?: string | undefined;
7464
+ unavailable?: boolean | undefined;
7465
+ unavailableReason?: string | undefined;
7466
+ missing?: string[] | undefined;
7467
+ };
7468
+ picker?: string | undefined;
7469
+ byPlan?: Record<string, {
7470
+ text?: string | undefined;
7471
+ label?: string | undefined;
7472
+ alt?: string | undefined;
7473
+ html?: string | undefined;
7474
+ price?: {
7475
+ current: string;
7476
+ original: string | null;
7477
+ period: string;
7478
+ } | undefined;
7479
+ code?: string | undefined;
7480
+ countdownAt?: string | undefined;
7481
+ planId?: string | undefined;
7482
+ planVersionId?: string | undefined;
7483
+ currency?: "USD" | "EUR" | "CNY" | "GBP" | "JPY" | "CAD" | "AUD" | "NZD" | "CHF" | "HKD" | "SGD" | "KRW" | "INR" | "BRL" | "MXN" | "TWD" | "THB" | "IDR" | "MYR" | "PHP" | "VND" | "ZAR" | "AED" | "SAR" | "SEK" | "NOK" | "DKK" | "PLN" | "CZK" | "HUF" | "ILS" | "TRY" | "RON" | undefined;
7484
+ couponId?: string | undefined;
7485
+ offerId?: string | undefined;
7486
+ unavailable?: boolean | undefined;
7487
+ unavailableReason?: string | undefined;
7488
+ missing?: string[] | undefined;
7489
+ }> | undefined;
7490
+ }>;
7491
+ plans: Record<string, {
7492
+ id: string;
7493
+ versionId: string;
7494
+ available: boolean;
7495
+ name: string;
7496
+ price: string;
7497
+ period: string;
7498
+ currency?: "USD" | "EUR" | "CNY" | "GBP" | "JPY" | "CAD" | "AUD" | "NZD" | "CHF" | "HKD" | "SGD" | "KRW" | "INR" | "BRL" | "MXN" | "TWD" | "THB" | "IDR" | "MYR" | "PHP" | "VND" | "ZAR" | "AED" | "SAR" | "SEK" | "NOK" | "DKK" | "PLN" | "CZK" | "HUF" | "ILS" | "TRY" | "RON" | undefined;
7499
+ }>;
7500
+ pickers: Record<string, {
7501
+ options: string[];
7502
+ selected: string | null;
7503
+ }>;
7504
+ diagnostics: {
7505
+ nodeId: string;
7506
+ message: string;
7507
+ }[];
7508
+ paywall?: {
7509
+ internal_feature_id: string;
7510
+ name: string;
7511
+ kind: "access" | "metered" | "credit";
7512
+ quantity: string;
7513
+ allowed: boolean;
7514
+ reason: "unavailable" | "insufficient_balance" | "limit_exceeded" | "awaiting_topup" | "authorization_required" | "payment_blocked" | "cash_budget_exceeded" | "not_entitled" | "capacity_exceeded" | "authentication_required" | null;
7515
+ preview: {
7516
+ scenario: "feature_flag" | "usage_limit";
7517
+ candidates: {
7518
+ productId: string;
7519
+ productVersionId: string;
7520
+ name: string;
7521
+ action: "purchase" | "upgrade" | "addon" | "topup";
7522
+ membershipId: string | null;
7523
+ currency: "USD" | "EUR" | "CNY" | "GBP" | "JPY" | "CAD" | "AUD" | "NZD" | "CHF" | "HKD" | "SGD" | "KRW" | "INR" | "BRL" | "MXN" | "TWD" | "THB" | "IDR" | "MYR" | "PHP" | "VND" | "ZAR" | "AED" | "SAR" | "SEK" | "NOK" | "DKK" | "PLN" | "CZK" | "HUF" | "ILS" | "TRY" | "RON";
7524
+ amountMinor: string;
7525
+ interval: "week" | "month" | "year" | "free" | "one_time";
7526
+ intervalCount: number;
7527
+ }[];
7528
+ } | null;
7529
+ } | undefined;
7530
+ };
7531
+ check: {
7532
+ internal_feature_id: string;
7533
+ name: string;
7534
+ kind: "access" | "metered" | "credit";
7535
+ quantity: string;
7536
+ allowed: boolean;
7537
+ reason: "unavailable" | "insufficient_balance" | "limit_exceeded" | "awaiting_topup" | "authorization_required" | "payment_blocked" | "cash_budget_exceeded" | "not_entitled" | "capacity_exceeded" | "authentication_required" | null;
7538
+ preview: {
7539
+ scenario: "feature_flag" | "usage_limit";
7540
+ candidates: {
7541
+ productId: string;
7542
+ productVersionId: string;
7543
+ name: string;
7544
+ action: "purchase" | "upgrade" | "addon" | "topup";
7545
+ membershipId: string | null;
7546
+ currency: "USD" | "EUR" | "CNY" | "GBP" | "JPY" | "CAD" | "AUD" | "NZD" | "CHF" | "HKD" | "SGD" | "KRW" | "INR" | "BRL" | "MXN" | "TWD" | "THB" | "IDR" | "MYR" | "PHP" | "VND" | "ZAR" | "AED" | "SAR" | "SEK" | "NOK" | "DKK" | "PLN" | "CZK" | "HUF" | "ILS" | "TRY" | "RON";
7547
+ amountMinor: string;
7548
+ interval: "week" | "month" | "year" | "free" | "one_time";
7549
+ intervalCount: number;
7550
+ }[];
7551
+ } | null;
7552
+ } | null;
7553
+ };
7554
+ quote: {
7555
+ operationId: string;
7556
+ entityId: string | null;
7557
+ billingSubscriptionId: string | null;
7558
+ discount: {
7559
+ offerId: string;
7560
+ couponId: string;
7561
+ discount: {
7562
+ type: "percent";
7563
+ percentOff: number;
7564
+ } | {
7565
+ type: "amount";
7566
+ amountOffCents: number;
7567
+ currency: "USD" | "EUR" | "CNY" | "GBP" | "JPY" | "CAD" | "AUD" | "NZD" | "CHF" | "HKD" | "SGD" | "KRW" | "INR" | "BRL" | "MXN" | "TWD" | "THB" | "IDR" | "MYR" | "PHP" | "VND" | "ZAR" | "AED" | "SAR" | "SEK" | "NOK" | "DKK" | "PLN" | "CZK" | "HUF" | "ILS" | "TRY" | "RON";
7568
+ };
7569
+ duration: {
7570
+ type: "once";
7571
+ } | {
7572
+ type: "repeating";
7573
+ months: number;
7574
+ } | {
7575
+ type: "forever";
7576
+ };
7577
+ amountMinor: number;
7578
+ allocations: {
7579
+ productVersionId: string;
7580
+ amountMinor: number;
7581
+ }[];
7582
+ expiresAt: string;
7583
+ } | null;
7584
+ charge: {
7585
+ effectiveAt: string;
7586
+ periodEndsAt: string;
7587
+ debitMinor: number;
7588
+ discountMinor: number;
7589
+ taxMinor: number;
7590
+ totalMinor: number;
7591
+ } | null;
7592
+ expiresAt: string;
7593
+ provider: "apple" | "google" | "stripe";
7594
+ currency: "USD" | "EUR" | "CNY" | "GBP" | "JPY" | "CAD" | "AUD" | "NZD" | "CHF" | "HKD" | "SGD" | "KRW" | "INR" | "BRL" | "MXN" | "TWD" | "THB" | "IDR" | "MYR" | "PHP" | "VND" | "ZAR" | "AED" | "SAR" | "SEK" | "NOK" | "DKK" | "PLN" | "CZK" | "HUF" | "ILS" | "TRY" | "RON";
7595
+ lines: {
7596
+ lineId: string;
7597
+ productVersionId: string;
7598
+ productName: string;
7599
+ interval: "week" | "month" | "year" | "free" | "one_time";
7600
+ baseAmountMinor: number;
7601
+ seats: {
7602
+ key: string;
7603
+ quantity: number;
7604
+ includedQuantity: number;
7605
+ maximumQuantity: number;
7606
+ unitAmountMinor: number;
7607
+ }[];
7608
+ catalogAmountMinor: number;
7609
+ trial: {
7610
+ days: number;
7611
+ cardRequired: boolean;
7612
+ } | null;
7613
+ intervalCount?: number | undefined;
7614
+ prepaid?: {
7615
+ itemKey: string;
7616
+ internal_feature_id: string;
7617
+ includedAmount: string;
7618
+ quantity: number;
7619
+ terms: {
7620
+ units: string;
7621
+ prices: {
7622
+ currency: "USD" | "EUR" | "CNY" | "GBP" | "JPY" | "CAD" | "AUD" | "NZD" | "CHF" | "HKD" | "SGD" | "KRW" | "INR" | "BRL" | "MXN" | "TWD" | "THB" | "IDR" | "MYR" | "PHP" | "VND" | "ZAR" | "AED" | "SAR" | "SEK" | "NOK" | "DKK" | "PLN" | "CZK" | "HUF" | "ILS" | "TRY" | "RON";
7623
+ amountMinor: number;
7624
+ pricing?: {
7625
+ kind: "graduated" | "volume";
7626
+ tiers: {
7627
+ upTo: number | null;
7628
+ unitAmountMinor: number;
7629
+ flatAmountMinor?: number | undefined;
7630
+ }[];
7631
+ } | undefined;
7632
+ }[];
7633
+ minimumQuantity: number;
7634
+ maximumQuantity: number;
7635
+ };
7636
+ unitAmountMinor: number;
7637
+ productId: string | null;
7638
+ priceId: string | null;
7639
+ pricing?: {
7640
+ kind: "graduated" | "volume";
7641
+ tiers: {
7642
+ upTo: number | null;
7643
+ unitAmountMinor: number;
7644
+ flatAmountMinor?: number | undefined;
7645
+ }[];
7646
+ } | undefined;
7647
+ }[] | undefined;
7648
+ }[];
7649
+ catalogAmountMinor: number;
7650
+ automaticTax: boolean;
7651
+ execution: {
7652
+ provider: "stripe";
7653
+ executor: "merchant" | "indiana";
7654
+ accountId: string;
7655
+ mode: "subscription" | "payment";
7656
+ lineItems: {
7657
+ price: string | null;
7658
+ quantity: number;
7659
+ priceId: string;
7660
+ productName: string;
7661
+ amountMinor: number;
7662
+ currency: string;
7663
+ interval: "week" | "month" | "year" | "one_off";
7664
+ intervalCount: number;
7665
+ slot: "stripe_price_id" | "stripe_empty_price_id";
7666
+ tiers: {
7667
+ mode: "graduated" | "volume";
7668
+ tiers: {
7669
+ upTo: number | null;
7670
+ unitAmountMinor: number;
7671
+ flatAmountMinor?: number | undefined;
7672
+ }[];
7673
+ } | null;
7674
+ }[];
7675
+ discounts: {
7676
+ coupon: string;
7677
+ terms: {
7678
+ id: string;
7679
+ name: string;
7680
+ duration: "once" | "repeating" | "forever";
7681
+ percent_off?: number | undefined;
7682
+ amount_off?: number | undefined;
7683
+ currency?: string | undefined;
7684
+ duration_in_months?: number | undefined;
7685
+ };
7686
+ }[];
7687
+ trialPeriodDays: number | null;
7688
+ metadata: {
7689
+ grooveCheckoutId: string;
7690
+ grooveCustomerId: string;
7691
+ };
7692
+ expiresAt: string;
7693
+ append?: {
7694
+ subscriptionId: string;
7695
+ customerId: string;
7696
+ sourceItems: {
7697
+ id: string;
7698
+ price_id: string;
7699
+ quantity: number;
7700
+ discounts?: {
7701
+ id: string;
7702
+ coupon: string;
7703
+ start: number;
7704
+ end: number | null;
7705
+ }[] | undefined;
7706
+ }[];
7707
+ prorationDate: number;
7708
+ amountMinor: number;
7709
+ periodStartMs: number;
7710
+ periodEndMs: number;
7711
+ } | undefined;
7712
+ } | null;
7713
+ nativeOffer?: {
7714
+ offerKind: "none" | "introductory" | "promotional";
7715
+ offerId: string | null;
7716
+ discountMinor: number;
7717
+ trialDays: number | null;
7718
+ } | undefined;
7719
+ } | null;
7720
+ operation: {
7721
+ operationId: string;
7722
+ orderId: string;
7723
+ status: "pending" | "cancelled" | "failed" | "complete";
7724
+ executor: "merchant" | "indiana";
7725
+ checkoutUrl: string | null;
7726
+ execution: {
7727
+ provider: "stripe";
7728
+ executor: "merchant" | "indiana";
7729
+ accountId: string;
7730
+ mode: "subscription" | "payment";
7731
+ lineItems: {
7732
+ price: string | null;
7733
+ quantity: number;
7734
+ priceId: string;
7735
+ productName: string;
7736
+ amountMinor: number;
7737
+ currency: string;
7738
+ interval: "week" | "month" | "year" | "one_off";
7739
+ intervalCount: number;
7740
+ slot: "stripe_price_id" | "stripe_empty_price_id";
7741
+ tiers: {
7742
+ mode: "graduated" | "volume";
7743
+ tiers: {
7744
+ upTo: number | null;
7745
+ unitAmountMinor: number;
7746
+ flatAmountMinor?: number | undefined;
7747
+ }[];
7748
+ } | null;
7749
+ }[];
7750
+ discounts: {
7751
+ coupon: string;
7752
+ terms: {
7753
+ id: string;
7754
+ name: string;
7755
+ duration: "once" | "repeating" | "forever";
7756
+ percent_off?: number | undefined;
7757
+ amount_off?: number | undefined;
7758
+ currency?: string | undefined;
7759
+ duration_in_months?: number | undefined;
7760
+ };
7761
+ }[];
7762
+ trialPeriodDays: number | null;
7763
+ metadata: {
7764
+ grooveCheckoutId: string;
7765
+ grooveCustomerId: string;
7766
+ };
7767
+ expiresAt: string;
7768
+ append?: {
7769
+ subscriptionId: string;
7770
+ customerId: string;
7771
+ sourceItems: {
7772
+ id: string;
7773
+ price_id: string;
7774
+ quantity: number;
7775
+ discounts?: {
7776
+ id: string;
7777
+ coupon: string;
7778
+ start: number;
7779
+ end: number | null;
7780
+ }[] | undefined;
7781
+ }[];
7782
+ prorationDate: number;
7783
+ amountMinor: number;
7784
+ periodStartMs: number;
7785
+ periodEndMs: number;
7786
+ } | undefined;
7787
+ } | null;
7788
+ currency: "USD" | "EUR" | "CNY" | "GBP" | "JPY" | "CAD" | "AUD" | "NZD" | "CHF" | "HKD" | "SGD" | "KRW" | "INR" | "BRL" | "MXN" | "TWD" | "THB" | "IDR" | "MYR" | "PHP" | "VND" | "ZAR" | "AED" | "SAR" | "SEK" | "NOK" | "DKK" | "PLN" | "CZK" | "HUF" | "ILS" | "TRY" | "RON";
7789
+ catalogAmountMinor: number;
7790
+ taxMinor: number;
7791
+ totalMinor: number | null;
7792
+ quoteFinalized: boolean;
7793
+ nativePurchase: {
7794
+ type: "native_purchase";
7795
+ receiptId: string;
7796
+ orderId: string;
7797
+ productVersionId: string;
7798
+ provider: "apple" | "google";
7799
+ productId: string;
7800
+ productKind: "lifetime" | "membership" | "credit_pack";
7801
+ replacement: {
7802
+ sourceOrderId: string;
7803
+ sourceProductId: string;
7804
+ policy: "apple_store" | "google_full_price";
7805
+ sourceAccountTokens: string[];
7806
+ } | null;
7807
+ offerKind: "none" | "introductory" | "promotional";
7808
+ currency: "USD" | "EUR" | "CNY" | "GBP" | "JPY" | "CAD" | "AUD" | "NZD" | "CHF" | "HKD" | "SGD" | "KRW" | "INR" | "BRL" | "MXN" | "TWD" | "THB" | "IDR" | "MYR" | "PHP" | "VND" | "ZAR" | "AED" | "SAR" | "SEK" | "NOK" | "DKK" | "PLN" | "CZK" | "HUF" | "ILS" | "TRY" | "RON";
7809
+ catalogAmountMinor: number;
7810
+ discountMinor: number;
7811
+ trialDays: number | null;
7812
+ seatBundle: {
7813
+ key: string;
7814
+ quantity: number;
7815
+ }[];
7816
+ applePromotionalOffer: {
7817
+ offerId: string;
7818
+ keyId: string;
7819
+ nonce: string;
7820
+ signature: string;
7821
+ timestamp: number;
7822
+ } | null;
7823
+ appAccountToken?: string | undefined;
7824
+ obfuscatedAccountId?: string | undefined;
7825
+ obfuscatedProfileId?: string | undefined;
7826
+ basePlanId?: string | undefined;
7827
+ offerId?: string | undefined;
7828
+ } | null;
7829
+ append?: boolean | undefined;
7830
+ } | null;
7831
+ purchaseRequestId: string | null;
7832
+ } | null;
7833
+ instruction: {
7834
+ type: "wait";
7835
+ receiptId: string;
7836
+ kind: "operation" | "event" | "timer";
7837
+ deadline: string | null;
7838
+ eventName?: string | undefined;
7839
+ } | {
7840
+ type: "open_url";
7841
+ receiptId: string;
7842
+ url: string;
7843
+ } | {
7844
+ type: "event";
7845
+ receiptId: string;
7846
+ event: string;
7847
+ } | null;
7848
+ pendingRequest: {
7849
+ requestId: string;
7850
+ authenticationRequired: boolean;
7851
+ } | null;
7852
+ runExpiresAt: string;
7853
+ credentialExpiresAt: string | null;
7854
+ };
7855
+ purchase?: {
7856
+ receiptId: string;
7857
+ quote: {
7858
+ operationId: string;
7859
+ entityId: string | null;
7860
+ billingSubscriptionId: string | null;
7861
+ discount: {
7862
+ offerId: string;
7863
+ couponId: string;
7864
+ discount: {
7865
+ type: "percent";
7866
+ percentOff: number;
7867
+ } | {
7868
+ type: "amount";
7869
+ amountOffCents: number;
7870
+ currency: "USD" | "EUR" | "CNY" | "GBP" | "JPY" | "CAD" | "AUD" | "NZD" | "CHF" | "HKD" | "SGD" | "KRW" | "INR" | "BRL" | "MXN" | "TWD" | "THB" | "IDR" | "MYR" | "PHP" | "VND" | "ZAR" | "AED" | "SAR" | "SEK" | "NOK" | "DKK" | "PLN" | "CZK" | "HUF" | "ILS" | "TRY" | "RON";
7871
+ };
7872
+ duration: {
7873
+ type: "once";
7874
+ } | {
7875
+ type: "repeating";
7876
+ months: number;
7877
+ } | {
7878
+ type: "forever";
7879
+ };
7880
+ amountMinor: number;
7881
+ allocations: {
7882
+ productVersionId: string;
7883
+ amountMinor: number;
7884
+ }[];
7885
+ expiresAt: string;
7886
+ } | null;
7887
+ charge: {
7888
+ effectiveAt: string;
7889
+ periodEndsAt: string;
7890
+ debitMinor: number;
7891
+ discountMinor: number;
7892
+ taxMinor: number;
7893
+ totalMinor: number;
7894
+ } | null;
7895
+ expiresAt: string;
7896
+ provider: "apple" | "google" | "stripe";
7897
+ currency: "USD" | "EUR" | "CNY" | "GBP" | "JPY" | "CAD" | "AUD" | "NZD" | "CHF" | "HKD" | "SGD" | "KRW" | "INR" | "BRL" | "MXN" | "TWD" | "THB" | "IDR" | "MYR" | "PHP" | "VND" | "ZAR" | "AED" | "SAR" | "SEK" | "NOK" | "DKK" | "PLN" | "CZK" | "HUF" | "ILS" | "TRY" | "RON";
7898
+ lines: {
7899
+ lineId: string;
7900
+ productVersionId: string;
7901
+ productName: string;
7902
+ interval: "week" | "month" | "year" | "free" | "one_time";
7903
+ baseAmountMinor: number;
7904
+ seats: {
7905
+ key: string;
7906
+ quantity: number;
7907
+ includedQuantity: number;
7908
+ maximumQuantity: number;
7909
+ unitAmountMinor: number;
7910
+ }[];
7911
+ catalogAmountMinor: number;
7912
+ trial: {
7913
+ days: number;
7914
+ cardRequired: boolean;
7915
+ } | null;
7916
+ intervalCount?: number | undefined;
7917
+ prepaid?: {
7918
+ itemKey: string;
7919
+ internal_feature_id: string;
7920
+ includedAmount: string;
7921
+ quantity: number;
7922
+ terms: {
7923
+ units: string;
7924
+ prices: {
7925
+ currency: "USD" | "EUR" | "CNY" | "GBP" | "JPY" | "CAD" | "AUD" | "NZD" | "CHF" | "HKD" | "SGD" | "KRW" | "INR" | "BRL" | "MXN" | "TWD" | "THB" | "IDR" | "MYR" | "PHP" | "VND" | "ZAR" | "AED" | "SAR" | "SEK" | "NOK" | "DKK" | "PLN" | "CZK" | "HUF" | "ILS" | "TRY" | "RON";
7926
+ amountMinor: number;
7927
+ pricing?: {
7928
+ kind: "graduated" | "volume";
7929
+ tiers: {
7930
+ upTo: number | null;
7931
+ unitAmountMinor: number;
7932
+ flatAmountMinor?: number | undefined;
7933
+ }[];
7934
+ } | undefined;
7935
+ }[];
7936
+ minimumQuantity: number;
7937
+ maximumQuantity: number;
7938
+ };
7939
+ unitAmountMinor: number;
7940
+ productId: string | null;
7941
+ priceId: string | null;
7942
+ pricing?: {
7943
+ kind: "graduated" | "volume";
7944
+ tiers: {
7945
+ upTo: number | null;
7946
+ unitAmountMinor: number;
7947
+ flatAmountMinor?: number | undefined;
7948
+ }[];
7949
+ } | undefined;
7950
+ }[] | undefined;
7951
+ }[];
7952
+ catalogAmountMinor: number;
7953
+ automaticTax: boolean;
7954
+ execution: {
7955
+ provider: "stripe";
7956
+ executor: "merchant" | "indiana";
7957
+ accountId: string;
7958
+ mode: "subscription" | "payment";
7959
+ lineItems: {
7960
+ price: string | null;
7961
+ quantity: number;
7962
+ priceId: string;
7963
+ productName: string;
7964
+ amountMinor: number;
7965
+ currency: string;
7966
+ interval: "week" | "month" | "year" | "one_off";
7967
+ intervalCount: number;
7968
+ slot: "stripe_price_id" | "stripe_empty_price_id";
7969
+ tiers: {
7970
+ mode: "graduated" | "volume";
7971
+ tiers: {
7972
+ upTo: number | null;
7973
+ unitAmountMinor: number;
7974
+ flatAmountMinor?: number | undefined;
7975
+ }[];
7976
+ } | null;
7977
+ }[];
7978
+ discounts: {
7979
+ coupon: string;
7980
+ terms: {
7981
+ id: string;
7982
+ name: string;
7983
+ duration: "once" | "repeating" | "forever";
7984
+ percent_off?: number | undefined;
7985
+ amount_off?: number | undefined;
7986
+ currency?: string | undefined;
7987
+ duration_in_months?: number | undefined;
7988
+ };
7989
+ }[];
7990
+ trialPeriodDays: number | null;
7991
+ metadata: {
7992
+ grooveCheckoutId: string;
7993
+ grooveCustomerId: string;
7994
+ };
7995
+ expiresAt: string;
7996
+ append?: {
7997
+ subscriptionId: string;
7998
+ customerId: string;
7999
+ sourceItems: {
8000
+ id: string;
8001
+ price_id: string;
8002
+ quantity: number;
8003
+ discounts?: {
8004
+ id: string;
8005
+ coupon: string;
8006
+ start: number;
8007
+ end: number | null;
8008
+ }[] | undefined;
8009
+ }[];
8010
+ prorationDate: number;
8011
+ amountMinor: number;
8012
+ periodStartMs: number;
8013
+ periodEndMs: number;
8014
+ } | undefined;
8015
+ } | null;
8016
+ nativeOffer?: {
8017
+ offerKind: "none" | "introductory" | "promotional";
8018
+ offerId: string | null;
8019
+ discountMinor: number;
8020
+ trialDays: number | null;
8021
+ } | undefined;
8022
+ } | null;
8023
+ operation: {
8024
+ operationId: string;
8025
+ orderId: string;
8026
+ status: "pending" | "cancelled" | "failed" | "complete";
8027
+ executor: "merchant" | "indiana";
8028
+ checkoutUrl: string | null;
8029
+ execution: {
8030
+ provider: "stripe";
8031
+ executor: "merchant" | "indiana";
8032
+ accountId: string;
8033
+ mode: "subscription" | "payment";
8034
+ lineItems: {
8035
+ price: string | null;
8036
+ quantity: number;
8037
+ priceId: string;
8038
+ productName: string;
8039
+ amountMinor: number;
8040
+ currency: string;
8041
+ interval: "week" | "month" | "year" | "one_off";
8042
+ intervalCount: number;
8043
+ slot: "stripe_price_id" | "stripe_empty_price_id";
8044
+ tiers: {
8045
+ mode: "graduated" | "volume";
8046
+ tiers: {
8047
+ upTo: number | null;
8048
+ unitAmountMinor: number;
8049
+ flatAmountMinor?: number | undefined;
8050
+ }[];
8051
+ } | null;
8052
+ }[];
8053
+ discounts: {
8054
+ coupon: string;
8055
+ terms: {
8056
+ id: string;
8057
+ name: string;
8058
+ duration: "once" | "repeating" | "forever";
8059
+ percent_off?: number | undefined;
8060
+ amount_off?: number | undefined;
8061
+ currency?: string | undefined;
8062
+ duration_in_months?: number | undefined;
8063
+ };
8064
+ }[];
8065
+ trialPeriodDays: number | null;
8066
+ metadata: {
8067
+ grooveCheckoutId: string;
8068
+ grooveCustomerId: string;
8069
+ };
8070
+ expiresAt: string;
8071
+ append?: {
8072
+ subscriptionId: string;
8073
+ customerId: string;
8074
+ sourceItems: {
8075
+ id: string;
8076
+ price_id: string;
8077
+ quantity: number;
8078
+ discounts?: {
8079
+ id: string;
8080
+ coupon: string;
8081
+ start: number;
8082
+ end: number | null;
8083
+ }[] | undefined;
8084
+ }[];
8085
+ prorationDate: number;
8086
+ amountMinor: number;
8087
+ periodStartMs: number;
8088
+ periodEndMs: number;
8089
+ } | undefined;
8090
+ } | null;
8091
+ currency: "USD" | "EUR" | "CNY" | "GBP" | "JPY" | "CAD" | "AUD" | "NZD" | "CHF" | "HKD" | "SGD" | "KRW" | "INR" | "BRL" | "MXN" | "TWD" | "THB" | "IDR" | "MYR" | "PHP" | "VND" | "ZAR" | "AED" | "SAR" | "SEK" | "NOK" | "DKK" | "PLN" | "CZK" | "HUF" | "ILS" | "TRY" | "RON";
8092
+ catalogAmountMinor: number;
8093
+ taxMinor: number;
8094
+ totalMinor: number | null;
8095
+ quoteFinalized: boolean;
8096
+ nativePurchase: {
8097
+ type: "native_purchase";
8098
+ receiptId: string;
8099
+ orderId: string;
8100
+ productVersionId: string;
8101
+ provider: "apple" | "google";
8102
+ productId: string;
8103
+ productKind: "lifetime" | "membership" | "credit_pack";
8104
+ replacement: {
8105
+ sourceOrderId: string;
8106
+ sourceProductId: string;
8107
+ policy: "apple_store" | "google_full_price";
8108
+ sourceAccountTokens: string[];
8109
+ } | null;
8110
+ offerKind: "none" | "introductory" | "promotional";
8111
+ currency: "USD" | "EUR" | "CNY" | "GBP" | "JPY" | "CAD" | "AUD" | "NZD" | "CHF" | "HKD" | "SGD" | "KRW" | "INR" | "BRL" | "MXN" | "TWD" | "THB" | "IDR" | "MYR" | "PHP" | "VND" | "ZAR" | "AED" | "SAR" | "SEK" | "NOK" | "DKK" | "PLN" | "CZK" | "HUF" | "ILS" | "TRY" | "RON";
8112
+ catalogAmountMinor: number;
8113
+ discountMinor: number;
8114
+ trialDays: number | null;
8115
+ seatBundle: {
8116
+ key: string;
8117
+ quantity: number;
8118
+ }[];
8119
+ applePromotionalOffer: {
8120
+ offerId: string;
8121
+ keyId: string;
8122
+ nonce: string;
8123
+ signature: string;
8124
+ timestamp: number;
8125
+ } | null;
8126
+ appAccountToken?: string | undefined;
8127
+ obfuscatedAccountId?: string | undefined;
8128
+ obfuscatedProfileId?: string | undefined;
8129
+ basePlanId?: string | undefined;
8130
+ offerId?: string | undefined;
8131
+ } | null;
8132
+ append?: boolean | undefined;
8133
+ } | null;
8134
+ } | undefined;
8135
+ runToken?: string | undefined;
8136
+ customerId?: string | undefined;
8137
+ } | {
8138
+ scope: {
8139
+ projectId: string;
8140
+ environment: "sandbox" | "live";
8141
+ };
8142
+ suppressed: true;
8143
+ reason: "frequency" | "in_progress";
8144
+ retryAt: string;
8145
+ }>;
8146
+ };
8147
+
8148
+ /** Generate on the trusted host and retain in its HttpOnly cookie; reuse for creation retries. */
8149
+ declare function createGuestToken(): string;
8150
+ interface IndianaServerOptions extends IndianaOptions {
8151
+ apiKey: string;
8152
+ scope: Scope;
8153
+ }
8154
+ declare function createIndianaServer(options: IndianaServerOptions): FoundationApi;
8155
+
8156
+ /** Rotate short-lived browser access without starting or authorizing another run. */
8157
+ declare function renewFunnelRun(options: IndianaServerOptions, input: {
8158
+ runId: string;
8159
+ customerId: string;
8160
+ }): Promise<{
8161
+ scope: {
8162
+ projectId: string;
8163
+ environment: "sandbox" | "live";
8164
+ };
8165
+ run: {
8166
+ id: string;
8167
+ source: {
8168
+ type: "funnel";
8169
+ id: string;
8170
+ versionId: string;
8171
+ };
8172
+ revision: number;
8173
+ visit: number;
8174
+ nodeId: string;
8175
+ nodeType: "action" | "output" | "split" | "end" | "coupon" | "screen" | "offering" | "feature" | "condition" | "entry" | "wait";
8176
+ status: "failed" | "running" | "completed" | "closed" | "ineligible" | "waiting";
8177
+ canBack: boolean;
8178
+ authenticated: boolean;
8179
+ locale: string;
8180
+ answers: Record<string, string | boolean | string[]>;
8181
+ parameters: Record<string, zod.JSONType>;
8182
+ variables: Record<string, zod.JSONType>;
8183
+ output: zod.JSONType;
8184
+ screen: {
8185
+ id: string;
8186
+ document: {
8187
+ kind: "screen";
8188
+ schemaVersion: 4;
8189
+ name: string;
8190
+ surface: "paywall" | "popup" | "onboarding" | "page";
8191
+ presentation: {
8192
+ type: "modal";
8193
+ size: "sm" | "md" | "lg";
8194
+ } | {
8195
+ type: "sheet";
8196
+ size: "sm" | "md" | "lg";
8197
+ } | {
8198
+ type: "fullscreen";
8199
+ };
8200
+ theme: {
8201
+ primary: string;
8202
+ background: string;
8203
+ text: string;
8204
+ radius: "none" | "full" | "sm" | "md" | "lg";
8205
+ font: "system" | "serif" | "rounded" | "mono";
8206
+ };
8207
+ pages: {
8208
+ id: string;
8209
+ name: string;
8210
+ root: StackNode;
8211
+ theme?: {
8212
+ primary: string;
8213
+ background: string;
8214
+ text: string;
8215
+ radius: "none" | "full" | "sm" | "md" | "lg";
8216
+ font: "system" | "serif" | "rounded" | "mono";
8217
+ } | undefined;
8218
+ editorPosition?: {
8219
+ x: number;
8220
+ y: number;
8221
+ } | undefined;
8222
+ }[];
8223
+ strings: {
8224
+ defaultLocale: string;
8225
+ locales: Record<string, Record<string, string>>;
8226
+ };
8227
+ actions: ({
8228
+ type: "navigate";
8229
+ close: false;
8230
+ pageId: string;
8231
+ id: string;
8232
+ event: string;
8233
+ properties: Record<string, string | number | boolean | null>;
8234
+ } | {
8235
+ type: "event";
8236
+ close: boolean;
8237
+ id: string;
8238
+ event: string;
8239
+ properties: Record<string, string | number | boolean | null>;
8240
+ } | {
8241
+ type: "close";
8242
+ close: true;
8243
+ id: string;
8244
+ event: string;
8245
+ properties: Record<string, string | number | boolean | null>;
8246
+ } | {
8247
+ type: "open_url";
8248
+ close: boolean;
8249
+ url: string;
8250
+ id: string;
8251
+ event: string;
8252
+ properties: Record<string, string | number | boolean | null>;
8253
+ } | {
8254
+ type: "claim_offer";
8255
+ close: boolean;
8256
+ couponId: string;
8257
+ id: string;
8258
+ event: string;
8259
+ properties: Record<string, string | number | boolean | null>;
8260
+ })[];
8261
+ initialPageId?: string | undefined;
8262
+ };
8263
+ presentation: {
8264
+ type: "modal";
8265
+ size: "sm" | "md" | "lg";
8266
+ } | {
8267
+ type: "sheet";
8268
+ size: "sm" | "md" | "lg";
8269
+ } | {
8270
+ type: "fullscreen";
8271
+ } | {
6857
8272
  type: "inline";
6858
8273
  };
6859
8274
  outputs: string[];
@@ -7450,6 +8865,25 @@ declare function renewFunnelRun(options: IndianaServerOptions, input: {
7450
8865
  grooveCustomerId: string;
7451
8866
  };
7452
8867
  expiresAt: string;
8868
+ append?: {
8869
+ subscriptionId: string;
8870
+ customerId: string;
8871
+ sourceItems: {
8872
+ id: string;
8873
+ price_id: string;
8874
+ quantity: number;
8875
+ discounts?: {
8876
+ id: string;
8877
+ coupon: string;
8878
+ start: number;
8879
+ end: number | null;
8880
+ }[] | undefined;
8881
+ }[];
8882
+ prorationDate: number;
8883
+ amountMinor: number;
8884
+ periodStartMs: number;
8885
+ periodEndMs: number;
8886
+ } | undefined;
7453
8887
  } | null;
7454
8888
  nativeOffer?: {
7455
8889
  offerKind: "none" | "introductory" | "promotional";
@@ -7506,6 +8940,25 @@ declare function renewFunnelRun(options: IndianaServerOptions, input: {
7506
8940
  grooveCustomerId: string;
7507
8941
  };
7508
8942
  expiresAt: string;
8943
+ append?: {
8944
+ subscriptionId: string;
8945
+ customerId: string;
8946
+ sourceItems: {
8947
+ id: string;
8948
+ price_id: string;
8949
+ quantity: number;
8950
+ discounts?: {
8951
+ id: string;
8952
+ coupon: string;
8953
+ start: number;
8954
+ end: number | null;
8955
+ }[] | undefined;
8956
+ }[];
8957
+ prorationDate: number;
8958
+ amountMinor: number;
8959
+ periodStartMs: number;
8960
+ periodEndMs: number;
8961
+ } | undefined;
7509
8962
  } | null;
7510
8963
  currency: "USD" | "EUR" | "CNY" | "GBP" | "JPY" | "CAD" | "AUD" | "NZD" | "CHF" | "HKD" | "SGD" | "KRW" | "INR" | "BRL" | "MXN" | "TWD" | "THB" | "IDR" | "MYR" | "PHP" | "VND" | "ZAR" | "AED" | "SAR" | "SEK" | "NOK" | "DKK" | "PLN" | "CZK" | "HUF" | "ILS" | "TRY" | "RON";
7511
8964
  catalogAmountMinor: number;
@@ -7548,6 +9001,7 @@ declare function renewFunnelRun(options: IndianaServerOptions, input: {
7548
9001
  basePlanId?: string | undefined;
7549
9002
  offerId?: string | undefined;
7550
9003
  } | null;
9004
+ append?: boolean | undefined;
7551
9005
  } | null;
7552
9006
  purchaseRequestId: string | null;
7553
9007
  } | null;
@@ -7714,6 +9168,25 @@ declare function renewFunnelRun(options: IndianaServerOptions, input: {
7714
9168
  grooveCustomerId: string;
7715
9169
  };
7716
9170
  expiresAt: string;
9171
+ append?: {
9172
+ subscriptionId: string;
9173
+ customerId: string;
9174
+ sourceItems: {
9175
+ id: string;
9176
+ price_id: string;
9177
+ quantity: number;
9178
+ discounts?: {
9179
+ id: string;
9180
+ coupon: string;
9181
+ start: number;
9182
+ end: number | null;
9183
+ }[] | undefined;
9184
+ }[];
9185
+ prorationDate: number;
9186
+ amountMinor: number;
9187
+ periodStartMs: number;
9188
+ periodEndMs: number;
9189
+ } | undefined;
7717
9190
  } | null;
7718
9191
  nativeOffer?: {
7719
9192
  offerKind: "none" | "introductory" | "promotional";
@@ -7770,6 +9243,25 @@ declare function renewFunnelRun(options: IndianaServerOptions, input: {
7770
9243
  grooveCustomerId: string;
7771
9244
  };
7772
9245
  expiresAt: string;
9246
+ append?: {
9247
+ subscriptionId: string;
9248
+ customerId: string;
9249
+ sourceItems: {
9250
+ id: string;
9251
+ price_id: string;
9252
+ quantity: number;
9253
+ discounts?: {
9254
+ id: string;
9255
+ coupon: string;
9256
+ start: number;
9257
+ end: number | null;
9258
+ }[] | undefined;
9259
+ }[];
9260
+ prorationDate: number;
9261
+ amountMinor: number;
9262
+ periodStartMs: number;
9263
+ periodEndMs: number;
9264
+ } | undefined;
7773
9265
  } | null;
7774
9266
  currency: "USD" | "EUR" | "CNY" | "GBP" | "JPY" | "CAD" | "AUD" | "NZD" | "CHF" | "HKD" | "SGD" | "KRW" | "INR" | "BRL" | "MXN" | "TWD" | "THB" | "IDR" | "MYR" | "PHP" | "VND" | "ZAR" | "AED" | "SAR" | "SEK" | "NOK" | "DKK" | "PLN" | "CZK" | "HUF" | "ILS" | "TRY" | "RON";
7775
9267
  catalogAmountMinor: number;
@@ -7812,9 +9304,11 @@ declare function renewFunnelRun(options: IndianaServerOptions, input: {
7812
9304
  basePlanId?: string | undefined;
7813
9305
  offerId?: string | undefined;
7814
9306
  } | null;
9307
+ append?: boolean | undefined;
7815
9308
  } | null;
7816
9309
  } | undefined;
7817
9310
  runToken?: string | undefined;
9311
+ customerId?: string | undefined;
7818
9312
  }>;
7819
9313
 
7820
9314
  type Start = Extract<FunnelCommand, {
@@ -7822,8 +9316,10 @@ type Start = Extract<FunnelCommand, {
7822
9316
  }>;
7823
9317
  type FunnelStartInput = Omit<Start, "operation">;
7824
9318
  /**
7825
- * Trusted host start. The host persists requestId before calling; retries reuse the entire input.
7826
- * customerToken is required: an identified customer session, or a guest session from resumeGuestSession.
9319
+ * Funnel start. The host persists requestId before calling; retries reuse the entire input.
9320
+ * A server Key names the Customer: { type: "id" } for an Indiana Customer (including a Guest), or
9321
+ * { type: "externalUserId" } to get-or-create by your user ID with creation-only customerData
9322
+ * (customers:write). A Customer credential always starts as its own Customer and names none.
7827
9323
  */
7828
9324
  declare function createFunnelStartClient(options: IndianaServerOptions): {
7829
9325
  start(input: FunnelStartInput): Promise<FunnelRuntimeResponse & {
@@ -7831,4 +9327,4 @@ declare function createFunnelStartClient(options: IndianaServerOptions): {
7831
9327
  }>;
7832
9328
  };
7833
9329
 
7834
- export { type FunnelRuntimeResponse as F, type IndianaOptions as I, type PaywallSession as P, type SubscriptionOperation as S, type FunnelRunView as a, type FunnelCommand as b, type FunnelDataQueries as c, type FunnelStartInput as d, type FeatureClient as e, type FeatureClientOptions as f, type FunnelNodeEvaluationContext as g, IndianaError as h, type PaywallPurchaseInput as i, type PaywallStartInput as j, createFeatureClient as k, createPaywallSession as l, evaluateFunnelNode as m, type FunnelDecisionInput as n, FunnelDecisionTimeoutError as o, type FunnelDecisionUsedInput as p, type FunnelSignalInput as q, type IndianaServerOptions as r, createFunnelDecisionClient as s, createFunnelOrchestrationClient as t, createFunnelStartClient as u, createGuestToken as v, createIndianaServer as w, createNativeReceiptClient as x, createPaywallStartClient as y, renewFunnelRun as z };
9330
+ export { renewFunnelRun as A, type FunnelRuntimeResponse as F, type IndianaOptions as I, type PaywallSession as P, type SubscriptionOperation as S, type FunnelRunView as a, type FunnelCommand as b, type FunnelDataQueries as c, type FunnelStartInput as d, type FeatureClient as e, type FeatureClientOptions as f, type FunnelNodeEvaluationContext as g, IndianaError as h, type PaywallPurchaseInput as i, type PaywallStartInput as j, createFeatureClient as k, createPaywallSession as l, evaluateFunnelNode as m, type FunnelDecisionInput as n, FunnelDecisionTimeoutError as o, type FunnelDecisionUsedInput as p, type FunnelSignalInput as q, type IndianaServerOptions as r, createFunnelCampaignClient as s, createFunnelDecisionClient as t, createFunnelOrchestrationClient as u, createFunnelStartClient as v, createGuestToken as w, createIndianaServer as x, createNativeReceiptClient as y, createPaywallStartClient as z };