@modainteract/moda-interact-shared 5.9.0 → 5.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,8 +1,8 @@
1
1
  import { z } from 'zod';
2
- import { g as CommerceToolInputs } from '../../response-DD6HXT8s.js';
3
- import { C as CommerceModelInvoker } from '../../types-BXeYmpeg.js';
2
+ import { g as CommerceToolInputs } from '../../response-gHpvLkzy.js';
3
+ import { C as CommerceModelInvoker } from '../../types-CxiCD8Pw.js';
4
4
  import { S as StructuredLogger } from '../../types-B32wDMLO.js';
5
- import '../../product-context-qfk6k9uk.js';
5
+ import '../../product-context-D1Xfe1FX.js';
6
6
 
7
7
  declare const StageSchema: z.ZodEnum<{
8
8
  COMPLETE: "COMPLETE";
@@ -63,6 +63,55 @@ declare const InitialOutreachEvaluationInputSchema: z.ZodObject<{
63
63
  outputTokens: z.ZodNumber;
64
64
  }, z.core.$strict>;
65
65
  }, z.core.$strict>;
66
+ declare const OfferDecisionSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
67
+ kind: z.ZodLiteral<"NO_VERIFIED_OFFER">;
68
+ reasonCode: z.ZodString;
69
+ discoveryIncomplete: z.ZodBoolean;
70
+ }, z.core.$strict>, z.ZodObject<{
71
+ kind: z.ZodLiteral<"CHECKOUT_DISCOUNT">;
72
+ offerSet: z.ZodObject<{
73
+ schemaVersion: z.ZodLiteral<"moda.outreach.checkout-offers.v1">;
74
+ offers: z.ZodArray<z.ZodObject<{
75
+ offerId: z.ZodString;
76
+ providerDiscountId: z.ZodNullable<z.ZodString>;
77
+ method: z.ZodEnum<{
78
+ AUTOMATIC: "AUTOMATIC";
79
+ CODE: "CODE";
80
+ }>;
81
+ code: z.ZodNullable<z.ZodString>;
82
+ }, z.core.$strict>>;
83
+ }, z.core.$strict>;
84
+ members: z.ZodArray<z.ZodObject<{
85
+ offerId: z.ZodString;
86
+ providerDiscountId: z.ZodString;
87
+ method: z.ZodEnum<{
88
+ AUTOMATIC: "AUTOMATIC";
89
+ CODE: "CODE";
90
+ }>;
91
+ code: z.ZodNullable<z.ZodString>;
92
+ description: z.ZodString;
93
+ eligibility: z.ZodObject<{
94
+ offerId: z.ZodString;
95
+ verdict: z.ZodEnum<{
96
+ SUPPORTED: "SUPPORTED";
97
+ NOT_APPLICABLE: "NOT_APPLICABLE";
98
+ UNVERIFIABLE: "UNVERIFIABLE";
99
+ }>;
100
+ eligibleLineKeys: z.ZodArray<z.ZodString>;
101
+ reasonCodes: z.ZodArray<z.ZodString>;
102
+ }, z.core.$strict>;
103
+ }, z.core.$strict>>;
104
+ group: z.ZodObject<{
105
+ verdict: z.ZodEnum<{
106
+ SUPPORTED: "SUPPORTED";
107
+ UNVERIFIABLE: "UNVERIFIABLE";
108
+ INCOMPATIBLE: "INCOMPATIBLE";
109
+ }>;
110
+ offerIds: z.ZodArray<z.ZodString>;
111
+ reasonCodes: z.ZodArray<z.ZodString>;
112
+ }, z.core.$strict>;
113
+ discoveryIncomplete: z.ZodBoolean;
114
+ }, z.core.$strict>], "kind">;
66
115
  declare const InitialOutreachEvaluationResultSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
67
116
  kind: z.ZodLiteral<"ready">;
68
117
  schemaVersion: z.ZodLiteral<1>;
@@ -77,6 +126,18 @@ declare const InitialOutreachEvaluationResultSchema: z.ZodDiscriminatedUnion<[z.
77
126
  quantity: z.ZodNumber;
78
127
  checkoutUnitPrice: z.ZodNullable<z.ZodString>;
79
128
  currentProduct: z.ZodObject<{
129
+ stock: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
130
+ status: z.ZodLiteral<"KNOWN">;
131
+ quantity: z.ZodNumber;
132
+ scope: z.ZodEnum<{
133
+ PRODUCT: "PRODUCT";
134
+ VARIANT: "VARIANT";
135
+ }>;
136
+ }, z.core.$strict>, z.ZodObject<{
137
+ status: z.ZodLiteral<"NOT_TRACKED">;
138
+ }, z.core.$strict>, z.ZodObject<{
139
+ status: z.ZodLiteral<"UNAVAILABLE">;
140
+ }, z.core.$strict>], "status">>;
80
141
  description: z.ZodOptional<z.ZodPreprocess<z.ZodObject<{
81
142
  status: z.ZodEnum<{
82
143
  AVAILABLE: "AVAILABLE";
@@ -282,6 +343,7 @@ declare const InitialOutreachEvaluationResultSchema: z.ZodDiscriminatedUnion<[z.
282
343
  }, z.core.$strict>], "kind">;
283
344
  type InitialOutreachEvaluationInput = z.infer<typeof InitialOutreachEvaluationInputSchema>;
284
345
  type InitialOutreachEvaluationResult = z.infer<typeof InitialOutreachEvaluationResultSchema>;
346
+ type OfferDecision = z.infer<typeof OfferDecisionSchema>;
285
347
  type CallContext = {
286
348
  runId: string;
287
349
  shopId: string;
@@ -314,6 +376,108 @@ interface InitialOutreachPorts {
314
376
  }): void;
315
377
  }
316
378
 
