reveclicat 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,2255 @@
1
+ import { Command } from 'commander';
2
+ import { z } from 'zod';
3
+
4
+ interface Writer {
5
+ write(s: string): unknown;
6
+ }
7
+ interface Io {
8
+ stdout: Writer;
9
+ stderr: Writer;
10
+ }
11
+
12
+ declare function buildProgram(io?: Io): Command;
13
+
14
+ /** User-facing error with an actionable hint. Rendered by formatError(). */
15
+ declare class RccError extends Error {
16
+ readonly hint: string | undefined;
17
+ readonly exitCode: number;
18
+ constructor(message: string, opts?: {
19
+ hint?: string;
20
+ exitCode?: number;
21
+ cause?: unknown;
22
+ });
23
+ }
24
+
25
+ /**
26
+ * Enumerations shared by schemas, the state machine and the CLI.
27
+ * Values come from the official RevenueCat docs — see docs/payload-sources.md (S2, 2026-08-29).
28
+ */
29
+ /** The 7 event types supported in v0.1. */
30
+ declare const EVENT_TYPES: readonly ["TEST", "INITIAL_PURCHASE", "RENEWAL", "CANCELLATION", "UNCANCELLATION", "BILLING_ISSUE", "EXPIRATION"];
31
+ type EventType = (typeof EVENT_TYPES)[number];
32
+ declare const ENVIRONMENTS: readonly ["SANDBOX", "PRODUCTION"];
33
+ type Environment = (typeof ENVIRONMENTS)[number];
34
+ /** `store` values as documented by RevenueCat. */
35
+ declare const STORES: readonly ["AMAZON", "APP_STORE", "MAC_APP_STORE", "PADDLE", "PLAY_STORE", "PROMOTIONAL", "RC_BILLING", "ROKU", "STRIPE", "TEST_STORE"];
36
+ type Store = (typeof STORES)[number];
37
+ declare const PERIOD_TYPES: readonly ["TRIAL", "INTRO", "NORMAL", "PROMOTIONAL", "PREPAID"];
38
+ type PeriodType = (typeof PERIOD_TYPES)[number];
39
+ declare const CANCEL_REASONS: readonly ["UNSUBSCRIBE", "BILLING_ERROR", "DEVELOPER_INITIATED", "PRICE_INCREASE", "CUSTOMER_SUPPORT", "UNKNOWN"];
40
+ type CancelReason = (typeof CANCEL_REASONS)[number];
41
+ declare const EXPIRATION_REASONS: readonly ["UNSUBSCRIBE", "BILLING_ERROR", "DEVELOPER_INITIATED", "PRICE_INCREASE", "CUSTOMER_SUPPORT", "UNKNOWN", "SUBSCRIPTION_PAUSED"];
42
+ type ExpirationReason = (typeof EXPIRATION_REASONS)[number];
43
+ /** CLI-facing store names (lowercase) → RevenueCat `store` values. v0.1 supports app_store only (see Icebox). */
44
+ declare const CLI_STORES: readonly ["app_store"];
45
+ type CliStore = (typeof CLI_STORES)[number];
46
+ declare const CLI_STORE_TO_STORE: Record<CliStore, Store>;
47
+
48
+ /**
49
+ * Zod schemas for RevenueCat webhook events (v0.1: 7 event types).
50
+ * Field names, types and inclusion rules follow docs/payload-sources.md (official docs, 2026-08-29).
51
+ * Objects are non-strict: RevenueCat may add fields without bumping api_version.
52
+ */
53
+
54
+ declare const SubscriberAttributeSchema: z.ZodObject<{
55
+ value: z.ZodString;
56
+ updated_at_ms: z.ZodInt;
57
+ }, z.core.$loose>;
58
+ declare const ExperimentSchema: z.ZodObject<{
59
+ experiment_id: z.ZodString;
60
+ experiment_variant: z.ZodString;
61
+ enrolled_at_ms: z.ZodNullable<z.ZodInt>;
62
+ }, z.core.$loose>;
63
+ declare const InitialPurchaseEventSchema: z.ZodObject<{
64
+ product_id: z.ZodString;
65
+ period_type: z.ZodEnum<{
66
+ PROMOTIONAL: "PROMOTIONAL";
67
+ TRIAL: "TRIAL";
68
+ INTRO: "INTRO";
69
+ NORMAL: "NORMAL";
70
+ PREPAID: "PREPAID";
71
+ }>;
72
+ purchased_at_ms: z.ZodInt;
73
+ expiration_at_ms: z.ZodNullable<z.ZodInt>;
74
+ environment: z.ZodEnum<{
75
+ SANDBOX: "SANDBOX";
76
+ PRODUCTION: "PRODUCTION";
77
+ }>;
78
+ entitlement_id: z.ZodNullable<z.ZodString>;
79
+ entitlement_ids: z.ZodNullable<z.ZodArray<z.ZodString>>;
80
+ presented_offering_id: z.ZodNullable<z.ZodString>;
81
+ transaction_id: z.ZodString;
82
+ original_transaction_id: z.ZodString;
83
+ is_family_share: z.ZodNullable<z.ZodBoolean>;
84
+ country_code: z.ZodNullable<z.ZodString>;
85
+ store: z.ZodOptional<z.ZodEnum<{
86
+ AMAZON: "AMAZON";
87
+ APP_STORE: "APP_STORE";
88
+ MAC_APP_STORE: "MAC_APP_STORE";
89
+ PADDLE: "PADDLE";
90
+ PLAY_STORE: "PLAY_STORE";
91
+ PROMOTIONAL: "PROMOTIONAL";
92
+ RC_BILLING: "RC_BILLING";
93
+ ROKU: "ROKU";
94
+ STRIPE: "STRIPE";
95
+ TEST_STORE: "TEST_STORE";
96
+ }>>;
97
+ currency: z.ZodOptional<z.ZodNullable<z.ZodString>>;
98
+ price: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
99
+ price_in_purchased_currency: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
100
+ tax_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
101
+ commission_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
102
+ takehome_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
103
+ offer_code: z.ZodOptional<z.ZodNullable<z.ZodString>>;
104
+ renewal_number: z.ZodOptional<z.ZodNullable<z.ZodInt>>;
105
+ metadata: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
106
+ discount_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
107
+ discount_amount: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
108
+ discount_identifier: z.ZodOptional<z.ZodNullable<z.ZodString>>;
109
+ app_user_id: z.ZodString;
110
+ original_app_user_id: z.ZodString;
111
+ aliases: z.ZodArray<z.ZodString>;
112
+ subscriber_attributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
113
+ value: z.ZodString;
114
+ updated_at_ms: z.ZodInt;
115
+ }, z.core.$loose>>>;
116
+ experiments: z.ZodOptional<z.ZodArray<z.ZodObject<{
117
+ experiment_id: z.ZodString;
118
+ experiment_variant: z.ZodString;
119
+ enrolled_at_ms: z.ZodNullable<z.ZodInt>;
120
+ }, z.core.$loose>>>;
121
+ id: z.ZodString;
122
+ event_timestamp_ms: z.ZodInt;
123
+ app_id: z.ZodOptional<z.ZodString>;
124
+ type: z.ZodLiteral<"INITIAL_PURCHASE">;
125
+ }, z.core.$loose>;
126
+ declare const RenewalEventSchema: z.ZodObject<{
127
+ product_id: z.ZodString;
128
+ period_type: z.ZodEnum<{
129
+ PROMOTIONAL: "PROMOTIONAL";
130
+ TRIAL: "TRIAL";
131
+ INTRO: "INTRO";
132
+ NORMAL: "NORMAL";
133
+ PREPAID: "PREPAID";
134
+ }>;
135
+ purchased_at_ms: z.ZodInt;
136
+ expiration_at_ms: z.ZodNullable<z.ZodInt>;
137
+ environment: z.ZodEnum<{
138
+ SANDBOX: "SANDBOX";
139
+ PRODUCTION: "PRODUCTION";
140
+ }>;
141
+ entitlement_id: z.ZodNullable<z.ZodString>;
142
+ entitlement_ids: z.ZodNullable<z.ZodArray<z.ZodString>>;
143
+ presented_offering_id: z.ZodNullable<z.ZodString>;
144
+ transaction_id: z.ZodString;
145
+ original_transaction_id: z.ZodString;
146
+ is_family_share: z.ZodNullable<z.ZodBoolean>;
147
+ country_code: z.ZodNullable<z.ZodString>;
148
+ store: z.ZodOptional<z.ZodEnum<{
149
+ AMAZON: "AMAZON";
150
+ APP_STORE: "APP_STORE";
151
+ MAC_APP_STORE: "MAC_APP_STORE";
152
+ PADDLE: "PADDLE";
153
+ PLAY_STORE: "PLAY_STORE";
154
+ PROMOTIONAL: "PROMOTIONAL";
155
+ RC_BILLING: "RC_BILLING";
156
+ ROKU: "ROKU";
157
+ STRIPE: "STRIPE";
158
+ TEST_STORE: "TEST_STORE";
159
+ }>>;
160
+ currency: z.ZodOptional<z.ZodNullable<z.ZodString>>;
161
+ price: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
162
+ price_in_purchased_currency: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
163
+ tax_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
164
+ commission_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
165
+ takehome_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
166
+ offer_code: z.ZodOptional<z.ZodNullable<z.ZodString>>;
167
+ renewal_number: z.ZodOptional<z.ZodNullable<z.ZodInt>>;
168
+ metadata: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
169
+ discount_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
170
+ discount_amount: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
171
+ discount_identifier: z.ZodOptional<z.ZodNullable<z.ZodString>>;
172
+ app_user_id: z.ZodString;
173
+ original_app_user_id: z.ZodString;
174
+ aliases: z.ZodArray<z.ZodString>;
175
+ subscriber_attributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
176
+ value: z.ZodString;
177
+ updated_at_ms: z.ZodInt;
178
+ }, z.core.$loose>>>;
179
+ experiments: z.ZodOptional<z.ZodArray<z.ZodObject<{
180
+ experiment_id: z.ZodString;
181
+ experiment_variant: z.ZodString;
182
+ enrolled_at_ms: z.ZodNullable<z.ZodInt>;
183
+ }, z.core.$loose>>>;
184
+ id: z.ZodString;
185
+ event_timestamp_ms: z.ZodInt;
186
+ app_id: z.ZodOptional<z.ZodString>;
187
+ type: z.ZodLiteral<"RENEWAL">;
188
+ is_trial_conversion: z.ZodOptional<z.ZodBoolean>;
189
+ }, z.core.$loose>;
190
+ declare const CancellationEventSchema: z.ZodObject<{
191
+ product_id: z.ZodString;
192
+ period_type: z.ZodEnum<{
193
+ PROMOTIONAL: "PROMOTIONAL";
194
+ TRIAL: "TRIAL";
195
+ INTRO: "INTRO";
196
+ NORMAL: "NORMAL";
197
+ PREPAID: "PREPAID";
198
+ }>;
199
+ purchased_at_ms: z.ZodInt;
200
+ expiration_at_ms: z.ZodNullable<z.ZodInt>;
201
+ environment: z.ZodEnum<{
202
+ SANDBOX: "SANDBOX";
203
+ PRODUCTION: "PRODUCTION";
204
+ }>;
205
+ entitlement_id: z.ZodNullable<z.ZodString>;
206
+ entitlement_ids: z.ZodNullable<z.ZodArray<z.ZodString>>;
207
+ presented_offering_id: z.ZodNullable<z.ZodString>;
208
+ transaction_id: z.ZodString;
209
+ original_transaction_id: z.ZodString;
210
+ is_family_share: z.ZodNullable<z.ZodBoolean>;
211
+ country_code: z.ZodNullable<z.ZodString>;
212
+ store: z.ZodOptional<z.ZodEnum<{
213
+ AMAZON: "AMAZON";
214
+ APP_STORE: "APP_STORE";
215
+ MAC_APP_STORE: "MAC_APP_STORE";
216
+ PADDLE: "PADDLE";
217
+ PLAY_STORE: "PLAY_STORE";
218
+ PROMOTIONAL: "PROMOTIONAL";
219
+ RC_BILLING: "RC_BILLING";
220
+ ROKU: "ROKU";
221
+ STRIPE: "STRIPE";
222
+ TEST_STORE: "TEST_STORE";
223
+ }>>;
224
+ currency: z.ZodOptional<z.ZodNullable<z.ZodString>>;
225
+ price: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
226
+ price_in_purchased_currency: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
227
+ tax_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
228
+ commission_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
229
+ takehome_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
230
+ offer_code: z.ZodOptional<z.ZodNullable<z.ZodString>>;
231
+ renewal_number: z.ZodOptional<z.ZodNullable<z.ZodInt>>;
232
+ metadata: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
233
+ discount_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
234
+ discount_amount: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
235
+ discount_identifier: z.ZodOptional<z.ZodNullable<z.ZodString>>;
236
+ app_user_id: z.ZodString;
237
+ original_app_user_id: z.ZodString;
238
+ aliases: z.ZodArray<z.ZodString>;
239
+ subscriber_attributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
240
+ value: z.ZodString;
241
+ updated_at_ms: z.ZodInt;
242
+ }, z.core.$loose>>>;
243
+ experiments: z.ZodOptional<z.ZodArray<z.ZodObject<{
244
+ experiment_id: z.ZodString;
245
+ experiment_variant: z.ZodString;
246
+ enrolled_at_ms: z.ZodNullable<z.ZodInt>;
247
+ }, z.core.$loose>>>;
248
+ id: z.ZodString;
249
+ event_timestamp_ms: z.ZodInt;
250
+ app_id: z.ZodOptional<z.ZodString>;
251
+ type: z.ZodLiteral<"CANCELLATION">;
252
+ cancel_reason: z.ZodEnum<{
253
+ UNSUBSCRIBE: "UNSUBSCRIBE";
254
+ BILLING_ERROR: "BILLING_ERROR";
255
+ DEVELOPER_INITIATED: "DEVELOPER_INITIATED";
256
+ PRICE_INCREASE: "PRICE_INCREASE";
257
+ CUSTOMER_SUPPORT: "CUSTOMER_SUPPORT";
258
+ UNKNOWN: "UNKNOWN";
259
+ }>;
260
+ }, z.core.$loose>;
261
+ declare const UncancellationEventSchema: z.ZodObject<{
262
+ product_id: z.ZodString;
263
+ period_type: z.ZodEnum<{
264
+ PROMOTIONAL: "PROMOTIONAL";
265
+ TRIAL: "TRIAL";
266
+ INTRO: "INTRO";
267
+ NORMAL: "NORMAL";
268
+ PREPAID: "PREPAID";
269
+ }>;
270
+ purchased_at_ms: z.ZodInt;
271
+ expiration_at_ms: z.ZodNullable<z.ZodInt>;
272
+ environment: z.ZodEnum<{
273
+ SANDBOX: "SANDBOX";
274
+ PRODUCTION: "PRODUCTION";
275
+ }>;
276
+ entitlement_id: z.ZodNullable<z.ZodString>;
277
+ entitlement_ids: z.ZodNullable<z.ZodArray<z.ZodString>>;
278
+ presented_offering_id: z.ZodNullable<z.ZodString>;
279
+ transaction_id: z.ZodString;
280
+ original_transaction_id: z.ZodString;
281
+ is_family_share: z.ZodNullable<z.ZodBoolean>;
282
+ country_code: z.ZodNullable<z.ZodString>;
283
+ store: z.ZodOptional<z.ZodEnum<{
284
+ AMAZON: "AMAZON";
285
+ APP_STORE: "APP_STORE";
286
+ MAC_APP_STORE: "MAC_APP_STORE";
287
+ PADDLE: "PADDLE";
288
+ PLAY_STORE: "PLAY_STORE";
289
+ PROMOTIONAL: "PROMOTIONAL";
290
+ RC_BILLING: "RC_BILLING";
291
+ ROKU: "ROKU";
292
+ STRIPE: "STRIPE";
293
+ TEST_STORE: "TEST_STORE";
294
+ }>>;
295
+ currency: z.ZodOptional<z.ZodNullable<z.ZodString>>;
296
+ price: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
297
+ price_in_purchased_currency: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
298
+ tax_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
299
+ commission_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
300
+ takehome_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
301
+ offer_code: z.ZodOptional<z.ZodNullable<z.ZodString>>;
302
+ renewal_number: z.ZodOptional<z.ZodNullable<z.ZodInt>>;
303
+ metadata: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
304
+ discount_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
305
+ discount_amount: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
306
+ discount_identifier: z.ZodOptional<z.ZodNullable<z.ZodString>>;
307
+ app_user_id: z.ZodString;
308
+ original_app_user_id: z.ZodString;
309
+ aliases: z.ZodArray<z.ZodString>;
310
+ subscriber_attributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
311
+ value: z.ZodString;
312
+ updated_at_ms: z.ZodInt;
313
+ }, z.core.$loose>>>;
314
+ experiments: z.ZodOptional<z.ZodArray<z.ZodObject<{
315
+ experiment_id: z.ZodString;
316
+ experiment_variant: z.ZodString;
317
+ enrolled_at_ms: z.ZodNullable<z.ZodInt>;
318
+ }, z.core.$loose>>>;
319
+ id: z.ZodString;
320
+ event_timestamp_ms: z.ZodInt;
321
+ app_id: z.ZodOptional<z.ZodString>;
322
+ type: z.ZodLiteral<"UNCANCELLATION">;
323
+ }, z.core.$loose>;
324
+ declare const BillingIssueEventSchema: z.ZodObject<{
325
+ product_id: z.ZodString;
326
+ period_type: z.ZodEnum<{
327
+ PROMOTIONAL: "PROMOTIONAL";
328
+ TRIAL: "TRIAL";
329
+ INTRO: "INTRO";
330
+ NORMAL: "NORMAL";
331
+ PREPAID: "PREPAID";
332
+ }>;
333
+ purchased_at_ms: z.ZodInt;
334
+ expiration_at_ms: z.ZodNullable<z.ZodInt>;
335
+ environment: z.ZodEnum<{
336
+ SANDBOX: "SANDBOX";
337
+ PRODUCTION: "PRODUCTION";
338
+ }>;
339
+ entitlement_id: z.ZodNullable<z.ZodString>;
340
+ entitlement_ids: z.ZodNullable<z.ZodArray<z.ZodString>>;
341
+ presented_offering_id: z.ZodNullable<z.ZodString>;
342
+ transaction_id: z.ZodString;
343
+ original_transaction_id: z.ZodString;
344
+ is_family_share: z.ZodNullable<z.ZodBoolean>;
345
+ country_code: z.ZodNullable<z.ZodString>;
346
+ store: z.ZodOptional<z.ZodEnum<{
347
+ AMAZON: "AMAZON";
348
+ APP_STORE: "APP_STORE";
349
+ MAC_APP_STORE: "MAC_APP_STORE";
350
+ PADDLE: "PADDLE";
351
+ PLAY_STORE: "PLAY_STORE";
352
+ PROMOTIONAL: "PROMOTIONAL";
353
+ RC_BILLING: "RC_BILLING";
354
+ ROKU: "ROKU";
355
+ STRIPE: "STRIPE";
356
+ TEST_STORE: "TEST_STORE";
357
+ }>>;
358
+ currency: z.ZodOptional<z.ZodNullable<z.ZodString>>;
359
+ price: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
360
+ price_in_purchased_currency: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
361
+ tax_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
362
+ commission_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
363
+ takehome_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
364
+ offer_code: z.ZodOptional<z.ZodNullable<z.ZodString>>;
365
+ renewal_number: z.ZodOptional<z.ZodNullable<z.ZodInt>>;
366
+ metadata: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
367
+ discount_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
368
+ discount_amount: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
369
+ discount_identifier: z.ZodOptional<z.ZodNullable<z.ZodString>>;
370
+ app_user_id: z.ZodString;
371
+ original_app_user_id: z.ZodString;
372
+ aliases: z.ZodArray<z.ZodString>;
373
+ subscriber_attributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
374
+ value: z.ZodString;
375
+ updated_at_ms: z.ZodInt;
376
+ }, z.core.$loose>>>;
377
+ experiments: z.ZodOptional<z.ZodArray<z.ZodObject<{
378
+ experiment_id: z.ZodString;
379
+ experiment_variant: z.ZodString;
380
+ enrolled_at_ms: z.ZodNullable<z.ZodInt>;
381
+ }, z.core.$loose>>>;
382
+ id: z.ZodString;
383
+ event_timestamp_ms: z.ZodInt;
384
+ app_id: z.ZodOptional<z.ZodString>;
385
+ type: z.ZodLiteral<"BILLING_ISSUE">;
386
+ grace_period_expiration_at_ms: z.ZodNullable<z.ZodInt>;
387
+ }, z.core.$loose>;
388
+ declare const ExpirationEventSchema: z.ZodObject<{
389
+ product_id: z.ZodString;
390
+ period_type: z.ZodEnum<{
391
+ PROMOTIONAL: "PROMOTIONAL";
392
+ TRIAL: "TRIAL";
393
+ INTRO: "INTRO";
394
+ NORMAL: "NORMAL";
395
+ PREPAID: "PREPAID";
396
+ }>;
397
+ purchased_at_ms: z.ZodInt;
398
+ expiration_at_ms: z.ZodNullable<z.ZodInt>;
399
+ environment: z.ZodEnum<{
400
+ SANDBOX: "SANDBOX";
401
+ PRODUCTION: "PRODUCTION";
402
+ }>;
403
+ entitlement_id: z.ZodNullable<z.ZodString>;
404
+ entitlement_ids: z.ZodNullable<z.ZodArray<z.ZodString>>;
405
+ presented_offering_id: z.ZodNullable<z.ZodString>;
406
+ transaction_id: z.ZodString;
407
+ original_transaction_id: z.ZodString;
408
+ is_family_share: z.ZodNullable<z.ZodBoolean>;
409
+ country_code: z.ZodNullable<z.ZodString>;
410
+ store: z.ZodOptional<z.ZodEnum<{
411
+ AMAZON: "AMAZON";
412
+ APP_STORE: "APP_STORE";
413
+ MAC_APP_STORE: "MAC_APP_STORE";
414
+ PADDLE: "PADDLE";
415
+ PLAY_STORE: "PLAY_STORE";
416
+ PROMOTIONAL: "PROMOTIONAL";
417
+ RC_BILLING: "RC_BILLING";
418
+ ROKU: "ROKU";
419
+ STRIPE: "STRIPE";
420
+ TEST_STORE: "TEST_STORE";
421
+ }>>;
422
+ currency: z.ZodOptional<z.ZodNullable<z.ZodString>>;
423
+ price: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
424
+ price_in_purchased_currency: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
425
+ tax_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
426
+ commission_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
427
+ takehome_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
428
+ offer_code: z.ZodOptional<z.ZodNullable<z.ZodString>>;
429
+ renewal_number: z.ZodOptional<z.ZodNullable<z.ZodInt>>;
430
+ metadata: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
431
+ discount_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
432
+ discount_amount: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
433
+ discount_identifier: z.ZodOptional<z.ZodNullable<z.ZodString>>;
434
+ app_user_id: z.ZodString;
435
+ original_app_user_id: z.ZodString;
436
+ aliases: z.ZodArray<z.ZodString>;
437
+ subscriber_attributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
438
+ value: z.ZodString;
439
+ updated_at_ms: z.ZodInt;
440
+ }, z.core.$loose>>>;
441
+ experiments: z.ZodOptional<z.ZodArray<z.ZodObject<{
442
+ experiment_id: z.ZodString;
443
+ experiment_variant: z.ZodString;
444
+ enrolled_at_ms: z.ZodNullable<z.ZodInt>;
445
+ }, z.core.$loose>>>;
446
+ id: z.ZodString;
447
+ event_timestamp_ms: z.ZodInt;
448
+ app_id: z.ZodOptional<z.ZodString>;
449
+ type: z.ZodLiteral<"EXPIRATION">;
450
+ expiration_reason: z.ZodEnum<{
451
+ UNSUBSCRIBE: "UNSUBSCRIBE";
452
+ BILLING_ERROR: "BILLING_ERROR";
453
+ DEVELOPER_INITIATED: "DEVELOPER_INITIATED";
454
+ PRICE_INCREASE: "PRICE_INCREASE";
455
+ CUSTOMER_SUPPORT: "CUSTOMER_SUPPORT";
456
+ UNKNOWN: "UNKNOWN";
457
+ SUBSCRIPTION_PAUSED: "SUBSCRIPTION_PAUSED";
458
+ }>;
459
+ }, z.core.$loose>;
460
+ /**
461
+ * VERIFIED against a real dashboard test event captured 2026-08-29 (test/fixtures/events/real/TEST.json).
462
+ * RevenueCat publishes no sample; the real payload is "purchase-like" but every subscription-lifecycle
463
+ * field may be null (transaction ids, prices, is_family_share, renewal_number, metadata...). Common and
464
+ * subscriber-identity fields are always present.
465
+ */
466
+ declare const TestEventSchema: z.ZodObject<{
467
+ product_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
468
+ period_type: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
469
+ PROMOTIONAL: "PROMOTIONAL";
470
+ TRIAL: "TRIAL";
471
+ INTRO: "INTRO";
472
+ NORMAL: "NORMAL";
473
+ PREPAID: "PREPAID";
474
+ }>>>;
475
+ purchased_at_ms: z.ZodOptional<z.ZodNullable<z.ZodInt>>;
476
+ expiration_at_ms: z.ZodOptional<z.ZodNullable<z.ZodNullable<z.ZodInt>>>;
477
+ environment: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
478
+ SANDBOX: "SANDBOX";
479
+ PRODUCTION: "PRODUCTION";
480
+ }>>>;
481
+ entitlement_id: z.ZodOptional<z.ZodNullable<z.ZodNullable<z.ZodString>>>;
482
+ entitlement_ids: z.ZodOptional<z.ZodNullable<z.ZodNullable<z.ZodArray<z.ZodString>>>>;
483
+ presented_offering_id: z.ZodOptional<z.ZodNullable<z.ZodNullable<z.ZodString>>>;
484
+ transaction_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
485
+ original_transaction_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
486
+ is_family_share: z.ZodOptional<z.ZodNullable<z.ZodNullable<z.ZodBoolean>>>;
487
+ country_code: z.ZodOptional<z.ZodNullable<z.ZodNullable<z.ZodString>>>;
488
+ store: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodEnum<{
489
+ AMAZON: "AMAZON";
490
+ APP_STORE: "APP_STORE";
491
+ MAC_APP_STORE: "MAC_APP_STORE";
492
+ PADDLE: "PADDLE";
493
+ PLAY_STORE: "PLAY_STORE";
494
+ PROMOTIONAL: "PROMOTIONAL";
495
+ RC_BILLING: "RC_BILLING";
496
+ ROKU: "ROKU";
497
+ STRIPE: "STRIPE";
498
+ TEST_STORE: "TEST_STORE";
499
+ }>>>>;
500
+ currency: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNullable<z.ZodString>>>>;
501
+ price: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>>;
502
+ price_in_purchased_currency: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>>;
503
+ tax_percentage: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>>;
504
+ commission_percentage: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>>;
505
+ takehome_percentage: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>>;
506
+ offer_code: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNullable<z.ZodString>>>>;
507
+ renewal_number: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNullable<z.ZodInt>>>>;
508
+ metadata: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>>>;
509
+ discount_percentage: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>>;
510
+ discount_amount: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>>;
511
+ discount_identifier: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNullable<z.ZodString>>>>;
512
+ app_user_id: z.ZodString;
513
+ original_app_user_id: z.ZodString;
514
+ aliases: z.ZodArray<z.ZodString>;
515
+ subscriber_attributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
516
+ value: z.ZodString;
517
+ updated_at_ms: z.ZodInt;
518
+ }, z.core.$loose>>>;
519
+ experiments: z.ZodOptional<z.ZodArray<z.ZodObject<{
520
+ experiment_id: z.ZodString;
521
+ experiment_variant: z.ZodString;
522
+ enrolled_at_ms: z.ZodNullable<z.ZodInt>;
523
+ }, z.core.$loose>>>;
524
+ id: z.ZodString;
525
+ event_timestamp_ms: z.ZodInt;
526
+ app_id: z.ZodOptional<z.ZodString>;
527
+ type: z.ZodLiteral<"TEST">;
528
+ }, z.core.$loose>;
529
+ declare const EVENT_SCHEMAS: {
530
+ readonly TEST: z.ZodObject<{
531
+ product_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
532
+ period_type: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
533
+ PROMOTIONAL: "PROMOTIONAL";
534
+ TRIAL: "TRIAL";
535
+ INTRO: "INTRO";
536
+ NORMAL: "NORMAL";
537
+ PREPAID: "PREPAID";
538
+ }>>>;
539
+ purchased_at_ms: z.ZodOptional<z.ZodNullable<z.ZodInt>>;
540
+ expiration_at_ms: z.ZodOptional<z.ZodNullable<z.ZodNullable<z.ZodInt>>>;
541
+ environment: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
542
+ SANDBOX: "SANDBOX";
543
+ PRODUCTION: "PRODUCTION";
544
+ }>>>;
545
+ entitlement_id: z.ZodOptional<z.ZodNullable<z.ZodNullable<z.ZodString>>>;
546
+ entitlement_ids: z.ZodOptional<z.ZodNullable<z.ZodNullable<z.ZodArray<z.ZodString>>>>;
547
+ presented_offering_id: z.ZodOptional<z.ZodNullable<z.ZodNullable<z.ZodString>>>;
548
+ transaction_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
549
+ original_transaction_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
550
+ is_family_share: z.ZodOptional<z.ZodNullable<z.ZodNullable<z.ZodBoolean>>>;
551
+ country_code: z.ZodOptional<z.ZodNullable<z.ZodNullable<z.ZodString>>>;
552
+ store: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodEnum<{
553
+ AMAZON: "AMAZON";
554
+ APP_STORE: "APP_STORE";
555
+ MAC_APP_STORE: "MAC_APP_STORE";
556
+ PADDLE: "PADDLE";
557
+ PLAY_STORE: "PLAY_STORE";
558
+ PROMOTIONAL: "PROMOTIONAL";
559
+ RC_BILLING: "RC_BILLING";
560
+ ROKU: "ROKU";
561
+ STRIPE: "STRIPE";
562
+ TEST_STORE: "TEST_STORE";
563
+ }>>>>;
564
+ currency: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNullable<z.ZodString>>>>;
565
+ price: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>>;
566
+ price_in_purchased_currency: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>>;
567
+ tax_percentage: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>>;
568
+ commission_percentage: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>>;
569
+ takehome_percentage: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>>;
570
+ offer_code: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNullable<z.ZodString>>>>;
571
+ renewal_number: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNullable<z.ZodInt>>>>;
572
+ metadata: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>>>;
573
+ discount_percentage: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>>;
574
+ discount_amount: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>>;
575
+ discount_identifier: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNullable<z.ZodString>>>>;
576
+ app_user_id: z.ZodString;
577
+ original_app_user_id: z.ZodString;
578
+ aliases: z.ZodArray<z.ZodString>;
579
+ subscriber_attributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
580
+ value: z.ZodString;
581
+ updated_at_ms: z.ZodInt;
582
+ }, z.core.$loose>>>;
583
+ experiments: z.ZodOptional<z.ZodArray<z.ZodObject<{
584
+ experiment_id: z.ZodString;
585
+ experiment_variant: z.ZodString;
586
+ enrolled_at_ms: z.ZodNullable<z.ZodInt>;
587
+ }, z.core.$loose>>>;
588
+ id: z.ZodString;
589
+ event_timestamp_ms: z.ZodInt;
590
+ app_id: z.ZodOptional<z.ZodString>;
591
+ type: z.ZodLiteral<"TEST">;
592
+ }, z.core.$loose>;
593
+ readonly INITIAL_PURCHASE: z.ZodObject<{
594
+ product_id: z.ZodString;
595
+ period_type: z.ZodEnum<{
596
+ PROMOTIONAL: "PROMOTIONAL";
597
+ TRIAL: "TRIAL";
598
+ INTRO: "INTRO";
599
+ NORMAL: "NORMAL";
600
+ PREPAID: "PREPAID";
601
+ }>;
602
+ purchased_at_ms: z.ZodInt;
603
+ expiration_at_ms: z.ZodNullable<z.ZodInt>;
604
+ environment: z.ZodEnum<{
605
+ SANDBOX: "SANDBOX";
606
+ PRODUCTION: "PRODUCTION";
607
+ }>;
608
+ entitlement_id: z.ZodNullable<z.ZodString>;
609
+ entitlement_ids: z.ZodNullable<z.ZodArray<z.ZodString>>;
610
+ presented_offering_id: z.ZodNullable<z.ZodString>;
611
+ transaction_id: z.ZodString;
612
+ original_transaction_id: z.ZodString;
613
+ is_family_share: z.ZodNullable<z.ZodBoolean>;
614
+ country_code: z.ZodNullable<z.ZodString>;
615
+ store: z.ZodOptional<z.ZodEnum<{
616
+ AMAZON: "AMAZON";
617
+ APP_STORE: "APP_STORE";
618
+ MAC_APP_STORE: "MAC_APP_STORE";
619
+ PADDLE: "PADDLE";
620
+ PLAY_STORE: "PLAY_STORE";
621
+ PROMOTIONAL: "PROMOTIONAL";
622
+ RC_BILLING: "RC_BILLING";
623
+ ROKU: "ROKU";
624
+ STRIPE: "STRIPE";
625
+ TEST_STORE: "TEST_STORE";
626
+ }>>;
627
+ currency: z.ZodOptional<z.ZodNullable<z.ZodString>>;
628
+ price: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
629
+ price_in_purchased_currency: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
630
+ tax_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
631
+ commission_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
632
+ takehome_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
633
+ offer_code: z.ZodOptional<z.ZodNullable<z.ZodString>>;
634
+ renewal_number: z.ZodOptional<z.ZodNullable<z.ZodInt>>;
635
+ metadata: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
636
+ discount_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
637
+ discount_amount: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
638
+ discount_identifier: z.ZodOptional<z.ZodNullable<z.ZodString>>;
639
+ app_user_id: z.ZodString;
640
+ original_app_user_id: z.ZodString;
641
+ aliases: z.ZodArray<z.ZodString>;
642
+ subscriber_attributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
643
+ value: z.ZodString;
644
+ updated_at_ms: z.ZodInt;
645
+ }, z.core.$loose>>>;
646
+ experiments: z.ZodOptional<z.ZodArray<z.ZodObject<{
647
+ experiment_id: z.ZodString;
648
+ experiment_variant: z.ZodString;
649
+ enrolled_at_ms: z.ZodNullable<z.ZodInt>;
650
+ }, z.core.$loose>>>;
651
+ id: z.ZodString;
652
+ event_timestamp_ms: z.ZodInt;
653
+ app_id: z.ZodOptional<z.ZodString>;
654
+ type: z.ZodLiteral<"INITIAL_PURCHASE">;
655
+ }, z.core.$loose>;
656
+ readonly RENEWAL: z.ZodObject<{
657
+ product_id: z.ZodString;
658
+ period_type: z.ZodEnum<{
659
+ PROMOTIONAL: "PROMOTIONAL";
660
+ TRIAL: "TRIAL";
661
+ INTRO: "INTRO";
662
+ NORMAL: "NORMAL";
663
+ PREPAID: "PREPAID";
664
+ }>;
665
+ purchased_at_ms: z.ZodInt;
666
+ expiration_at_ms: z.ZodNullable<z.ZodInt>;
667
+ environment: z.ZodEnum<{
668
+ SANDBOX: "SANDBOX";
669
+ PRODUCTION: "PRODUCTION";
670
+ }>;
671
+ entitlement_id: z.ZodNullable<z.ZodString>;
672
+ entitlement_ids: z.ZodNullable<z.ZodArray<z.ZodString>>;
673
+ presented_offering_id: z.ZodNullable<z.ZodString>;
674
+ transaction_id: z.ZodString;
675
+ original_transaction_id: z.ZodString;
676
+ is_family_share: z.ZodNullable<z.ZodBoolean>;
677
+ country_code: z.ZodNullable<z.ZodString>;
678
+ store: z.ZodOptional<z.ZodEnum<{
679
+ AMAZON: "AMAZON";
680
+ APP_STORE: "APP_STORE";
681
+ MAC_APP_STORE: "MAC_APP_STORE";
682
+ PADDLE: "PADDLE";
683
+ PLAY_STORE: "PLAY_STORE";
684
+ PROMOTIONAL: "PROMOTIONAL";
685
+ RC_BILLING: "RC_BILLING";
686
+ ROKU: "ROKU";
687
+ STRIPE: "STRIPE";
688
+ TEST_STORE: "TEST_STORE";
689
+ }>>;
690
+ currency: z.ZodOptional<z.ZodNullable<z.ZodString>>;
691
+ price: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
692
+ price_in_purchased_currency: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
693
+ tax_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
694
+ commission_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
695
+ takehome_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
696
+ offer_code: z.ZodOptional<z.ZodNullable<z.ZodString>>;
697
+ renewal_number: z.ZodOptional<z.ZodNullable<z.ZodInt>>;
698
+ metadata: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
699
+ discount_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
700
+ discount_amount: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
701
+ discount_identifier: z.ZodOptional<z.ZodNullable<z.ZodString>>;
702
+ app_user_id: z.ZodString;
703
+ original_app_user_id: z.ZodString;
704
+ aliases: z.ZodArray<z.ZodString>;
705
+ subscriber_attributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
706
+ value: z.ZodString;
707
+ updated_at_ms: z.ZodInt;
708
+ }, z.core.$loose>>>;
709
+ experiments: z.ZodOptional<z.ZodArray<z.ZodObject<{
710
+ experiment_id: z.ZodString;
711
+ experiment_variant: z.ZodString;
712
+ enrolled_at_ms: z.ZodNullable<z.ZodInt>;
713
+ }, z.core.$loose>>>;
714
+ id: z.ZodString;
715
+ event_timestamp_ms: z.ZodInt;
716
+ app_id: z.ZodOptional<z.ZodString>;
717
+ type: z.ZodLiteral<"RENEWAL">;
718
+ is_trial_conversion: z.ZodOptional<z.ZodBoolean>;
719
+ }, z.core.$loose>;
720
+ readonly CANCELLATION: z.ZodObject<{
721
+ product_id: z.ZodString;
722
+ period_type: z.ZodEnum<{
723
+ PROMOTIONAL: "PROMOTIONAL";
724
+ TRIAL: "TRIAL";
725
+ INTRO: "INTRO";
726
+ NORMAL: "NORMAL";
727
+ PREPAID: "PREPAID";
728
+ }>;
729
+ purchased_at_ms: z.ZodInt;
730
+ expiration_at_ms: z.ZodNullable<z.ZodInt>;
731
+ environment: z.ZodEnum<{
732
+ SANDBOX: "SANDBOX";
733
+ PRODUCTION: "PRODUCTION";
734
+ }>;
735
+ entitlement_id: z.ZodNullable<z.ZodString>;
736
+ entitlement_ids: z.ZodNullable<z.ZodArray<z.ZodString>>;
737
+ presented_offering_id: z.ZodNullable<z.ZodString>;
738
+ transaction_id: z.ZodString;
739
+ original_transaction_id: z.ZodString;
740
+ is_family_share: z.ZodNullable<z.ZodBoolean>;
741
+ country_code: z.ZodNullable<z.ZodString>;
742
+ store: z.ZodOptional<z.ZodEnum<{
743
+ AMAZON: "AMAZON";
744
+ APP_STORE: "APP_STORE";
745
+ MAC_APP_STORE: "MAC_APP_STORE";
746
+ PADDLE: "PADDLE";
747
+ PLAY_STORE: "PLAY_STORE";
748
+ PROMOTIONAL: "PROMOTIONAL";
749
+ RC_BILLING: "RC_BILLING";
750
+ ROKU: "ROKU";
751
+ STRIPE: "STRIPE";
752
+ TEST_STORE: "TEST_STORE";
753
+ }>>;
754
+ currency: z.ZodOptional<z.ZodNullable<z.ZodString>>;
755
+ price: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
756
+ price_in_purchased_currency: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
757
+ tax_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
758
+ commission_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
759
+ takehome_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
760
+ offer_code: z.ZodOptional<z.ZodNullable<z.ZodString>>;
761
+ renewal_number: z.ZodOptional<z.ZodNullable<z.ZodInt>>;
762
+ metadata: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
763
+ discount_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
764
+ discount_amount: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
765
+ discount_identifier: z.ZodOptional<z.ZodNullable<z.ZodString>>;
766
+ app_user_id: z.ZodString;
767
+ original_app_user_id: z.ZodString;
768
+ aliases: z.ZodArray<z.ZodString>;
769
+ subscriber_attributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
770
+ value: z.ZodString;
771
+ updated_at_ms: z.ZodInt;
772
+ }, z.core.$loose>>>;
773
+ experiments: z.ZodOptional<z.ZodArray<z.ZodObject<{
774
+ experiment_id: z.ZodString;
775
+ experiment_variant: z.ZodString;
776
+ enrolled_at_ms: z.ZodNullable<z.ZodInt>;
777
+ }, z.core.$loose>>>;
778
+ id: z.ZodString;
779
+ event_timestamp_ms: z.ZodInt;
780
+ app_id: z.ZodOptional<z.ZodString>;
781
+ type: z.ZodLiteral<"CANCELLATION">;
782
+ cancel_reason: z.ZodEnum<{
783
+ UNSUBSCRIBE: "UNSUBSCRIBE";
784
+ BILLING_ERROR: "BILLING_ERROR";
785
+ DEVELOPER_INITIATED: "DEVELOPER_INITIATED";
786
+ PRICE_INCREASE: "PRICE_INCREASE";
787
+ CUSTOMER_SUPPORT: "CUSTOMER_SUPPORT";
788
+ UNKNOWN: "UNKNOWN";
789
+ }>;
790
+ }, z.core.$loose>;
791
+ readonly UNCANCELLATION: z.ZodObject<{
792
+ product_id: z.ZodString;
793
+ period_type: z.ZodEnum<{
794
+ PROMOTIONAL: "PROMOTIONAL";
795
+ TRIAL: "TRIAL";
796
+ INTRO: "INTRO";
797
+ NORMAL: "NORMAL";
798
+ PREPAID: "PREPAID";
799
+ }>;
800
+ purchased_at_ms: z.ZodInt;
801
+ expiration_at_ms: z.ZodNullable<z.ZodInt>;
802
+ environment: z.ZodEnum<{
803
+ SANDBOX: "SANDBOX";
804
+ PRODUCTION: "PRODUCTION";
805
+ }>;
806
+ entitlement_id: z.ZodNullable<z.ZodString>;
807
+ entitlement_ids: z.ZodNullable<z.ZodArray<z.ZodString>>;
808
+ presented_offering_id: z.ZodNullable<z.ZodString>;
809
+ transaction_id: z.ZodString;
810
+ original_transaction_id: z.ZodString;
811
+ is_family_share: z.ZodNullable<z.ZodBoolean>;
812
+ country_code: z.ZodNullable<z.ZodString>;
813
+ store: z.ZodOptional<z.ZodEnum<{
814
+ AMAZON: "AMAZON";
815
+ APP_STORE: "APP_STORE";
816
+ MAC_APP_STORE: "MAC_APP_STORE";
817
+ PADDLE: "PADDLE";
818
+ PLAY_STORE: "PLAY_STORE";
819
+ PROMOTIONAL: "PROMOTIONAL";
820
+ RC_BILLING: "RC_BILLING";
821
+ ROKU: "ROKU";
822
+ STRIPE: "STRIPE";
823
+ TEST_STORE: "TEST_STORE";
824
+ }>>;
825
+ currency: z.ZodOptional<z.ZodNullable<z.ZodString>>;
826
+ price: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
827
+ price_in_purchased_currency: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
828
+ tax_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
829
+ commission_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
830
+ takehome_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
831
+ offer_code: z.ZodOptional<z.ZodNullable<z.ZodString>>;
832
+ renewal_number: z.ZodOptional<z.ZodNullable<z.ZodInt>>;
833
+ metadata: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
834
+ discount_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
835
+ discount_amount: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
836
+ discount_identifier: z.ZodOptional<z.ZodNullable<z.ZodString>>;
837
+ app_user_id: z.ZodString;
838
+ original_app_user_id: z.ZodString;
839
+ aliases: z.ZodArray<z.ZodString>;
840
+ subscriber_attributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
841
+ value: z.ZodString;
842
+ updated_at_ms: z.ZodInt;
843
+ }, z.core.$loose>>>;
844
+ experiments: z.ZodOptional<z.ZodArray<z.ZodObject<{
845
+ experiment_id: z.ZodString;
846
+ experiment_variant: z.ZodString;
847
+ enrolled_at_ms: z.ZodNullable<z.ZodInt>;
848
+ }, z.core.$loose>>>;
849
+ id: z.ZodString;
850
+ event_timestamp_ms: z.ZodInt;
851
+ app_id: z.ZodOptional<z.ZodString>;
852
+ type: z.ZodLiteral<"UNCANCELLATION">;
853
+ }, z.core.$loose>;
854
+ readonly BILLING_ISSUE: z.ZodObject<{
855
+ product_id: z.ZodString;
856
+ period_type: z.ZodEnum<{
857
+ PROMOTIONAL: "PROMOTIONAL";
858
+ TRIAL: "TRIAL";
859
+ INTRO: "INTRO";
860
+ NORMAL: "NORMAL";
861
+ PREPAID: "PREPAID";
862
+ }>;
863
+ purchased_at_ms: z.ZodInt;
864
+ expiration_at_ms: z.ZodNullable<z.ZodInt>;
865
+ environment: z.ZodEnum<{
866
+ SANDBOX: "SANDBOX";
867
+ PRODUCTION: "PRODUCTION";
868
+ }>;
869
+ entitlement_id: z.ZodNullable<z.ZodString>;
870
+ entitlement_ids: z.ZodNullable<z.ZodArray<z.ZodString>>;
871
+ presented_offering_id: z.ZodNullable<z.ZodString>;
872
+ transaction_id: z.ZodString;
873
+ original_transaction_id: z.ZodString;
874
+ is_family_share: z.ZodNullable<z.ZodBoolean>;
875
+ country_code: z.ZodNullable<z.ZodString>;
876
+ store: z.ZodOptional<z.ZodEnum<{
877
+ AMAZON: "AMAZON";
878
+ APP_STORE: "APP_STORE";
879
+ MAC_APP_STORE: "MAC_APP_STORE";
880
+ PADDLE: "PADDLE";
881
+ PLAY_STORE: "PLAY_STORE";
882
+ PROMOTIONAL: "PROMOTIONAL";
883
+ RC_BILLING: "RC_BILLING";
884
+ ROKU: "ROKU";
885
+ STRIPE: "STRIPE";
886
+ TEST_STORE: "TEST_STORE";
887
+ }>>;
888
+ currency: z.ZodOptional<z.ZodNullable<z.ZodString>>;
889
+ price: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
890
+ price_in_purchased_currency: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
891
+ tax_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
892
+ commission_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
893
+ takehome_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
894
+ offer_code: z.ZodOptional<z.ZodNullable<z.ZodString>>;
895
+ renewal_number: z.ZodOptional<z.ZodNullable<z.ZodInt>>;
896
+ metadata: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
897
+ discount_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
898
+ discount_amount: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
899
+ discount_identifier: z.ZodOptional<z.ZodNullable<z.ZodString>>;
900
+ app_user_id: z.ZodString;
901
+ original_app_user_id: z.ZodString;
902
+ aliases: z.ZodArray<z.ZodString>;
903
+ subscriber_attributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
904
+ value: z.ZodString;
905
+ updated_at_ms: z.ZodInt;
906
+ }, z.core.$loose>>>;
907
+ experiments: z.ZodOptional<z.ZodArray<z.ZodObject<{
908
+ experiment_id: z.ZodString;
909
+ experiment_variant: z.ZodString;
910
+ enrolled_at_ms: z.ZodNullable<z.ZodInt>;
911
+ }, z.core.$loose>>>;
912
+ id: z.ZodString;
913
+ event_timestamp_ms: z.ZodInt;
914
+ app_id: z.ZodOptional<z.ZodString>;
915
+ type: z.ZodLiteral<"BILLING_ISSUE">;
916
+ grace_period_expiration_at_ms: z.ZodNullable<z.ZodInt>;
917
+ }, z.core.$loose>;
918
+ readonly EXPIRATION: z.ZodObject<{
919
+ product_id: z.ZodString;
920
+ period_type: z.ZodEnum<{
921
+ PROMOTIONAL: "PROMOTIONAL";
922
+ TRIAL: "TRIAL";
923
+ INTRO: "INTRO";
924
+ NORMAL: "NORMAL";
925
+ PREPAID: "PREPAID";
926
+ }>;
927
+ purchased_at_ms: z.ZodInt;
928
+ expiration_at_ms: z.ZodNullable<z.ZodInt>;
929
+ environment: z.ZodEnum<{
930
+ SANDBOX: "SANDBOX";
931
+ PRODUCTION: "PRODUCTION";
932
+ }>;
933
+ entitlement_id: z.ZodNullable<z.ZodString>;
934
+ entitlement_ids: z.ZodNullable<z.ZodArray<z.ZodString>>;
935
+ presented_offering_id: z.ZodNullable<z.ZodString>;
936
+ transaction_id: z.ZodString;
937
+ original_transaction_id: z.ZodString;
938
+ is_family_share: z.ZodNullable<z.ZodBoolean>;
939
+ country_code: z.ZodNullable<z.ZodString>;
940
+ store: z.ZodOptional<z.ZodEnum<{
941
+ AMAZON: "AMAZON";
942
+ APP_STORE: "APP_STORE";
943
+ MAC_APP_STORE: "MAC_APP_STORE";
944
+ PADDLE: "PADDLE";
945
+ PLAY_STORE: "PLAY_STORE";
946
+ PROMOTIONAL: "PROMOTIONAL";
947
+ RC_BILLING: "RC_BILLING";
948
+ ROKU: "ROKU";
949
+ STRIPE: "STRIPE";
950
+ TEST_STORE: "TEST_STORE";
951
+ }>>;
952
+ currency: z.ZodOptional<z.ZodNullable<z.ZodString>>;
953
+ price: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
954
+ price_in_purchased_currency: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
955
+ tax_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
956
+ commission_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
957
+ takehome_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
958
+ offer_code: z.ZodOptional<z.ZodNullable<z.ZodString>>;
959
+ renewal_number: z.ZodOptional<z.ZodNullable<z.ZodInt>>;
960
+ metadata: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
961
+ discount_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
962
+ discount_amount: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
963
+ discount_identifier: z.ZodOptional<z.ZodNullable<z.ZodString>>;
964
+ app_user_id: z.ZodString;
965
+ original_app_user_id: z.ZodString;
966
+ aliases: z.ZodArray<z.ZodString>;
967
+ subscriber_attributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
968
+ value: z.ZodString;
969
+ updated_at_ms: z.ZodInt;
970
+ }, z.core.$loose>>>;
971
+ experiments: z.ZodOptional<z.ZodArray<z.ZodObject<{
972
+ experiment_id: z.ZodString;
973
+ experiment_variant: z.ZodString;
974
+ enrolled_at_ms: z.ZodNullable<z.ZodInt>;
975
+ }, z.core.$loose>>>;
976
+ id: z.ZodString;
977
+ event_timestamp_ms: z.ZodInt;
978
+ app_id: z.ZodOptional<z.ZodString>;
979
+ type: z.ZodLiteral<"EXPIRATION">;
980
+ expiration_reason: z.ZodEnum<{
981
+ UNSUBSCRIBE: "UNSUBSCRIBE";
982
+ BILLING_ERROR: "BILLING_ERROR";
983
+ DEVELOPER_INITIATED: "DEVELOPER_INITIATED";
984
+ PRICE_INCREASE: "PRICE_INCREASE";
985
+ CUSTOMER_SUPPORT: "CUSTOMER_SUPPORT";
986
+ UNKNOWN: "UNKNOWN";
987
+ SUBSCRIPTION_PAUSED: "SUBSCRIPTION_PAUSED";
988
+ }>;
989
+ }, z.core.$loose>;
990
+ };
991
+ declare const EventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
992
+ product_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
993
+ period_type: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
994
+ PROMOTIONAL: "PROMOTIONAL";
995
+ TRIAL: "TRIAL";
996
+ INTRO: "INTRO";
997
+ NORMAL: "NORMAL";
998
+ PREPAID: "PREPAID";
999
+ }>>>;
1000
+ purchased_at_ms: z.ZodOptional<z.ZodNullable<z.ZodInt>>;
1001
+ expiration_at_ms: z.ZodOptional<z.ZodNullable<z.ZodNullable<z.ZodInt>>>;
1002
+ environment: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
1003
+ SANDBOX: "SANDBOX";
1004
+ PRODUCTION: "PRODUCTION";
1005
+ }>>>;
1006
+ entitlement_id: z.ZodOptional<z.ZodNullable<z.ZodNullable<z.ZodString>>>;
1007
+ entitlement_ids: z.ZodOptional<z.ZodNullable<z.ZodNullable<z.ZodArray<z.ZodString>>>>;
1008
+ presented_offering_id: z.ZodOptional<z.ZodNullable<z.ZodNullable<z.ZodString>>>;
1009
+ transaction_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1010
+ original_transaction_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1011
+ is_family_share: z.ZodOptional<z.ZodNullable<z.ZodNullable<z.ZodBoolean>>>;
1012
+ country_code: z.ZodOptional<z.ZodNullable<z.ZodNullable<z.ZodString>>>;
1013
+ store: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodEnum<{
1014
+ AMAZON: "AMAZON";
1015
+ APP_STORE: "APP_STORE";
1016
+ MAC_APP_STORE: "MAC_APP_STORE";
1017
+ PADDLE: "PADDLE";
1018
+ PLAY_STORE: "PLAY_STORE";
1019
+ PROMOTIONAL: "PROMOTIONAL";
1020
+ RC_BILLING: "RC_BILLING";
1021
+ ROKU: "ROKU";
1022
+ STRIPE: "STRIPE";
1023
+ TEST_STORE: "TEST_STORE";
1024
+ }>>>>;
1025
+ currency: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNullable<z.ZodString>>>>;
1026
+ price: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>>;
1027
+ price_in_purchased_currency: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>>;
1028
+ tax_percentage: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>>;
1029
+ commission_percentage: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>>;
1030
+ takehome_percentage: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>>;
1031
+ offer_code: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNullable<z.ZodString>>>>;
1032
+ renewal_number: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNullable<z.ZodInt>>>>;
1033
+ metadata: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>>>;
1034
+ discount_percentage: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>>;
1035
+ discount_amount: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>>;
1036
+ discount_identifier: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNullable<z.ZodString>>>>;
1037
+ app_user_id: z.ZodString;
1038
+ original_app_user_id: z.ZodString;
1039
+ aliases: z.ZodArray<z.ZodString>;
1040
+ subscriber_attributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
1041
+ value: z.ZodString;
1042
+ updated_at_ms: z.ZodInt;
1043
+ }, z.core.$loose>>>;
1044
+ experiments: z.ZodOptional<z.ZodArray<z.ZodObject<{
1045
+ experiment_id: z.ZodString;
1046
+ experiment_variant: z.ZodString;
1047
+ enrolled_at_ms: z.ZodNullable<z.ZodInt>;
1048
+ }, z.core.$loose>>>;
1049
+ id: z.ZodString;
1050
+ event_timestamp_ms: z.ZodInt;
1051
+ app_id: z.ZodOptional<z.ZodString>;
1052
+ type: z.ZodLiteral<"TEST">;
1053
+ }, z.core.$loose>, z.ZodObject<{
1054
+ product_id: z.ZodString;
1055
+ period_type: z.ZodEnum<{
1056
+ PROMOTIONAL: "PROMOTIONAL";
1057
+ TRIAL: "TRIAL";
1058
+ INTRO: "INTRO";
1059
+ NORMAL: "NORMAL";
1060
+ PREPAID: "PREPAID";
1061
+ }>;
1062
+ purchased_at_ms: z.ZodInt;
1063
+ expiration_at_ms: z.ZodNullable<z.ZodInt>;
1064
+ environment: z.ZodEnum<{
1065
+ SANDBOX: "SANDBOX";
1066
+ PRODUCTION: "PRODUCTION";
1067
+ }>;
1068
+ entitlement_id: z.ZodNullable<z.ZodString>;
1069
+ entitlement_ids: z.ZodNullable<z.ZodArray<z.ZodString>>;
1070
+ presented_offering_id: z.ZodNullable<z.ZodString>;
1071
+ transaction_id: z.ZodString;
1072
+ original_transaction_id: z.ZodString;
1073
+ is_family_share: z.ZodNullable<z.ZodBoolean>;
1074
+ country_code: z.ZodNullable<z.ZodString>;
1075
+ store: z.ZodOptional<z.ZodEnum<{
1076
+ AMAZON: "AMAZON";
1077
+ APP_STORE: "APP_STORE";
1078
+ MAC_APP_STORE: "MAC_APP_STORE";
1079
+ PADDLE: "PADDLE";
1080
+ PLAY_STORE: "PLAY_STORE";
1081
+ PROMOTIONAL: "PROMOTIONAL";
1082
+ RC_BILLING: "RC_BILLING";
1083
+ ROKU: "ROKU";
1084
+ STRIPE: "STRIPE";
1085
+ TEST_STORE: "TEST_STORE";
1086
+ }>>;
1087
+ currency: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1088
+ price: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1089
+ price_in_purchased_currency: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1090
+ tax_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1091
+ commission_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1092
+ takehome_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1093
+ offer_code: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1094
+ renewal_number: z.ZodOptional<z.ZodNullable<z.ZodInt>>;
1095
+ metadata: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
1096
+ discount_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1097
+ discount_amount: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1098
+ discount_identifier: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1099
+ app_user_id: z.ZodString;
1100
+ original_app_user_id: z.ZodString;
1101
+ aliases: z.ZodArray<z.ZodString>;
1102
+ subscriber_attributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
1103
+ value: z.ZodString;
1104
+ updated_at_ms: z.ZodInt;
1105
+ }, z.core.$loose>>>;
1106
+ experiments: z.ZodOptional<z.ZodArray<z.ZodObject<{
1107
+ experiment_id: z.ZodString;
1108
+ experiment_variant: z.ZodString;
1109
+ enrolled_at_ms: z.ZodNullable<z.ZodInt>;
1110
+ }, z.core.$loose>>>;
1111
+ id: z.ZodString;
1112
+ event_timestamp_ms: z.ZodInt;
1113
+ app_id: z.ZodOptional<z.ZodString>;
1114
+ type: z.ZodLiteral<"INITIAL_PURCHASE">;
1115
+ }, z.core.$loose>, z.ZodObject<{
1116
+ product_id: z.ZodString;
1117
+ period_type: z.ZodEnum<{
1118
+ PROMOTIONAL: "PROMOTIONAL";
1119
+ TRIAL: "TRIAL";
1120
+ INTRO: "INTRO";
1121
+ NORMAL: "NORMAL";
1122
+ PREPAID: "PREPAID";
1123
+ }>;
1124
+ purchased_at_ms: z.ZodInt;
1125
+ expiration_at_ms: z.ZodNullable<z.ZodInt>;
1126
+ environment: z.ZodEnum<{
1127
+ SANDBOX: "SANDBOX";
1128
+ PRODUCTION: "PRODUCTION";
1129
+ }>;
1130
+ entitlement_id: z.ZodNullable<z.ZodString>;
1131
+ entitlement_ids: z.ZodNullable<z.ZodArray<z.ZodString>>;
1132
+ presented_offering_id: z.ZodNullable<z.ZodString>;
1133
+ transaction_id: z.ZodString;
1134
+ original_transaction_id: z.ZodString;
1135
+ is_family_share: z.ZodNullable<z.ZodBoolean>;
1136
+ country_code: z.ZodNullable<z.ZodString>;
1137
+ store: z.ZodOptional<z.ZodEnum<{
1138
+ AMAZON: "AMAZON";
1139
+ APP_STORE: "APP_STORE";
1140
+ MAC_APP_STORE: "MAC_APP_STORE";
1141
+ PADDLE: "PADDLE";
1142
+ PLAY_STORE: "PLAY_STORE";
1143
+ PROMOTIONAL: "PROMOTIONAL";
1144
+ RC_BILLING: "RC_BILLING";
1145
+ ROKU: "ROKU";
1146
+ STRIPE: "STRIPE";
1147
+ TEST_STORE: "TEST_STORE";
1148
+ }>>;
1149
+ currency: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1150
+ price: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1151
+ price_in_purchased_currency: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1152
+ tax_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1153
+ commission_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1154
+ takehome_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1155
+ offer_code: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1156
+ renewal_number: z.ZodOptional<z.ZodNullable<z.ZodInt>>;
1157
+ metadata: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
1158
+ discount_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1159
+ discount_amount: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1160
+ discount_identifier: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1161
+ app_user_id: z.ZodString;
1162
+ original_app_user_id: z.ZodString;
1163
+ aliases: z.ZodArray<z.ZodString>;
1164
+ subscriber_attributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
1165
+ value: z.ZodString;
1166
+ updated_at_ms: z.ZodInt;
1167
+ }, z.core.$loose>>>;
1168
+ experiments: z.ZodOptional<z.ZodArray<z.ZodObject<{
1169
+ experiment_id: z.ZodString;
1170
+ experiment_variant: z.ZodString;
1171
+ enrolled_at_ms: z.ZodNullable<z.ZodInt>;
1172
+ }, z.core.$loose>>>;
1173
+ id: z.ZodString;
1174
+ event_timestamp_ms: z.ZodInt;
1175
+ app_id: z.ZodOptional<z.ZodString>;
1176
+ type: z.ZodLiteral<"RENEWAL">;
1177
+ is_trial_conversion: z.ZodOptional<z.ZodBoolean>;
1178
+ }, z.core.$loose>, z.ZodObject<{
1179
+ product_id: z.ZodString;
1180
+ period_type: z.ZodEnum<{
1181
+ PROMOTIONAL: "PROMOTIONAL";
1182
+ TRIAL: "TRIAL";
1183
+ INTRO: "INTRO";
1184
+ NORMAL: "NORMAL";
1185
+ PREPAID: "PREPAID";
1186
+ }>;
1187
+ purchased_at_ms: z.ZodInt;
1188
+ expiration_at_ms: z.ZodNullable<z.ZodInt>;
1189
+ environment: z.ZodEnum<{
1190
+ SANDBOX: "SANDBOX";
1191
+ PRODUCTION: "PRODUCTION";
1192
+ }>;
1193
+ entitlement_id: z.ZodNullable<z.ZodString>;
1194
+ entitlement_ids: z.ZodNullable<z.ZodArray<z.ZodString>>;
1195
+ presented_offering_id: z.ZodNullable<z.ZodString>;
1196
+ transaction_id: z.ZodString;
1197
+ original_transaction_id: z.ZodString;
1198
+ is_family_share: z.ZodNullable<z.ZodBoolean>;
1199
+ country_code: z.ZodNullable<z.ZodString>;
1200
+ store: z.ZodOptional<z.ZodEnum<{
1201
+ AMAZON: "AMAZON";
1202
+ APP_STORE: "APP_STORE";
1203
+ MAC_APP_STORE: "MAC_APP_STORE";
1204
+ PADDLE: "PADDLE";
1205
+ PLAY_STORE: "PLAY_STORE";
1206
+ PROMOTIONAL: "PROMOTIONAL";
1207
+ RC_BILLING: "RC_BILLING";
1208
+ ROKU: "ROKU";
1209
+ STRIPE: "STRIPE";
1210
+ TEST_STORE: "TEST_STORE";
1211
+ }>>;
1212
+ currency: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1213
+ price: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1214
+ price_in_purchased_currency: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1215
+ tax_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1216
+ commission_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1217
+ takehome_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1218
+ offer_code: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1219
+ renewal_number: z.ZodOptional<z.ZodNullable<z.ZodInt>>;
1220
+ metadata: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
1221
+ discount_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1222
+ discount_amount: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1223
+ discount_identifier: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1224
+ app_user_id: z.ZodString;
1225
+ original_app_user_id: z.ZodString;
1226
+ aliases: z.ZodArray<z.ZodString>;
1227
+ subscriber_attributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
1228
+ value: z.ZodString;
1229
+ updated_at_ms: z.ZodInt;
1230
+ }, z.core.$loose>>>;
1231
+ experiments: z.ZodOptional<z.ZodArray<z.ZodObject<{
1232
+ experiment_id: z.ZodString;
1233
+ experiment_variant: z.ZodString;
1234
+ enrolled_at_ms: z.ZodNullable<z.ZodInt>;
1235
+ }, z.core.$loose>>>;
1236
+ id: z.ZodString;
1237
+ event_timestamp_ms: z.ZodInt;
1238
+ app_id: z.ZodOptional<z.ZodString>;
1239
+ type: z.ZodLiteral<"CANCELLATION">;
1240
+ cancel_reason: z.ZodEnum<{
1241
+ UNSUBSCRIBE: "UNSUBSCRIBE";
1242
+ BILLING_ERROR: "BILLING_ERROR";
1243
+ DEVELOPER_INITIATED: "DEVELOPER_INITIATED";
1244
+ PRICE_INCREASE: "PRICE_INCREASE";
1245
+ CUSTOMER_SUPPORT: "CUSTOMER_SUPPORT";
1246
+ UNKNOWN: "UNKNOWN";
1247
+ }>;
1248
+ }, z.core.$loose>, z.ZodObject<{
1249
+ product_id: z.ZodString;
1250
+ period_type: z.ZodEnum<{
1251
+ PROMOTIONAL: "PROMOTIONAL";
1252
+ TRIAL: "TRIAL";
1253
+ INTRO: "INTRO";
1254
+ NORMAL: "NORMAL";
1255
+ PREPAID: "PREPAID";
1256
+ }>;
1257
+ purchased_at_ms: z.ZodInt;
1258
+ expiration_at_ms: z.ZodNullable<z.ZodInt>;
1259
+ environment: z.ZodEnum<{
1260
+ SANDBOX: "SANDBOX";
1261
+ PRODUCTION: "PRODUCTION";
1262
+ }>;
1263
+ entitlement_id: z.ZodNullable<z.ZodString>;
1264
+ entitlement_ids: z.ZodNullable<z.ZodArray<z.ZodString>>;
1265
+ presented_offering_id: z.ZodNullable<z.ZodString>;
1266
+ transaction_id: z.ZodString;
1267
+ original_transaction_id: z.ZodString;
1268
+ is_family_share: z.ZodNullable<z.ZodBoolean>;
1269
+ country_code: z.ZodNullable<z.ZodString>;
1270
+ store: z.ZodOptional<z.ZodEnum<{
1271
+ AMAZON: "AMAZON";
1272
+ APP_STORE: "APP_STORE";
1273
+ MAC_APP_STORE: "MAC_APP_STORE";
1274
+ PADDLE: "PADDLE";
1275
+ PLAY_STORE: "PLAY_STORE";
1276
+ PROMOTIONAL: "PROMOTIONAL";
1277
+ RC_BILLING: "RC_BILLING";
1278
+ ROKU: "ROKU";
1279
+ STRIPE: "STRIPE";
1280
+ TEST_STORE: "TEST_STORE";
1281
+ }>>;
1282
+ currency: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1283
+ price: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1284
+ price_in_purchased_currency: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1285
+ tax_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1286
+ commission_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1287
+ takehome_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1288
+ offer_code: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1289
+ renewal_number: z.ZodOptional<z.ZodNullable<z.ZodInt>>;
1290
+ metadata: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
1291
+ discount_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1292
+ discount_amount: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1293
+ discount_identifier: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1294
+ app_user_id: z.ZodString;
1295
+ original_app_user_id: z.ZodString;
1296
+ aliases: z.ZodArray<z.ZodString>;
1297
+ subscriber_attributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
1298
+ value: z.ZodString;
1299
+ updated_at_ms: z.ZodInt;
1300
+ }, z.core.$loose>>>;
1301
+ experiments: z.ZodOptional<z.ZodArray<z.ZodObject<{
1302
+ experiment_id: z.ZodString;
1303
+ experiment_variant: z.ZodString;
1304
+ enrolled_at_ms: z.ZodNullable<z.ZodInt>;
1305
+ }, z.core.$loose>>>;
1306
+ id: z.ZodString;
1307
+ event_timestamp_ms: z.ZodInt;
1308
+ app_id: z.ZodOptional<z.ZodString>;
1309
+ type: z.ZodLiteral<"UNCANCELLATION">;
1310
+ }, z.core.$loose>, z.ZodObject<{
1311
+ product_id: z.ZodString;
1312
+ period_type: z.ZodEnum<{
1313
+ PROMOTIONAL: "PROMOTIONAL";
1314
+ TRIAL: "TRIAL";
1315
+ INTRO: "INTRO";
1316
+ NORMAL: "NORMAL";
1317
+ PREPAID: "PREPAID";
1318
+ }>;
1319
+ purchased_at_ms: z.ZodInt;
1320
+ expiration_at_ms: z.ZodNullable<z.ZodInt>;
1321
+ environment: z.ZodEnum<{
1322
+ SANDBOX: "SANDBOX";
1323
+ PRODUCTION: "PRODUCTION";
1324
+ }>;
1325
+ entitlement_id: z.ZodNullable<z.ZodString>;
1326
+ entitlement_ids: z.ZodNullable<z.ZodArray<z.ZodString>>;
1327
+ presented_offering_id: z.ZodNullable<z.ZodString>;
1328
+ transaction_id: z.ZodString;
1329
+ original_transaction_id: z.ZodString;
1330
+ is_family_share: z.ZodNullable<z.ZodBoolean>;
1331
+ country_code: z.ZodNullable<z.ZodString>;
1332
+ store: z.ZodOptional<z.ZodEnum<{
1333
+ AMAZON: "AMAZON";
1334
+ APP_STORE: "APP_STORE";
1335
+ MAC_APP_STORE: "MAC_APP_STORE";
1336
+ PADDLE: "PADDLE";
1337
+ PLAY_STORE: "PLAY_STORE";
1338
+ PROMOTIONAL: "PROMOTIONAL";
1339
+ RC_BILLING: "RC_BILLING";
1340
+ ROKU: "ROKU";
1341
+ STRIPE: "STRIPE";
1342
+ TEST_STORE: "TEST_STORE";
1343
+ }>>;
1344
+ currency: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1345
+ price: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1346
+ price_in_purchased_currency: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1347
+ tax_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1348
+ commission_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1349
+ takehome_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1350
+ offer_code: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1351
+ renewal_number: z.ZodOptional<z.ZodNullable<z.ZodInt>>;
1352
+ metadata: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
1353
+ discount_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1354
+ discount_amount: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1355
+ discount_identifier: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1356
+ app_user_id: z.ZodString;
1357
+ original_app_user_id: z.ZodString;
1358
+ aliases: z.ZodArray<z.ZodString>;
1359
+ subscriber_attributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
1360
+ value: z.ZodString;
1361
+ updated_at_ms: z.ZodInt;
1362
+ }, z.core.$loose>>>;
1363
+ experiments: z.ZodOptional<z.ZodArray<z.ZodObject<{
1364
+ experiment_id: z.ZodString;
1365
+ experiment_variant: z.ZodString;
1366
+ enrolled_at_ms: z.ZodNullable<z.ZodInt>;
1367
+ }, z.core.$loose>>>;
1368
+ id: z.ZodString;
1369
+ event_timestamp_ms: z.ZodInt;
1370
+ app_id: z.ZodOptional<z.ZodString>;
1371
+ type: z.ZodLiteral<"BILLING_ISSUE">;
1372
+ grace_period_expiration_at_ms: z.ZodNullable<z.ZodInt>;
1373
+ }, z.core.$loose>, z.ZodObject<{
1374
+ product_id: z.ZodString;
1375
+ period_type: z.ZodEnum<{
1376
+ PROMOTIONAL: "PROMOTIONAL";
1377
+ TRIAL: "TRIAL";
1378
+ INTRO: "INTRO";
1379
+ NORMAL: "NORMAL";
1380
+ PREPAID: "PREPAID";
1381
+ }>;
1382
+ purchased_at_ms: z.ZodInt;
1383
+ expiration_at_ms: z.ZodNullable<z.ZodInt>;
1384
+ environment: z.ZodEnum<{
1385
+ SANDBOX: "SANDBOX";
1386
+ PRODUCTION: "PRODUCTION";
1387
+ }>;
1388
+ entitlement_id: z.ZodNullable<z.ZodString>;
1389
+ entitlement_ids: z.ZodNullable<z.ZodArray<z.ZodString>>;
1390
+ presented_offering_id: z.ZodNullable<z.ZodString>;
1391
+ transaction_id: z.ZodString;
1392
+ original_transaction_id: z.ZodString;
1393
+ is_family_share: z.ZodNullable<z.ZodBoolean>;
1394
+ country_code: z.ZodNullable<z.ZodString>;
1395
+ store: z.ZodOptional<z.ZodEnum<{
1396
+ AMAZON: "AMAZON";
1397
+ APP_STORE: "APP_STORE";
1398
+ MAC_APP_STORE: "MAC_APP_STORE";
1399
+ PADDLE: "PADDLE";
1400
+ PLAY_STORE: "PLAY_STORE";
1401
+ PROMOTIONAL: "PROMOTIONAL";
1402
+ RC_BILLING: "RC_BILLING";
1403
+ ROKU: "ROKU";
1404
+ STRIPE: "STRIPE";
1405
+ TEST_STORE: "TEST_STORE";
1406
+ }>>;
1407
+ currency: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1408
+ price: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1409
+ price_in_purchased_currency: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1410
+ tax_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1411
+ commission_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1412
+ takehome_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1413
+ offer_code: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1414
+ renewal_number: z.ZodOptional<z.ZodNullable<z.ZodInt>>;
1415
+ metadata: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
1416
+ discount_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1417
+ discount_amount: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1418
+ discount_identifier: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1419
+ app_user_id: z.ZodString;
1420
+ original_app_user_id: z.ZodString;
1421
+ aliases: z.ZodArray<z.ZodString>;
1422
+ subscriber_attributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
1423
+ value: z.ZodString;
1424
+ updated_at_ms: z.ZodInt;
1425
+ }, z.core.$loose>>>;
1426
+ experiments: z.ZodOptional<z.ZodArray<z.ZodObject<{
1427
+ experiment_id: z.ZodString;
1428
+ experiment_variant: z.ZodString;
1429
+ enrolled_at_ms: z.ZodNullable<z.ZodInt>;
1430
+ }, z.core.$loose>>>;
1431
+ id: z.ZodString;
1432
+ event_timestamp_ms: z.ZodInt;
1433
+ app_id: z.ZodOptional<z.ZodString>;
1434
+ type: z.ZodLiteral<"EXPIRATION">;
1435
+ expiration_reason: z.ZodEnum<{
1436
+ UNSUBSCRIBE: "UNSUBSCRIBE";
1437
+ BILLING_ERROR: "BILLING_ERROR";
1438
+ DEVELOPER_INITIATED: "DEVELOPER_INITIATED";
1439
+ PRICE_INCREASE: "PRICE_INCREASE";
1440
+ CUSTOMER_SUPPORT: "CUSTOMER_SUPPORT";
1441
+ UNKNOWN: "UNKNOWN";
1442
+ SUBSCRIPTION_PAUSED: "SUBSCRIPTION_PAUSED";
1443
+ }>;
1444
+ }, z.core.$loose>], "type">;
1445
+ /** `api_version` is a string ("1.0" today); newer versions must not hard-fail (docs: additive changes). */
1446
+ declare const WebhookEnvelopeSchema: z.ZodObject<{
1447
+ api_version: z.ZodString;
1448
+ event: z.ZodDiscriminatedUnion<[z.ZodObject<{
1449
+ product_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1450
+ period_type: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
1451
+ PROMOTIONAL: "PROMOTIONAL";
1452
+ TRIAL: "TRIAL";
1453
+ INTRO: "INTRO";
1454
+ NORMAL: "NORMAL";
1455
+ PREPAID: "PREPAID";
1456
+ }>>>;
1457
+ purchased_at_ms: z.ZodOptional<z.ZodNullable<z.ZodInt>>;
1458
+ expiration_at_ms: z.ZodOptional<z.ZodNullable<z.ZodNullable<z.ZodInt>>>;
1459
+ environment: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
1460
+ SANDBOX: "SANDBOX";
1461
+ PRODUCTION: "PRODUCTION";
1462
+ }>>>;
1463
+ entitlement_id: z.ZodOptional<z.ZodNullable<z.ZodNullable<z.ZodString>>>;
1464
+ entitlement_ids: z.ZodOptional<z.ZodNullable<z.ZodNullable<z.ZodArray<z.ZodString>>>>;
1465
+ presented_offering_id: z.ZodOptional<z.ZodNullable<z.ZodNullable<z.ZodString>>>;
1466
+ transaction_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1467
+ original_transaction_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1468
+ is_family_share: z.ZodOptional<z.ZodNullable<z.ZodNullable<z.ZodBoolean>>>;
1469
+ country_code: z.ZodOptional<z.ZodNullable<z.ZodNullable<z.ZodString>>>;
1470
+ store: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodEnum<{
1471
+ AMAZON: "AMAZON";
1472
+ APP_STORE: "APP_STORE";
1473
+ MAC_APP_STORE: "MAC_APP_STORE";
1474
+ PADDLE: "PADDLE";
1475
+ PLAY_STORE: "PLAY_STORE";
1476
+ PROMOTIONAL: "PROMOTIONAL";
1477
+ RC_BILLING: "RC_BILLING";
1478
+ ROKU: "ROKU";
1479
+ STRIPE: "STRIPE";
1480
+ TEST_STORE: "TEST_STORE";
1481
+ }>>>>;
1482
+ currency: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNullable<z.ZodString>>>>;
1483
+ price: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>>;
1484
+ price_in_purchased_currency: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>>;
1485
+ tax_percentage: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>>;
1486
+ commission_percentage: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>>;
1487
+ takehome_percentage: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>>;
1488
+ offer_code: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNullable<z.ZodString>>>>;
1489
+ renewal_number: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNullable<z.ZodInt>>>>;
1490
+ metadata: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>>>;
1491
+ discount_percentage: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>>;
1492
+ discount_amount: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>>;
1493
+ discount_identifier: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNullable<z.ZodString>>>>;
1494
+ app_user_id: z.ZodString;
1495
+ original_app_user_id: z.ZodString;
1496
+ aliases: z.ZodArray<z.ZodString>;
1497
+ subscriber_attributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
1498
+ value: z.ZodString;
1499
+ updated_at_ms: z.ZodInt;
1500
+ }, z.core.$loose>>>;
1501
+ experiments: z.ZodOptional<z.ZodArray<z.ZodObject<{
1502
+ experiment_id: z.ZodString;
1503
+ experiment_variant: z.ZodString;
1504
+ enrolled_at_ms: z.ZodNullable<z.ZodInt>;
1505
+ }, z.core.$loose>>>;
1506
+ id: z.ZodString;
1507
+ event_timestamp_ms: z.ZodInt;
1508
+ app_id: z.ZodOptional<z.ZodString>;
1509
+ type: z.ZodLiteral<"TEST">;
1510
+ }, z.core.$loose>, z.ZodObject<{
1511
+ product_id: z.ZodString;
1512
+ period_type: z.ZodEnum<{
1513
+ PROMOTIONAL: "PROMOTIONAL";
1514
+ TRIAL: "TRIAL";
1515
+ INTRO: "INTRO";
1516
+ NORMAL: "NORMAL";
1517
+ PREPAID: "PREPAID";
1518
+ }>;
1519
+ purchased_at_ms: z.ZodInt;
1520
+ expiration_at_ms: z.ZodNullable<z.ZodInt>;
1521
+ environment: z.ZodEnum<{
1522
+ SANDBOX: "SANDBOX";
1523
+ PRODUCTION: "PRODUCTION";
1524
+ }>;
1525
+ entitlement_id: z.ZodNullable<z.ZodString>;
1526
+ entitlement_ids: z.ZodNullable<z.ZodArray<z.ZodString>>;
1527
+ presented_offering_id: z.ZodNullable<z.ZodString>;
1528
+ transaction_id: z.ZodString;
1529
+ original_transaction_id: z.ZodString;
1530
+ is_family_share: z.ZodNullable<z.ZodBoolean>;
1531
+ country_code: z.ZodNullable<z.ZodString>;
1532
+ store: z.ZodOptional<z.ZodEnum<{
1533
+ AMAZON: "AMAZON";
1534
+ APP_STORE: "APP_STORE";
1535
+ MAC_APP_STORE: "MAC_APP_STORE";
1536
+ PADDLE: "PADDLE";
1537
+ PLAY_STORE: "PLAY_STORE";
1538
+ PROMOTIONAL: "PROMOTIONAL";
1539
+ RC_BILLING: "RC_BILLING";
1540
+ ROKU: "ROKU";
1541
+ STRIPE: "STRIPE";
1542
+ TEST_STORE: "TEST_STORE";
1543
+ }>>;
1544
+ currency: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1545
+ price: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1546
+ price_in_purchased_currency: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1547
+ tax_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1548
+ commission_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1549
+ takehome_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1550
+ offer_code: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1551
+ renewal_number: z.ZodOptional<z.ZodNullable<z.ZodInt>>;
1552
+ metadata: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
1553
+ discount_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1554
+ discount_amount: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1555
+ discount_identifier: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1556
+ app_user_id: z.ZodString;
1557
+ original_app_user_id: z.ZodString;
1558
+ aliases: z.ZodArray<z.ZodString>;
1559
+ subscriber_attributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
1560
+ value: z.ZodString;
1561
+ updated_at_ms: z.ZodInt;
1562
+ }, z.core.$loose>>>;
1563
+ experiments: z.ZodOptional<z.ZodArray<z.ZodObject<{
1564
+ experiment_id: z.ZodString;
1565
+ experiment_variant: z.ZodString;
1566
+ enrolled_at_ms: z.ZodNullable<z.ZodInt>;
1567
+ }, z.core.$loose>>>;
1568
+ id: z.ZodString;
1569
+ event_timestamp_ms: z.ZodInt;
1570
+ app_id: z.ZodOptional<z.ZodString>;
1571
+ type: z.ZodLiteral<"INITIAL_PURCHASE">;
1572
+ }, z.core.$loose>, z.ZodObject<{
1573
+ product_id: z.ZodString;
1574
+ period_type: z.ZodEnum<{
1575
+ PROMOTIONAL: "PROMOTIONAL";
1576
+ TRIAL: "TRIAL";
1577
+ INTRO: "INTRO";
1578
+ NORMAL: "NORMAL";
1579
+ PREPAID: "PREPAID";
1580
+ }>;
1581
+ purchased_at_ms: z.ZodInt;
1582
+ expiration_at_ms: z.ZodNullable<z.ZodInt>;
1583
+ environment: z.ZodEnum<{
1584
+ SANDBOX: "SANDBOX";
1585
+ PRODUCTION: "PRODUCTION";
1586
+ }>;
1587
+ entitlement_id: z.ZodNullable<z.ZodString>;
1588
+ entitlement_ids: z.ZodNullable<z.ZodArray<z.ZodString>>;
1589
+ presented_offering_id: z.ZodNullable<z.ZodString>;
1590
+ transaction_id: z.ZodString;
1591
+ original_transaction_id: z.ZodString;
1592
+ is_family_share: z.ZodNullable<z.ZodBoolean>;
1593
+ country_code: z.ZodNullable<z.ZodString>;
1594
+ store: z.ZodOptional<z.ZodEnum<{
1595
+ AMAZON: "AMAZON";
1596
+ APP_STORE: "APP_STORE";
1597
+ MAC_APP_STORE: "MAC_APP_STORE";
1598
+ PADDLE: "PADDLE";
1599
+ PLAY_STORE: "PLAY_STORE";
1600
+ PROMOTIONAL: "PROMOTIONAL";
1601
+ RC_BILLING: "RC_BILLING";
1602
+ ROKU: "ROKU";
1603
+ STRIPE: "STRIPE";
1604
+ TEST_STORE: "TEST_STORE";
1605
+ }>>;
1606
+ currency: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1607
+ price: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1608
+ price_in_purchased_currency: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1609
+ tax_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1610
+ commission_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1611
+ takehome_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1612
+ offer_code: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1613
+ renewal_number: z.ZodOptional<z.ZodNullable<z.ZodInt>>;
1614
+ metadata: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
1615
+ discount_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1616
+ discount_amount: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1617
+ discount_identifier: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1618
+ app_user_id: z.ZodString;
1619
+ original_app_user_id: z.ZodString;
1620
+ aliases: z.ZodArray<z.ZodString>;
1621
+ subscriber_attributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
1622
+ value: z.ZodString;
1623
+ updated_at_ms: z.ZodInt;
1624
+ }, z.core.$loose>>>;
1625
+ experiments: z.ZodOptional<z.ZodArray<z.ZodObject<{
1626
+ experiment_id: z.ZodString;
1627
+ experiment_variant: z.ZodString;
1628
+ enrolled_at_ms: z.ZodNullable<z.ZodInt>;
1629
+ }, z.core.$loose>>>;
1630
+ id: z.ZodString;
1631
+ event_timestamp_ms: z.ZodInt;
1632
+ app_id: z.ZodOptional<z.ZodString>;
1633
+ type: z.ZodLiteral<"RENEWAL">;
1634
+ is_trial_conversion: z.ZodOptional<z.ZodBoolean>;
1635
+ }, z.core.$loose>, z.ZodObject<{
1636
+ product_id: z.ZodString;
1637
+ period_type: z.ZodEnum<{
1638
+ PROMOTIONAL: "PROMOTIONAL";
1639
+ TRIAL: "TRIAL";
1640
+ INTRO: "INTRO";
1641
+ NORMAL: "NORMAL";
1642
+ PREPAID: "PREPAID";
1643
+ }>;
1644
+ purchased_at_ms: z.ZodInt;
1645
+ expiration_at_ms: z.ZodNullable<z.ZodInt>;
1646
+ environment: z.ZodEnum<{
1647
+ SANDBOX: "SANDBOX";
1648
+ PRODUCTION: "PRODUCTION";
1649
+ }>;
1650
+ entitlement_id: z.ZodNullable<z.ZodString>;
1651
+ entitlement_ids: z.ZodNullable<z.ZodArray<z.ZodString>>;
1652
+ presented_offering_id: z.ZodNullable<z.ZodString>;
1653
+ transaction_id: z.ZodString;
1654
+ original_transaction_id: z.ZodString;
1655
+ is_family_share: z.ZodNullable<z.ZodBoolean>;
1656
+ country_code: z.ZodNullable<z.ZodString>;
1657
+ store: z.ZodOptional<z.ZodEnum<{
1658
+ AMAZON: "AMAZON";
1659
+ APP_STORE: "APP_STORE";
1660
+ MAC_APP_STORE: "MAC_APP_STORE";
1661
+ PADDLE: "PADDLE";
1662
+ PLAY_STORE: "PLAY_STORE";
1663
+ PROMOTIONAL: "PROMOTIONAL";
1664
+ RC_BILLING: "RC_BILLING";
1665
+ ROKU: "ROKU";
1666
+ STRIPE: "STRIPE";
1667
+ TEST_STORE: "TEST_STORE";
1668
+ }>>;
1669
+ currency: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1670
+ price: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1671
+ price_in_purchased_currency: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1672
+ tax_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1673
+ commission_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1674
+ takehome_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1675
+ offer_code: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1676
+ renewal_number: z.ZodOptional<z.ZodNullable<z.ZodInt>>;
1677
+ metadata: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
1678
+ discount_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1679
+ discount_amount: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1680
+ discount_identifier: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1681
+ app_user_id: z.ZodString;
1682
+ original_app_user_id: z.ZodString;
1683
+ aliases: z.ZodArray<z.ZodString>;
1684
+ subscriber_attributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
1685
+ value: z.ZodString;
1686
+ updated_at_ms: z.ZodInt;
1687
+ }, z.core.$loose>>>;
1688
+ experiments: z.ZodOptional<z.ZodArray<z.ZodObject<{
1689
+ experiment_id: z.ZodString;
1690
+ experiment_variant: z.ZodString;
1691
+ enrolled_at_ms: z.ZodNullable<z.ZodInt>;
1692
+ }, z.core.$loose>>>;
1693
+ id: z.ZodString;
1694
+ event_timestamp_ms: z.ZodInt;
1695
+ app_id: z.ZodOptional<z.ZodString>;
1696
+ type: z.ZodLiteral<"CANCELLATION">;
1697
+ cancel_reason: z.ZodEnum<{
1698
+ UNSUBSCRIBE: "UNSUBSCRIBE";
1699
+ BILLING_ERROR: "BILLING_ERROR";
1700
+ DEVELOPER_INITIATED: "DEVELOPER_INITIATED";
1701
+ PRICE_INCREASE: "PRICE_INCREASE";
1702
+ CUSTOMER_SUPPORT: "CUSTOMER_SUPPORT";
1703
+ UNKNOWN: "UNKNOWN";
1704
+ }>;
1705
+ }, z.core.$loose>, z.ZodObject<{
1706
+ product_id: z.ZodString;
1707
+ period_type: z.ZodEnum<{
1708
+ PROMOTIONAL: "PROMOTIONAL";
1709
+ TRIAL: "TRIAL";
1710
+ INTRO: "INTRO";
1711
+ NORMAL: "NORMAL";
1712
+ PREPAID: "PREPAID";
1713
+ }>;
1714
+ purchased_at_ms: z.ZodInt;
1715
+ expiration_at_ms: z.ZodNullable<z.ZodInt>;
1716
+ environment: z.ZodEnum<{
1717
+ SANDBOX: "SANDBOX";
1718
+ PRODUCTION: "PRODUCTION";
1719
+ }>;
1720
+ entitlement_id: z.ZodNullable<z.ZodString>;
1721
+ entitlement_ids: z.ZodNullable<z.ZodArray<z.ZodString>>;
1722
+ presented_offering_id: z.ZodNullable<z.ZodString>;
1723
+ transaction_id: z.ZodString;
1724
+ original_transaction_id: z.ZodString;
1725
+ is_family_share: z.ZodNullable<z.ZodBoolean>;
1726
+ country_code: z.ZodNullable<z.ZodString>;
1727
+ store: z.ZodOptional<z.ZodEnum<{
1728
+ AMAZON: "AMAZON";
1729
+ APP_STORE: "APP_STORE";
1730
+ MAC_APP_STORE: "MAC_APP_STORE";
1731
+ PADDLE: "PADDLE";
1732
+ PLAY_STORE: "PLAY_STORE";
1733
+ PROMOTIONAL: "PROMOTIONAL";
1734
+ RC_BILLING: "RC_BILLING";
1735
+ ROKU: "ROKU";
1736
+ STRIPE: "STRIPE";
1737
+ TEST_STORE: "TEST_STORE";
1738
+ }>>;
1739
+ currency: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1740
+ price: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1741
+ price_in_purchased_currency: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1742
+ tax_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1743
+ commission_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1744
+ takehome_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1745
+ offer_code: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1746
+ renewal_number: z.ZodOptional<z.ZodNullable<z.ZodInt>>;
1747
+ metadata: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
1748
+ discount_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1749
+ discount_amount: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1750
+ discount_identifier: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1751
+ app_user_id: z.ZodString;
1752
+ original_app_user_id: z.ZodString;
1753
+ aliases: z.ZodArray<z.ZodString>;
1754
+ subscriber_attributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
1755
+ value: z.ZodString;
1756
+ updated_at_ms: z.ZodInt;
1757
+ }, z.core.$loose>>>;
1758
+ experiments: z.ZodOptional<z.ZodArray<z.ZodObject<{
1759
+ experiment_id: z.ZodString;
1760
+ experiment_variant: z.ZodString;
1761
+ enrolled_at_ms: z.ZodNullable<z.ZodInt>;
1762
+ }, z.core.$loose>>>;
1763
+ id: z.ZodString;
1764
+ event_timestamp_ms: z.ZodInt;
1765
+ app_id: z.ZodOptional<z.ZodString>;
1766
+ type: z.ZodLiteral<"UNCANCELLATION">;
1767
+ }, z.core.$loose>, z.ZodObject<{
1768
+ product_id: z.ZodString;
1769
+ period_type: z.ZodEnum<{
1770
+ PROMOTIONAL: "PROMOTIONAL";
1771
+ TRIAL: "TRIAL";
1772
+ INTRO: "INTRO";
1773
+ NORMAL: "NORMAL";
1774
+ PREPAID: "PREPAID";
1775
+ }>;
1776
+ purchased_at_ms: z.ZodInt;
1777
+ expiration_at_ms: z.ZodNullable<z.ZodInt>;
1778
+ environment: z.ZodEnum<{
1779
+ SANDBOX: "SANDBOX";
1780
+ PRODUCTION: "PRODUCTION";
1781
+ }>;
1782
+ entitlement_id: z.ZodNullable<z.ZodString>;
1783
+ entitlement_ids: z.ZodNullable<z.ZodArray<z.ZodString>>;
1784
+ presented_offering_id: z.ZodNullable<z.ZodString>;
1785
+ transaction_id: z.ZodString;
1786
+ original_transaction_id: z.ZodString;
1787
+ is_family_share: z.ZodNullable<z.ZodBoolean>;
1788
+ country_code: z.ZodNullable<z.ZodString>;
1789
+ store: z.ZodOptional<z.ZodEnum<{
1790
+ AMAZON: "AMAZON";
1791
+ APP_STORE: "APP_STORE";
1792
+ MAC_APP_STORE: "MAC_APP_STORE";
1793
+ PADDLE: "PADDLE";
1794
+ PLAY_STORE: "PLAY_STORE";
1795
+ PROMOTIONAL: "PROMOTIONAL";
1796
+ RC_BILLING: "RC_BILLING";
1797
+ ROKU: "ROKU";
1798
+ STRIPE: "STRIPE";
1799
+ TEST_STORE: "TEST_STORE";
1800
+ }>>;
1801
+ currency: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1802
+ price: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1803
+ price_in_purchased_currency: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1804
+ tax_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1805
+ commission_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1806
+ takehome_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1807
+ offer_code: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1808
+ renewal_number: z.ZodOptional<z.ZodNullable<z.ZodInt>>;
1809
+ metadata: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
1810
+ discount_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1811
+ discount_amount: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1812
+ discount_identifier: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1813
+ app_user_id: z.ZodString;
1814
+ original_app_user_id: z.ZodString;
1815
+ aliases: z.ZodArray<z.ZodString>;
1816
+ subscriber_attributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
1817
+ value: z.ZodString;
1818
+ updated_at_ms: z.ZodInt;
1819
+ }, z.core.$loose>>>;
1820
+ experiments: z.ZodOptional<z.ZodArray<z.ZodObject<{
1821
+ experiment_id: z.ZodString;
1822
+ experiment_variant: z.ZodString;
1823
+ enrolled_at_ms: z.ZodNullable<z.ZodInt>;
1824
+ }, z.core.$loose>>>;
1825
+ id: z.ZodString;
1826
+ event_timestamp_ms: z.ZodInt;
1827
+ app_id: z.ZodOptional<z.ZodString>;
1828
+ type: z.ZodLiteral<"BILLING_ISSUE">;
1829
+ grace_period_expiration_at_ms: z.ZodNullable<z.ZodInt>;
1830
+ }, z.core.$loose>, z.ZodObject<{
1831
+ product_id: z.ZodString;
1832
+ period_type: z.ZodEnum<{
1833
+ PROMOTIONAL: "PROMOTIONAL";
1834
+ TRIAL: "TRIAL";
1835
+ INTRO: "INTRO";
1836
+ NORMAL: "NORMAL";
1837
+ PREPAID: "PREPAID";
1838
+ }>;
1839
+ purchased_at_ms: z.ZodInt;
1840
+ expiration_at_ms: z.ZodNullable<z.ZodInt>;
1841
+ environment: z.ZodEnum<{
1842
+ SANDBOX: "SANDBOX";
1843
+ PRODUCTION: "PRODUCTION";
1844
+ }>;
1845
+ entitlement_id: z.ZodNullable<z.ZodString>;
1846
+ entitlement_ids: z.ZodNullable<z.ZodArray<z.ZodString>>;
1847
+ presented_offering_id: z.ZodNullable<z.ZodString>;
1848
+ transaction_id: z.ZodString;
1849
+ original_transaction_id: z.ZodString;
1850
+ is_family_share: z.ZodNullable<z.ZodBoolean>;
1851
+ country_code: z.ZodNullable<z.ZodString>;
1852
+ store: z.ZodOptional<z.ZodEnum<{
1853
+ AMAZON: "AMAZON";
1854
+ APP_STORE: "APP_STORE";
1855
+ MAC_APP_STORE: "MAC_APP_STORE";
1856
+ PADDLE: "PADDLE";
1857
+ PLAY_STORE: "PLAY_STORE";
1858
+ PROMOTIONAL: "PROMOTIONAL";
1859
+ RC_BILLING: "RC_BILLING";
1860
+ ROKU: "ROKU";
1861
+ STRIPE: "STRIPE";
1862
+ TEST_STORE: "TEST_STORE";
1863
+ }>>;
1864
+ currency: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1865
+ price: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1866
+ price_in_purchased_currency: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1867
+ tax_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1868
+ commission_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1869
+ takehome_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1870
+ offer_code: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1871
+ renewal_number: z.ZodOptional<z.ZodNullable<z.ZodInt>>;
1872
+ metadata: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
1873
+ discount_percentage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1874
+ discount_amount: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1875
+ discount_identifier: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1876
+ app_user_id: z.ZodString;
1877
+ original_app_user_id: z.ZodString;
1878
+ aliases: z.ZodArray<z.ZodString>;
1879
+ subscriber_attributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
1880
+ value: z.ZodString;
1881
+ updated_at_ms: z.ZodInt;
1882
+ }, z.core.$loose>>>;
1883
+ experiments: z.ZodOptional<z.ZodArray<z.ZodObject<{
1884
+ experiment_id: z.ZodString;
1885
+ experiment_variant: z.ZodString;
1886
+ enrolled_at_ms: z.ZodNullable<z.ZodInt>;
1887
+ }, z.core.$loose>>>;
1888
+ id: z.ZodString;
1889
+ event_timestamp_ms: z.ZodInt;
1890
+ app_id: z.ZodOptional<z.ZodString>;
1891
+ type: z.ZodLiteral<"EXPIRATION">;
1892
+ expiration_reason: z.ZodEnum<{
1893
+ UNSUBSCRIBE: "UNSUBSCRIBE";
1894
+ BILLING_ERROR: "BILLING_ERROR";
1895
+ DEVELOPER_INITIATED: "DEVELOPER_INITIATED";
1896
+ PRICE_INCREASE: "PRICE_INCREASE";
1897
+ CUSTOMER_SUPPORT: "CUSTOMER_SUPPORT";
1898
+ UNKNOWN: "UNKNOWN";
1899
+ SUBSCRIPTION_PAUSED: "SUBSCRIPTION_PAUSED";
1900
+ }>;
1901
+ }, z.core.$loose>], "type">;
1902
+ }, z.core.$loose>;
1903
+ /**
1904
+ * Any well-formed RevenueCat event, whatever its `type`. RevenueCat adds event types without bumping
1905
+ * `api_version`, so receivers must accept these (T-065). Only the common + identity groups are required.
1906
+ */
1907
+ declare const UnknownEventSchema: z.ZodObject<{
1908
+ app_user_id: z.ZodString;
1909
+ original_app_user_id: z.ZodString;
1910
+ aliases: z.ZodArray<z.ZodString>;
1911
+ subscriber_attributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
1912
+ value: z.ZodString;
1913
+ updated_at_ms: z.ZodInt;
1914
+ }, z.core.$loose>>>;
1915
+ experiments: z.ZodOptional<z.ZodArray<z.ZodObject<{
1916
+ experiment_id: z.ZodString;
1917
+ experiment_variant: z.ZodString;
1918
+ enrolled_at_ms: z.ZodNullable<z.ZodInt>;
1919
+ }, z.core.$loose>>>;
1920
+ id: z.ZodString;
1921
+ event_timestamp_ms: z.ZodInt;
1922
+ app_id: z.ZodOptional<z.ZodString>;
1923
+ type: z.ZodString;
1924
+ }, z.core.$loose>;
1925
+ declare const UnknownWebhookEnvelopeSchema: z.ZodObject<{
1926
+ api_version: z.ZodString;
1927
+ event: z.ZodObject<{
1928
+ app_user_id: z.ZodString;
1929
+ original_app_user_id: z.ZodString;
1930
+ aliases: z.ZodArray<z.ZodString>;
1931
+ subscriber_attributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
1932
+ value: z.ZodString;
1933
+ updated_at_ms: z.ZodInt;
1934
+ }, z.core.$loose>>>;
1935
+ experiments: z.ZodOptional<z.ZodArray<z.ZodObject<{
1936
+ experiment_id: z.ZodString;
1937
+ experiment_variant: z.ZodString;
1938
+ enrolled_at_ms: z.ZodNullable<z.ZodInt>;
1939
+ }, z.core.$loose>>>;
1940
+ id: z.ZodString;
1941
+ event_timestamp_ms: z.ZodInt;
1942
+ app_id: z.ZodOptional<z.ZodString>;
1943
+ type: z.ZodString;
1944
+ }, z.core.$loose>;
1945
+ }, z.core.$loose>;
1946
+ type UnknownEvent = z.infer<typeof UnknownEventSchema>;
1947
+ type EnvelopeClassification = {
1948
+ kind: "known";
1949
+ envelope: WebhookEnvelope;
1950
+ } | {
1951
+ kind: "unknown-type";
1952
+ type: string;
1953
+ envelope: z.infer<typeof UnknownWebhookEnvelopeSchema>;
1954
+ } | {
1955
+ kind: "invalid";
1956
+ issues: Array<{
1957
+ path: string;
1958
+ message: string;
1959
+ }>;
1960
+ };
1961
+ /** Classify an incoming body: one of our 7 types, a well-formed event of another type, or invalid. */
1962
+ declare function classifyEnvelope(body: unknown): EnvelopeClassification;
1963
+ type Event = z.infer<typeof EventSchema>;
1964
+ type WebhookEnvelope = z.infer<typeof WebhookEnvelopeSchema>;
1965
+ type InitialPurchaseEvent = z.infer<typeof InitialPurchaseEventSchema>;
1966
+ type RenewalEvent = z.infer<typeof RenewalEventSchema>;
1967
+ type CancellationEvent = z.infer<typeof CancellationEventSchema>;
1968
+ type UncancellationEvent = z.infer<typeof UncancellationEventSchema>;
1969
+ type BillingIssueEvent = z.infer<typeof BillingIssueEventSchema>;
1970
+ type ExpirationEvent = z.infer<typeof ExpirationEventSchema>;
1971
+ type TestEvent = z.infer<typeof TestEventSchema>;
1972
+ type LifecycleEvent = Exclude<Event, TestEvent>;
1973
+
1974
+ interface Duration {
1975
+ years: number;
1976
+ months: number;
1977
+ weeks: number;
1978
+ days: number;
1979
+ hours: number;
1980
+ minutes: number;
1981
+ seconds: number;
1982
+ }
1983
+ /** Parse an ISO-8601 duration (`P1M`, `P1W`, `P1M2DT3H`, ...). Fractions are not supported. */
1984
+ declare function parseDuration(input: string): Duration;
1985
+ declare function formatDuration(d: Duration): string;
1986
+ /** Add a duration to a UTC instant (ms). Years/months are calendar-aware with day clamping. */
1987
+ declare function addDuration(ms: number, d: Duration): number;
1988
+ /** A clock that only moves forward, in simulated time. */
1989
+ declare class VirtualClock {
1990
+ private current;
1991
+ constructor(startMs: number);
1992
+ /** Seeded runs start at a fixed epoch so payloads are reproducible; unseeded runs start now. */
1993
+ static forSeed(seed: number | string | undefined, startAt?: number): VirtualClock;
1994
+ now(): number;
1995
+ iso(): string;
1996
+ /** Advance by a Duration or ISO-8601 string. Returns the new now(). */
1997
+ advance(duration: Duration | string): number;
1998
+ }
1999
+
2000
+ interface Rng {
2001
+ /** Uniform float in [0, 1). */
2002
+ next(): number;
2003
+ /** Uniform integer in [0, maxExclusive). */
2004
+ int(maxExclusive: number): number;
2005
+ /** RFC-4122 v4-shaped UUID. */
2006
+ uuid(): string;
2007
+ /** n lowercase hex characters. */
2008
+ hex(n: number): string;
2009
+ }
2010
+ /** Create a random source. With a seed the sequence is fully deterministic. */
2011
+ declare function createRng(seed?: number | string): Rng;
2012
+
2013
+ declare const StepSchema: z.ZodObject<{
2014
+ event: z.ZodOptional<z.ZodEnum<{
2015
+ TEST: "TEST";
2016
+ INITIAL_PURCHASE: "INITIAL_PURCHASE";
2017
+ RENEWAL: "RENEWAL";
2018
+ CANCELLATION: "CANCELLATION";
2019
+ UNCANCELLATION: "UNCANCELLATION";
2020
+ BILLING_ISSUE: "BILLING_ISSUE";
2021
+ EXPIRATION: "EXPIRATION";
2022
+ }>>;
2023
+ advance: z.ZodOptional<z.ZodString>;
2024
+ set: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>>>;
2025
+ expect: z.ZodOptional<z.ZodObject<{
2026
+ response_status: z.ZodInt;
2027
+ }, z.core.$strict>>;
2028
+ }, z.core.$strict>;
2029
+ declare const ScenarioSchema: z.ZodObject<{
2030
+ name: z.ZodString;
2031
+ description: z.ZodOptional<z.ZodString>;
2032
+ subscriber: z.ZodDefault<z.ZodObject<{
2033
+ app_user_id: z.ZodDefault<z.ZodString>;
2034
+ product_id: z.ZodDefault<z.ZodString>;
2035
+ period: z.ZodDefault<z.ZodString>;
2036
+ trial: z.ZodOptional<z.ZodString>;
2037
+ grace_period: z.ZodDefault<z.ZodString>;
2038
+ store: z.ZodDefault<z.ZodEnum<{
2039
+ app_store: "app_store";
2040
+ }>>;
2041
+ environment: z.ZodDefault<z.ZodEnum<{
2042
+ SANDBOX: "SANDBOX";
2043
+ PRODUCTION: "PRODUCTION";
2044
+ }>>;
2045
+ }, z.core.$strict>>;
2046
+ steps: z.ZodArray<z.ZodObject<{
2047
+ event: z.ZodOptional<z.ZodEnum<{
2048
+ TEST: "TEST";
2049
+ INITIAL_PURCHASE: "INITIAL_PURCHASE";
2050
+ RENEWAL: "RENEWAL";
2051
+ CANCELLATION: "CANCELLATION";
2052
+ UNCANCELLATION: "UNCANCELLATION";
2053
+ BILLING_ISSUE: "BILLING_ISSUE";
2054
+ EXPIRATION: "EXPIRATION";
2055
+ }>>;
2056
+ advance: z.ZodOptional<z.ZodString>;
2057
+ set: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>>>;
2058
+ expect: z.ZodOptional<z.ZodObject<{
2059
+ response_status: z.ZodInt;
2060
+ }, z.core.$strict>>;
2061
+ }, z.core.$strict>>;
2062
+ expect: z.ZodOptional<z.ZodObject<{
2063
+ all_responses_status: z.ZodOptional<z.ZodInt>;
2064
+ max_response_ms: z.ZodOptional<z.ZodInt>;
2065
+ }, z.core.$strict>>;
2066
+ }, z.core.$strict>;
2067
+ type Scenario = z.infer<typeof ScenarioSchema>;
2068
+ type Step = z.infer<typeof StepSchema>;
2069
+ declare class ScenarioValidationError extends RccError {
2070
+ readonly file: string;
2071
+ readonly line: number;
2072
+ readonly column: number;
2073
+ readonly path: string;
2074
+ constructor(opts: {
2075
+ file: string;
2076
+ line: number;
2077
+ column: number;
2078
+ path: string;
2079
+ detail: string;
2080
+ hint?: string;
2081
+ });
2082
+ }
2083
+ interface StepPosition {
2084
+ line: number;
2085
+ column: number;
2086
+ }
2087
+ interface LoadedScenario {
2088
+ scenario: Scenario;
2089
+ file: string;
2090
+ /** 1-based position of every step node, for mid-run error messages. */
2091
+ stepPositions: StepPosition[];
2092
+ }
2093
+ /** Parse scenario YAML text. */
2094
+ declare function parseScenario(text: string, file?: string): Scenario;
2095
+ /** Read and validate a scenario file from disk, keeping step positions. */
2096
+ declare function loadScenarioWithSource(file: string): LoadedScenario;
2097
+ /** Read and validate a scenario file from disk. */
2098
+ declare function loadScenario(file: string): Scenario;
2099
+
2100
+ declare const STATES: readonly ["none", "trial", "active", "cancelled_pending_expiration", "billing_issue", "expired"];
2101
+ type SubscriptionState = (typeof STATES)[number];
2102
+ /** Extra facts the pure transition needs. */
2103
+ interface TransitionContext {
2104
+ /** Does the product start with a free trial? (INITIAL_PURCHASE from `none`) */
2105
+ hasTrial: boolean;
2106
+ /** State to return to on UNCANCELLATION (the state before the CANCELLATION). */
2107
+ resumeState: "trial" | "active";
2108
+ }
2109
+ declare class IllegalTransitionError extends RccError {
2110
+ readonly state: SubscriptionState;
2111
+ readonly event: EventType;
2112
+ readonly legal: readonly EventType[];
2113
+ constructor(state: SubscriptionState, event: EventType);
2114
+ }
2115
+ /** Events that may legally follow `state`, in display order. */
2116
+ declare function legalEvents(state: SubscriptionState): EventType[];
2117
+ /** Pure transition. Throws IllegalTransitionError; never returns an incoherent state. */
2118
+ declare function transition(state: SubscriptionState, event: EventType, ctx: TransitionContext): SubscriptionState;
2119
+
2120
+ interface SubscriberOptions {
2121
+ /** "auto" → `$RCAnonymousID:<32 hex>` from the RNG. */
2122
+ appUserId?: string | undefined;
2123
+ productId: string;
2124
+ period: string | Duration;
2125
+ /** Free-trial length; omit for no trial. */
2126
+ trial?: string | Duration | undefined;
2127
+ /** Billing-retry grace period (default P16D). */
2128
+ gracePeriod?: string | Duration | undefined;
2129
+ store?: CliStore | undefined;
2130
+ environment?: Environment | undefined;
2131
+ price?: number | undefined;
2132
+ currency?: string | undefined;
2133
+ countryCode?: string | undefined;
2134
+ entitlementIds?: string[] | undefined;
2135
+ appId?: string | undefined;
2136
+ }
2137
+ interface SubscriberDeps {
2138
+ clock: VirtualClock;
2139
+ rng: Rng;
2140
+ }
2141
+ declare class PrematureEventError extends RccError {
2142
+ constructor(event: EventType, nowMs: number, dueMs: number);
2143
+ }
2144
+ /**
2145
+ * Simulates one subscriber. Owns the state machine, the identity, and the current billing period,
2146
+ * and turns event types into schema-valid RevenueCat payloads.
2147
+ */
2148
+ declare class Subscriber {
2149
+ private readonly deps;
2150
+ readonly history: Event[];
2151
+ private _state;
2152
+ private resumeState;
2153
+ private readonly period;
2154
+ private readonly trial;
2155
+ private readonly grace;
2156
+ private readonly store;
2157
+ private readonly environment;
2158
+ private readonly price;
2159
+ private readonly currency;
2160
+ private readonly countryCode;
2161
+ private readonly entitlementIds;
2162
+ private readonly productId;
2163
+ private readonly appUserId;
2164
+ private readonly appId;
2165
+ private originalTransactionId;
2166
+ private transactionId;
2167
+ private purchasedAtMs;
2168
+ private expirationAtMs;
2169
+ private periodType;
2170
+ private gracePeriodExpirationAtMs;
2171
+ constructor(opts: SubscriberOptions, deps: SubscriberDeps);
2172
+ get state(): SubscriptionState;
2173
+ /** Current period end (ms) or undefined before the first purchase. */
2174
+ get expiresAt(): number | undefined;
2175
+ /** Emit an event: check legality, time guards, build + validate payload, commit state. */
2176
+ emit(type: EventType, overrides?: Record<string, unknown>): Event;
2177
+ private newTransactionId;
2178
+ private draftFor;
2179
+ private buildPayload;
2180
+ }
2181
+
2182
+ interface Simulation {
2183
+ clock: VirtualClock;
2184
+ subscriber: Subscriber;
2185
+ }
2186
+ /** Create a clock + subscriber pair. Seeded → fixed epoch; unseeded → `startAt` (default now). */
2187
+ declare function createSimulation(opts: SubscriberOptions, seed: number | string | undefined, startAt?: number): Simulation;
2188
+ interface EventResult {
2189
+ /** 0-based index of the step in `scenario.steps`. */
2190
+ step: number;
2191
+ type: EventType;
2192
+ virtualTime: string;
2193
+ status: number | null;
2194
+ latencyMs: number | null;
2195
+ event: Event;
2196
+ }
2197
+ interface ExpectationResult {
2198
+ scope: "step" | "scenario";
2199
+ step: number | null;
2200
+ rule: string;
2201
+ expected: string;
2202
+ actual: string;
2203
+ ok: boolean;
2204
+ }
2205
+ interface RunResult {
2206
+ scenario: string;
2207
+ seed: number | string | null;
2208
+ startedAt: string;
2209
+ endedAt: string;
2210
+ virtualSpanMs: number;
2211
+ events: EventResult[];
2212
+ expectations: ExpectationResult[];
2213
+ ok: boolean;
2214
+ }
2215
+ interface RunOptions {
2216
+ to: string;
2217
+ authHeader?: string | undefined;
2218
+ speed: "instant" | number;
2219
+ seed?: number | string | undefined;
2220
+ dryRun?: boolean | undefined;
2221
+ source?: Pick<LoadedScenario, "file" | "stepPositions"> | undefined;
2222
+ onEvent?: ((result: EventResult, envelope: WebhookEnvelope) => void) | undefined;
2223
+ }
2224
+ /** Execute a scenario: advance the virtual clock, emit coherent events, deliver them, collect results. */
2225
+ declare function runScenario(scenario: Scenario, opts: RunOptions): Promise<RunResult>;
2226
+
2227
+ interface PostResult {
2228
+ status: number;
2229
+ latencyMs: number;
2230
+ body: string;
2231
+ }
2232
+ interface PostOptions {
2233
+ authHeader?: string | undefined;
2234
+ /** Abort after this many ms (default 30 000). */
2235
+ timeoutMs?: number | undefined;
2236
+ }
2237
+ /** POST an envelope as JSON. Network failures become an actionable RccError; HTTP status is returned as-is. */
2238
+ declare function postEvent(url: string, envelope: WebhookEnvelope, opts?: PostOptions): Promise<PostResult>;
2239
+
2240
+ declare const ConfigSchema: z.ZodObject<{
2241
+ to: z.ZodOptional<z.ZodURL>;
2242
+ authHeader: z.ZodOptional<z.ZodString>;
2243
+ store: z.ZodOptional<z.ZodEnum<{
2244
+ app_store: "app_store";
2245
+ }>>;
2246
+ environment: z.ZodOptional<z.ZodEnum<{
2247
+ SANDBOX: "SANDBOX";
2248
+ PRODUCTION: "PRODUCTION";
2249
+ }>>;
2250
+ }, z.core.$strict>;
2251
+ type Config = z.infer<typeof ConfigSchema>;
2252
+ /** Read `reveclicat.config.json` from `dir` (default cwd). Missing file → {}. Invalid → RccError. */
2253
+ declare function loadConfig(dir?: string): Config;
2254
+
2255
+ export { type BillingIssueEvent, BillingIssueEventSchema, CANCEL_REASONS, CLI_STORES, CLI_STORE_TO_STORE, type CancelReason, type CancellationEvent, CancellationEventSchema, type CliStore, type Config, ConfigSchema, type Duration, ENVIRONMENTS, EVENT_SCHEMAS, EVENT_TYPES, EXPIRATION_REASONS, type EnvelopeClassification, type Environment, type Event, type EventResult, EventSchema, type EventType, ExperimentSchema, type ExpirationEvent, ExpirationEventSchema, type ExpirationReason, IllegalTransitionError, type InitialPurchaseEvent, InitialPurchaseEventSchema, type LifecycleEvent, type LoadedScenario, PERIOD_TYPES, type PeriodType, PrematureEventError, RccError, type RenewalEvent, RenewalEventSchema, type Rng, type RunOptions, type RunResult, STORES, type Scenario, ScenarioSchema, ScenarioValidationError, type Step, type Store, Subscriber, SubscriberAttributeSchema, type SubscriberOptions, type SubscriptionState, type TestEvent, TestEventSchema, type UncancellationEvent, UncancellationEventSchema, type UnknownEvent, UnknownEventSchema, UnknownWebhookEnvelopeSchema, VirtualClock, type WebhookEnvelope, WebhookEnvelopeSchema, addDuration, buildProgram, classifyEnvelope, createRng, createSimulation, formatDuration, legalEvents, loadConfig, loadScenario, loadScenarioWithSource, parseDuration, parseScenario, postEvent, runScenario, transition };