@cimplify/sdk 0.103.0 → 0.104.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/dist/advanced.d.mts +3 -3
  2. package/dist/advanced.d.ts +3 -3
  3. package/dist/advanced.js +22 -22
  4. package/dist/advanced.mjs +3 -3
  5. package/dist/{chunk-C2JSNJUC.mjs → chunk-2WPVUIHX.mjs} +52 -11
  6. package/dist/{chunk-JG5CQNCB.js → chunk-4BKOKHE3.js} +4 -0
  7. package/dist/{chunk-R6OLQ33I.js → chunk-5BDYDZ4U.js} +239 -87
  8. package/dist/{chunk-H7ACMHM3.mjs → chunk-5RT4HYMP.mjs} +32 -4
  9. package/dist/{chunk-NNG6IFFX.js → chunk-7PDEX54K.js} +3 -3
  10. package/dist/{chunk-M4URVKHE.mjs → chunk-DYIAX3WI.mjs} +1 -1
  11. package/dist/{chunk-QOWPGS7Z.js → chunk-E4K2VQDD.js} +35 -5
  12. package/dist/{chunk-VNPEYLB2.mjs → chunk-H3RATH4B.mjs} +4 -0
  13. package/dist/{chunk-JSWJ4XDE.js → chunk-IQFFSKE2.js} +315 -108
  14. package/dist/{chunk-J6PNHDHL.mjs → chunk-OCCNG6MO.mjs} +284 -77
  15. package/dist/{chunk-GERXZQSX.mjs → chunk-OKADBZAI.mjs} +171 -20
  16. package/dist/{chunk-VIL6IQCG.js → chunk-YVAEY3VC.js} +54 -13
  17. package/dist/{client-Dqg2mc-7.d.ts → client-BVNWjk6W.d.ts} +2 -2
  18. package/dist/{client-BfpNjJ_a.d.mts → client-BuLcOWLv.d.ts} +115 -23
  19. package/dist/{client-DHBwvh7U.d.ts → client-D5AoobFc.d.mts} +115 -23
  20. package/dist/{client-DpqRobY9.d.mts → client-fM716k7G.d.mts} +2 -2
  21. package/dist/{index-C8uDqLwJ.d.ts → index-BtcoqrY1.d.ts} +3 -3
  22. package/dist/{index-e2y6AK70.d.mts → index-D7Tf3v7c.d.mts} +3 -3
  23. package/dist/index.d.mts +10 -8
  24. package/dist/index.d.ts +10 -8
  25. package/dist/index.js +107 -106
  26. package/dist/index.mjs +6 -5
  27. package/dist/{link-cuNVYc2s.d.mts → link-D9iSVxt5.d.mts} +12 -1
  28. package/dist/{link-cuNVYc2s.d.ts → link-D9iSVxt5.d.ts} +12 -1
  29. package/dist/mock/cli.mjs +53 -10
  30. package/dist/mock/library.js +53 -10
  31. package/dist/mock/library.mjs +53 -10
  32. package/dist/mock/msw.js +53 -10
  33. package/dist/mock/msw.mjs +53 -10
  34. package/dist/{payment-H5LoIvXU.d.mts → payment-g0HFkEDU.d.mts} +519 -54
  35. package/dist/{payment-H5LoIvXU.d.ts → payment-g0HFkEDU.d.ts} +519 -54
  36. package/dist/{price-C2RqscMY.d.ts → price-BLIeAb8K.d.ts} +1 -1
  37. package/dist/{price-BvePgDXe.d.mts → price-Czq_cTC_.d.mts} +1 -1
  38. package/dist/react.d.mts +4 -4
  39. package/dist/react.d.ts +4 -4
  40. package/dist/react.js +193 -169
  41. package/dist/react.mjs +54 -30
  42. package/dist/{server-C7FyLdrz.d.mts → server-BkVhOIwn.d.mts} +4 -2
  43. package/dist/{server-DoXIpSd7.d.ts → server-DKK_D-PP.d.ts} +4 -2
  44. package/dist/server.d.mts +4 -4
  45. package/dist/server.d.ts +4 -4
  46. package/dist/server.js +11 -10
  47. package/dist/server.mjs +5 -4
  48. package/dist/testing/msw.d.mts +2 -2
  49. package/dist/testing/msw.d.ts +2 -2
  50. package/dist/testing/msw.js +3 -3
  51. package/dist/testing/msw.mjs +2 -2
  52. package/dist/testing/suite.d.mts +6 -6
  53. package/dist/testing/suite.d.ts +6 -6
  54. package/dist/testing/suite.js +25 -25
  55. package/dist/testing/suite.mjs +6 -6
  56. package/dist/testing.d.mts +46 -6
  57. package/dist/testing.d.ts +46 -6
  58. package/dist/testing.js +94 -82
  59. package/dist/testing.mjs +13 -9
  60. package/dist/utils.d.mts +4 -4
  61. package/dist/utils.d.ts +4 -4
  62. package/dist/utils.js +31 -31
  63. package/dist/utils.mjs +2 -2
  64. package/package.json +1 -1
  65. package/registry/chat-widget.json +1 -1