379
+ declare const FrozenBindingsSchema: z.ZodObject<{
380
+ schemaVersion: z.ZodOptional<z.ZodLiteral<1>>;
381
+ promotionTarget: z.ZodOptional<z.ZodEnum<{
382
+ CHECKOUT: "CHECKOUT";
383
+ ALTERNATIVE_PRODUCT: "ALTERNATIVE_PRODUCT";
384
+ }>>;
385
+ headerMediaRole: z.ZodOptional<z.ZodEnum<{
386
+ LOGO: "LOGO";
387
+ SQUARE_LOGO: "SQUARE_LOGO";
388
+ COVER_IMAGE: "COVER_IMAGE";
389
+ CHECKOUT_PRODUCT: "CHECKOUT_PRODUCT";
390
+ }>>;
391
+ header: z.ZodOptional<z.ZodArray<z.ZodObject<{
392
+ position: z.ZodNumber;
393
+ variable: z.ZodEnum<{
394
+ "customer.firstName": "customer.firstName";
395
+ "shop.name": "shop.name";
396
+ "shop.categoryName": "shop.categoryName";
397
+ "checkout.url": "checkout.url";
398
+ "checkout.itemsSummary": "checkout.itemsSummary";
399
+ "offer.code": "offer.code";
400
+ "offer.codes": "offer.codes";
401
+ "offer.description": "offer.description";
402
+ "promotion.productName": "promotion.productName";
403
+ "promotion.productUrl": "promotion.productUrl";
404
+ "promotion.offerDescription": "promotion.offerDescription";
405
+ "promotion.code": "promotion.code";
406
+ "shopBrand.brandName": "shopBrand.brandName";
407
+ "shopBrand.logoAltText": "shopBrand.logoAltText";
408
+ "shopBrand.logoWidth": "shopBrand.logoWidth";
409
+ "shopBrand.logoHeight": "shopBrand.logoHeight";
410
+ "shopBrand.squareLogoAltText": "shopBrand.squareLogoAltText";
411
+ "shopBrand.logoUrl": "shopBrand.logoUrl";
412
+ "shopBrand.squareLogoUrl": "shopBrand.squareLogoUrl";
413
+ "shopBrand.coverImageUrl": "shopBrand.coverImageUrl";
414
+ }>;
415
+ }, z.core.$strict>>>;
416
+ body: z.ZodArray<z.ZodObject<{
417
+ position: z.ZodNumber;
418
+ variable: z.ZodEnum<{
419
+ "customer.firstName": "customer.firstName";
420
+ "shop.name": "shop.name";
421
+ "shop.categoryName": "shop.categoryName";
422
+ "checkout.url": "checkout.url";
423
+ "checkout.itemsSummary": "checkout.itemsSummary";
424
+ "offer.code": "offer.code";
425
+ "offer.codes": "offer.codes";
426
+ "offer.description": "offer.description";
427
+ "promotion.productName": "promotion.productName";
428
+ "promotion.productUrl": "promotion.productUrl";
429
+ "promotion.offerDescription": "promotion.offerDescription";
430
+ "promotion.code": "promotion.code";
431
+ "shopBrand.brandName": "shopBrand.brandName";
432
+ "shopBrand.logoAltText": "shopBrand.logoAltText";
433
+ "shopBrand.logoWidth": "shopBrand.logoWidth";
434
+ "shopBrand.logoHeight": "shopBrand.logoHeight";
435
+ "shopBrand.squareLogoAltText": "shopBrand.squareLogoAltText";
436
+ "shopBrand.logoUrl": "shopBrand.logoUrl";
437
+ "shopBrand.squareLogoUrl": "shopBrand.squareLogoUrl";
438
+ "shopBrand.coverImageUrl": "shopBrand.coverImageUrl";
439
+ }>;
440
+ }, z.core.$strict>>;
441
+ buttons: z.ZodArray<z.ZodObject<{
442
+ index: z.ZodNumber;
443
+ subType: z.ZodLiteral<"url">;
444
+ variable: z.ZodEnum<{
445
+ "checkout.url": "checkout.url";
446
+ "promotion.productUrl": "promotion.productUrl";
447
+ }>;
448
+ }, z.core.$strict>>;
449
+ }, z.core.$strict>;
450
+ declare const ComponentSchema: z.ZodUnion<readonly [z.ZodObject<{
451
+ type: z.ZodLiteral<"HEADER">;
452
+ format: z.ZodLiteral<"TEXT">;
453
+ text: z.ZodString;
454
+ example: z.ZodOptional<z.ZodObject<{
455
+ header_text: z.ZodArray<z.ZodString>;
456
+ }, z.core.$strict>>;
457
+ }, z.core.$strict>, z.ZodObject<{
458
+ type: z.ZodLiteral<"HEADER">;
459
+ format: z.ZodLiteral<"IMAGE">;
460
+ example: z.ZodOptional<z.ZodObject<{
461
+ header_handle: z.ZodArray<z.ZodString>;
462
+ }, z.core.$strict>>;
463
+ }, z.core.$strict>, z.ZodObject<{
464
+ type: z.ZodLiteral<"BODY">;
465
+ text: z.ZodString;
466
+ example: z.ZodOptional<z.ZodObject<{
467
+ body_text: z.ZodArray<z.ZodArray<z.ZodString>>;
468
+ }, z.core.$strict>>;
469
+ }, z.core.$strict>, z.ZodObject<{
470
+ type: z.ZodLiteral<"FOOTER">;
471
+ text: z.ZodString;
472
+ }, z.core.$strict>, z.ZodObject<{
473
+ type: z.ZodLiteral<"BUTTONS">;
474
+ buttons: z.ZodArray<z.ZodObject<{
475
+ type: z.ZodLiteral<"URL">;
476
+ text: z.ZodString;
477
+ url: z.ZodString;
478
+ example: z.ZodOptional<z.ZodArray<z.ZodString>>;
479
+ }, z.core.$strict>>;
480
+ }, z.core.$strict>]>;
317
481
  declare const AssignedVariantSchema: z.ZodObject<{
318
482
  id: z.ZodString;
319
483
  shopId: z.ZodString;
@@ -539,6 +703,18 @@ declare const InitialOutreachRenderInputSchema: z.ZodObject<{
539
703
  quantity: z.ZodNumber;
540
704
  checkoutUnitPrice: z.ZodNullable<z.ZodString>;
541
705
  currentProduct: z.ZodObject<{
706
+ stock: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
707
+ status: z.ZodLiteral<"KNOWN">;
708
+ quantity: z.ZodNumber;
709
+ scope: z.ZodEnum<{
710
+ PRODUCT: "PRODUCT";
711
+ VARIANT: "VARIANT";
712
+ }>;
713
+ }, z.core.$strict>, z.ZodObject<{
714
+ status: z.ZodLiteral<"NOT_TRACKED">;
715
+ }, z.core.$strict>, z.ZodObject<{
716
+ status: z.ZodLiteral<"UNAVAILABLE">;
717
+ }, z.core.$strict>], "status">>;
542
718
  description: z.ZodOptional<z.ZodPreprocess<z.ZodObject<{
543
719
  status: z.ZodEnum<{
544
720
  AVAILABLE: "AVAILABLE";
@@ -1147,6 +1323,531 @@ declare const InitialOutreachRenderResultSchema: z.ZodDiscriminatedUnion<[z.ZodO
1147
1323
  }, z.core.$strict>], "kind">;
1148
1324
  type InitialOutreachRenderInput = z.infer<typeof InitialOutreachRenderInputSchema>;
1149
1325
  type InitialOutreachRenderResult = z.infer<typeof InitialOutreachRenderResultSchema>;
1326
+ declare const StudioOutreachTemplateSchema: z.ZodObject<{
1327
+ templateId: z.ZodString;
1328
+ localeId: z.ZodString;
1329
+ languageTag: z.ZodString;
1330
+ components: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
1331
+ type: z.ZodLiteral<"HEADER">;
1332
+ format: z.ZodLiteral<"TEXT">;
1333
+ text: z.ZodString;
1334
+ example: z.ZodOptional<z.ZodObject<{
1335
+ header_text: z.ZodArray<z.ZodString>;
1336
+ }, z.core.$strict>>;
1337
+ }, z.core.$strict>, z.ZodObject<{
1338
+ type: z.ZodLiteral<"HEADER">;
1339
+ format: z.ZodLiteral<"IMAGE">;
1340
+ example: z.ZodOptional<z.ZodObject<{
1341
+ header_handle: z.ZodArray<z.ZodString>;
1342
+ }, z.core.$strict>>;
1343
+ }, z.core.$strict>, z.ZodObject<{
1344
+ type: z.ZodLiteral<"BODY">;
1345
+ text: z.ZodString;
1346
+ example: z.ZodOptional<z.ZodObject<{
1347
+ body_text: z.ZodArray<z.ZodArray<z.ZodString>>;
1348
+ }, z.core.$strict>>;
1349
+ }, z.core.$strict>, z.ZodObject<{
1350
+ type: z.ZodLiteral<"FOOTER">;
1351
+ text: z.ZodString;
1352
+ }, z.core.$strict>, z.ZodObject<{
1353
+ type: z.ZodLiteral<"BUTTONS">;
1354
+ buttons: z.ZodArray<z.ZodObject<{
1355
+ type: z.ZodLiteral<"URL">;
1356
+ text: z.ZodString;
1357
+ url: z.ZodString;
1358
+ example: z.ZodOptional<z.ZodArray<z.ZodString>>;
1359
+ }, z.core.$strict>>;
1360
+ }, z.core.$strict>]>>;
1361
+ bindings: z.ZodObject<{
1362
+ schemaVersion: z.ZodOptional<z.ZodLiteral<1>>;
1363
+ promotionTarget: z.ZodOptional<z.ZodEnum<{
1364
+ CHECKOUT: "CHECKOUT";
1365
+ ALTERNATIVE_PRODUCT: "ALTERNATIVE_PRODUCT";
1366
+ }>>;
1367
+ headerMediaRole: z.ZodOptional<z.ZodEnum<{
1368
+ LOGO: "LOGO";
1369
+ SQUARE_LOGO: "SQUARE_LOGO";
1370
+ COVER_IMAGE: "COVER_IMAGE";
1371
+ CHECKOUT_PRODUCT: "CHECKOUT_PRODUCT";
1372
+ }>>;
1373
+ header: z.ZodOptional<z.ZodArray<z.ZodObject<{
1374
+ position: z.ZodNumber;
1375
+ variable: z.ZodEnum<{
1376
+ "customer.firstName": "customer.firstName";
1377
+ "shop.name": "shop.name";
1378
+ "shop.categoryName": "shop.categoryName";
1379
+ "checkout.url": "checkout.url";
1380
+ "checkout.itemsSummary": "checkout.itemsSummary";
1381
+ "offer.code": "offer.code";
1382
+ "offer.codes": "offer.codes";
1383
+ "offer.description": "offer.description";
1384
+ "promotion.productName": "promotion.productName";
1385
+ "promotion.productUrl": "promotion.productUrl";
1386
+ "promotion.offerDescription": "promotion.offerDescription";
1387
+ "promotion.code": "promotion.code";
1388
+ "shopBrand.brandName": "shopBrand.brandName";
1389
+ "shopBrand.logoAltText": "shopBrand.logoAltText";
1390
+ "shopBrand.logoWidth": "shopBrand.logoWidth";
1391
+ "shopBrand.logoHeight": "shopBrand.logoHeight";
1392
+ "shopBrand.squareLogoAltText": "shopBrand.squareLogoAltText";
1393
+ "shopBrand.logoUrl": "shopBrand.logoUrl";
1394
+ "shopBrand.squareLogoUrl": "shopBrand.squareLogoUrl";
1395
+ "shopBrand.coverImageUrl": "shopBrand.coverImageUrl";
1396
+ }>;
1397
+ }, z.core.$strict>>>;
1398
+ body: z.ZodArray<z.ZodObject<{
1399
+ position: z.ZodNumber;
1400
+ variable: z.ZodEnum<{
1401
+ "customer.firstName": "customer.firstName";
1402
+ "shop.name": "shop.name";
1403
+ "shop.categoryName": "shop.categoryName";
1404
+ "checkout.url": "checkout.url";
1405
+ "checkout.itemsSummary": "checkout.itemsSummary";
1406
+ "offer.code": "offer.code";
1407
+ "offer.codes": "offer.codes";
1408
+ "offer.description": "offer.description";
1409
+ "promotion.productName": "promotion.productName";
1410
+ "promotion.productUrl": "promotion.productUrl";
1411
+ "promotion.offerDescription": "promotion.offerDescription";
1412
+ "promotion.code": "promotion.code";
1413
+ "shopBrand.brandName": "shopBrand.brandName";
1414
+ "shopBrand.logoAltText": "shopBrand.logoAltText";
1415
+ "shopBrand.logoWidth": "shopBrand.logoWidth";
1416
+ "shopBrand.logoHeight": "shopBrand.logoHeight";
1417
+ "shopBrand.squareLogoAltText": "shopBrand.squareLogoAltText";
1418
+ "shopBrand.logoUrl": "shopBrand.logoUrl";
1419
+ "shopBrand.squareLogoUrl": "shopBrand.squareLogoUrl";
1420
+ "shopBrand.coverImageUrl": "shopBrand.coverImageUrl";
1421
+ }>;
1422
+ }, z.core.$strict>>;
1423
+ buttons: z.ZodArray<z.ZodObject<{
1424
+ index: z.ZodNumber;
1425
+ subType: z.ZodLiteral<"url">;
1426
+ variable: z.ZodEnum<{
1427
+ "checkout.url": "checkout.url";
1428
+ "promotion.productUrl": "promotion.productUrl";
1429
+ }>;
1430
+ }, z.core.$strict>>;
1431
+ }, z.core.$strict>;
1432
+ }, z.core.$strict>;
1433
+ declare const StudioInitialOutreachRenderInputSchema: z.ZodObject<{
1434
+ variables: z.ZodObject<{
1435
+ shopName: z.ZodNullable<z.ZodString>;
1436
+ customerFirstName: z.ZodNullable<z.ZodString>;
1437
+ checkoutUrl: z.ZodString;
1438
+ shopCategory: z.ZodNullable<z.ZodString>;
1439
+ }, z.core.$strict>;
1440
+ schemaVersion: z.ZodLiteral<1>;
1441
+ evaluation: z.ZodObject<{
1442
+ kind: z.ZodLiteral<"ready">;
1443
+ schemaVersion: z.ZodLiteral<1>;
1444
+ runId: z.ZodString;
1445
+ shopId: z.ZodString;
1446
+ basketFingerprint: z.ZodString;
1447
+ evaluatedAt: z.ZodISODateTime;
1448
+ lines: z.ZodArray<z.ZodObject<{
1449
+ lineKey: z.ZodString;
1450
+ productId: z.ZodString;
1451
+ variantId: z.ZodNullable<z.ZodString>;
1452
+ quantity: z.ZodNumber;
1453
+ checkoutUnitPrice: z.ZodNullable<z.ZodString>;
1454
+ currentProduct: z.ZodObject<{
1455
+ stock: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
1456
+ status: z.ZodLiteral<"KNOWN">;
1457
+ quantity: z.ZodNumber;
1458
+ scope: z.ZodEnum<{
1459
+ PRODUCT: "PRODUCT";
1460
+ VARIANT: "VARIANT";
1461
+ }>;
1462
+ }, z.core.$strict>, z.ZodObject<{
1463
+ status: z.ZodLiteral<"NOT_TRACKED">;
1464
+ }, z.core.$strict>, z.ZodObject<{
1465
+ status: z.ZodLiteral<"UNAVAILABLE">;
1466
+ }, z.core.$strict>], "status">>;
1467
+ description: z.ZodOptional<z.ZodPreprocess<z.ZodObject<{
1468
+ status: z.ZodEnum<{
1469
+ AVAILABLE: "AVAILABLE";
1470
+ NOT_PROVIDED: "NOT_PROVIDED";
1471
+ PARTIAL: "PARTIAL";
1472
+ }>;
1473
+ text: z.ZodString;
1474
+ }, z.core.$strict>>>;
1475
+ attributes: z.ZodOptional<z.ZodPreprocess<z.ZodObject<{
1476
+ status: z.ZodEnum<{
1477
+ AVAILABLE: "AVAILABLE";
1478
+ NOT_PROVIDED: "NOT_PROVIDED";
1479
+ PARTIAL: "PARTIAL";
1480
+ }>;
1481
+ items: z.ZodArray<z.ZodObject<{
1482
+ name: z.ZodString;
1483
+ values: z.ZodArray<z.ZodString>;
1484
+ }, z.core.$strict>>;
1485
+ }, z.core.$strict>>>;
1486
+ options: z.ZodOptional<z.ZodPreprocess<z.ZodObject<{
1487
+ status: z.ZodEnum<{
1488
+ AVAILABLE: "AVAILABLE";
1489
+ NOT_PROVIDED: "NOT_PROVIDED";
1490
+ PARTIAL: "PARTIAL";
1491
+ }>;
1492
+ items: z.ZodArray<z.ZodObject<{
1493
+ name: z.ZodPipe<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>, z.ZodString>;
1494
+ values: z.ZodArray<z.ZodPipe<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>, z.ZodString>>;
1495
+ usedForVariants: z.ZodNullable<z.ZodBoolean>;
1496
+ }, z.core.$strict>>;
1497
+ }, z.core.$strict>>>;
1498
+ selectedOptions: z.ZodOptional<z.ZodPreprocess<z.ZodArray<z.ZodObject<{
1499
+ name: z.ZodPipe<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>, z.ZodString>;
1500
+ value: z.ZodPipe<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>, z.ZodString>;
1501
+ }, z.core.$strict>>>>;
1502
+ productId: z.ZodString;
1503
+ variantId: z.ZodNullable<z.ZodString>;
1504
+ title: z.ZodString;
1505
+ url: z.ZodNullable<z.ZodURL>;
1506
+ available: z.ZodNullable<z.ZodBoolean>;
1507
+ unitPrice: z.ZodNullable<z.ZodString>;
1508
+ currency: z.ZodNullable<z.ZodString>;
1509
+ productType: z.ZodNullable<z.ZodString>;
1510
+ vendor: z.ZodNullable<z.ZodString>;
1511
+ categories: z.ZodOptional<z.ZodArray<z.ZodString>>;
1512
+ categoryIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
1513
+ collectionIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
1514
+ imageUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1515
+ saleEvidence: z.ZodOptional<z.ZodNullable<z.ZodObject<{
1516
+ regularPrice: z.ZodNullable<z.ZodString>;
1517
+ salePrice: z.ZodNullable<z.ZodString>;
1518
+ observedAt: z.ZodISODateTime;
1519
+ }, z.core.$strict>>>;
1520
+ observedAt: z.ZodISODateTime;
1521
+ }, z.core.$strict>;
1522
+ comparison: z.ZodEnum<{
1523
+ EQUAL: "EQUAL";
1524
+ DIFFERENT: "DIFFERENT";
1525
+ INCOMPARABLE: "INCOMPARABLE";
1526
+ }>;
1527
+ }, z.core.$strict>>;
1528
+ currentMerchandiseSubtotal: z.ZodObject<{
1529
+ amountDecimal: z.ZodString;
1530
+ currency: z.ZodString;
1531
+ }, z.core.$strict>;
1532
+ offerDecision: z.ZodDiscriminatedUnion<[z.ZodObject<{
1533
+ kind: z.ZodLiteral<"NO_VERIFIED_OFFER">;
1534
+ reasonCode: z.ZodString;
1535
+ discoveryIncomplete: z.ZodBoolean;
1536
+ }, z.core.$strict>, z.ZodObject<{
1537
+ kind: z.ZodLiteral<"CHECKOUT_DISCOUNT">;
1538
+ offerSet: z.ZodObject<{
1539
+ schemaVersion: z.ZodLiteral<"moda.outreach.checkout-offers.v1">;
1540
+ offers: z.ZodArray<z.ZodObject<{
1541
+ offerId: z.ZodString;
1542
+ providerDiscountId: z.ZodNullable<z.ZodString>;
1543
+ method: z.ZodEnum<{
1544
+ AUTOMATIC: "AUTOMATIC";
1545
+ CODE: "CODE";
1546
+ }>;
1547
+ code: z.ZodNullable<z.ZodString>;
1548
+ }, z.core.$strict>>;
1549
+ }, z.core.$strict>;
1550
+ members: z.ZodArray<z.ZodObject<{
1551
+ offerId: z.ZodString;
1552
+ providerDiscountId: z.ZodString;
1553
+ method: z.ZodEnum<{
1554
+ AUTOMATIC: "AUTOMATIC";
1555
+ CODE: "CODE";
1556
+ }>;
1557
+ code: z.ZodNullable<z.ZodString>;
1558
+ description: z.ZodString;
1559
+ eligibility: z.ZodObject<{
1560
+ offerId: z.ZodString;
1561
+ verdict: z.ZodEnum<{
1562
+ SUPPORTED: "SUPPORTED";
1563
+ NOT_APPLICABLE: "NOT_APPLICABLE";
1564
+ UNVERIFIABLE: "UNVERIFIABLE";
1565
+ }>;
1566
+ eligibleLineKeys: z.ZodArray<z.ZodString>;
1567
+ reasonCodes: z.ZodArray<z.ZodString>;
1568
+ }, z.core.$strict>;
1569
+ }, z.core.$strict>>;
1570
+ group: z.ZodObject<{
1571
+ verdict: z.ZodEnum<{
1572
+ SUPPORTED: "SUPPORTED";
1573
+ UNVERIFIABLE: "UNVERIFIABLE";
1574
+ INCOMPATIBLE: "INCOMPATIBLE";
1575
+ }>;
1576
+ offerIds: z.ZodArray<z.ZodString>;
1577
+ reasonCodes: z.ZodArray<z.ZodString>;
1578
+ }, z.core.$strict>;
1579
+ discoveryIncomplete: z.ZodBoolean;
1580
+ }, z.core.$strict>], "kind">;
1581
+ toolActivity: z.ZodArray<z.ZodObject<{
1582
+ toolName: z.ZodString;
1583
+ modelStep: z.ZodNumber;
1584
+ attempt: z.ZodNumber;
1585
+ status: z.ZodEnum<{
1586
+ OK: "OK";
1587
+ ERROR: "ERROR";
1588
+ }>;
1589
+ durationMs: z.ZodNumber;
1590
+ errorCode: z.ZodNullable<z.ZodEnum<{
1591
+ DEADLINE: "DEADLINE";
1592
+ CANCELLED: "CANCELLED";
1593
+ DENIED: "DENIED";
1594
+ BUDGET_EXHAUSTED: "BUDGET_EXHAUSTED";
1595
+ INPUT_INVALID: "INPUT_INVALID";
1596
+ OUTSIDE_CHECKOUT: "OUTSIDE_CHECKOUT";
1597
+ PRODUCT_NOT_FOUND: "PRODUCT_NOT_FOUND";
1598
+ PRODUCT_UNAVAILABLE: "PRODUCT_UNAVAILABLE";
1599
+ IDENTITY_MISMATCH: "IDENTITY_MISMATCH";
1600
+ CURRENCY_MISMATCH: "CURRENCY_MISMATCH";
1601
+ PRICE_UNAVAILABLE: "PRICE_UNAVAILABLE";
1602
+ ARITHMETIC_UNSAFE: "ARITHMETIC_UNSAFE";
1603
+ PROVIDER_UNAVAILABLE: "PROVIDER_UNAVAILABLE";
1604
+ INVALID_RESULT: "INVALID_RESULT";
1605
+ CURRENT_FACTS_CHANGED: "CURRENT_FACTS_CHANGED";
1606
+ RESULT_TOO_LARGE: "RESULT_TOO_LARGE";
1607
+ }>>;
1608
+ }, z.core.$strict>>;
1609
+ }, z.core.$strict>;
1610
+ headerMedia: z.ZodNullable<z.ZodObject<{
1611
+ shopId: z.ZodString;
1612
+ role: z.ZodEnum<{
1613
+ LOGO: "LOGO";
1614
+ SQUARE_LOGO: "SQUARE_LOGO";
1615
+ COVER_IMAGE: "COVER_IMAGE";
1616
+ CHECKOUT_PRODUCT: "CHECKOUT_PRODUCT";
1617
+ }>;
1618
+ status: z.ZodLiteral<"READY">;
1619
+ kind: z.ZodLiteral<"R2_DERIVATIVE">;
1620
+ httpsUrl: z.ZodString;
1621
+ }, z.core.$strict>>;
1622
+ preparedBrand: z.ZodOptional<z.ZodNullable<z.ZodObject<{
1623
+ shopId: z.ZodString;
1624
+ brandName: z.ZodNullable<z.ZodString>;
1625
+ logoAltText: z.ZodNullable<z.ZodString>;
1626
+ logoWidth: z.ZodNullable<z.ZodNumber>;
1627
+ logoHeight: z.ZodNullable<z.ZodNumber>;
1628
+ squareLogoAltText: z.ZodNullable<z.ZodString>;
1629
+ }, z.core.$strict>>>;
1630
+ preparedBrandMedia: z.ZodOptional<z.ZodNullable<z.ZodObject<{
1631
+ logo: z.ZodNullable<z.ZodObject<{
1632
+ shopId: z.ZodString;
1633
+ role: z.ZodEnum<{
1634
+ LOGO: "LOGO";
1635
+ SQUARE_LOGO: "SQUARE_LOGO";
1636
+ COVER_IMAGE: "COVER_IMAGE";
1637
+ CHECKOUT_PRODUCT: "CHECKOUT_PRODUCT";
1638
+ }>;
1639
+ status: z.ZodLiteral<"READY">;
1640
+ kind: z.ZodLiteral<"R2_DERIVATIVE">;
1641
+ httpsUrl: z.ZodString;
1642
+ }, z.core.$strict>>;
1643
+ squareLogo: z.ZodNullable<z.ZodObject<{
1644
+ shopId: z.ZodString;
1645
+ role: z.ZodEnum<{
1646
+ LOGO: "LOGO";
1647
+ SQUARE_LOGO: "SQUARE_LOGO";
1648
+ COVER_IMAGE: "COVER_IMAGE";
1649
+ CHECKOUT_PRODUCT: "CHECKOUT_PRODUCT";
1650
+ }>;
1651
+ status: z.ZodLiteral<"READY">;
1652
+ kind: z.ZodLiteral<"R2_DERIVATIVE">;
1653
+ httpsUrl: z.ZodString;
1654
+ }, z.core.$strict>>;
1655
+ coverImage: z.ZodNullable<z.ZodObject<{
1656
+ shopId: z.ZodString;
1657
+ role: z.ZodEnum<{
1658
+ LOGO: "LOGO";
1659
+ SQUARE_LOGO: "SQUARE_LOGO";
1660
+ COVER_IMAGE: "COVER_IMAGE";
1661
+ CHECKOUT_PRODUCT: "CHECKOUT_PRODUCT";
1662
+ }>;
1663
+ status: z.ZodLiteral<"READY">;
1664
+ kind: z.ZodLiteral<"R2_DERIVATIVE">;
1665
+ httpsUrl: z.ZodString;
1666
+ }, z.core.$strict>>;
1667
+ }, z.core.$strict>>>;
1668
+ template: z.ZodObject<{
1669
+ templateId: z.ZodString;
1670
+ localeId: z.ZodString;
1671
+ languageTag: z.ZodString;
1672
+ components: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
1673
+ type: z.ZodLiteral<"HEADER">;
1674
+ format: z.ZodLiteral<"TEXT">;
1675
+ text: z.ZodString;
1676
+ example: z.ZodOptional<z.ZodObject<{
1677
+ header_text: z.ZodArray<z.ZodString>;
1678
+ }, z.core.$strict>>;
1679
+ }, z.core.$strict>, z.ZodObject<{
1680
+ type: z.ZodLiteral<"HEADER">;
1681
+ format: z.ZodLiteral<"IMAGE">;
1682
+ example: z.ZodOptional<z.ZodObject<{
1683
+ header_handle: z.ZodArray<z.ZodString>;
1684
+ }, z.core.$strict>>;
1685
+ }, z.core.$strict>, z.ZodObject<{
1686
+ type: z.ZodLiteral<"BODY">;
1687
+ text: z.ZodString;
1688
+ example: z.ZodOptional<z.ZodObject<{
1689
+ body_text: z.ZodArray<z.ZodArray<z.ZodString>>;
1690
+ }, z.core.$strict>>;
1691
+ }, z.core.$strict>, z.ZodObject<{
1692
+ type: z.ZodLiteral<"FOOTER">;
1693
+ text: z.ZodString;
1694
+ }, z.core.$strict>, z.ZodObject<{
1695
+ type: z.ZodLiteral<"BUTTONS">;
1696
+ buttons: z.ZodArray<z.ZodObject<{
1697
+ type: z.ZodLiteral<"URL">;
1698
+ text: z.ZodString;
1699
+ url: z.ZodString;
1700
+ example: z.ZodOptional<z.ZodArray<z.ZodString>>;
1701
+ }, z.core.$strict>>;
1702
+ }, z.core.$strict>]>>;
1703
+ bindings: z.ZodObject<{
1704
+ schemaVersion: z.ZodOptional<z.ZodLiteral<1>>;
1705
+ promotionTarget: z.ZodOptional<z.ZodEnum<{
1706
+ CHECKOUT: "CHECKOUT";
1707
+ ALTERNATIVE_PRODUCT: "ALTERNATIVE_PRODUCT";
1708
+ }>>;
1709
+ headerMediaRole: z.ZodOptional<z.ZodEnum<{
1710
+ LOGO: "LOGO";
1711
+ SQUARE_LOGO: "SQUARE_LOGO";
1712
+ COVER_IMAGE: "COVER_IMAGE";
1713
+ CHECKOUT_PRODUCT: "CHECKOUT_PRODUCT";
1714
+ }>>;
1715
+ header: z.ZodOptional<z.ZodArray<z.ZodObject<{
1716
+ position: z.ZodNumber;
1717
+ variable: z.ZodEnum<{
1718
+ "customer.firstName": "customer.firstName";
1719
+ "shop.name": "shop.name";
1720
+ "shop.categoryName": "shop.categoryName";
1721
+ "checkout.url": "checkout.url";
1722
+ "checkout.itemsSummary": "checkout.itemsSummary";
1723
+ "offer.code": "offer.code";
1724
+ "offer.codes": "offer.codes";
1725
+ "offer.description": "offer.description";
1726
+ "promotion.productName": "promotion.productName";
1727
+ "promotion.productUrl": "promotion.productUrl";
1728
+ "promotion.offerDescription": "promotion.offerDescription";
1729
+ "promotion.code": "promotion.code";
1730
+ "shopBrand.brandName": "shopBrand.brandName";
1731
+ "shopBrand.logoAltText": "shopBrand.logoAltText";
1732
+ "shopBrand.logoWidth": "shopBrand.logoWidth";
1733
+ "shopBrand.logoHeight": "shopBrand.logoHeight";
1734
+ "shopBrand.squareLogoAltText": "shopBrand.squareLogoAltText";
1735
+ "shopBrand.logoUrl": "shopBrand.logoUrl";
1736
+ "shopBrand.squareLogoUrl": "shopBrand.squareLogoUrl";
1737
+ "shopBrand.coverImageUrl": "shopBrand.coverImageUrl";
1738
+ }>;
1739
+ }, z.core.$strict>>>;
1740
+ body: z.ZodArray<z.ZodObject<{
1741
+ position: z.ZodNumber;
1742
+ variable: z.ZodEnum<{
1743
+ "customer.firstName": "customer.firstName";
1744
+ "shop.name": "shop.name";
1745
+ "shop.categoryName": "shop.categoryName";
1746
+ "checkout.url": "checkout.url";
1747
+ "checkout.itemsSummary": "checkout.itemsSummary";
1748
+ "offer.code": "offer.code";
1749
+ "offer.codes": "offer.codes";
1750
+ "offer.description": "offer.description";
1751
+ "promotion.productName": "promotion.productName";
1752
+ "promotion.productUrl": "promotion.productUrl";
1753
+ "promotion.offerDescription": "promotion.offerDescription";
1754
+ "promotion.code": "promotion.code";
1755
+ "shopBrand.brandName": "shopBrand.brandName";
1756
+ "shopBrand.logoAltText": "shopBrand.logoAltText";
1757
+ "shopBrand.logoWidth": "shopBrand.logoWidth";
1758
+ "shopBrand.logoHeight": "shopBrand.logoHeight";
1759
+ "shopBrand.squareLogoAltText": "shopBrand.squareLogoAltText";
1760
+ "shopBrand.logoUrl": "shopBrand.logoUrl";
1761
+ "shopBrand.squareLogoUrl": "shopBrand.squareLogoUrl";
1762
+ "shopBrand.coverImageUrl": "shopBrand.coverImageUrl";
1763
+ }>;
1764
+ }, z.core.$strict>>;
1765
+ buttons: z.ZodArray<z.ZodObject<{
1766
+ index: z.ZodNumber;
1767
+ subType: z.ZodLiteral<"url">;
1768
+ variable: z.ZodEnum<{
1769
+ "checkout.url": "checkout.url";
1770
+ "promotion.productUrl": "promotion.productUrl";
1771
+ }>;
1772
+ }, z.core.$strict>>;
1773
+ }, z.core.$strict>;
1774
+ }, z.core.$strict>;
1775
+ }, z.core.$strict>;
1776
+ declare const StudioInitialOutreachRenderResultSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
1777
+ kind: z.ZodLiteral<"ready">;
1778
+ renderedText: z.ZodString;
1779
+ parameters: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
1780
+ type: z.ZodLiteral<"header">;
1781
+ parameters: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
1782
+ type: z.ZodLiteral<"text">;
1783
+ text: z.ZodString;
1784
+ }, z.core.$strict>, z.ZodObject<{
1785
+ type: z.ZodLiteral<"image">;
1786
+ image: z.ZodObject<{
1787
+ link: z.ZodString;
1788
+ }, z.core.$strict>;
1789
+ }, z.core.$strict>]>>;
1790
+ }, z.core.$strict>, z.ZodObject<{
1791
+ type: z.ZodLiteral<"body">;
1792
+ parameters: z.ZodArray<z.ZodObject<{
1793
+ type: z.ZodLiteral<"text">;
1794
+ text: z.ZodString;
1795
+ }, z.core.$strict>>;
1796
+ }, z.core.$strict>, z.ZodObject<{
1797
+ type: z.ZodLiteral<"button">;
1798
+ sub_type: z.ZodLiteral<"url">;
1799
+ index: z.ZodString;
1800
+ parameters: z.ZodTuple<[z.ZodObject<{
1801
+ type: z.ZodLiteral<"text">;
1802
+ text: z.ZodString;
1803
+ }, z.core.$strict>], null>;
1804
+ }, z.core.$strict>]>>;
1805
+ headerPreview: z.ZodNullable<z.ZodObject<{
1806
+ shopId: z.ZodString;
1807
+ role: z.ZodEnum<{
1808
+ LOGO: "LOGO";
1809
+ SQUARE_LOGO: "SQUARE_LOGO";
1810
+ COVER_IMAGE: "COVER_IMAGE";
1811
+ CHECKOUT_PRODUCT: "CHECKOUT_PRODUCT";
1812
+ }>;
1813
+ status: z.ZodLiteral<"READY">;
1814
+ kind: z.ZodLiteral<"R2_DERIVATIVE">;
1815
+ httpsUrl: z.ZodString;
1816
+ }, z.core.$strict>>;
1817
+ templateId: z.ZodString;
1818
+ localeId: z.ZodString;
1819
+ templateValidation: z.ZodLiteral<"NOT_EVALUATED">;
1820
+ }, z.core.$strict>, z.ZodObject<{
1821
+ kind: z.ZodLiteral<"refused">;
1822
+ reasonCode: z.ZodEnum<{
1823
+ IDENTITY_MISMATCH: "IDENTITY_MISMATCH";
1824
+ PROVIDER_UNAVAILABLE: "PROVIDER_UNAVAILABLE";
1825
+ INVALID_REQUEST: "INVALID_REQUEST";
1826
+ INVALID_LANGUAGE: "INVALID_LANGUAGE";
1827
+ SHOP_UNAVAILABLE: "SHOP_UNAVAILABLE";
1828
+ SENDER_UNAVAILABLE: "SENDER_UNAVAILABLE";
1829
+ SENDER_MISMATCH: "SENDER_MISMATCH";
1830
+ NO_LANGUAGE: "NO_LANGUAGE";
1831
+ NO_APPROVED_ASSIGNMENT: "NO_APPROVED_ASSIGNMENT";
1832
+ LEGACY_ASSIGNMENT: "LEGACY_ASSIGNMENT";
1833
+ AMBIGUOUS_ASSIGNMENT: "AMBIGUOUS_ASSIGNMENT";
1834
+ REGISTRATION_UNAVAILABLE: "REGISTRATION_UNAVAILABLE";
1835
+ PROVIDER_DRIFT: "PROVIDER_DRIFT";
1836
+ DEFINITION_UNAVAILABLE: "DEFINITION_UNAVAILABLE";
1837
+ LOCALE_UNAVAILABLE: "LOCALE_UNAVAILABLE";
1838
+ BINDINGS_INVALID: "BINDINGS_INVALID";
1839
+ BINDING_FINGERPRINT_MISMATCH: "BINDING_FINGERPRINT_MISMATCH";
1840
+ BINDING_VALUE_UNAVAILABLE: "BINDING_VALUE_UNAVAILABLE";
1841
+ CHECKOUT_UNAVAILABLE: "CHECKOUT_UNAVAILABLE";
1842
+ CHECKOUT_UNTRUSTED: "CHECKOUT_UNTRUSTED";
1843
+ MEDIA_NOT_READY: "MEDIA_NOT_READY";
1844
+ PROMOTION_PRODUCT_URL_UNAVAILABLE: "PROMOTION_PRODUCT_URL_UNAVAILABLE";
1845
+ MESSAGE_TOO_LARGE: "MESSAGE_TOO_LARGE";
1846
+ }>;
1847
+ }, z.core.$strict>], "kind">;
1848
+ type StudioOutreachTemplate = z.infer<typeof StudioOutreachTemplateSchema>;
1849
+ type StudioInitialOutreachRenderInput = z.infer<typeof StudioInitialOutreachRenderInputSchema>;
1850
+ type StudioInitialOutreachRenderResult = z.infer<typeof StudioInitialOutreachRenderResultSchema>;
1150
1851
 