@@ -1,6 +1,6 @@
1
- export { g as AuthService, x as BusinessService, I as CartOperations, J as CatalogueQueries, a8 as CheckoutOperations, a8 as CheckoutService, ae as CimplifyElement, af as CimplifyElements, ax as ELEMENT_TYPES, ay as EVENT_TYPES, aB as ElementEventType, aC as ElementOptions, aD as ElementType, aL as ElementsOptions, aQ as FetchQuoteInput, aZ as FxService, b1 as GetProductsOptions, b4 as InventoryService, b8 as LinkService, bc as LiteService, bj as MESSAGE_TYPES, bG as OrderQueries, c0 as PriceQuote, c6 as QuoteBundleSelectionInput, c7 as QuoteCompositeSelectionInput, c8 as QuoteDynamicBuckets, c9 as QuoteStatus, ca as QuoteUiMessage, cc as RefreshQuoteInput, cd as RefreshQuoteResult, cC as SchedulingService, de as createElements } from './client-BfpNjJ_a.mjs';
2
- import './payment-H5LoIvXU.mjs';
3
- import './link-cuNVYc2s.mjs';
1
+ export { g as AuthService, x as BusinessService, I as CartOperations, J as CatalogueQueries, a8 as CheckoutOperations, a8 as CheckoutService, ae as CimplifyElement, af as CimplifyElements, az as ELEMENT_TYPES, aA as EVENT_TYPES, aD as ElementEventType, aE as ElementOptions, aF as ElementType, aN as ElementsOptions, aU as FetchQuoteInput, b1 as FxService, b5 as GetProductsOptions, b8 as InventoryService, bc as LinkService, bg as LiteService, bn as MESSAGE_TYPES, bK as OrderQueries, c4 as PriceQuote, ca as QuoteBundleSelectionInput, cb as QuoteCompositeSelectionInput, cc as QuoteDynamicBuckets, cd as QuoteStatus, ce as QuoteUiMessage, cg as RefreshQuoteInput, ch as RefreshQuoteResult, cG as SchedulingService, di as createElements } from './client-D5AoobFc.mjs';
2
+ import './payment-g0HFkEDU.mjs';
3
+ import './link-D9iSVxt5.mjs';
4
4
 
5
5
  declare function generateIdempotencyKey(prefix?: string): string;
6
6
 
@@ -1,6 +1,6 @@
1
- export { g as AuthService, x as BusinessService, I as CartOperations, J as CatalogueQueries, a8 as CheckoutOperations, a8 as CheckoutService, ae as CimplifyElement, af as CimplifyElements, ax as ELEMENT_TYPES, ay as EVENT_TYPES, aB as ElementEventType, aC as ElementOptions, aD as ElementType, aL as ElementsOptions, aQ as FetchQuoteInput, aZ as FxService, b1 as GetProductsOptions, b4 as InventoryService, b8 as LinkService, bc as LiteService, bj as MESSAGE_TYPES, bG as OrderQueries, c0 as PriceQuote, c6 as QuoteBundleSelectionInput, c7 as QuoteCompositeSelectionInput, c8 as QuoteDynamicBuckets, c9 as QuoteStatus, ca as QuoteUiMessage, cc as RefreshQuoteInput, cd as RefreshQuoteResult, cC as SchedulingService, de as createElements } from './client-DHBwvh7U.js';
2
- import './payment-H5LoIvXU.js';
3
- import './link-cuNVYc2s.js';
1
+ export { g as AuthService, x as BusinessService, I as CartOperations, J as CatalogueQueries, a8 as CheckoutOperations, a8 as CheckoutService, ae as CimplifyElement, af as CimplifyElements, az as ELEMENT_TYPES, aA as EVENT_TYPES, aD as ElementEventType, aE as ElementOptions, aF as ElementType, aN as ElementsOptions, aU as FetchQuoteInput, b1 as FxService, b5 as GetProductsOptions, b8 as InventoryService, bc as LinkService, bg as LiteService, bn as MESSAGE_TYPES, bK as OrderQueries, c4 as PriceQuote, ca as QuoteBundleSelectionInput, cb as QuoteCompositeSelectionInput, cc as QuoteDynamicBuckets, cd as QuoteStatus, ce as QuoteUiMessage, cg as RefreshQuoteInput, ch as RefreshQuoteResult, cG as SchedulingService, di as createElements } from './client-BuLcOWLv.js';
2
+ import './payment-g0HFkEDU.js';
3
+ import './link-D9iSVxt5.js';
4
4
 
5
5
  declare function generateIdempotencyKey(prefix?: string): string;
6
6
 
package/dist/advanced.js CHANGED
@@ -1,86 +1,86 @@
1
1
  'use strict';
2
2
 
3
- var chunkJSWJ4XDE_js = require('./chunk-JSWJ4XDE.js');
3
+ var chunkIQFFSKE2_js = require('./chunk-IQFFSKE2.js');
4
4
  require('./chunk-CNN7Z2IP.js');
5
- require('./chunk-NNG6IFFX.js');
6
- require('./chunk-JG5CQNCB.js');
5
+ require('./chunk-7PDEX54K.js');
6
+ require('./chunk-4BKOKHE3.js');
7
7
  require('./chunk-OWW5GUSB.js');
8
8
 
9
9
 
10
10
 
11
11
  Object.defineProperty(exports, "AuthService", {
12
12
  enumerable: true,
13
- get: function () { return chunkJSWJ4XDE_js.AuthService; }
13
+ get: function () { return chunkIQFFSKE2_js.AuthService; }
14
14
  });
15
15
  Object.defineProperty(exports, "BusinessService", {
16
16
  enumerable: true,
17
- get: function () { return chunkJSWJ4XDE_js.BusinessService; }
17
+ get: function () { return chunkIQFFSKE2_js.BusinessService; }
18
18
  });
19
19
  Object.defineProperty(exports, "CartOperations", {
20
20
  enumerable: true,
21
- get: function () { return chunkJSWJ4XDE_js.CartOperations; }
21
+ get: function () { return chunkIQFFSKE2_js.CartOperations; }
22
22
  });
23
23
  Object.defineProperty(exports, "CatalogueQueries", {
24
24
  enumerable: true,
25
- get: function () { return chunkJSWJ4XDE_js.CatalogueQueries; }
25
+ get: function () { return chunkIQFFSKE2_js.CatalogueQueries; }
26
26
  });
27
27
  Object.defineProperty(exports, "CheckoutOperations", {
28
28
  enumerable: true,
29
- get: function () { return chunkJSWJ4XDE_js.CheckoutService; }
29
+ get: function () { return chunkIQFFSKE2_js.CheckoutService; }
30
30
  });
31
31
  Object.defineProperty(exports, "CheckoutService", {
32
32
  enumerable: true,
33
- get: function () { return chunkJSWJ4XDE_js.CheckoutService; }
33
+ get: function () { return chunkIQFFSKE2_js.CheckoutService; }
34
34
  });
35
35
  Object.defineProperty(exports, "CimplifyElement", {
36
36
  enumerable: true,
37
- get: function () { return chunkJSWJ4XDE_js.CimplifyElement; }
37
+ get: function () { return chunkIQFFSKE2_js.CimplifyElement; }
38
38
  });
39
39
  Object.defineProperty(exports, "CimplifyElements", {
40
40
  enumerable: true,
41
- get: function () { return chunkJSWJ4XDE_js.CimplifyElements; }
41
+ get: function () { return chunkIQFFSKE2_js.CimplifyElements; }
42
42
  });
43
43
  Object.defineProperty(exports, "ELEMENT_TYPES", {
44
44
  enumerable: true,
45
- get: function () { return chunkJSWJ4XDE_js.ELEMENT_TYPES; }
45
+ get: function () { return chunkIQFFSKE2_js.ELEMENT_TYPES; }
46
46
  });