1151
1852
  /** One implementation for production and preview. Ports must authenticate every call. No retries. */
1152
1853
  declare function evaluateInitialOutreach(raw: InitialOutreachEvaluationInput, ports: InitialOutreachPorts): Promise<InitialOutreachEvaluationResult>;
@@ -1155,6 +1856,7 @@ declare const evaluateInitialOutreachPreview: typeof evaluateInitialOutreach;
1155
1856
  declare function fingerprintInitialOutreachBasket(raw: InitialOutreachEvaluationInput): string;
1156
1857
 
1157
1858
  declare function renderInitialOutreachPreview(raw: InitialOutreachRenderInput): InitialOutreachRenderResult;
1859
+ declare function renderStudioInitialOutreachPreview(raw: StudioInitialOutreachRenderInput): StudioInitialOutreachRenderResult;
1158
1860
 
1159
1861
  type RecoveryStage = "INITIAL" | "FOLLOW_UP";
1160
1862
  type VerifiedOfferPresentation = "NO_OFFER" | "CODE_OFFER" | "AUTOMATIC_OFFER";
@@ -1165,8 +1867,9 @@ type ShopSelectionRow = {
1165
1867
  defaultLanguageTag: string | null;
1166
1868
  };
1167
1869
  type AssignedVariantRow = z.infer<typeof AssignedVariantSchema>;