47
47
  Object.defineProperty(exports, "EVENT_TYPES", {
48
48
  enumerable: true,
49
- get: function () { return chunkJSWJ4XDE_js.EVENT_TYPES; }
49
+ get: function () { return chunkIQFFSKE2_js.EVENT_TYPES; }
50
50
  });
51
51
  Object.defineProperty(exports, "FxService", {
52
52
  enumerable: true,
53
- get: function () { return chunkJSWJ4XDE_js.FxService; }
53
+ get: function () { return chunkIQFFSKE2_js.FxService; }
54
54
  });
55
55
  Object.defineProperty(exports, "InventoryService", {
56
56
  enumerable: true,
57
- get: function () { return chunkJSWJ4XDE_js.InventoryService; }
57
+ get: function () { return chunkIQFFSKE2_js.InventoryService; }
58
58
  });
59
59
  Object.defineProperty(exports, "LinkService", {
60
60
  enumerable: true,
61
- get: function () { return chunkJSWJ4XDE_js.LinkService; }
61
+ get: function () { return chunkIQFFSKE2_js.LinkService; }
62
62
  });
63
63
  Object.defineProperty(exports, "LiteService", {
64
64
  enumerable: true,
65
- get: function () { return chunkJSWJ4XDE_js.LiteService; }
65
+ get: function () { return chunkIQFFSKE2_js.LiteService; }
66
66
  });
67
67
  Object.defineProperty(exports, "MESSAGE_TYPES", {
68
68
  enumerable: true,
69
- get: function () { return chunkJSWJ4XDE_js.MESSAGE_TYPES; }
69
+ get: function () { return chunkIQFFSKE2_js.MESSAGE_TYPES; }
70
70
  });
71
71
  Object.defineProperty(exports, "OrderQueries", {
72
72
  enumerable: true,
73
- get: function () { return chunkJSWJ4XDE_js.OrderQueries; }
73
+ get: function () { return chunkIQFFSKE2_js.OrderQueries; }
74
74
  });
75
75
  Object.defineProperty(exports, "SchedulingService", {
76
76
  enumerable: true,
77
- get: function () { return chunkJSWJ4XDE_js.SchedulingService; }
77
+ get: function () { return chunkIQFFSKE2_js.SchedulingService; }
78
78
  });
79
79
  Object.defineProperty(exports, "createElements", {
80
80
  enumerable: true,
81
- get: function () { return chunkJSWJ4XDE_js.createElements; }
81
+ get: function () { return chunkIQFFSKE2_js.createElements; }
82
82
  });
83
83
  Object.defineProperty(exports, "generateIdempotencyKey", {
84
84
  enumerable: true,
85
- get: function () { return chunkJSWJ4XDE_js.generateIdempotencyKey; }
85
+ get: function () { return chunkIQFFSKE2_js.generateIdempotencyKey; }
86
86
  });
package/dist/advanced.mjs CHANGED
@@ -1,5 +1,5 @@
1
- export { AuthService, BusinessService, CartOperations, CatalogueQueries, CheckoutService as CheckoutOperations, CheckoutService, CimplifyElement, CimplifyElements, ELEMENT_TYPES, EVENT_TYPES, FxService, InventoryService, LinkService, LiteService, MESSAGE_TYPES, OrderQueries, SchedulingService, createElements, generateIdempotencyKey } from './chunk-J6PNHDHL.mjs';
1
+ export { AuthService, BusinessService, CartOperations, CatalogueQueries, CheckoutService as CheckoutOperations, CheckoutService, CimplifyElement, CimplifyElements, ELEMENT_TYPES, EVENT_TYPES, FxService, InventoryService, LinkService, LiteService, MESSAGE_TYPES, OrderQueries, SchedulingService, createElements, generateIdempotencyKey } from './chunk-OCCNG6MO.mjs';
2
2
  import './chunk-GOHSXBKW.mjs';
3
- import './chunk-M4URVKHE.mjs';
4
- import './chunk-VNPEYLB2.mjs';
3
+ import './chunk-DYIAX3WI.mjs';
4
+ import './chunk-H3RATH4B.mjs';
5
5
  import './chunk-3G6RQLXK.mjs';
@@ -1,6 +1,6 @@
1
1
  import { messagePreview } from './chunk-U4MW6PYU.mjs';