1168
- type TemplateUnavailableReason = "INVALID_REQUEST" | "INVALID_LANGUAGE" | "SHOP_UNAVAILABLE" | "SENDER_UNAVAILABLE" | "SENDER_MISMATCH" | "NO_LANGUAGE" | "NO_APPROVED_ASSIGNMENT" | "LEGACY_ASSIGNMENT" | "AMBIGUOUS_ASSIGNMENT" | "REGISTRATION_UNAVAILABLE" | "PROVIDER_UNAVAILABLE" | "PROVIDER_DRIFT" | "IDENTITY_MISMATCH" | "DEFINITION_UNAVAILABLE" | "LOCALE_UNAVAILABLE" | "BINDINGS_INVALID" | "BINDING_FINGERPRINT_MISMATCH" | "BINDING_VALUE_UNAVAILABLE" | "CHECKOUT_UNAVAILABLE" | "CHECKOUT_UNTRUSTED" | "MEDIA_NOT_READY" | "PROMOTION_PRODUCT_URL_UNAVAILABLE";
1870
+ type TemplateUnavailableReason = "MESSAGE_TOO_LARGE" | "INVALID_REQUEST" | "INVALID_LANGUAGE" | "SHOP_UNAVAILABLE" | "SENDER_UNAVAILABLE" | "SENDER_MISMATCH" | "NO_LANGUAGE" | "NO_APPROVED_ASSIGNMENT" | "LEGACY_ASSIGNMENT" | "AMBIGUOUS_ASSIGNMENT" | "REGISTRATION_UNAVAILABLE" | "PROVIDER_UNAVAILABLE" | "PROVIDER_DRIFT" | "IDENTITY_MISMATCH" | "DEFINITION_UNAVAILABLE" | "LOCALE_UNAVAILABLE" | "BINDINGS_INVALID" | "BINDING_FINGERPRINT_MISMATCH" | "BINDING_VALUE_UNAVAILABLE" | "CHECKOUT_UNAVAILABLE" | "CHECKOUT_UNTRUSTED" | "MEDIA_NOT_READY" | "PROMOTION_PRODUCT_URL_UNAVAILABLE";
1169
1871
 