2
2
  import { PAYMENT_METHOD } from './chunk-GOHSXBKW.mjs';
3
- import { ErrorCode } from './chunk-VNPEYLB2.mjs';
3
+ import { ErrorCode } from './chunk-H3RATH4B.mjs';
4
4
  import { __publicField, __privateAdd, __privateSet, __privateGet, __privateMethod, __privateWrapper } from './chunk-3G6RQLXK.mjs';
5
5
 
6
6
  // ../node_modules/.bun/hono@4.12.25/node_modules/hono/dist/compose.js
@@ -2435,6 +2435,36 @@ function buildV1(deps) {
2435
2435
  "/catalogue/quotes/:quote_id/refresh",
2436
2436
  (c) => tryRoute(c, () => deps.catalogue.refreshQuote(c.req.param("quote_id")))
2437
2437
  );
2438
+ app.get("/reviews/summary", (c) => {
2439
+ const productId = c.req.query("product_id");
2440
+ if (productId !== void 0 && (productId.length === 0 || productId.trim() !== productId)) {
2441
+ return fail(c, validation("product_id must be a non-empty canonical identifier"));
2442
+ }
2443
+ const response = {
2444
+ data: {
2445
+ ratings: {
2446
+ product_id: productId ?? null,
2447
+ review_count: 0,
2448
+ rating_sum: 0,
2449
+ average_rating: null,
2450
+ distribution: { one: 0, two: 0, three: 0, four: 0, five: 0 }
2451
+ },
2452
+ trust_chips: {
2453
+ on_time_delivery_percent: null,
2454
+ delivery_sample_size: 0,
2455
+ average_first_response_seconds: null,
2456
+ support_sample_size: 0
2457
+ }
2458
+ }
2459
+ };
2460
+ return c.json(response);
2461
+ });
2462
+ app.get("/reviews", (c) => {
2463
+ const response = {
2464
+ data: { items: [], next_cursor: null }
2465
+ };
2466
+ return c.json(response);
2467
+ });
2438
2468
  app.get("/cart", (c) => tryRoute(c, () => deps.cart.toUICart(deps.cart.get(c.var.session))));
2439
2469
  app.delete("/cart", (c) => tryRoute(c, () => deps.cart.clear(c.var.session)));
2440
2470
  app.get("/cart/items", (c) => tryRoute(c, () => deps.cart.getItems(c.var.session)));