1872
+ declare function purposeFor(stage: RecoveryStage, offer: VerifiedOfferPresentation): "INITIAL_NO_OFFER" | "INITIAL_CODE_OFFER" | "INITIAL_AUTOMATIC_OFFER" | "FOLLOW_UP_NO_OFFER" | "FOLLOW_UP_CODE_OFFER" | "FOLLOW_UP_AUTOMATIC_OFFER";
1170
1873
  type SelectedAssignment = Readonly<{
1171
1874
  variant: AssignedVariantRow;
1172
1875
  canonicalLanguageTag: string;
@@ -1198,4 +1901,14 @@ declare function selectRecoveryAssignment(input: {
1198
1901
  logger: Pick<StructuredLogger, "warn">;
1199
1902
  }): AssignmentSelection;
1200
1903
 
1201
- export { type InitialOutreachEvaluationInput, InitialOutreachEvaluationInputSchema, type InitialOutreachEvaluationResult, InitialOutreachEvaluationResultSchema, type InitialOutreachPorts, type InitialOutreachRenderInput, InitialOutreachRenderInputSchema, type InitialOutreachRenderResult, InitialOutreachRenderResultSchema, type InitialOutreachToolCall, type PreparedOutreachBrand, type PreparedOutreachBrandMedia, type PreparedOutreachBrandMediaItem, PreparedOutreachBrandMediaItemSchema, PreparedOutreachBrandMediaSchema, PreparedOutreachBrandSchema, evaluateInitialOutreach, evaluateInitialOutreachPreview, fingerprintInitialOutreachBasket, renderInitialOutreachPreview, selectRecoveryAssignment };
1904
+ type CheckoutMember = Extract<OfferDecision, {
1905
+ kind: 'CHECKOUT_DISCOUNT';
1906
+ }>['members'][number];
1907
+ type SendableOutreachOffer = Readonly<{
1908
+ presentation: VerifiedOfferPresentation;
1909
+ members: readonly CheckoutMember[];
1910
+ }>;
1911
+ /** Preserve Background's largest-method-group selection and stable first-method tie. */
1912
+ declare function selectSendableOutreachOffer(decision: OfferDecision): SendableOutreachOffer;
1913
+
1914
+ export { ComponentSchema, FrozenBindingsSchema, type InitialOutreachEvaluationInput, InitialOutreachEvaluationInputSchema, type InitialOutreachEvaluationResult, InitialOutreachEvaluationResultSchema, type InitialOutreachPorts, type InitialOutreachRenderInput, InitialOutreachRenderInputSchema, type InitialOutreachRenderResult, InitialOutreachRenderResultSchema, type InitialOutreachToolCall, type PreparedOutreachBrand, type PreparedOutreachBrandMedia, type PreparedOutreachBrandMediaItem, PreparedOutreachBrandMediaItemSchema, PreparedOutreachBrandMediaSchema, PreparedOutreachBrandSchema, type SendableOutreachOffer, type StudioInitialOutreachRenderInput, StudioInitialOutreachRenderInputSchema, type StudioInitialOutreachRenderResult, StudioInitialOutreachRenderResultSchema, type StudioOutreachTemplate, StudioOutreachTemplateSchema, evaluateInitialOutreach, evaluateInitialOutreachPreview, fingerprintInitialOutreachBasket, purposeFor, renderInitialOutreachPreview, renderStudioInitialOutreachPreview, selectRecoveryAssignment, selectSendableOutreachOffer };