@@ -3330,9 +3360,10 @@ function buildLink(deps) {
3330
3360
  app.post("/auth/request-otp", async (c) => {
3331
3361
  const body = await c.req.json().catch(() => ({}));
3332
3362
  return tryRoute(c, () => {
3333
- deps.auth.requestOtp(body.contact ?? "");
3363
+ const challenge = deps.auth.requestOtp(body.contact ?? "");
3334
3364
  return {
3335
3365
  success: true,
3366
+ challenge_id: challenge.otp_id,
3336
3367
  message: `OTP sent to ${body.contact ?? "contact"}`,
3337
3368
  expires_in: 300,
3338
3369
  is_new_account: false
@@ -3342,7 +3373,11 @@ function buildLink(deps) {
3342
3373
  app.post("/auth/verify-otp", async (c) => {
3343
3374
  const body = await c.req.json().catch(() => ({}));
3344
3375
  return tryRoute(c, () => {
3345
- const session = deps.auth.verifyOtp(body.contact ?? "", body.otp_code ?? "");
3376
+ const session = deps.auth.verifyOtp(
3377
+ body.contact ?? "",
3378
+ body.otp_code ?? "",
3379
+ body.challenge_id
3380
+ );
3346
3381
  c.header("x-session-token", session.token);
3347
3382
  const customer = deps.link.ensureCustomer(session.customer_id ?? session.id, {
3348
3383
  email: body.contact?.includes("@") ? body.contact : void 0,
@@ -3436,10 +3471,7 @@ function buildLink(deps) {
3436
3471
  };
3437
3472
  });
3438
3473
  });
3439
- app.get(
3440
- "/preferences",
3441
- (c) => tryRoute(c, () => deps.link.getPreferences(customerId(c)))
3442
- );
3474
+ app.get("/preferences", (c) => tryRoute(c, () => deps.link.getPreferences(customerId(c))));
3443
3475
  app.post("/preferences", async (c) => {
3444
3476
  const body = await c.req.json().catch(() => ({}));
3445
3477
  return tryRoute(c, () => {
@@ -3916,9 +3948,16 @@ function createAuthService(opts) {
3916
3948
  code_hint: options.mode === "permissive" ? code : void 0
3917
3949
  };
3918
3950
  },
3919
- verifyOtp(contact, code) {
3920
- const matching = registry.otps.list((o) => o.contact === contact);
3921
- const otp = matching[matching.length - 1];
3951
+ verifyOtp(contact, code, challengeId) {
3952
+ let otp = challengeId ? registry.otps.get(challengeId) : void 0;
3953
+ if (!challengeId) {
3954
+ const matching = registry.otps.list((o) => o.contact === contact);
3955
+ otp = matching[matching.length - 1];
3956
+ }
3957
+ if (challengeId) {
3958
+ if (!otp) throw new Error("No OTP challenge found");
3959
+ if (otp.contact !== contact) throw new Error("OTP challenge does not match contact");
3960
+ }
3922
3961
  if (options.mode === "strict") {
3923
3962
  if (!otp) throw new Error("No OTP requested");
3924
3963
  if (otp.code !== code && code !== options.defaultOtp) throw new Error("Invalid OTP");
@@ -5246,7 +5285,7 @@ function createCartService(opts) {
5246
5285
 
5247
5286
  // src/mock/domain/checkout.ts
5248
5287
  function createCheckoutService(opts) {
5249
- const { registry, clock, ids, bus} = opts;
5288
+ const { registry, clock, ids, bus } = opts;
5250
5289
  return {
5251
5290
  process(session, body) {
5252
5291
  if (!body.cart_id) throw validation("cart_id required");
@@ -5733,6 +5772,7 @@ function createDeliveryService() {
5733
5772
  rate_id: "dlvrt_mock_standard",
5734
5773
  name: "Standard",
5735
5774
  fee: standardFree ? money(0) : money(15),
5775
+ fee_status: "priced",
5736
5776
  currency: "GHS",
5737
5777
  free_delivery_applied: standardFree,
5738
5778
  free_over_amount: money(200),
@@ -5746,6 +5786,7 @@ function createDeliveryService() {
5746
5786
  name: "Express",
5747
5787
  description: "Delivered within the hour",
5748
5788
  fee: money(25),
5789
+ fee_status: "priced",
5749
5790
  currency: "GHS",
5750
5791
  free_delivery_applied: false,
5751
5792
  eta_min_minutes: 30,
@@ -107,6 +107,8 @@ var ErrorCode = {
107
107
  CARD_DECLINED: "CARD_DECLINED",
108
108
  INVALID_OTP: "INVALID_OTP",
109
109
  OTP_EXPIRED: "OTP_EXPIRED",
110
+ OTP_CHALLENGE_EXHAUSTED: "OTP_CHALLENGE_EXHAUSTED",
111
+ OTP_CHALLENGE_CONSUMED: "OTP_CHALLENGE_CONSUMED",
110
112
  AUTHORIZATION_FAILED: "AUTHORIZATION_FAILED",
111
113
  PAYMENT_ACTION_NOT_COMPLETED: "PAYMENT_ACTION_NOT_COMPLETED",
112
114
  SLOT_UNAVAILABLE: "SLOT_UNAVAILABLE",
@@ -152,6 +154,8 @@ var ERROR_SUGGESTIONS = {
152
154
  CARD_DECLINED: "Card was declined. Ask shopper to retry or switch payment method.",
153
155
  INVALID_OTP: "Authorization code is invalid. Let shopper re-enter OTP/PIN and retry.",
154
156
  OTP_EXPIRED: "Authorization code expired. Request a new OTP and re-submit authorization.",
157
+ OTP_CHALLENGE_EXHAUSTED: "This verification challenge has no attempts left. Continue checkout without saved details or request a fresh challenge.",
158
+ OTP_CHALLENGE_CONSUMED: "This verification challenge has already been used. Continue with the established session or request a fresh challenge.",
155
159
  AUTHORIZATION_FAILED: "Additional payment authorization failed. Retry authorization or change payment method.",
156
160
  PAYMENT_ACTION_NOT_COMPLETED: "Required payment action was not completed. Resume provider flow and poll for status.",
157
161
  SLOT_UNAVAILABLE: "Selected schedule slot is unavailable. Refresh available slots and ask shopper to reselect.",