@tbox.cn/app-module-promotion 0.2.0 → 0.9.3

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 (67) hide show
  1. package/AGENTS.md +16 -0
  2. package/README.md +90 -11
  3. package/dist/chunk-P7IEEV37.js +1347 -0
  4. package/dist/chunk-QOTX4XDS.js +1745 -0
  5. package/dist/client/index.d.ts +21 -3
  6. package/dist/client/index.js +4 -2
  7. package/dist/index.d.ts +4 -3
  8. package/dist/index.js +16 -4
  9. package/dist/promotion-CMKJ4DB3.css +2135 -0
  10. package/dist/promotion-activity-header-pea-v2-4CCHFCCM.jpg +0 -0
  11. package/dist/promotion-coupon-header-pea-v1-4CCHFCCM.jpg +0 -0
  12. package/dist/server/index.d.ts +2481 -41
  13. package/dist/server/index.js +13 -3
  14. package/package.json +28 -15
  15. package/skills/promotion/SKILL.md +137 -0
  16. package/skills/promotion/references/claim-loop.md +18 -0
  17. package/src/client/assets/promotion-activity-header-pea-v2.jpg +0 -0
  18. package/src/client/assets/promotion-coupon-header-pea-v1.jpg +0 -0
  19. package/src/client/assets.d.ts +5 -0
  20. package/src/client/cards/index.ts +10 -0
  21. package/src/client/cards/promotion-activity-category-list/index.tsx +34 -0
  22. package/src/client/cards/promotion-activity-detail/index.tsx +84 -0
  23. package/src/client/cards/promotion-activity-list/index.tsx +58 -0
  24. package/src/client/cards/promotion-best-deal/index.tsx +18 -0
  25. package/src/client/cards/promotion-entitlement-list/index.tsx +163 -0
  26. package/src/client/cards/promotion-offer-detail/index.tsx +116 -0
  27. package/src/client/cards/promotion-offer-list/index.tsx +285 -0
  28. package/src/client/cards/view.ts +72 -0
  29. package/src/client/components/CouponQrCode.tsx +48 -0
  30. package/src/client/components/CouponSheet.tsx +124 -0
  31. package/src/client/components/ImageWithFallback.tsx +39 -0
  32. package/src/client/index.ts +23 -4
  33. package/src/client/styles/promotion.css +2135 -0
  34. package/src/client/types/css.d.ts +2 -0
  35. package/src/client/utils/sanitize-activity-html.ts +48 -0
  36. package/src/client/utils/scroll-card-bottom.ts +40 -0
  37. package/src/server/actions.ts +217 -0
  38. package/src/server/cards/index.ts +19 -0
  39. package/src/server/cards/promotion-activity-category-list/meta.ts +13 -0
  40. package/src/server/cards/promotion-activity-detail/meta.ts +29 -0
  41. package/src/server/cards/promotion-activity-list/meta.ts +13 -0
  42. package/src/server/cards/promotion-best-deal/meta.ts +20 -0
  43. package/src/server/cards/promotion-entitlement-list/meta.ts +17 -0
  44. package/src/server/cards/promotion-entitlement-list/samples.ts +51 -0
  45. package/src/server/cards/promotion-offer-detail/meta.ts +25 -0
  46. package/src/server/cards/promotion-offer-list/meta.ts +20 -0
  47. package/src/server/cards/promotion-offer-list/samples.ts +154 -0
  48. package/src/server/handler.ts +378 -16
  49. package/src/server/index.ts +117 -22
  50. package/src/server/navigation.ts +23 -0
  51. package/src/server/ports.ts +56 -0
  52. package/src/server/service.ts +243 -24
  53. package/src/server/tools.ts +789 -0
  54. package/tbox.module.json +126 -0
  55. package/tests/cards-render.test.tsx +656 -0
  56. package/tests/ports-resolve.test.ts +96 -0
  57. package/tests/pretool-coupons.test.ts +63 -0
  58. package/tests/promotion.test.ts +976 -0
  59. package/tests/samples.test.ts +42 -0
  60. package/tests/view.test.ts +61 -0
  61. package/tsup.config.ts +9 -1
  62. package/dist/chunk-AD6OLHSM.js +0 -86
  63. package/dist/chunk-LQGF6337.js +0 -32
  64. package/src/client/cards/coupon/index.tsx +0 -12
  65. package/src/server/cards/coupon/meta.ts +0 -23
  66. package/tbox.component.json +0 -20
  67. package/tests/service.test.ts +0 -31
@@ -1,62 +1,2502 @@
1
+ import * as _mastra_core_tools from '@mastra/core/tools';
2
+ import * as _tbox_cn_app_sdk_server from '@tbox.cn/app-sdk/server';
3
+ import { ServerContext, PreToolDef } from '@tbox.cn/app-sdk/server';
1
4
  import * as _tbox_cn_app_contracts from '@tbox.cn/app-contracts';
2
- import { CardMeta } from '@tbox.cn/app-contracts';
5
+ import { RequestContext } from '@tbox.cn/app-contracts';
3
6
  import * as zod from 'zod';
4
- import { z } from 'zod';
5
- import { ServerContext } from '@tbox.cn/app-sdk/server';
6
- import { PromotionQueryPort, MemberBenefitsPort, Coupon } from '@tbox.cn/app-contracts-mall';
7
+ import * as _tbox_cn_app_contracts_mall from '@tbox.cn/app-contracts-mall';
8
+ import { PromotionOfferQueryPort, PromotionEntitlementPort, PromotionActivityPort, PromotionAcquisitionPort, PromotionQueryContext, PromotionSearchInput, PromotionOfferPage, PromotionOffer, PromotionBestDeal, PromotionEntitlementPage, PromotionEntitlement, PromotionActivityPage, PromotionActivityDetail, PromotionOperation } from '@tbox.cn/app-contracts-mall';
7
9
 
8
- /** PromotionService:营销资格与发券 */
9
- interface PromotionService extends PromotionQueryPort {
10
+ interface PromotionService extends PromotionOfferQueryPort, PromotionEntitlementPort, PromotionActivityPort, PromotionAcquisitionPort {
11
+ /** 是否真正装配写通道;C 端只读 Provider 不得据 acquire 方法误判。 */
12
+ readonly supportsAcquisition?: boolean;
13
+ /** provider 是否允许输出优惠测算卡;未装配厂商能力时不构造旧候选卡。 */
14
+ readonly supportsBestDeal?: boolean;
15
+ /** 推荐结果是否统一使用可领券列表展示,避免进入旧 recommendation 分支。 */
16
+ readonly usesUnifiedCouponList?: boolean;
17
+ /** 活动分类名称 → categoryId 归一(provider 装配态实现;InMemory 缺省无——工具层 ?. 降级) */
18
+ resolveCategoryId?(input: string): Promise<string | undefined>;
10
19
  }
11
- /**
12
- * 资格校验 + 推荐降级链(001 安全铁律:模型只读,发券为写入需确认——PoC 只做查询资格)。
13
- * 通过注入 getMember 访问会员数据,不依赖 member 实现包(结构类型子集接口)。
14
- */
15
20
  declare class InMemoryPromotionService implements PromotionService {
16
- private getMember;
17
- constructor(getMember: () => MemberBenefitsPort | undefined);
18
- queryEligibleCoupons(userId: string): Promise<Coupon[]>;
21
+ readonly supportsAcquisition = true;
22
+ private entitlements;
23
+ private operations;
24
+ private acquireKeys;
25
+ searchOffers(_q: PromotionQueryContext, input: PromotionSearchInput): Promise<PromotionOfferPage>;
26
+ getOfferDetail(_q: PromotionQueryContext, input: {
27
+ offerRef?: string;
28
+ entitlementRef?: string;
29
+ keyword?: string;
30
+ }): Promise<PromotionOffer | null>;
31
+ recommendOffers(q: PromotionQueryContext, input: PromotionSearchInput): Promise<readonly PromotionOffer[]>;
32
+ calculateBestDeal(_q: PromotionQueryContext, input: {
33
+ currentAmountCents: number;
34
+ candidateOfferRefs?: readonly string[];
35
+ }): Promise<PromotionBestDeal>;
36
+ listEntitlements(q: PromotionQueryContext, _input: PromotionSearchInput): Promise<PromotionEntitlementPage>;
37
+ getEntitlementDetail(q: PromotionQueryContext, entitlementRef: string): Promise<PromotionEntitlement | null>;
38
+ listActivities(_q: PromotionQueryContext, input: Parameters<PromotionActivityPort['listActivities']>[1]): Promise<PromotionActivityPage>;
39
+ getActivityDetail(_q: PromotionQueryContext, activityRef: string): Promise<PromotionActivityDetail | null>;
40
+ listActivitySessions(_q: PromotionQueryContext, activityRef: string): Promise<readonly _tbox_cn_app_contracts_mall.ActivitySession[]>;
41
+ listActivityCategories(): Promise<readonly [{
42
+ readonly categoryId: "family";
43
+ readonly name: "亲子";
44
+ }]>;
45
+ acquire(q: PromotionQueryContext, input: {
46
+ offerRef: string;
47
+ externalMemberRef: string;
48
+ idempotencyKey: string;
49
+ }): Promise<PromotionOperation>;
50
+ private entitlementsOf;
19
51
  }
20
52
 
21
- declare const dataSchema: z.ZodObject<{
22
- couponId: z.ZodString;
23
- title: z.ZodString;
24
- amount: z.ZodNumber;
25
- status: z.ZodEnum<["AVAILABLE", "USED", "EXPIRED"]>;
26
- }, "strip", z.ZodTypeAny, {
27
- status: "AVAILABLE" | "USED" | "EXPIRED";
28
- amount: number;
29
- title: string;
30
- couponId: string;
31
- }, {
32
- status: "AVAILABLE" | "USED" | "EXPIRED";
33
- amount: number;
34
- title: string;
35
- couponId: string;
36
- }>;
37
- declare const meta: CardMeta<typeof dataSchema>;
53
+ /**
54
+ * promotion Port 分槽解析(017 槽位原子化):四槽独立解析(offers/entitlements/
55
+ * activities/acquisition)。同域四槽共享厂商网关 transport(request/requestCrm 双信封),
56
+ * provider manifest 一槽一条目、共享 implementation id(catalog 聚合后同 impl 供给)。
57
+ *
58
+ * 预期缺席(未配置/实例缺键/禁用)→ InMemoryPromotionService 兜底;其余错误原样上抛。
59
+ * 部分绑定形态(offers 厂商 + acquisition InMemory)为显式行为:acquire 走 InMemory
60
+ * 幂等纯函数派生,与厂商侧领取状态互不可见。
61
+ */
62
+
63
+ /** 缺省 InMemory 单例(模块包顶层,B14;跨模块消费方 resolveService('promotion') 兼容) */
64
+ declare const inMemoryPromotion: InMemoryPromotionService;
65
+ declare const resolvePromotionOffersPort: (reqCtx: RequestContext, ctx?: ServerContext) => Promise<PromotionOfferQueryPort>;
66
+ declare const resolvePromotionEntitlementsPort: (reqCtx: RequestContext, ctx?: ServerContext) => Promise<PromotionEntitlementPort>;
67
+ declare const resolvePromotionActivitiesPort: (reqCtx: RequestContext, ctx?: ServerContext) => Promise<PromotionActivityPort>;
68
+ declare const resolvePromotionAcquisitionPort: (reqCtx: RequestContext, ctx?: ServerContext) => Promise<PromotionAcquisitionPort>;
69
+
70
+ declare const promotionCards: {
71
+ readonly 'promotion-offer-list': _tbox_cn_app_contracts.CardMeta<zod.ZodObject<{
72
+ presentation: zod.ZodOptional<zod.ZodEnum<["offer", "promotion", "coupon", "recommendation"]>>;
73
+ mode: zod.ZodEnum<["search", "claimable", "recommend"]>;
74
+ maxItems: zod.ZodOptional<zod.ZodNumber>;
75
+ summary: zod.ZodOptional<zod.ZodString>;
76
+ items: zod.ZodArray<zod.ZodObject<{
77
+ offerRef: zod.ZodString;
78
+ title: zod.ZodString;
79
+ subtitle: zod.ZodOptional<zod.ZodString>;
80
+ offerType: zod.ZodEnum<["COUPON", "BUNDLE", "PROMOTION", "ACTIVITY", "GROUPON"]>;
81
+ benefitText: zod.ZodOptional<zod.ZodString>;
82
+ thresholdText: zod.ZodOptional<zod.ZodString>;
83
+ priceText: zod.ZodOptional<zod.ZodString>;
84
+ originalPriceText: zod.ZodOptional<zod.ZodString>;
85
+ discountLabel: zod.ZodOptional<zod.ZodString>;
86
+ claimActionLabel: zod.ZodOptional<zod.ZodString>;
87
+ purchaseUrl: zod.ZodOptional<zod.ZodString>;
88
+ freeCouponClaimMode: zod.ZodOptional<zod.ZodEnum<["DIRECT", "REDIRECT"]>>;
89
+ stockText: zod.ZodOptional<zod.ZodString>;
90
+ usageNoticeText: zod.ZodOptional<zod.ZodString>;
91
+ guaranteeText: zod.ZodOptional<zod.ZodString>;
92
+ usageSceneText: zod.ZodOptional<zod.ZodString>;
93
+ usageTimeText: zod.ZodOptional<zod.ZodString>;
94
+ claimTimeText: zod.ZodOptional<zod.ZodString>;
95
+ usageRuleText: zod.ZodOptional<zod.ZodString>;
96
+ claimable: zod.ZodBoolean;
97
+ availabilityStatus: zod.ZodOptional<zod.ZodEnum<["AVAILABLE", "UNAVAILABLE", "REQUIRES_ACTION", "UNKNOWN"]>>;
98
+ validityText: zod.ZodOptional<zod.ZodString>;
99
+ imageUrl: zod.ZodOptional<zod.ZodString>;
100
+ itemActions: zod.ZodOptional<zod.ZodArray<zod.ZodDiscriminatedUnion<"kind", [zod.ZodObject<{
101
+ kind: zod.ZodLiteral<"send">;
102
+ label: zod.ZodString;
103
+ value: zod.ZodOptional<zod.ZodString>;
104
+ visibleValue: zod.ZodOptional<zod.ZodString>;
105
+ }, "strip", zod.ZodTypeAny, {
106
+ kind: "send";
107
+ label: string;
108
+ value?: string | undefined;
109
+ visibleValue?: string | undefined;
110
+ }, {
111
+ kind: "send";
112
+ label: string;
113
+ value?: string | undefined;
114
+ visibleValue?: string | undefined;
115
+ }>, zod.ZodObject<{
116
+ kind: zod.ZodLiteral<"link">;
117
+ label: zod.ZodString;
118
+ url: zod.ZodString;
119
+ }, "strip", zod.ZodTypeAny, {
120
+ url: string;
121
+ kind: "link";
122
+ label: string;
123
+ }, {
124
+ url: string;
125
+ kind: "link";
126
+ label: string;
127
+ }>]>, "many">>;
128
+ tags: zod.ZodArray<zod.ZodString, "many">;
129
+ }, "strip", zod.ZodTypeAny, {
130
+ title: string;
131
+ offerRef: string;
132
+ offerType: "COUPON" | "BUNDLE" | "PROMOTION" | "ACTIVITY" | "GROUPON";
133
+ claimable: boolean;
134
+ tags: string[];
135
+ subtitle?: string | undefined;
136
+ imageUrl?: string | undefined;
137
+ usageTimeText?: string | undefined;
138
+ purchaseUrl?: string | undefined;
139
+ freeCouponClaimMode?: "DIRECT" | "REDIRECT" | undefined;
140
+ itemActions?: ({
141
+ kind: "send";
142
+ label: string;
143
+ value?: string | undefined;
144
+ visibleValue?: string | undefined;
145
+ } | {
146
+ url: string;
147
+ kind: "link";
148
+ label: string;
149
+ })[] | undefined;
150
+ benefitText?: string | undefined;
151
+ thresholdText?: string | undefined;
152
+ priceText?: string | undefined;
153
+ originalPriceText?: string | undefined;
154
+ discountLabel?: string | undefined;
155
+ claimActionLabel?: string | undefined;
156
+ stockText?: string | undefined;
157
+ usageNoticeText?: string | undefined;
158
+ guaranteeText?: string | undefined;
159
+ usageSceneText?: string | undefined;
160
+ claimTimeText?: string | undefined;
161
+ usageRuleText?: string | undefined;
162
+ availabilityStatus?: "UNKNOWN" | "AVAILABLE" | "UNAVAILABLE" | "REQUIRES_ACTION" | undefined;
163
+ validityText?: string | undefined;
164
+ }, {
165
+ title: string;
166
+ offerRef: string;
167
+ offerType: "COUPON" | "BUNDLE" | "PROMOTION" | "ACTIVITY" | "GROUPON";
168
+ claimable: boolean;
169
+ tags: string[];
170
+ subtitle?: string | undefined;
171
+ imageUrl?: string | undefined;
172
+ usageTimeText?: string | undefined;
173
+ purchaseUrl?: string | undefined;
174
+ freeCouponClaimMode?: "DIRECT" | "REDIRECT" | undefined;
175
+ itemActions?: ({
176
+ kind: "send";
177
+ label: string;
178
+ value?: string | undefined;
179
+ visibleValue?: string | undefined;
180
+ } | {
181
+ url: string;
182
+ kind: "link";
183
+ label: string;
184
+ })[] | undefined;
185
+ benefitText?: string | undefined;
186
+ thresholdText?: string | undefined;
187
+ priceText?: string | undefined;
188
+ originalPriceText?: string | undefined;
189
+ discountLabel?: string | undefined;
190
+ claimActionLabel?: string | undefined;
191
+ stockText?: string | undefined;
192
+ usageNoticeText?: string | undefined;
193
+ guaranteeText?: string | undefined;
194
+ usageSceneText?: string | undefined;
195
+ claimTimeText?: string | undefined;
196
+ usageRuleText?: string | undefined;
197
+ availabilityStatus?: "UNKNOWN" | "AVAILABLE" | "UNAVAILABLE" | "REQUIRES_ACTION" | undefined;
198
+ validityText?: string | undefined;
199
+ }>, "many">;
200
+ noResultsReason: zod.ZodOptional<zod.ZodString>;
201
+ nextCursor: zod.ZodOptional<zod.ZodString>;
202
+ }, "strip", zod.ZodTypeAny, {
203
+ mode: "search" | "claimable" | "recommend";
204
+ items: {
205
+ title: string;
206
+ offerRef: string;
207
+ offerType: "COUPON" | "BUNDLE" | "PROMOTION" | "ACTIVITY" | "GROUPON";
208
+ claimable: boolean;
209
+ tags: string[];
210
+ subtitle?: string | undefined;
211
+ imageUrl?: string | undefined;
212
+ usageTimeText?: string | undefined;
213
+ purchaseUrl?: string | undefined;
214
+ freeCouponClaimMode?: "DIRECT" | "REDIRECT" | undefined;
215
+ itemActions?: ({
216
+ kind: "send";
217
+ label: string;
218
+ value?: string | undefined;
219
+ visibleValue?: string | undefined;
220
+ } | {
221
+ url: string;
222
+ kind: "link";
223
+ label: string;
224
+ })[] | undefined;
225
+ benefitText?: string | undefined;
226
+ thresholdText?: string | undefined;
227
+ priceText?: string | undefined;
228
+ originalPriceText?: string | undefined;
229
+ discountLabel?: string | undefined;
230
+ claimActionLabel?: string | undefined;
231
+ stockText?: string | undefined;
232
+ usageNoticeText?: string | undefined;
233
+ guaranteeText?: string | undefined;
234
+ usageSceneText?: string | undefined;
235
+ claimTimeText?: string | undefined;
236
+ usageRuleText?: string | undefined;
237
+ availabilityStatus?: "UNKNOWN" | "AVAILABLE" | "UNAVAILABLE" | "REQUIRES_ACTION" | undefined;
238
+ validityText?: string | undefined;
239
+ }[];
240
+ presentation?: "coupon" | "promotion" | "recommendation" | "offer" | undefined;
241
+ summary?: string | undefined;
242
+ noResultsReason?: string | undefined;
243
+ maxItems?: number | undefined;
244
+ nextCursor?: string | undefined;
245
+ }, {
246
+ mode: "search" | "claimable" | "recommend";
247
+ items: {
248
+ title: string;
249
+ offerRef: string;
250
+ offerType: "COUPON" | "BUNDLE" | "PROMOTION" | "ACTIVITY" | "GROUPON";
251
+ claimable: boolean;
252
+ tags: string[];
253
+ subtitle?: string | undefined;
254
+ imageUrl?: string | undefined;
255
+ usageTimeText?: string | undefined;
256
+ purchaseUrl?: string | undefined;
257
+ freeCouponClaimMode?: "DIRECT" | "REDIRECT" | undefined;
258
+ itemActions?: ({
259
+ kind: "send";
260
+ label: string;
261
+ value?: string | undefined;
262
+ visibleValue?: string | undefined;
263
+ } | {
264
+ url: string;
265
+ kind: "link";
266
+ label: string;
267
+ })[] | undefined;
268
+ benefitText?: string | undefined;
269
+ thresholdText?: string | undefined;
270
+ priceText?: string | undefined;
271
+ originalPriceText?: string | undefined;
272
+ discountLabel?: string | undefined;
273
+ claimActionLabel?: string | undefined;
274
+ stockText?: string | undefined;
275
+ usageNoticeText?: string | undefined;
276
+ guaranteeText?: string | undefined;
277
+ usageSceneText?: string | undefined;
278
+ claimTimeText?: string | undefined;
279
+ usageRuleText?: string | undefined;
280
+ availabilityStatus?: "UNKNOWN" | "AVAILABLE" | "UNAVAILABLE" | "REQUIRES_ACTION" | undefined;
281
+ validityText?: string | undefined;
282
+ }[];
283
+ presentation?: "coupon" | "promotion" | "recommendation" | "offer" | undefined;
284
+ summary?: string | undefined;
285
+ noResultsReason?: string | undefined;
286
+ maxItems?: number | undefined;
287
+ nextCursor?: string | undefined;
288
+ }>>;
289
+ readonly 'promotion-offer-detail': _tbox_cn_app_contracts.CardMeta<zod.ZodObject<{
290
+ presentation: zod.ZodOptional<zod.ZodEnum<["offer", "promotion", "promotion-guide", "coupon", "package"]>>;
291
+ offerRef: zod.ZodString;
292
+ title: zod.ZodString;
293
+ offerType: zod.ZodEnum<["COUPON", "BUNDLE", "PROMOTION", "ACTIVITY", "GROUPON"]>;
294
+ subtitle: zod.ZodOptional<zod.ZodString>;
295
+ description: zod.ZodOptional<zod.ZodString>;
296
+ imageUrl: zod.ZodOptional<zod.ZodString>;
297
+ benefitText: zod.ZodOptional<zod.ZodString>;
298
+ thresholdText: zod.ZodOptional<zod.ZodString>;
299
+ validityText: zod.ZodOptional<zod.ZodString>;
300
+ priceText: zod.ZodOptional<zod.ZodString>;
301
+ originalPriceText: zod.ZodOptional<zod.ZodString>;
302
+ discountLabel: zod.ZodOptional<zod.ZodString>;
303
+ claimActionLabel: zod.ZodOptional<zod.ZodString>;
304
+ purchaseUrl: zod.ZodOptional<zod.ZodString>;
305
+ stockText: zod.ZodOptional<zod.ZodString>;
306
+ usageNoticeText: zod.ZodOptional<zod.ZodString>;
307
+ usageSceneText: zod.ZodOptional<zod.ZodString>;
308
+ usageTimeText: zod.ZodOptional<zod.ZodString>;
309
+ claimTimeText: zod.ZodOptional<zod.ZodString>;
310
+ usageRuleText: zod.ZodOptional<zod.ZodString>;
311
+ guaranteeText: zod.ZodOptional<zod.ZodString>;
312
+ rules: zod.ZodArray<zod.ZodString, "many">;
313
+ participationMode: zod.ZodOptional<zod.ZodEnum<["AUTOMATIC_DISCOUNT", "CLAIM_THEN_PURCHASE", "REGISTER_THEN_ATTEND", "GROUP_PURCHASE", "UNKNOWN"]>>;
314
+ steps: zod.ZodOptional<zod.ZodArray<zod.ZodObject<{
315
+ title: zod.ZodString;
316
+ description: zod.ZodOptional<zod.ZodString>;
317
+ }, "strip", zod.ZodTypeAny, {
318
+ title: string;
319
+ description?: string | undefined;
320
+ }, {
321
+ title: string;
322
+ description?: string | undefined;
323
+ }>, "many">>;
324
+ requirements: zod.ZodOptional<zod.ZodArray<zod.ZodString, "many">>;
325
+ notice: zod.ZodOptional<zod.ZodString>;
326
+ stores: zod.ZodOptional<zod.ZodArray<zod.ZodObject<{
327
+ storeId: zod.ZodString;
328
+ storeName: zod.ZodString;
329
+ businessName: zod.ZodOptional<zod.ZodString>;
330
+ address: zod.ZodOptional<zod.ZodString>;
331
+ floor: zod.ZodOptional<zod.ZodString>;
332
+ }, "strip", zod.ZodTypeAny, {
333
+ storeId: string;
334
+ storeName: string;
335
+ address?: string | undefined;
336
+ businessName?: string | undefined;
337
+ floor?: string | undefined;
338
+ }, {
339
+ storeId: string;
340
+ storeName: string;
341
+ address?: string | undefined;
342
+ businessName?: string | undefined;
343
+ floor?: string | undefined;
344
+ }>, "many">>;
345
+ bundleItems: zod.ZodOptional<zod.ZodArray<zod.ZodObject<{
346
+ name: zod.ZodString;
347
+ quantity: zod.ZodNumber;
348
+ }, "strip", zod.ZodTypeAny, {
349
+ name: string;
350
+ quantity: number;
351
+ }, {
352
+ name: string;
353
+ quantity: number;
354
+ }>, "many">>;
355
+ claimable: zod.ZodBoolean;
356
+ unavailableReason: zod.ZodOptional<zod.ZodString>;
357
+ caveats: zod.ZodArray<zod.ZodString, "many">;
358
+ }, "strip", zod.ZodTypeAny, {
359
+ title: string;
360
+ offerRef: string;
361
+ caveats: string[];
362
+ offerType: "COUPON" | "BUNDLE" | "PROMOTION" | "ACTIVITY" | "GROUPON";
363
+ claimable: boolean;
364
+ rules: string[];
365
+ description?: string | undefined;
366
+ subtitle?: string | undefined;
367
+ presentation?: "package" | "coupon" | "promotion" | "offer" | "promotion-guide" | undefined;
368
+ steps?: {
369
+ title: string;
370
+ description?: string | undefined;
371
+ }[] | undefined;
372
+ notice?: string | undefined;
373
+ imageUrl?: string | undefined;
374
+ usageTimeText?: string | undefined;
375
+ purchaseUrl?: string | undefined;
376
+ benefitText?: string | undefined;
377
+ thresholdText?: string | undefined;
378
+ priceText?: string | undefined;
379
+ originalPriceText?: string | undefined;
380
+ discountLabel?: string | undefined;
381
+ claimActionLabel?: string | undefined;
382
+ stockText?: string | undefined;
383
+ usageNoticeText?: string | undefined;
384
+ guaranteeText?: string | undefined;
385
+ usageSceneText?: string | undefined;
386
+ claimTimeText?: string | undefined;
387
+ usageRuleText?: string | undefined;
388
+ validityText?: string | undefined;
389
+ participationMode?: "UNKNOWN" | "AUTOMATIC_DISCOUNT" | "CLAIM_THEN_PURCHASE" | "REGISTER_THEN_ATTEND" | "GROUP_PURCHASE" | undefined;
390
+ requirements?: string[] | undefined;
391
+ stores?: {
392
+ storeId: string;
393
+ storeName: string;
394
+ address?: string | undefined;
395
+ businessName?: string | undefined;
396
+ floor?: string | undefined;
397
+ }[] | undefined;
398
+ bundleItems?: {
399
+ name: string;
400
+ quantity: number;
401
+ }[] | undefined;
402
+ unavailableReason?: string | undefined;
403
+ }, {
404
+ title: string;
405
+ offerRef: string;
406
+ caveats: string[];
407
+ offerType: "COUPON" | "BUNDLE" | "PROMOTION" | "ACTIVITY" | "GROUPON";
408
+ claimable: boolean;
409
+ rules: string[];
410
+ description?: string | undefined;
411
+ subtitle?: string | undefined;
412
+ presentation?: "package" | "coupon" | "promotion" | "offer" | "promotion-guide" | undefined;
413
+ steps?: {
414
+ title: string;
415
+ description?: string | undefined;
416
+ }[] | undefined;
417
+ notice?: string | undefined;
418
+ imageUrl?: string | undefined;
419
+ usageTimeText?: string | undefined;
420
+ purchaseUrl?: string | undefined;
421
+ benefitText?: string | undefined;
422
+ thresholdText?: string | undefined;
423
+ priceText?: string | undefined;
424
+ originalPriceText?: string | undefined;
425
+ discountLabel?: string | undefined;
426
+ claimActionLabel?: string | undefined;
427
+ stockText?: string | undefined;
428
+ usageNoticeText?: string | undefined;
429
+ guaranteeText?: string | undefined;
430
+ usageSceneText?: string | undefined;
431
+ claimTimeText?: string | undefined;
432
+ usageRuleText?: string | undefined;
433
+ validityText?: string | undefined;
434
+ participationMode?: "UNKNOWN" | "AUTOMATIC_DISCOUNT" | "CLAIM_THEN_PURCHASE" | "REGISTER_THEN_ATTEND" | "GROUP_PURCHASE" | undefined;
435
+ requirements?: string[] | undefined;
436
+ stores?: {
437
+ storeId: string;
438
+ storeName: string;
439
+ address?: string | undefined;
440
+ businessName?: string | undefined;
441
+ floor?: string | undefined;
442
+ }[] | undefined;
443
+ bundleItems?: {
444
+ name: string;
445
+ quantity: number;
446
+ }[] | undefined;
447
+ unavailableReason?: string | undefined;
448
+ }>>;
449
+ readonly 'promotion-entitlement-list': _tbox_cn_app_contracts.CardMeta<zod.ZodObject<{
450
+ mallId: zod.ZodOptional<zod.ZodString>;
451
+ miniAppId: zod.ZodOptional<zod.ZodString>;
452
+ maxItems: zod.ZodOptional<zod.ZodNumber>;
453
+ items: zod.ZodArray<zod.ZodObject<{
454
+ entitlementRef: zod.ZodString;
455
+ title: zod.ZodString;
456
+ imageUrl: zod.ZodOptional<zod.ZodString>;
457
+ entitlementType: zod.ZodEnum<["COUPON", "BUNDLE", "PROMOTION", "ACTIVITY", "GROUPON"]>;
458
+ status: zod.ZodEnum<["EFFECTIVE", "USED", "EXPIRED", "INVALID", "UNKNOWN"]>;
459
+ codeMasked: zod.ZodOptional<zod.ZodString>;
460
+ code: zod.ZodOptional<zod.ZodString>;
461
+ qrCodeEnabled: zod.ZodOptional<zod.ZodBoolean>;
462
+ benefitText: zod.ZodOptional<zod.ZodString>;
463
+ thresholdText: zod.ZodOptional<zod.ZodString>;
464
+ usageNotice: zod.ZodOptional<zod.ZodString>;
465
+ guaranteeText: zod.ZodOptional<zod.ZodString>;
466
+ usageSceneText: zod.ZodOptional<zod.ZodString>;
467
+ usageTimeText: zod.ZodOptional<zod.ZodString>;
468
+ claimTimeText: zod.ZodOptional<zod.ZodString>;
469
+ usageRuleText: zod.ZodOptional<zod.ZodString>;
470
+ validityText: zod.ZodOptional<zod.ZodString>;
471
+ validUntilText: zod.ZodOptional<zod.ZodString>;
472
+ itemActions: zod.ZodOptional<zod.ZodArray<zod.ZodDiscriminatedUnion<"kind", [zod.ZodObject<{
473
+ kind: zod.ZodLiteral<"send">;
474
+ label: zod.ZodString;
475
+ value: zod.ZodOptional<zod.ZodString>;
476
+ visibleValue: zod.ZodOptional<zod.ZodString>;
477
+ }, "strip", zod.ZodTypeAny, {
478
+ kind: "send";
479
+ label: string;
480
+ value?: string | undefined;
481
+ visibleValue?: string | undefined;
482
+ }, {
483
+ kind: "send";
484
+ label: string;
485
+ value?: string | undefined;
486
+ visibleValue?: string | undefined;
487
+ }>, zod.ZodObject<{
488
+ kind: zod.ZodLiteral<"link">;
489
+ label: zod.ZodString;
490
+ url: zod.ZodString;
491
+ }, "strip", zod.ZodTypeAny, {
492
+ url: string;
493
+ kind: "link";
494
+ label: string;
495
+ }, {
496
+ url: string;
497
+ kind: "link";
498
+ label: string;
499
+ }>]>, "many">>;
500
+ stores: zod.ZodOptional<zod.ZodArray<zod.ZodObject<{
501
+ storeId: zod.ZodString;
502
+ storeName: zod.ZodString;
503
+ businessName: zod.ZodOptional<zod.ZodString>;
504
+ imageUrl: zod.ZodOptional<zod.ZodString>;
505
+ address: zod.ZodOptional<zod.ZodString>;
506
+ floor: zod.ZodOptional<zod.ZodString>;
507
+ latitude: zod.ZodOptional<zod.ZodNumber>;
508
+ longitude: zod.ZodOptional<zod.ZodNumber>;
509
+ }, "strip", zod.ZodTypeAny, {
510
+ storeId: string;
511
+ storeName: string;
512
+ latitude?: number | undefined;
513
+ longitude?: number | undefined;
514
+ imageUrl?: string | undefined;
515
+ address?: string | undefined;
516
+ businessName?: string | undefined;
517
+ floor?: string | undefined;
518
+ }, {
519
+ storeId: string;
520
+ storeName: string;
521
+ latitude?: number | undefined;
522
+ longitude?: number | undefined;
523
+ imageUrl?: string | undefined;
524
+ address?: string | undefined;
525
+ businessName?: string | undefined;
526
+ floor?: string | undefined;
527
+ }>, "many">>;
528
+ }, "strip", zod.ZodTypeAny, {
529
+ status: "UNKNOWN" | "USED" | "EXPIRED" | "EFFECTIVE" | "INVALID";
530
+ title: string;
531
+ entitlementRef: string;
532
+ entitlementType: "COUPON" | "BUNDLE" | "PROMOTION" | "ACTIVITY" | "GROUPON";
533
+ code?: string | undefined;
534
+ imageUrl?: string | undefined;
535
+ usageTimeText?: string | undefined;
536
+ itemActions?: ({
537
+ kind: "send";
538
+ label: string;
539
+ value?: string | undefined;
540
+ visibleValue?: string | undefined;
541
+ } | {
542
+ url: string;
543
+ kind: "link";
544
+ label: string;
545
+ })[] | undefined;
546
+ benefitText?: string | undefined;
547
+ thresholdText?: string | undefined;
548
+ guaranteeText?: string | undefined;
549
+ usageSceneText?: string | undefined;
550
+ claimTimeText?: string | undefined;
551
+ usageRuleText?: string | undefined;
552
+ validityText?: string | undefined;
553
+ stores?: {
554
+ storeId: string;
555
+ storeName: string;
556
+ latitude?: number | undefined;
557
+ longitude?: number | undefined;
558
+ imageUrl?: string | undefined;
559
+ address?: string | undefined;
560
+ businessName?: string | undefined;
561
+ floor?: string | undefined;
562
+ }[] | undefined;
563
+ codeMasked?: string | undefined;
564
+ qrCodeEnabled?: boolean | undefined;
565
+ usageNotice?: string | undefined;
566
+ validUntilText?: string | undefined;
567
+ }, {
568
+ status: "UNKNOWN" | "USED" | "EXPIRED" | "EFFECTIVE" | "INVALID";
569
+ title: string;
570
+ entitlementRef: string;
571
+ entitlementType: "COUPON" | "BUNDLE" | "PROMOTION" | "ACTIVITY" | "GROUPON";
572
+ code?: string | undefined;
573
+ imageUrl?: string | undefined;
574
+ usageTimeText?: string | undefined;
575
+ itemActions?: ({
576
+ kind: "send";
577
+ label: string;
578
+ value?: string | undefined;
579
+ visibleValue?: string | undefined;
580
+ } | {
581
+ url: string;
582
+ kind: "link";
583
+ label: string;
584
+ })[] | undefined;
585
+ benefitText?: string | undefined;
586
+ thresholdText?: string | undefined;
587
+ guaranteeText?: string | undefined;
588
+ usageSceneText?: string | undefined;
589
+ claimTimeText?: string | undefined;
590
+ usageRuleText?: string | undefined;
591
+ validityText?: string | undefined;
592
+ stores?: {
593
+ storeId: string;
594
+ storeName: string;
595
+ latitude?: number | undefined;
596
+ longitude?: number | undefined;
597
+ imageUrl?: string | undefined;
598
+ address?: string | undefined;
599
+ businessName?: string | undefined;
600
+ floor?: string | undefined;
601
+ }[] | undefined;
602
+ codeMasked?: string | undefined;
603
+ qrCodeEnabled?: boolean | undefined;
604
+ usageNotice?: string | undefined;
605
+ validUntilText?: string | undefined;
606
+ }>, "many">;
607
+ noResultsReason: zod.ZodOptional<zod.ZodString>;
608
+ nextCursor: zod.ZodOptional<zod.ZodString>;
609
+ }, "strip", zod.ZodTypeAny, {
610
+ items: {
611
+ status: "UNKNOWN" | "USED" | "EXPIRED" | "EFFECTIVE" | "INVALID";
612
+ title: string;
613
+ entitlementRef: string;
614
+ entitlementType: "COUPON" | "BUNDLE" | "PROMOTION" | "ACTIVITY" | "GROUPON";
615
+ code?: string | undefined;
616
+ imageUrl?: string | undefined;
617
+ usageTimeText?: string | undefined;
618
+ itemActions?: ({
619
+ kind: "send";
620
+ label: string;
621
+ value?: string | undefined;
622
+ visibleValue?: string | undefined;
623
+ } | {
624
+ url: string;
625
+ kind: "link";
626
+ label: string;
627
+ })[] | undefined;
628
+ benefitText?: string | undefined;
629
+ thresholdText?: string | undefined;
630
+ guaranteeText?: string | undefined;
631
+ usageSceneText?: string | undefined;
632
+ claimTimeText?: string | undefined;
633
+ usageRuleText?: string | undefined;
634
+ validityText?: string | undefined;
635
+ stores?: {
636
+ storeId: string;
637
+ storeName: string;
638
+ latitude?: number | undefined;
639
+ longitude?: number | undefined;
640
+ imageUrl?: string | undefined;
641
+ address?: string | undefined;
642
+ businessName?: string | undefined;
643
+ floor?: string | undefined;
644
+ }[] | undefined;
645
+ codeMasked?: string | undefined;
646
+ qrCodeEnabled?: boolean | undefined;
647
+ usageNotice?: string | undefined;
648
+ validUntilText?: string | undefined;
649
+ }[];
650
+ miniAppId?: string | undefined;
651
+ mallId?: string | undefined;
652
+ noResultsReason?: string | undefined;
653
+ maxItems?: number | undefined;
654
+ nextCursor?: string | undefined;
655
+ }, {
656
+ items: {
657
+ status: "UNKNOWN" | "USED" | "EXPIRED" | "EFFECTIVE" | "INVALID";
658
+ title: string;
659
+ entitlementRef: string;
660
+ entitlementType: "COUPON" | "BUNDLE" | "PROMOTION" | "ACTIVITY" | "GROUPON";
661
+ code?: string | undefined;
662
+ imageUrl?: string | undefined;
663
+ usageTimeText?: string | undefined;
664
+ itemActions?: ({
665
+ kind: "send";
666
+ label: string;
667
+ value?: string | undefined;
668
+ visibleValue?: string | undefined;
669
+ } | {
670
+ url: string;
671
+ kind: "link";
672
+ label: string;
673
+ })[] | undefined;
674
+ benefitText?: string | undefined;
675
+ thresholdText?: string | undefined;
676
+ guaranteeText?: string | undefined;
677
+ usageSceneText?: string | undefined;
678
+ claimTimeText?: string | undefined;
679
+ usageRuleText?: string | undefined;
680
+ validityText?: string | undefined;
681
+ stores?: {
682
+ storeId: string;
683
+ storeName: string;
684
+ latitude?: number | undefined;
685
+ longitude?: number | undefined;
686
+ imageUrl?: string | undefined;
687
+ address?: string | undefined;
688
+ businessName?: string | undefined;
689
+ floor?: string | undefined;
690
+ }[] | undefined;
691
+ codeMasked?: string | undefined;
692
+ qrCodeEnabled?: boolean | undefined;
693
+ usageNotice?: string | undefined;
694
+ validUntilText?: string | undefined;
695
+ }[];
696
+ miniAppId?: string | undefined;
697
+ mallId?: string | undefined;
698
+ noResultsReason?: string | undefined;
699
+ maxItems?: number | undefined;
700
+ nextCursor?: string | undefined;
701
+ }>>;
702
+ readonly 'promotion-activity-list': _tbox_cn_app_contracts.CardMeta<zod.ZodObject<{
703
+ items: zod.ZodArray<zod.ZodObject<{
704
+ activityRef: zod.ZodString;
705
+ title: zod.ZodString;
706
+ subtitle: zod.ZodOptional<zod.ZodString>;
707
+ coverUrl: zod.ZodOptional<zod.ZodString>;
708
+ registrationRequired: zod.ZodBoolean;
709
+ jumpOnly: zod.ZodOptional<zod.ZodBoolean>;
710
+ jumpLabel: zod.ZodOptional<zod.ZodString>;
711
+ remainingQuota: zod.ZodOptional<zod.ZodNumber>;
712
+ periodText: zod.ZodOptional<zod.ZodString>;
713
+ categoryName: zod.ZodOptional<zod.ZodString>;
714
+ availabilityStatus: zod.ZodOptional<zod.ZodEnum<["AVAILABLE", "FULL", "ENDED", "UPCOMING", "UNKNOWN"]>>;
715
+ itemActions: zod.ZodOptional<zod.ZodArray<zod.ZodDiscriminatedUnion<"kind", [zod.ZodObject<{
716
+ kind: zod.ZodLiteral<"send">;
717
+ label: zod.ZodString;
718
+ value: zod.ZodOptional<zod.ZodString>;
719
+ visibleValue: zod.ZodOptional<zod.ZodString>;
720
+ }, "strip", zod.ZodTypeAny, {
721
+ kind: "send";
722
+ label: string;
723
+ value?: string | undefined;
724
+ visibleValue?: string | undefined;
725
+ }, {
726
+ kind: "send";
727
+ label: string;
728
+ value?: string | undefined;
729
+ visibleValue?: string | undefined;
730
+ }>, zod.ZodObject<{
731
+ kind: zod.ZodLiteral<"link">;
732
+ label: zod.ZodString;
733
+ url: zod.ZodString;
734
+ }, "strip", zod.ZodTypeAny, {
735
+ url: string;
736
+ kind: "link";
737
+ label: string;
738
+ }, {
739
+ url: string;
740
+ kind: "link";
741
+ label: string;
742
+ }>]>, "many">>;
743
+ }, "strip", zod.ZodTypeAny, {
744
+ title: string;
745
+ activityRef: string;
746
+ registrationRequired: boolean;
747
+ subtitle?: string | undefined;
748
+ itemActions?: ({
749
+ kind: "send";
750
+ label: string;
751
+ value?: string | undefined;
752
+ visibleValue?: string | undefined;
753
+ } | {
754
+ url: string;
755
+ kind: "link";
756
+ label: string;
757
+ })[] | undefined;
758
+ coverUrl?: string | undefined;
759
+ availabilityStatus?: "UNKNOWN" | "AVAILABLE" | "FULL" | "ENDED" | "UPCOMING" | undefined;
760
+ jumpOnly?: boolean | undefined;
761
+ jumpLabel?: string | undefined;
762
+ remainingQuota?: number | undefined;
763
+ periodText?: string | undefined;
764
+ categoryName?: string | undefined;
765
+ }, {
766
+ title: string;
767
+ activityRef: string;
768
+ registrationRequired: boolean;
769
+ subtitle?: string | undefined;
770
+ itemActions?: ({
771
+ kind: "send";
772
+ label: string;
773
+ value?: string | undefined;
774
+ visibleValue?: string | undefined;
775
+ } | {
776
+ url: string;
777
+ kind: "link";
778
+ label: string;
779
+ })[] | undefined;
780
+ coverUrl?: string | undefined;
781
+ availabilityStatus?: "UNKNOWN" | "AVAILABLE" | "FULL" | "ENDED" | "UPCOMING" | undefined;
782
+ jumpOnly?: boolean | undefined;
783
+ jumpLabel?: string | undefined;
784
+ remainingQuota?: number | undefined;
785
+ periodText?: string | undefined;
786
+ categoryName?: string | undefined;
787
+ }>, "many">;
788
+ noResultsReason: zod.ZodOptional<zod.ZodString>;
789
+ nextCursor: zod.ZodOptional<zod.ZodString>;
790
+ }, "strip", zod.ZodTypeAny, {
791
+ items: {
792
+ title: string;
793
+ activityRef: string;
794
+ registrationRequired: boolean;
795
+ subtitle?: string | undefined;
796
+ itemActions?: ({
797
+ kind: "send";
798
+ label: string;
799
+ value?: string | undefined;
800
+ visibleValue?: string | undefined;
801
+ } | {
802
+ url: string;
803
+ kind: "link";
804
+ label: string;
805
+ })[] | undefined;
806
+ coverUrl?: string | undefined;
807
+ availabilityStatus?: "UNKNOWN" | "AVAILABLE" | "FULL" | "ENDED" | "UPCOMING" | undefined;
808
+ jumpOnly?: boolean | undefined;
809
+ jumpLabel?: string | undefined;
810
+ remainingQuota?: number | undefined;
811
+ periodText?: string | undefined;
812
+ categoryName?: string | undefined;
813
+ }[];
814
+ noResultsReason?: string | undefined;
815
+ nextCursor?: string | undefined;
816
+ }, {
817
+ items: {
818
+ title: string;
819
+ activityRef: string;
820
+ registrationRequired: boolean;
821
+ subtitle?: string | undefined;
822
+ itemActions?: ({
823
+ kind: "send";
824
+ label: string;
825
+ value?: string | undefined;
826
+ visibleValue?: string | undefined;
827
+ } | {
828
+ url: string;
829
+ kind: "link";
830
+ label: string;
831
+ })[] | undefined;
832
+ coverUrl?: string | undefined;
833
+ availabilityStatus?: "UNKNOWN" | "AVAILABLE" | "FULL" | "ENDED" | "UPCOMING" | undefined;
834
+ jumpOnly?: boolean | undefined;
835
+ jumpLabel?: string | undefined;
836
+ remainingQuota?: number | undefined;
837
+ periodText?: string | undefined;
838
+ categoryName?: string | undefined;
839
+ }[];
840
+ noResultsReason?: string | undefined;
841
+ nextCursor?: string | undefined;
842
+ }>>;
843
+ readonly 'promotion-activity-detail': _tbox_cn_app_contracts.CardMeta<zod.ZodObject<{
844
+ presentation: zod.ZodOptional<zod.ZodEnum<["detail", "schedule", "guide"]>>;
845
+ activityRef: zod.ZodString;
846
+ title: zod.ZodString;
847
+ subtitle: zod.ZodOptional<zod.ZodString>;
848
+ categoryName: zod.ZodOptional<zod.ZodString>;
849
+ description: zod.ZodOptional<zod.ZodString>;
850
+ coverUrl: zod.ZodOptional<zod.ZodString>;
851
+ periodText: zod.ZodOptional<zod.ZodString>;
852
+ location: zod.ZodOptional<zod.ZodString>;
853
+ registrationRequired: zod.ZodBoolean;
854
+ jumpOnly: zod.ZodOptional<zod.ZodBoolean>;
855
+ jumpLabel: zod.ZodOptional<zod.ZodString>;
856
+ registrationUrl: zod.ZodOptional<zod.ZodString>;
857
+ remainingQuota: zod.ZodOptional<zod.ZodNumber>;
858
+ sessions: zod.ZodArray<zod.ZodObject<{
859
+ sessionRef: zod.ZodString;
860
+ title: zod.ZodString;
861
+ startText: zod.ZodString;
862
+ endText: zod.ZodOptional<zod.ZodString>;
863
+ location: zod.ZodOptional<zod.ZodString>;
864
+ remainingQuota: zod.ZodOptional<zod.ZodNumber>;
865
+ status: zod.ZodEnum<["OPEN", "FULL", "CLOSED", "UNKNOWN"]>;
866
+ }, "strip", zod.ZodTypeAny, {
867
+ status: "UNKNOWN" | "CLOSED" | "OPEN" | "FULL";
868
+ title: string;
869
+ sessionRef: string;
870
+ startText: string;
871
+ location?: string | undefined;
872
+ remainingQuota?: number | undefined;
873
+ endText?: string | undefined;
874
+ }, {
875
+ status: "UNKNOWN" | "CLOSED" | "OPEN" | "FULL";
876
+ title: string;
877
+ sessionRef: string;
878
+ startText: string;
879
+ location?: string | undefined;
880
+ remainingQuota?: number | undefined;
881
+ endText?: string | undefined;
882
+ }>, "many">;
883
+ guideSteps: zod.ZodArray<zod.ZodString, "many">;
884
+ guideItems: zod.ZodOptional<zod.ZodArray<zod.ZodObject<{
885
+ title: zod.ZodString;
886
+ description: zod.ZodOptional<zod.ZodString>;
887
+ }, "strip", zod.ZodTypeAny, {
888
+ title: string;
889
+ description?: string | undefined;
890
+ }, {
891
+ title: string;
892
+ description?: string | undefined;
893
+ }>, "many">>;
894
+ conditions: zod.ZodArray<zod.ZodString, "many">;
895
+ notice: zod.ZodOptional<zod.ZodString>;
896
+ }, "strip", zod.ZodTypeAny, {
897
+ title: string;
898
+ activityRef: string;
899
+ registrationRequired: boolean;
900
+ sessions: {
901
+ status: "UNKNOWN" | "CLOSED" | "OPEN" | "FULL";
902
+ title: string;
903
+ sessionRef: string;
904
+ startText: string;
905
+ location?: string | undefined;
906
+ remainingQuota?: number | undefined;
907
+ endText?: string | undefined;
908
+ }[];
909
+ guideSteps: string[];
910
+ conditions: string[];
911
+ description?: string | undefined;
912
+ subtitle?: string | undefined;
913
+ presentation?: "detail" | "schedule" | "guide" | undefined;
914
+ notice?: string | undefined;
915
+ location?: string | undefined;
916
+ coverUrl?: string | undefined;
917
+ jumpOnly?: boolean | undefined;
918
+ jumpLabel?: string | undefined;
919
+ remainingQuota?: number | undefined;
920
+ periodText?: string | undefined;
921
+ categoryName?: string | undefined;
922
+ registrationUrl?: string | undefined;
923
+ guideItems?: {
924
+ title: string;
925
+ description?: string | undefined;
926
+ }[] | undefined;
927
+ }, {
928
+ title: string;
929
+ activityRef: string;
930
+ registrationRequired: boolean;
931
+ sessions: {
932
+ status: "UNKNOWN" | "CLOSED" | "OPEN" | "FULL";
933
+ title: string;
934
+ sessionRef: string;
935
+ startText: string;
936
+ location?: string | undefined;
937
+ remainingQuota?: number | undefined;
938
+ endText?: string | undefined;
939
+ }[];
940
+ guideSteps: string[];
941
+ conditions: string[];
942
+ description?: string | undefined;
943
+ subtitle?: string | undefined;
944
+ presentation?: "detail" | "schedule" | "guide" | undefined;
945
+ notice?: string | undefined;
946
+ location?: string | undefined;
947
+ coverUrl?: string | undefined;
948
+ jumpOnly?: boolean | undefined;
949
+ jumpLabel?: string | undefined;
950
+ remainingQuota?: number | undefined;
951
+ periodText?: string | undefined;
952
+ categoryName?: string | undefined;
953
+ registrationUrl?: string | undefined;
954
+ guideItems?: {
955
+ title: string;
956
+ description?: string | undefined;
957
+ }[] | undefined;
958
+ }>>;
959
+ readonly 'promotion-activity-category-list': _tbox_cn_app_contracts.CardMeta<zod.ZodObject<{
960
+ items: zod.ZodArray<zod.ZodObject<{
961
+ categoryId: zod.ZodString;
962
+ name: zod.ZodString;
963
+ parentId: zod.ZodOptional<zod.ZodString>;
964
+ itemActions: zod.ZodOptional<zod.ZodArray<zod.ZodDiscriminatedUnion<"kind", [zod.ZodObject<{
965
+ kind: zod.ZodLiteral<"send">;
966
+ label: zod.ZodString;
967
+ value: zod.ZodOptional<zod.ZodString>;
968
+ visibleValue: zod.ZodOptional<zod.ZodString>;
969
+ }, "strip", zod.ZodTypeAny, {
970
+ kind: "send";
971
+ label: string;
972
+ value?: string | undefined;
973
+ visibleValue?: string | undefined;
974
+ }, {
975
+ kind: "send";
976
+ label: string;
977
+ value?: string | undefined;
978
+ visibleValue?: string | undefined;
979
+ }>, zod.ZodObject<{
980
+ kind: zod.ZodLiteral<"link">;
981
+ label: zod.ZodString;
982
+ url: zod.ZodString;
983
+ }, "strip", zod.ZodTypeAny, {
984
+ url: string;
985
+ kind: "link";
986
+ label: string;
987
+ }, {
988
+ url: string;
989
+ kind: "link";
990
+ label: string;
991
+ }>]>, "many">>;
992
+ }, "strip", zod.ZodTypeAny, {
993
+ name: string;
994
+ categoryId: string;
995
+ itemActions?: ({
996
+ kind: "send";
997
+ label: string;
998
+ value?: string | undefined;
999
+ visibleValue?: string | undefined;
1000
+ } | {
1001
+ url: string;
1002
+ kind: "link";
1003
+ label: string;
1004
+ })[] | undefined;
1005
+ parentId?: string | undefined;
1006
+ }, {
1007
+ name: string;
1008
+ categoryId: string;
1009
+ itemActions?: ({
1010
+ kind: "send";
1011
+ label: string;
1012
+ value?: string | undefined;
1013
+ visibleValue?: string | undefined;
1014
+ } | {
1015
+ url: string;
1016
+ kind: "link";
1017
+ label: string;
1018
+ })[] | undefined;
1019
+ parentId?: string | undefined;
1020
+ }>, "many">;
1021
+ noResultsReason: zod.ZodOptional<zod.ZodString>;
1022
+ }, "strip", zod.ZodTypeAny, {
1023
+ items: {
1024
+ name: string;
1025
+ categoryId: string;
1026
+ itemActions?: ({
1027
+ kind: "send";
1028
+ label: string;
1029
+ value?: string | undefined;
1030
+ visibleValue?: string | undefined;
1031
+ } | {
1032
+ url: string;
1033
+ kind: "link";
1034
+ label: string;
1035
+ })[] | undefined;
1036
+ parentId?: string | undefined;
1037
+ }[];
1038
+ noResultsReason?: string | undefined;
1039
+ }, {
1040
+ items: {
1041
+ name: string;
1042
+ categoryId: string;
1043
+ itemActions?: ({
1044
+ kind: "send";
1045
+ label: string;
1046
+ value?: string | undefined;
1047
+ visibleValue?: string | undefined;
1048
+ } | {
1049
+ url: string;
1050
+ kind: "link";
1051
+ label: string;
1052
+ })[] | undefined;
1053
+ parentId?: string | undefined;
1054
+ }[];
1055
+ noResultsReason?: string | undefined;
1056
+ }>>;
1057
+ readonly 'promotion-best-deal': _tbox_cn_app_contracts.CardMeta<zod.ZodObject<{
1058
+ authoritative: zod.ZodBoolean;
1059
+ originalAmountCents: zod.ZodNumber;
1060
+ savingsCents: zod.ZodOptional<zod.ZodNumber>;
1061
+ expectedPayCents: zod.ZodOptional<zod.ZodNumber>;
1062
+ appliedOfferRefs: zod.ZodArray<zod.ZodString, "many">;
1063
+ candidates: zod.ZodOptional<zod.ZodArray<zod.ZodObject<{
1064
+ offerRef: zod.ZodString;
1065
+ title: zod.ZodString;
1066
+ subtitle: zod.ZodOptional<zod.ZodString>;
1067
+ offerType: zod.ZodEnum<["COUPON", "BUNDLE", "PROMOTION", "ACTIVITY", "GROUPON"]>;
1068
+ benefitText: zod.ZodOptional<zod.ZodString>;
1069
+ thresholdText: zod.ZodOptional<zod.ZodString>;
1070
+ priceText: zod.ZodOptional<zod.ZodString>;
1071
+ originalPriceText: zod.ZodOptional<zod.ZodString>;
1072
+ discountLabel: zod.ZodOptional<zod.ZodString>;
1073
+ claimActionLabel: zod.ZodOptional<zod.ZodString>;
1074
+ purchaseUrl: zod.ZodOptional<zod.ZodString>;
1075
+ freeCouponClaimMode: zod.ZodOptional<zod.ZodEnum<["DIRECT", "REDIRECT"]>>;
1076
+ stockText: zod.ZodOptional<zod.ZodString>;
1077
+ usageNoticeText: zod.ZodOptional<zod.ZodString>;
1078
+ guaranteeText: zod.ZodOptional<zod.ZodString>;
1079
+ usageSceneText: zod.ZodOptional<zod.ZodString>;
1080
+ usageTimeText: zod.ZodOptional<zod.ZodString>;
1081
+ claimTimeText: zod.ZodOptional<zod.ZodString>;
1082
+ usageRuleText: zod.ZodOptional<zod.ZodString>;
1083
+ claimable: zod.ZodBoolean;
1084
+ availabilityStatus: zod.ZodOptional<zod.ZodEnum<["AVAILABLE", "UNAVAILABLE", "REQUIRES_ACTION", "UNKNOWN"]>>;
1085
+ validityText: zod.ZodOptional<zod.ZodString>;
1086
+ imageUrl: zod.ZodOptional<zod.ZodString>;
1087
+ itemActions: zod.ZodOptional<zod.ZodArray<zod.ZodDiscriminatedUnion<"kind", [zod.ZodObject<{
1088
+ kind: zod.ZodLiteral<"send">;
1089
+ label: zod.ZodString;
1090
+ value: zod.ZodOptional<zod.ZodString>;
1091
+ visibleValue: zod.ZodOptional<zod.ZodString>;
1092
+ }, "strip", zod.ZodTypeAny, {
1093
+ kind: "send";
1094
+ label: string;
1095
+ value?: string | undefined;
1096
+ visibleValue?: string | undefined;
1097
+ }, {
1098
+ kind: "send";
1099
+ label: string;
1100
+ value?: string | undefined;
1101
+ visibleValue?: string | undefined;
1102
+ }>, zod.ZodObject<{
1103
+ kind: zod.ZodLiteral<"link">;
1104
+ label: zod.ZodString;
1105
+ url: zod.ZodString;
1106
+ }, "strip", zod.ZodTypeAny, {
1107
+ url: string;
1108
+ kind: "link";
1109
+ label: string;
1110
+ }, {
1111
+ url: string;
1112
+ kind: "link";
1113
+ label: string;
1114
+ }>]>, "many">>;
1115
+ tags: zod.ZodArray<zod.ZodString, "many">;
1116
+ }, "strip", zod.ZodTypeAny, {
1117
+ title: string;
1118
+ offerRef: string;
1119
+ offerType: "COUPON" | "BUNDLE" | "PROMOTION" | "ACTIVITY" | "GROUPON";
1120
+ claimable: boolean;
1121
+ tags: string[];
1122
+ subtitle?: string | undefined;
1123
+ imageUrl?: string | undefined;
1124
+ usageTimeText?: string | undefined;
1125
+ purchaseUrl?: string | undefined;
1126
+ freeCouponClaimMode?: "DIRECT" | "REDIRECT" | undefined;
1127
+ itemActions?: ({
1128
+ kind: "send";
1129
+ label: string;
1130
+ value?: string | undefined;
1131
+ visibleValue?: string | undefined;
1132
+ } | {
1133
+ url: string;
1134
+ kind: "link";
1135
+ label: string;
1136
+ })[] | undefined;
1137
+ benefitText?: string | undefined;
1138
+ thresholdText?: string | undefined;
1139
+ priceText?: string | undefined;
1140
+ originalPriceText?: string | undefined;
1141
+ discountLabel?: string | undefined;
1142
+ claimActionLabel?: string | undefined;
1143
+ stockText?: string | undefined;
1144
+ usageNoticeText?: string | undefined;
1145
+ guaranteeText?: string | undefined;
1146
+ usageSceneText?: string | undefined;
1147
+ claimTimeText?: string | undefined;
1148
+ usageRuleText?: string | undefined;
1149
+ availabilityStatus?: "UNKNOWN" | "AVAILABLE" | "UNAVAILABLE" | "REQUIRES_ACTION" | undefined;
1150
+ validityText?: string | undefined;
1151
+ }, {
1152
+ title: string;
1153
+ offerRef: string;
1154
+ offerType: "COUPON" | "BUNDLE" | "PROMOTION" | "ACTIVITY" | "GROUPON";
1155
+ claimable: boolean;
1156
+ tags: string[];
1157
+ subtitle?: string | undefined;
1158
+ imageUrl?: string | undefined;
1159
+ usageTimeText?: string | undefined;
1160
+ purchaseUrl?: string | undefined;
1161
+ freeCouponClaimMode?: "DIRECT" | "REDIRECT" | undefined;
1162
+ itemActions?: ({
1163
+ kind: "send";
1164
+ label: string;
1165
+ value?: string | undefined;
1166
+ visibleValue?: string | undefined;
1167
+ } | {
1168
+ url: string;
1169
+ kind: "link";
1170
+ label: string;
1171
+ })[] | undefined;
1172
+ benefitText?: string | undefined;
1173
+ thresholdText?: string | undefined;
1174
+ priceText?: string | undefined;
1175
+ originalPriceText?: string | undefined;
1176
+ discountLabel?: string | undefined;
1177
+ claimActionLabel?: string | undefined;
1178
+ stockText?: string | undefined;
1179
+ usageNoticeText?: string | undefined;
1180
+ guaranteeText?: string | undefined;
1181
+ usageSceneText?: string | undefined;
1182
+ claimTimeText?: string | undefined;
1183
+ usageRuleText?: string | undefined;
1184
+ availabilityStatus?: "UNKNOWN" | "AVAILABLE" | "UNAVAILABLE" | "REQUIRES_ACTION" | undefined;
1185
+ validityText?: string | undefined;
1186
+ }>, "many">>;
1187
+ message: zod.ZodOptional<zod.ZodString>;
1188
+ }, "strip", zod.ZodTypeAny, {
1189
+ authoritative: boolean;
1190
+ originalAmountCents: number;
1191
+ appliedOfferRefs: string[];
1192
+ message?: string | undefined;
1193
+ savingsCents?: number | undefined;
1194
+ expectedPayCents?: number | undefined;
1195
+ candidates?: {
1196
+ title: string;
1197
+ offerRef: string;
1198
+ offerType: "COUPON" | "BUNDLE" | "PROMOTION" | "ACTIVITY" | "GROUPON";
1199
+ claimable: boolean;
1200
+ tags: string[];
1201
+ subtitle?: string | undefined;
1202
+ imageUrl?: string | undefined;
1203
+ usageTimeText?: string | undefined;
1204
+ purchaseUrl?: string | undefined;
1205
+ freeCouponClaimMode?: "DIRECT" | "REDIRECT" | undefined;
1206
+ itemActions?: ({
1207
+ kind: "send";
1208
+ label: string;
1209
+ value?: string | undefined;
1210
+ visibleValue?: string | undefined;
1211
+ } | {
1212
+ url: string;
1213
+ kind: "link";
1214
+ label: string;
1215
+ })[] | undefined;
1216
+ benefitText?: string | undefined;
1217
+ thresholdText?: string | undefined;
1218
+ priceText?: string | undefined;
1219
+ originalPriceText?: string | undefined;
1220
+ discountLabel?: string | undefined;
1221
+ claimActionLabel?: string | undefined;
1222
+ stockText?: string | undefined;
1223
+ usageNoticeText?: string | undefined;
1224
+ guaranteeText?: string | undefined;
1225
+ usageSceneText?: string | undefined;
1226
+ claimTimeText?: string | undefined;
1227
+ usageRuleText?: string | undefined;
1228
+ availabilityStatus?: "UNKNOWN" | "AVAILABLE" | "UNAVAILABLE" | "REQUIRES_ACTION" | undefined;
1229
+ validityText?: string | undefined;
1230
+ }[] | undefined;
1231
+ }, {
1232
+ authoritative: boolean;
1233
+ originalAmountCents: number;
1234
+ appliedOfferRefs: string[];
1235
+ message?: string | undefined;
1236
+ savingsCents?: number | undefined;
1237
+ expectedPayCents?: number | undefined;
1238
+ candidates?: {
1239
+ title: string;
1240
+ offerRef: string;
1241
+ offerType: "COUPON" | "BUNDLE" | "PROMOTION" | "ACTIVITY" | "GROUPON";
1242
+ claimable: boolean;
1243
+ tags: string[];
1244
+ subtitle?: string | undefined;
1245
+ imageUrl?: string | undefined;
1246
+ usageTimeText?: string | undefined;
1247
+ purchaseUrl?: string | undefined;
1248
+ freeCouponClaimMode?: "DIRECT" | "REDIRECT" | undefined;
1249
+ itemActions?: ({
1250
+ kind: "send";
1251
+ label: string;
1252
+ value?: string | undefined;
1253
+ visibleValue?: string | undefined;
1254
+ } | {
1255
+ url: string;
1256
+ kind: "link";
1257
+ label: string;
1258
+ })[] | undefined;
1259
+ benefitText?: string | undefined;
1260
+ thresholdText?: string | undefined;
1261
+ priceText?: string | undefined;
1262
+ originalPriceText?: string | undefined;
1263
+ discountLabel?: string | undefined;
1264
+ claimActionLabel?: string | undefined;
1265
+ stockText?: string | undefined;
1266
+ usageNoticeText?: string | undefined;
1267
+ guaranteeText?: string | undefined;
1268
+ usageSceneText?: string | undefined;
1269
+ claimTimeText?: string | undefined;
1270
+ usageRuleText?: string | undefined;
1271
+ availabilityStatus?: "UNKNOWN" | "AVAILABLE" | "UNAVAILABLE" | "REQUIRES_ACTION" | undefined;
1272
+ validityText?: string | undefined;
1273
+ }[] | undefined;
1274
+ }>>;
1275
+ };
38
1276
 
39
1277
  /** 模块注册入口:自注册闭环(与客户端 clientModule 对称) */
40
1278
  declare const serverModule: {
1279
+ declaration: {
1280
+ moduleId: string;
1281
+ };
41
1282
  cards: {
42
- readonly coupon: _tbox_cn_app_contracts.CardMeta<zod.ZodObject<{
43
- couponId: zod.ZodString;
1283
+ readonly 'promotion-offer-list': _tbox_cn_app_contracts.CardMeta<zod.ZodObject<{
1284
+ presentation: zod.ZodOptional<zod.ZodEnum<["offer", "promotion", "coupon", "recommendation"]>>;
1285
+ mode: zod.ZodEnum<["search", "claimable", "recommend"]>;
1286
+ maxItems: zod.ZodOptional<zod.ZodNumber>;
1287
+ summary: zod.ZodOptional<zod.ZodString>;
1288
+ items: zod.ZodArray<zod.ZodObject<{
1289
+ offerRef: zod.ZodString;
1290
+ title: zod.ZodString;
1291
+ subtitle: zod.ZodOptional<zod.ZodString>;
1292
+ offerType: zod.ZodEnum<["COUPON", "BUNDLE", "PROMOTION", "ACTIVITY", "GROUPON"]>;
1293
+ benefitText: zod.ZodOptional<zod.ZodString>;
1294
+ thresholdText: zod.ZodOptional<zod.ZodString>;
1295
+ priceText: zod.ZodOptional<zod.ZodString>;
1296
+ originalPriceText: zod.ZodOptional<zod.ZodString>;
1297
+ discountLabel: zod.ZodOptional<zod.ZodString>;
1298
+ claimActionLabel: zod.ZodOptional<zod.ZodString>;
1299
+ purchaseUrl: zod.ZodOptional<zod.ZodString>;
1300
+ freeCouponClaimMode: zod.ZodOptional<zod.ZodEnum<["DIRECT", "REDIRECT"]>>;
1301
+ stockText: zod.ZodOptional<zod.ZodString>;
1302
+ usageNoticeText: zod.ZodOptional<zod.ZodString>;
1303
+ guaranteeText: zod.ZodOptional<zod.ZodString>;
1304
+ usageSceneText: zod.ZodOptional<zod.ZodString>;
1305
+ usageTimeText: zod.ZodOptional<zod.ZodString>;
1306
+ claimTimeText: zod.ZodOptional<zod.ZodString>;
1307
+ usageRuleText: zod.ZodOptional<zod.ZodString>;
1308
+ claimable: zod.ZodBoolean;
1309
+ availabilityStatus: zod.ZodOptional<zod.ZodEnum<["AVAILABLE", "UNAVAILABLE", "REQUIRES_ACTION", "UNKNOWN"]>>;
1310
+ validityText: zod.ZodOptional<zod.ZodString>;
1311
+ imageUrl: zod.ZodOptional<zod.ZodString>;
1312
+ itemActions: zod.ZodOptional<zod.ZodArray<zod.ZodDiscriminatedUnion<"kind", [zod.ZodObject<{
1313
+ kind: zod.ZodLiteral<"send">;
1314
+ label: zod.ZodString;
1315
+ value: zod.ZodOptional<zod.ZodString>;
1316
+ visibleValue: zod.ZodOptional<zod.ZodString>;
1317
+ }, "strip", zod.ZodTypeAny, {
1318
+ kind: "send";
1319
+ label: string;
1320
+ value?: string | undefined;
1321
+ visibleValue?: string | undefined;
1322
+ }, {
1323
+ kind: "send";
1324
+ label: string;
1325
+ value?: string | undefined;
1326
+ visibleValue?: string | undefined;
1327
+ }>, zod.ZodObject<{
1328
+ kind: zod.ZodLiteral<"link">;
1329
+ label: zod.ZodString;
1330
+ url: zod.ZodString;
1331
+ }, "strip", zod.ZodTypeAny, {
1332
+ url: string;
1333
+ kind: "link";
1334
+ label: string;
1335
+ }, {
1336
+ url: string;
1337
+ kind: "link";
1338
+ label: string;
1339
+ }>]>, "many">>;
1340
+ tags: zod.ZodArray<zod.ZodString, "many">;
1341
+ }, "strip", zod.ZodTypeAny, {
1342
+ title: string;
1343
+ offerRef: string;
1344
+ offerType: "COUPON" | "BUNDLE" | "PROMOTION" | "ACTIVITY" | "GROUPON";
1345
+ claimable: boolean;
1346
+ tags: string[];
1347
+ subtitle?: string | undefined;
1348
+ imageUrl?: string | undefined;
1349
+ usageTimeText?: string | undefined;
1350
+ purchaseUrl?: string | undefined;
1351
+ freeCouponClaimMode?: "DIRECT" | "REDIRECT" | undefined;
1352
+ itemActions?: ({
1353
+ kind: "send";
1354
+ label: string;
1355
+ value?: string | undefined;
1356
+ visibleValue?: string | undefined;
1357
+ } | {
1358
+ url: string;
1359
+ kind: "link";
1360
+ label: string;
1361
+ })[] | undefined;
1362
+ benefitText?: string | undefined;
1363
+ thresholdText?: string | undefined;
1364
+ priceText?: string | undefined;
1365
+ originalPriceText?: string | undefined;
1366
+ discountLabel?: string | undefined;
1367
+ claimActionLabel?: string | undefined;
1368
+ stockText?: string | undefined;
1369
+ usageNoticeText?: string | undefined;
1370
+ guaranteeText?: string | undefined;
1371
+ usageSceneText?: string | undefined;
1372
+ claimTimeText?: string | undefined;
1373
+ usageRuleText?: string | undefined;
1374
+ availabilityStatus?: "UNKNOWN" | "AVAILABLE" | "UNAVAILABLE" | "REQUIRES_ACTION" | undefined;
1375
+ validityText?: string | undefined;
1376
+ }, {
1377
+ title: string;
1378
+ offerRef: string;
1379
+ offerType: "COUPON" | "BUNDLE" | "PROMOTION" | "ACTIVITY" | "GROUPON";
1380
+ claimable: boolean;
1381
+ tags: string[];
1382
+ subtitle?: string | undefined;
1383
+ imageUrl?: string | undefined;
1384
+ usageTimeText?: string | undefined;
1385
+ purchaseUrl?: string | undefined;
1386
+ freeCouponClaimMode?: "DIRECT" | "REDIRECT" | undefined;
1387
+ itemActions?: ({
1388
+ kind: "send";
1389
+ label: string;
1390
+ value?: string | undefined;
1391
+ visibleValue?: string | undefined;
1392
+ } | {
1393
+ url: string;
1394
+ kind: "link";
1395
+ label: string;
1396
+ })[] | undefined;
1397
+ benefitText?: string | undefined;
1398
+ thresholdText?: string | undefined;
1399
+ priceText?: string | undefined;
1400
+ originalPriceText?: string | undefined;
1401
+ discountLabel?: string | undefined;
1402
+ claimActionLabel?: string | undefined;
1403
+ stockText?: string | undefined;
1404
+ usageNoticeText?: string | undefined;
1405
+ guaranteeText?: string | undefined;
1406
+ usageSceneText?: string | undefined;
1407
+ claimTimeText?: string | undefined;
1408
+ usageRuleText?: string | undefined;
1409
+ availabilityStatus?: "UNKNOWN" | "AVAILABLE" | "UNAVAILABLE" | "REQUIRES_ACTION" | undefined;
1410
+ validityText?: string | undefined;
1411
+ }>, "many">;
1412
+ noResultsReason: zod.ZodOptional<zod.ZodString>;
1413
+ nextCursor: zod.ZodOptional<zod.ZodString>;
1414
+ }, "strip", zod.ZodTypeAny, {
1415
+ mode: "search" | "claimable" | "recommend";
1416
+ items: {
1417
+ title: string;
1418
+ offerRef: string;
1419
+ offerType: "COUPON" | "BUNDLE" | "PROMOTION" | "ACTIVITY" | "GROUPON";
1420
+ claimable: boolean;
1421
+ tags: string[];
1422
+ subtitle?: string | undefined;
1423
+ imageUrl?: string | undefined;
1424
+ usageTimeText?: string | undefined;
1425
+ purchaseUrl?: string | undefined;
1426
+ freeCouponClaimMode?: "DIRECT" | "REDIRECT" | undefined;
1427
+ itemActions?: ({
1428
+ kind: "send";
1429
+ label: string;
1430
+ value?: string | undefined;
1431
+ visibleValue?: string | undefined;
1432
+ } | {
1433
+ url: string;
1434
+ kind: "link";
1435
+ label: string;
1436
+ })[] | undefined;
1437
+ benefitText?: string | undefined;
1438
+ thresholdText?: string | undefined;
1439
+ priceText?: string | undefined;
1440
+ originalPriceText?: string | undefined;
1441
+ discountLabel?: string | undefined;
1442
+ claimActionLabel?: string | undefined;
1443
+ stockText?: string | undefined;
1444
+ usageNoticeText?: string | undefined;
1445
+ guaranteeText?: string | undefined;
1446
+ usageSceneText?: string | undefined;
1447
+ claimTimeText?: string | undefined;
1448
+ usageRuleText?: string | undefined;
1449
+ availabilityStatus?: "UNKNOWN" | "AVAILABLE" | "UNAVAILABLE" | "REQUIRES_ACTION" | undefined;
1450
+ validityText?: string | undefined;
1451
+ }[];
1452
+ presentation?: "coupon" | "promotion" | "recommendation" | "offer" | undefined;
1453
+ summary?: string | undefined;
1454
+ noResultsReason?: string | undefined;
1455
+ maxItems?: number | undefined;
1456
+ nextCursor?: string | undefined;
1457
+ }, {
1458
+ mode: "search" | "claimable" | "recommend";
1459
+ items: {
1460
+ title: string;
1461
+ offerRef: string;
1462
+ offerType: "COUPON" | "BUNDLE" | "PROMOTION" | "ACTIVITY" | "GROUPON";
1463
+ claimable: boolean;
1464
+ tags: string[];
1465
+ subtitle?: string | undefined;
1466
+ imageUrl?: string | undefined;
1467
+ usageTimeText?: string | undefined;
1468
+ purchaseUrl?: string | undefined;
1469
+ freeCouponClaimMode?: "DIRECT" | "REDIRECT" | undefined;
1470
+ itemActions?: ({
1471
+ kind: "send";
1472
+ label: string;
1473
+ value?: string | undefined;
1474
+ visibleValue?: string | undefined;
1475
+ } | {
1476
+ url: string;
1477
+ kind: "link";
1478
+ label: string;
1479
+ })[] | undefined;
1480
+ benefitText?: string | undefined;
1481
+ thresholdText?: string | undefined;
1482
+ priceText?: string | undefined;
1483
+ originalPriceText?: string | undefined;
1484
+ discountLabel?: string | undefined;
1485
+ claimActionLabel?: string | undefined;
1486
+ stockText?: string | undefined;
1487
+ usageNoticeText?: string | undefined;
1488
+ guaranteeText?: string | undefined;
1489
+ usageSceneText?: string | undefined;
1490
+ claimTimeText?: string | undefined;
1491
+ usageRuleText?: string | undefined;
1492
+ availabilityStatus?: "UNKNOWN" | "AVAILABLE" | "UNAVAILABLE" | "REQUIRES_ACTION" | undefined;
1493
+ validityText?: string | undefined;
1494
+ }[];
1495
+ presentation?: "coupon" | "promotion" | "recommendation" | "offer" | undefined;
1496
+ summary?: string | undefined;
1497
+ noResultsReason?: string | undefined;
1498
+ maxItems?: number | undefined;
1499
+ nextCursor?: string | undefined;
1500
+ }>>;
1501
+ readonly 'promotion-offer-detail': _tbox_cn_app_contracts.CardMeta<zod.ZodObject<{
1502
+ presentation: zod.ZodOptional<zod.ZodEnum<["offer", "promotion", "promotion-guide", "coupon", "package"]>>;
1503
+ offerRef: zod.ZodString;
44
1504
  title: zod.ZodString;
45
- amount: zod.ZodNumber;
46
- status: zod.ZodEnum<["AVAILABLE", "USED", "EXPIRED"]>;
1505
+ offerType: zod.ZodEnum<["COUPON", "BUNDLE", "PROMOTION", "ACTIVITY", "GROUPON"]>;
1506
+ subtitle: zod.ZodOptional<zod.ZodString>;
1507
+ description: zod.ZodOptional<zod.ZodString>;
1508
+ imageUrl: zod.ZodOptional<zod.ZodString>;
1509
+ benefitText: zod.ZodOptional<zod.ZodString>;
1510
+ thresholdText: zod.ZodOptional<zod.ZodString>;
1511
+ validityText: zod.ZodOptional<zod.ZodString>;
1512
+ priceText: zod.ZodOptional<zod.ZodString>;
1513
+ originalPriceText: zod.ZodOptional<zod.ZodString>;
1514
+ discountLabel: zod.ZodOptional<zod.ZodString>;
1515
+ claimActionLabel: zod.ZodOptional<zod.ZodString>;
1516
+ purchaseUrl: zod.ZodOptional<zod.ZodString>;
1517
+ stockText: zod.ZodOptional<zod.ZodString>;
1518
+ usageNoticeText: zod.ZodOptional<zod.ZodString>;
1519
+ usageSceneText: zod.ZodOptional<zod.ZodString>;
1520
+ usageTimeText: zod.ZodOptional<zod.ZodString>;
1521
+ claimTimeText: zod.ZodOptional<zod.ZodString>;
1522
+ usageRuleText: zod.ZodOptional<zod.ZodString>;
1523
+ guaranteeText: zod.ZodOptional<zod.ZodString>;
1524
+ rules: zod.ZodArray<zod.ZodString, "many">;
1525
+ participationMode: zod.ZodOptional<zod.ZodEnum<["AUTOMATIC_DISCOUNT", "CLAIM_THEN_PURCHASE", "REGISTER_THEN_ATTEND", "GROUP_PURCHASE", "UNKNOWN"]>>;
1526
+ steps: zod.ZodOptional<zod.ZodArray<zod.ZodObject<{
1527
+ title: zod.ZodString;
1528
+ description: zod.ZodOptional<zod.ZodString>;
1529
+ }, "strip", zod.ZodTypeAny, {
1530
+ title: string;
1531
+ description?: string | undefined;
1532
+ }, {
1533
+ title: string;
1534
+ description?: string | undefined;
1535
+ }>, "many">>;
1536
+ requirements: zod.ZodOptional<zod.ZodArray<zod.ZodString, "many">>;
1537
+ notice: zod.ZodOptional<zod.ZodString>;
1538
+ stores: zod.ZodOptional<zod.ZodArray<zod.ZodObject<{
1539
+ storeId: zod.ZodString;
1540
+ storeName: zod.ZodString;
1541
+ businessName: zod.ZodOptional<zod.ZodString>;
1542
+ address: zod.ZodOptional<zod.ZodString>;
1543
+ floor: zod.ZodOptional<zod.ZodString>;
1544
+ }, "strip", zod.ZodTypeAny, {
1545
+ storeId: string;
1546
+ storeName: string;
1547
+ address?: string | undefined;
1548
+ businessName?: string | undefined;
1549
+ floor?: string | undefined;
1550
+ }, {
1551
+ storeId: string;
1552
+ storeName: string;
1553
+ address?: string | undefined;
1554
+ businessName?: string | undefined;
1555
+ floor?: string | undefined;
1556
+ }>, "many">>;
1557
+ bundleItems: zod.ZodOptional<zod.ZodArray<zod.ZodObject<{
1558
+ name: zod.ZodString;
1559
+ quantity: zod.ZodNumber;
1560
+ }, "strip", zod.ZodTypeAny, {
1561
+ name: string;
1562
+ quantity: number;
1563
+ }, {
1564
+ name: string;
1565
+ quantity: number;
1566
+ }>, "many">>;
1567
+ claimable: zod.ZodBoolean;
1568
+ unavailableReason: zod.ZodOptional<zod.ZodString>;
1569
+ caveats: zod.ZodArray<zod.ZodString, "many">;
47
1570
  }, "strip", zod.ZodTypeAny, {
48
- status: "AVAILABLE" | "USED" | "EXPIRED";
49
- amount: number;
50
1571
  title: string;
51
- couponId: string;
1572
+ offerRef: string;
1573
+ caveats: string[];
1574
+ offerType: "COUPON" | "BUNDLE" | "PROMOTION" | "ACTIVITY" | "GROUPON";
1575
+ claimable: boolean;
1576
+ rules: string[];
1577
+ description?: string | undefined;
1578
+ subtitle?: string | undefined;
1579
+ presentation?: "package" | "coupon" | "promotion" | "offer" | "promotion-guide" | undefined;
1580
+ steps?: {
1581
+ title: string;
1582
+ description?: string | undefined;
1583
+ }[] | undefined;
1584
+ notice?: string | undefined;
1585
+ imageUrl?: string | undefined;
1586
+ usageTimeText?: string | undefined;
1587
+ purchaseUrl?: string | undefined;
1588
+ benefitText?: string | undefined;
1589
+ thresholdText?: string | undefined;
1590
+ priceText?: string | undefined;
1591
+ originalPriceText?: string | undefined;
1592
+ discountLabel?: string | undefined;
1593
+ claimActionLabel?: string | undefined;
1594
+ stockText?: string | undefined;
1595
+ usageNoticeText?: string | undefined;
1596
+ guaranteeText?: string | undefined;
1597
+ usageSceneText?: string | undefined;
1598
+ claimTimeText?: string | undefined;
1599
+ usageRuleText?: string | undefined;
1600
+ validityText?: string | undefined;
1601
+ participationMode?: "UNKNOWN" | "AUTOMATIC_DISCOUNT" | "CLAIM_THEN_PURCHASE" | "REGISTER_THEN_ATTEND" | "GROUP_PURCHASE" | undefined;
1602
+ requirements?: string[] | undefined;
1603
+ stores?: {
1604
+ storeId: string;
1605
+ storeName: string;
1606
+ address?: string | undefined;
1607
+ businessName?: string | undefined;
1608
+ floor?: string | undefined;
1609
+ }[] | undefined;
1610
+ bundleItems?: {
1611
+ name: string;
1612
+ quantity: number;
1613
+ }[] | undefined;
1614
+ unavailableReason?: string | undefined;
52
1615
  }, {
53
- status: "AVAILABLE" | "USED" | "EXPIRED";
54
- amount: number;
55
1616
  title: string;
56
- couponId: string;
1617
+ offerRef: string;
1618
+ caveats: string[];
1619
+ offerType: "COUPON" | "BUNDLE" | "PROMOTION" | "ACTIVITY" | "GROUPON";
1620
+ claimable: boolean;
1621
+ rules: string[];
1622
+ description?: string | undefined;
1623
+ subtitle?: string | undefined;
1624
+ presentation?: "package" | "coupon" | "promotion" | "offer" | "promotion-guide" | undefined;
1625
+ steps?: {
1626
+ title: string;
1627
+ description?: string | undefined;
1628
+ }[] | undefined;
1629
+ notice?: string | undefined;
1630
+ imageUrl?: string | undefined;
1631
+ usageTimeText?: string | undefined;
1632
+ purchaseUrl?: string | undefined;
1633
+ benefitText?: string | undefined;
1634
+ thresholdText?: string | undefined;
1635
+ priceText?: string | undefined;
1636
+ originalPriceText?: string | undefined;
1637
+ discountLabel?: string | undefined;
1638
+ claimActionLabel?: string | undefined;
1639
+ stockText?: string | undefined;
1640
+ usageNoticeText?: string | undefined;
1641
+ guaranteeText?: string | undefined;
1642
+ usageSceneText?: string | undefined;
1643
+ claimTimeText?: string | undefined;
1644
+ usageRuleText?: string | undefined;
1645
+ validityText?: string | undefined;
1646
+ participationMode?: "UNKNOWN" | "AUTOMATIC_DISCOUNT" | "CLAIM_THEN_PURCHASE" | "REGISTER_THEN_ATTEND" | "GROUP_PURCHASE" | undefined;
1647
+ requirements?: string[] | undefined;
1648
+ stores?: {
1649
+ storeId: string;
1650
+ storeName: string;
1651
+ address?: string | undefined;
1652
+ businessName?: string | undefined;
1653
+ floor?: string | undefined;
1654
+ }[] | undefined;
1655
+ bundleItems?: {
1656
+ name: string;
1657
+ quantity: number;
1658
+ }[] | undefined;
1659
+ unavailableReason?: string | undefined;
1660
+ }>>;
1661
+ readonly 'promotion-entitlement-list': _tbox_cn_app_contracts.CardMeta<zod.ZodObject<{
1662
+ mallId: zod.ZodOptional<zod.ZodString>;
1663
+ miniAppId: zod.ZodOptional<zod.ZodString>;
1664
+ maxItems: zod.ZodOptional<zod.ZodNumber>;
1665
+ items: zod.ZodArray<zod.ZodObject<{
1666
+ entitlementRef: zod.ZodString;
1667
+ title: zod.ZodString;
1668
+ imageUrl: zod.ZodOptional<zod.ZodString>;
1669
+ entitlementType: zod.ZodEnum<["COUPON", "BUNDLE", "PROMOTION", "ACTIVITY", "GROUPON"]>;
1670
+ status: zod.ZodEnum<["EFFECTIVE", "USED", "EXPIRED", "INVALID", "UNKNOWN"]>;
1671
+ codeMasked: zod.ZodOptional<zod.ZodString>;
1672
+ code: zod.ZodOptional<zod.ZodString>;
1673
+ qrCodeEnabled: zod.ZodOptional<zod.ZodBoolean>;
1674
+ benefitText: zod.ZodOptional<zod.ZodString>;
1675
+ thresholdText: zod.ZodOptional<zod.ZodString>;
1676
+ usageNotice: zod.ZodOptional<zod.ZodString>;
1677
+ guaranteeText: zod.ZodOptional<zod.ZodString>;
1678
+ usageSceneText: zod.ZodOptional<zod.ZodString>;
1679
+ usageTimeText: zod.ZodOptional<zod.ZodString>;
1680
+ claimTimeText: zod.ZodOptional<zod.ZodString>;
1681
+ usageRuleText: zod.ZodOptional<zod.ZodString>;
1682
+ validityText: zod.ZodOptional<zod.ZodString>;
1683
+ validUntilText: zod.ZodOptional<zod.ZodString>;
1684
+ itemActions: zod.ZodOptional<zod.ZodArray<zod.ZodDiscriminatedUnion<"kind", [zod.ZodObject<{
1685
+ kind: zod.ZodLiteral<"send">;
1686
+ label: zod.ZodString;
1687
+ value: zod.ZodOptional<zod.ZodString>;
1688
+ visibleValue: zod.ZodOptional<zod.ZodString>;
1689
+ }, "strip", zod.ZodTypeAny, {
1690
+ kind: "send";
1691
+ label: string;
1692
+ value?: string | undefined;
1693
+ visibleValue?: string | undefined;
1694
+ }, {
1695
+ kind: "send";
1696
+ label: string;
1697
+ value?: string | undefined;
1698
+ visibleValue?: string | undefined;
1699
+ }>, zod.ZodObject<{
1700
+ kind: zod.ZodLiteral<"link">;
1701
+ label: zod.ZodString;
1702
+ url: zod.ZodString;
1703
+ }, "strip", zod.ZodTypeAny, {
1704
+ url: string;
1705
+ kind: "link";
1706
+ label: string;
1707
+ }, {
1708
+ url: string;
1709
+ kind: "link";
1710
+ label: string;
1711
+ }>]>, "many">>;
1712
+ stores: zod.ZodOptional<zod.ZodArray<zod.ZodObject<{
1713
+ storeId: zod.ZodString;
1714
+ storeName: zod.ZodString;
1715
+ businessName: zod.ZodOptional<zod.ZodString>;
1716
+ imageUrl: zod.ZodOptional<zod.ZodString>;
1717
+ address: zod.ZodOptional<zod.ZodString>;
1718
+ floor: zod.ZodOptional<zod.ZodString>;
1719
+ latitude: zod.ZodOptional<zod.ZodNumber>;
1720
+ longitude: zod.ZodOptional<zod.ZodNumber>;
1721
+ }, "strip", zod.ZodTypeAny, {
1722
+ storeId: string;
1723
+ storeName: string;
1724
+ latitude?: number | undefined;
1725
+ longitude?: number | undefined;
1726
+ imageUrl?: string | undefined;
1727
+ address?: string | undefined;
1728
+ businessName?: string | undefined;
1729
+ floor?: string | undefined;
1730
+ }, {
1731
+ storeId: string;
1732
+ storeName: string;
1733
+ latitude?: number | undefined;
1734
+ longitude?: number | undefined;
1735
+ imageUrl?: string | undefined;
1736
+ address?: string | undefined;
1737
+ businessName?: string | undefined;
1738
+ floor?: string | undefined;
1739
+ }>, "many">>;
1740
+ }, "strip", zod.ZodTypeAny, {
1741
+ status: "UNKNOWN" | "USED" | "EXPIRED" | "EFFECTIVE" | "INVALID";
1742
+ title: string;
1743
+ entitlementRef: string;
1744
+ entitlementType: "COUPON" | "BUNDLE" | "PROMOTION" | "ACTIVITY" | "GROUPON";
1745
+ code?: string | undefined;
1746
+ imageUrl?: string | undefined;
1747
+ usageTimeText?: string | undefined;
1748
+ itemActions?: ({
1749
+ kind: "send";
1750
+ label: string;
1751
+ value?: string | undefined;
1752
+ visibleValue?: string | undefined;
1753
+ } | {
1754
+ url: string;
1755
+ kind: "link";
1756
+ label: string;
1757
+ })[] | undefined;
1758
+ benefitText?: string | undefined;
1759
+ thresholdText?: string | undefined;
1760
+ guaranteeText?: string | undefined;
1761
+ usageSceneText?: string | undefined;
1762
+ claimTimeText?: string | undefined;
1763
+ usageRuleText?: string | undefined;
1764
+ validityText?: string | undefined;
1765
+ stores?: {
1766
+ storeId: string;
1767
+ storeName: string;
1768
+ latitude?: number | undefined;
1769
+ longitude?: number | undefined;
1770
+ imageUrl?: string | undefined;
1771
+ address?: string | undefined;
1772
+ businessName?: string | undefined;
1773
+ floor?: string | undefined;
1774
+ }[] | undefined;
1775
+ codeMasked?: string | undefined;
1776
+ qrCodeEnabled?: boolean | undefined;
1777
+ usageNotice?: string | undefined;
1778
+ validUntilText?: string | undefined;
1779
+ }, {
1780
+ status: "UNKNOWN" | "USED" | "EXPIRED" | "EFFECTIVE" | "INVALID";
1781
+ title: string;
1782
+ entitlementRef: string;
1783
+ entitlementType: "COUPON" | "BUNDLE" | "PROMOTION" | "ACTIVITY" | "GROUPON";
1784
+ code?: string | undefined;
1785
+ imageUrl?: string | undefined;
1786
+ usageTimeText?: string | undefined;
1787
+ itemActions?: ({
1788
+ kind: "send";
1789
+ label: string;
1790
+ value?: string | undefined;
1791
+ visibleValue?: string | undefined;
1792
+ } | {
1793
+ url: string;
1794
+ kind: "link";
1795
+ label: string;
1796
+ })[] | undefined;
1797
+ benefitText?: string | undefined;
1798
+ thresholdText?: string | undefined;
1799
+ guaranteeText?: string | undefined;
1800
+ usageSceneText?: string | undefined;
1801
+ claimTimeText?: string | undefined;
1802
+ usageRuleText?: string | undefined;
1803
+ validityText?: string | undefined;
1804
+ stores?: {
1805
+ storeId: string;
1806
+ storeName: string;
1807
+ latitude?: number | undefined;
1808
+ longitude?: number | undefined;
1809
+ imageUrl?: string | undefined;
1810
+ address?: string | undefined;
1811
+ businessName?: string | undefined;
1812
+ floor?: string | undefined;
1813
+ }[] | undefined;
1814
+ codeMasked?: string | undefined;
1815
+ qrCodeEnabled?: boolean | undefined;
1816
+ usageNotice?: string | undefined;
1817
+ validUntilText?: string | undefined;
1818
+ }>, "many">;
1819
+ noResultsReason: zod.ZodOptional<zod.ZodString>;
1820
+ nextCursor: zod.ZodOptional<zod.ZodString>;
1821
+ }, "strip", zod.ZodTypeAny, {
1822
+ items: {
1823
+ status: "UNKNOWN" | "USED" | "EXPIRED" | "EFFECTIVE" | "INVALID";
1824
+ title: string;
1825
+ entitlementRef: string;
1826
+ entitlementType: "COUPON" | "BUNDLE" | "PROMOTION" | "ACTIVITY" | "GROUPON";
1827
+ code?: string | undefined;
1828
+ imageUrl?: string | undefined;
1829
+ usageTimeText?: string | undefined;
1830
+ itemActions?: ({
1831
+ kind: "send";
1832
+ label: string;
1833
+ value?: string | undefined;
1834
+ visibleValue?: string | undefined;
1835
+ } | {
1836
+ url: string;
1837
+ kind: "link";
1838
+ label: string;
1839
+ })[] | undefined;
1840
+ benefitText?: string | undefined;
1841
+ thresholdText?: string | undefined;
1842
+ guaranteeText?: string | undefined;
1843
+ usageSceneText?: string | undefined;
1844
+ claimTimeText?: string | undefined;
1845
+ usageRuleText?: string | undefined;
1846
+ validityText?: string | undefined;
1847
+ stores?: {
1848
+ storeId: string;
1849
+ storeName: string;
1850
+ latitude?: number | undefined;
1851
+ longitude?: number | undefined;
1852
+ imageUrl?: string | undefined;
1853
+ address?: string | undefined;
1854
+ businessName?: string | undefined;
1855
+ floor?: string | undefined;
1856
+ }[] | undefined;
1857
+ codeMasked?: string | undefined;
1858
+ qrCodeEnabled?: boolean | undefined;
1859
+ usageNotice?: string | undefined;
1860
+ validUntilText?: string | undefined;
1861
+ }[];
1862
+ miniAppId?: string | undefined;
1863
+ mallId?: string | undefined;
1864
+ noResultsReason?: string | undefined;
1865
+ maxItems?: number | undefined;
1866
+ nextCursor?: string | undefined;
1867
+ }, {
1868
+ items: {
1869
+ status: "UNKNOWN" | "USED" | "EXPIRED" | "EFFECTIVE" | "INVALID";
1870
+ title: string;
1871
+ entitlementRef: string;
1872
+ entitlementType: "COUPON" | "BUNDLE" | "PROMOTION" | "ACTIVITY" | "GROUPON";
1873
+ code?: string | undefined;
1874
+ imageUrl?: string | undefined;
1875
+ usageTimeText?: string | undefined;
1876
+ itemActions?: ({
1877
+ kind: "send";
1878
+ label: string;
1879
+ value?: string | undefined;
1880
+ visibleValue?: string | undefined;
1881
+ } | {
1882
+ url: string;
1883
+ kind: "link";
1884
+ label: string;
1885
+ })[] | undefined;
1886
+ benefitText?: string | undefined;
1887
+ thresholdText?: string | undefined;
1888
+ guaranteeText?: string | undefined;
1889
+ usageSceneText?: string | undefined;
1890
+ claimTimeText?: string | undefined;
1891
+ usageRuleText?: string | undefined;
1892
+ validityText?: string | undefined;
1893
+ stores?: {
1894
+ storeId: string;
1895
+ storeName: string;
1896
+ latitude?: number | undefined;
1897
+ longitude?: number | undefined;
1898
+ imageUrl?: string | undefined;
1899
+ address?: string | undefined;
1900
+ businessName?: string | undefined;
1901
+ floor?: string | undefined;
1902
+ }[] | undefined;
1903
+ codeMasked?: string | undefined;
1904
+ qrCodeEnabled?: boolean | undefined;
1905
+ usageNotice?: string | undefined;
1906
+ validUntilText?: string | undefined;
1907
+ }[];
1908
+ miniAppId?: string | undefined;
1909
+ mallId?: string | undefined;
1910
+ noResultsReason?: string | undefined;
1911
+ maxItems?: number | undefined;
1912
+ nextCursor?: string | undefined;
57
1913
  }>>;
1914
+ readonly 'promotion-activity-list': _tbox_cn_app_contracts.CardMeta<zod.ZodObject<{
1915
+ items: zod.ZodArray<zod.ZodObject<{
1916
+ activityRef: zod.ZodString;
1917
+ title: zod.ZodString;
1918
+ subtitle: zod.ZodOptional<zod.ZodString>;
1919
+ coverUrl: zod.ZodOptional<zod.ZodString>;
1920
+ registrationRequired: zod.ZodBoolean;
1921
+ jumpOnly: zod.ZodOptional<zod.ZodBoolean>;
1922
+ jumpLabel: zod.ZodOptional<zod.ZodString>;
1923
+ remainingQuota: zod.ZodOptional<zod.ZodNumber>;
1924
+ periodText: zod.ZodOptional<zod.ZodString>;
1925
+ categoryName: zod.ZodOptional<zod.ZodString>;
1926
+ availabilityStatus: zod.ZodOptional<zod.ZodEnum<["AVAILABLE", "FULL", "ENDED", "UPCOMING", "UNKNOWN"]>>;
1927
+ itemActions: zod.ZodOptional<zod.ZodArray<zod.ZodDiscriminatedUnion<"kind", [zod.ZodObject<{
1928
+ kind: zod.ZodLiteral<"send">;
1929
+ label: zod.ZodString;
1930
+ value: zod.ZodOptional<zod.ZodString>;
1931
+ visibleValue: zod.ZodOptional<zod.ZodString>;
1932
+ }, "strip", zod.ZodTypeAny, {
1933
+ kind: "send";
1934
+ label: string;
1935
+ value?: string | undefined;
1936
+ visibleValue?: string | undefined;
1937
+ }, {
1938
+ kind: "send";
1939
+ label: string;
1940
+ value?: string | undefined;
1941
+ visibleValue?: string | undefined;
1942
+ }>, zod.ZodObject<{
1943
+ kind: zod.ZodLiteral<"link">;
1944
+ label: zod.ZodString;
1945
+ url: zod.ZodString;
1946
+ }, "strip", zod.ZodTypeAny, {
1947
+ url: string;
1948
+ kind: "link";
1949
+ label: string;
1950
+ }, {
1951
+ url: string;
1952
+ kind: "link";
1953
+ label: string;
1954
+ }>]>, "many">>;
1955
+ }, "strip", zod.ZodTypeAny, {
1956
+ title: string;
1957
+ activityRef: string;
1958
+ registrationRequired: boolean;
1959
+ subtitle?: string | undefined;
1960
+ itemActions?: ({
1961
+ kind: "send";
1962
+ label: string;
1963
+ value?: string | undefined;
1964
+ visibleValue?: string | undefined;
1965
+ } | {
1966
+ url: string;
1967
+ kind: "link";
1968
+ label: string;
1969
+ })[] | undefined;
1970
+ coverUrl?: string | undefined;
1971
+ availabilityStatus?: "UNKNOWN" | "AVAILABLE" | "FULL" | "ENDED" | "UPCOMING" | undefined;
1972
+ jumpOnly?: boolean | undefined;
1973
+ jumpLabel?: string | undefined;
1974
+ remainingQuota?: number | undefined;
1975
+ periodText?: string | undefined;
1976
+ categoryName?: string | undefined;
1977
+ }, {
1978
+ title: string;
1979
+ activityRef: string;
1980
+ registrationRequired: boolean;
1981
+ subtitle?: string | undefined;
1982
+ itemActions?: ({
1983
+ kind: "send";
1984
+ label: string;
1985
+ value?: string | undefined;
1986
+ visibleValue?: string | undefined;
1987
+ } | {
1988
+ url: string;
1989
+ kind: "link";
1990
+ label: string;
1991
+ })[] | undefined;
1992
+ coverUrl?: string | undefined;
1993
+ availabilityStatus?: "UNKNOWN" | "AVAILABLE" | "FULL" | "ENDED" | "UPCOMING" | undefined;
1994
+ jumpOnly?: boolean | undefined;
1995
+ jumpLabel?: string | undefined;
1996
+ remainingQuota?: number | undefined;
1997
+ periodText?: string | undefined;
1998
+ categoryName?: string | undefined;
1999
+ }>, "many">;
2000
+ noResultsReason: zod.ZodOptional<zod.ZodString>;
2001
+ nextCursor: zod.ZodOptional<zod.ZodString>;
2002
+ }, "strip", zod.ZodTypeAny, {
2003
+ items: {
2004
+ title: string;
2005
+ activityRef: string;
2006
+ registrationRequired: boolean;
2007
+ subtitle?: string | undefined;
2008
+ itemActions?: ({
2009
+ kind: "send";
2010
+ label: string;
2011
+ value?: string | undefined;
2012
+ visibleValue?: string | undefined;
2013
+ } | {
2014
+ url: string;
2015
+ kind: "link";
2016
+ label: string;
2017
+ })[] | undefined;
2018
+ coverUrl?: string | undefined;
2019
+ availabilityStatus?: "UNKNOWN" | "AVAILABLE" | "FULL" | "ENDED" | "UPCOMING" | undefined;
2020
+ jumpOnly?: boolean | undefined;
2021
+ jumpLabel?: string | undefined;
2022
+ remainingQuota?: number | undefined;
2023
+ periodText?: string | undefined;
2024
+ categoryName?: string | undefined;
2025
+ }[];
2026
+ noResultsReason?: string | undefined;
2027
+ nextCursor?: string | undefined;
2028
+ }, {
2029
+ items: {
2030
+ title: string;
2031
+ activityRef: string;
2032
+ registrationRequired: boolean;
2033
+ subtitle?: string | undefined;
2034
+ itemActions?: ({
2035
+ kind: "send";
2036
+ label: string;
2037
+ value?: string | undefined;
2038
+ visibleValue?: string | undefined;
2039
+ } | {
2040
+ url: string;
2041
+ kind: "link";
2042
+ label: string;
2043
+ })[] | undefined;
2044
+ coverUrl?: string | undefined;
2045
+ availabilityStatus?: "UNKNOWN" | "AVAILABLE" | "FULL" | "ENDED" | "UPCOMING" | undefined;
2046
+ jumpOnly?: boolean | undefined;
2047
+ jumpLabel?: string | undefined;
2048
+ remainingQuota?: number | undefined;
2049
+ periodText?: string | undefined;
2050
+ categoryName?: string | undefined;
2051
+ }[];
2052
+ noResultsReason?: string | undefined;
2053
+ nextCursor?: string | undefined;
2054
+ }>>;
2055
+ readonly 'promotion-activity-detail': _tbox_cn_app_contracts.CardMeta<zod.ZodObject<{
2056
+ presentation: zod.ZodOptional<zod.ZodEnum<["detail", "schedule", "guide"]>>;
2057
+ activityRef: zod.ZodString;
2058
+ title: zod.ZodString;
2059
+ subtitle: zod.ZodOptional<zod.ZodString>;
2060
+ categoryName: zod.ZodOptional<zod.ZodString>;
2061
+ description: zod.ZodOptional<zod.ZodString>;
2062
+ coverUrl: zod.ZodOptional<zod.ZodString>;
2063
+ periodText: zod.ZodOptional<zod.ZodString>;
2064
+ location: zod.ZodOptional<zod.ZodString>;
2065
+ registrationRequired: zod.ZodBoolean;
2066
+ jumpOnly: zod.ZodOptional<zod.ZodBoolean>;
2067
+ jumpLabel: zod.ZodOptional<zod.ZodString>;
2068
+ registrationUrl: zod.ZodOptional<zod.ZodString>;
2069
+ remainingQuota: zod.ZodOptional<zod.ZodNumber>;
2070
+ sessions: zod.ZodArray<zod.ZodObject<{
2071
+ sessionRef: zod.ZodString;
2072
+ title: zod.ZodString;
2073
+ startText: zod.ZodString;
2074
+ endText: zod.ZodOptional<zod.ZodString>;
2075
+ location: zod.ZodOptional<zod.ZodString>;
2076
+ remainingQuota: zod.ZodOptional<zod.ZodNumber>;
2077
+ status: zod.ZodEnum<["OPEN", "FULL", "CLOSED", "UNKNOWN"]>;
2078
+ }, "strip", zod.ZodTypeAny, {
2079
+ status: "UNKNOWN" | "CLOSED" | "OPEN" | "FULL";
2080
+ title: string;
2081
+ sessionRef: string;
2082
+ startText: string;
2083
+ location?: string | undefined;
2084
+ remainingQuota?: number | undefined;
2085
+ endText?: string | undefined;
2086
+ }, {
2087
+ status: "UNKNOWN" | "CLOSED" | "OPEN" | "FULL";
2088
+ title: string;
2089
+ sessionRef: string;
2090
+ startText: string;
2091
+ location?: string | undefined;
2092
+ remainingQuota?: number | undefined;
2093
+ endText?: string | undefined;
2094
+ }>, "many">;
2095
+ guideSteps: zod.ZodArray<zod.ZodString, "many">;
2096
+ guideItems: zod.ZodOptional<zod.ZodArray<zod.ZodObject<{
2097
+ title: zod.ZodString;
2098
+ description: zod.ZodOptional<zod.ZodString>;
2099
+ }, "strip", zod.ZodTypeAny, {
2100
+ title: string;
2101
+ description?: string | undefined;
2102
+ }, {
2103
+ title: string;
2104
+ description?: string | undefined;
2105
+ }>, "many">>;
2106
+ conditions: zod.ZodArray<zod.ZodString, "many">;
2107
+ notice: zod.ZodOptional<zod.ZodString>;
2108
+ }, "strip", zod.ZodTypeAny, {
2109
+ title: string;
2110
+ activityRef: string;
2111
+ registrationRequired: boolean;
2112
+ sessions: {
2113
+ status: "UNKNOWN" | "CLOSED" | "OPEN" | "FULL";
2114
+ title: string;
2115
+ sessionRef: string;
2116
+ startText: string;
2117
+ location?: string | undefined;
2118
+ remainingQuota?: number | undefined;
2119
+ endText?: string | undefined;
2120
+ }[];
2121
+ guideSteps: string[];
2122
+ conditions: string[];
2123
+ description?: string | undefined;
2124
+ subtitle?: string | undefined;
2125
+ presentation?: "detail" | "schedule" | "guide" | undefined;
2126
+ notice?: string | undefined;
2127
+ location?: string | undefined;
2128
+ coverUrl?: string | undefined;
2129
+ jumpOnly?: boolean | undefined;
2130
+ jumpLabel?: string | undefined;
2131
+ remainingQuota?: number | undefined;
2132
+ periodText?: string | undefined;
2133
+ categoryName?: string | undefined;
2134
+ registrationUrl?: string | undefined;
2135
+ guideItems?: {
2136
+ title: string;
2137
+ description?: string | undefined;
2138
+ }[] | undefined;
2139
+ }, {
2140
+ title: string;
2141
+ activityRef: string;
2142
+ registrationRequired: boolean;
2143
+ sessions: {
2144
+ status: "UNKNOWN" | "CLOSED" | "OPEN" | "FULL";
2145
+ title: string;
2146
+ sessionRef: string;
2147
+ startText: string;
2148
+ location?: string | undefined;
2149
+ remainingQuota?: number | undefined;
2150
+ endText?: string | undefined;
2151
+ }[];
2152
+ guideSteps: string[];
2153
+ conditions: string[];
2154
+ description?: string | undefined;
2155
+ subtitle?: string | undefined;
2156
+ presentation?: "detail" | "schedule" | "guide" | undefined;
2157
+ notice?: string | undefined;
2158
+ location?: string | undefined;
2159
+ coverUrl?: string | undefined;
2160
+ jumpOnly?: boolean | undefined;
2161
+ jumpLabel?: string | undefined;
2162
+ remainingQuota?: number | undefined;
2163
+ periodText?: string | undefined;
2164
+ categoryName?: string | undefined;
2165
+ registrationUrl?: string | undefined;
2166
+ guideItems?: {
2167
+ title: string;
2168
+ description?: string | undefined;
2169
+ }[] | undefined;
2170
+ }>>;
2171
+ readonly 'promotion-activity-category-list': _tbox_cn_app_contracts.CardMeta<zod.ZodObject<{
2172
+ items: zod.ZodArray<zod.ZodObject<{
2173
+ categoryId: zod.ZodString;
2174
+ name: zod.ZodString;
2175
+ parentId: zod.ZodOptional<zod.ZodString>;
2176
+ itemActions: zod.ZodOptional<zod.ZodArray<zod.ZodDiscriminatedUnion<"kind", [zod.ZodObject<{
2177
+ kind: zod.ZodLiteral<"send">;
2178
+ label: zod.ZodString;
2179
+ value: zod.ZodOptional<zod.ZodString>;
2180
+ visibleValue: zod.ZodOptional<zod.ZodString>;
2181
+ }, "strip", zod.ZodTypeAny, {
2182
+ kind: "send";
2183
+ label: string;
2184
+ value?: string | undefined;
2185
+ visibleValue?: string | undefined;
2186
+ }, {
2187
+ kind: "send";
2188
+ label: string;
2189
+ value?: string | undefined;
2190
+ visibleValue?: string | undefined;
2191
+ }>, zod.ZodObject<{
2192
+ kind: zod.ZodLiteral<"link">;
2193
+ label: zod.ZodString;
2194
+ url: zod.ZodString;
2195
+ }, "strip", zod.ZodTypeAny, {
2196
+ url: string;
2197
+ kind: "link";
2198
+ label: string;
2199
+ }, {
2200
+ url: string;
2201
+ kind: "link";
2202
+ label: string;
2203
+ }>]>, "many">>;
2204
+ }, "strip", zod.ZodTypeAny, {
2205
+ name: string;
2206
+ categoryId: string;
2207
+ itemActions?: ({
2208
+ kind: "send";
2209
+ label: string;
2210
+ value?: string | undefined;
2211
+ visibleValue?: string | undefined;
2212
+ } | {
2213
+ url: string;
2214
+ kind: "link";
2215
+ label: string;
2216
+ })[] | undefined;
2217
+ parentId?: string | undefined;
2218
+ }, {
2219
+ name: string;
2220
+ categoryId: string;
2221
+ itemActions?: ({
2222
+ kind: "send";
2223
+ label: string;
2224
+ value?: string | undefined;
2225
+ visibleValue?: string | undefined;
2226
+ } | {
2227
+ url: string;
2228
+ kind: "link";
2229
+ label: string;
2230
+ })[] | undefined;
2231
+ parentId?: string | undefined;
2232
+ }>, "many">;
2233
+ noResultsReason: zod.ZodOptional<zod.ZodString>;
2234
+ }, "strip", zod.ZodTypeAny, {
2235
+ items: {
2236
+ name: string;
2237
+ categoryId: string;
2238
+ itemActions?: ({
2239
+ kind: "send";
2240
+ label: string;
2241
+ value?: string | undefined;
2242
+ visibleValue?: string | undefined;
2243
+ } | {
2244
+ url: string;
2245
+ kind: "link";
2246
+ label: string;
2247
+ })[] | undefined;
2248
+ parentId?: string | undefined;
2249
+ }[];
2250
+ noResultsReason?: string | undefined;
2251
+ }, {
2252
+ items: {
2253
+ name: string;
2254
+ categoryId: string;
2255
+ itemActions?: ({
2256
+ kind: "send";
2257
+ label: string;
2258
+ value?: string | undefined;
2259
+ visibleValue?: string | undefined;
2260
+ } | {
2261
+ url: string;
2262
+ kind: "link";
2263
+ label: string;
2264
+ })[] | undefined;
2265
+ parentId?: string | undefined;
2266
+ }[];
2267
+ noResultsReason?: string | undefined;
2268
+ }>>;
2269
+ readonly 'promotion-best-deal': _tbox_cn_app_contracts.CardMeta<zod.ZodObject<{
2270
+ authoritative: zod.ZodBoolean;
2271
+ originalAmountCents: zod.ZodNumber;
2272
+ savingsCents: zod.ZodOptional<zod.ZodNumber>;
2273
+ expectedPayCents: zod.ZodOptional<zod.ZodNumber>;
2274
+ appliedOfferRefs: zod.ZodArray<zod.ZodString, "many">;
2275
+ candidates: zod.ZodOptional<zod.ZodArray<zod.ZodObject<{
2276
+ offerRef: zod.ZodString;
2277
+ title: zod.ZodString;
2278
+ subtitle: zod.ZodOptional<zod.ZodString>;
2279
+ offerType: zod.ZodEnum<["COUPON", "BUNDLE", "PROMOTION", "ACTIVITY", "GROUPON"]>;
2280
+ benefitText: zod.ZodOptional<zod.ZodString>;
2281
+ thresholdText: zod.ZodOptional<zod.ZodString>;
2282
+ priceText: zod.ZodOptional<zod.ZodString>;
2283
+ originalPriceText: zod.ZodOptional<zod.ZodString>;
2284
+ discountLabel: zod.ZodOptional<zod.ZodString>;
2285
+ claimActionLabel: zod.ZodOptional<zod.ZodString>;
2286
+ purchaseUrl: zod.ZodOptional<zod.ZodString>;
2287
+ freeCouponClaimMode: zod.ZodOptional<zod.ZodEnum<["DIRECT", "REDIRECT"]>>;
2288
+ stockText: zod.ZodOptional<zod.ZodString>;
2289
+ usageNoticeText: zod.ZodOptional<zod.ZodString>;
2290
+ guaranteeText: zod.ZodOptional<zod.ZodString>;
2291
+ usageSceneText: zod.ZodOptional<zod.ZodString>;
2292
+ usageTimeText: zod.ZodOptional<zod.ZodString>;
2293
+ claimTimeText: zod.ZodOptional<zod.ZodString>;
2294
+ usageRuleText: zod.ZodOptional<zod.ZodString>;
2295
+ claimable: zod.ZodBoolean;
2296
+ availabilityStatus: zod.ZodOptional<zod.ZodEnum<["AVAILABLE", "UNAVAILABLE", "REQUIRES_ACTION", "UNKNOWN"]>>;
2297
+ validityText: zod.ZodOptional<zod.ZodString>;
2298
+ imageUrl: zod.ZodOptional<zod.ZodString>;
2299
+ itemActions: zod.ZodOptional<zod.ZodArray<zod.ZodDiscriminatedUnion<"kind", [zod.ZodObject<{
2300
+ kind: zod.ZodLiteral<"send">;
2301
+ label: zod.ZodString;
2302
+ value: zod.ZodOptional<zod.ZodString>;
2303
+ visibleValue: zod.ZodOptional<zod.ZodString>;
2304
+ }, "strip", zod.ZodTypeAny, {
2305
+ kind: "send";
2306
+ label: string;
2307
+ value?: string | undefined;
2308
+ visibleValue?: string | undefined;
2309
+ }, {
2310
+ kind: "send";
2311
+ label: string;
2312
+ value?: string | undefined;
2313
+ visibleValue?: string | undefined;
2314
+ }>, zod.ZodObject<{
2315
+ kind: zod.ZodLiteral<"link">;
2316
+ label: zod.ZodString;
2317
+ url: zod.ZodString;
2318
+ }, "strip", zod.ZodTypeAny, {
2319
+ url: string;
2320
+ kind: "link";
2321
+ label: string;
2322
+ }, {
2323
+ url: string;
2324
+ kind: "link";
2325
+ label: string;
2326
+ }>]>, "many">>;
2327
+ tags: zod.ZodArray<zod.ZodString, "many">;
2328
+ }, "strip", zod.ZodTypeAny, {
2329
+ title: string;
2330
+ offerRef: string;
2331
+ offerType: "COUPON" | "BUNDLE" | "PROMOTION" | "ACTIVITY" | "GROUPON";
2332
+ claimable: boolean;
2333
+ tags: string[];
2334
+ subtitle?: string | undefined;
2335
+ imageUrl?: string | undefined;
2336
+ usageTimeText?: string | undefined;
2337
+ purchaseUrl?: string | undefined;
2338
+ freeCouponClaimMode?: "DIRECT" | "REDIRECT" | undefined;
2339
+ itemActions?: ({
2340
+ kind: "send";
2341
+ label: string;
2342
+ value?: string | undefined;
2343
+ visibleValue?: string | undefined;
2344
+ } | {
2345
+ url: string;
2346
+ kind: "link";
2347
+ label: string;
2348
+ })[] | undefined;
2349
+ benefitText?: string | undefined;
2350
+ thresholdText?: string | undefined;
2351
+ priceText?: string | undefined;
2352
+ originalPriceText?: string | undefined;
2353
+ discountLabel?: string | undefined;
2354
+ claimActionLabel?: string | undefined;
2355
+ stockText?: string | undefined;
2356
+ usageNoticeText?: string | undefined;
2357
+ guaranteeText?: string | undefined;
2358
+ usageSceneText?: string | undefined;
2359
+ claimTimeText?: string | undefined;
2360
+ usageRuleText?: string | undefined;
2361
+ availabilityStatus?: "UNKNOWN" | "AVAILABLE" | "UNAVAILABLE" | "REQUIRES_ACTION" | undefined;
2362
+ validityText?: string | undefined;
2363
+ }, {
2364
+ title: string;
2365
+ offerRef: string;
2366
+ offerType: "COUPON" | "BUNDLE" | "PROMOTION" | "ACTIVITY" | "GROUPON";
2367
+ claimable: boolean;
2368
+ tags: string[];
2369
+ subtitle?: string | undefined;
2370
+ imageUrl?: string | undefined;
2371
+ usageTimeText?: string | undefined;
2372
+ purchaseUrl?: string | undefined;
2373
+ freeCouponClaimMode?: "DIRECT" | "REDIRECT" | undefined;
2374
+ itemActions?: ({
2375
+ kind: "send";
2376
+ label: string;
2377
+ value?: string | undefined;
2378
+ visibleValue?: string | undefined;
2379
+ } | {
2380
+ url: string;
2381
+ kind: "link";
2382
+ label: string;
2383
+ })[] | undefined;
2384
+ benefitText?: string | undefined;
2385
+ thresholdText?: string | undefined;
2386
+ priceText?: string | undefined;
2387
+ originalPriceText?: string | undefined;
2388
+ discountLabel?: string | undefined;
2389
+ claimActionLabel?: string | undefined;
2390
+ stockText?: string | undefined;
2391
+ usageNoticeText?: string | undefined;
2392
+ guaranteeText?: string | undefined;
2393
+ usageSceneText?: string | undefined;
2394
+ claimTimeText?: string | undefined;
2395
+ usageRuleText?: string | undefined;
2396
+ availabilityStatus?: "UNKNOWN" | "AVAILABLE" | "UNAVAILABLE" | "REQUIRES_ACTION" | undefined;
2397
+ validityText?: string | undefined;
2398
+ }>, "many">>;
2399
+ message: zod.ZodOptional<zod.ZodString>;
2400
+ }, "strip", zod.ZodTypeAny, {
2401
+ authoritative: boolean;
2402
+ originalAmountCents: number;
2403
+ appliedOfferRefs: string[];
2404
+ message?: string | undefined;
2405
+ savingsCents?: number | undefined;
2406
+ expectedPayCents?: number | undefined;
2407
+ candidates?: {
2408
+ title: string;
2409
+ offerRef: string;
2410
+ offerType: "COUPON" | "BUNDLE" | "PROMOTION" | "ACTIVITY" | "GROUPON";
2411
+ claimable: boolean;
2412
+ tags: string[];
2413
+ subtitle?: string | undefined;
2414
+ imageUrl?: string | undefined;
2415
+ usageTimeText?: string | undefined;
2416
+ purchaseUrl?: string | undefined;
2417
+ freeCouponClaimMode?: "DIRECT" | "REDIRECT" | undefined;
2418
+ itemActions?: ({
2419
+ kind: "send";
2420
+ label: string;
2421
+ value?: string | undefined;
2422
+ visibleValue?: string | undefined;
2423
+ } | {
2424
+ url: string;
2425
+ kind: "link";
2426
+ label: string;
2427
+ })[] | undefined;
2428
+ benefitText?: string | undefined;
2429
+ thresholdText?: string | undefined;
2430
+ priceText?: string | undefined;
2431
+ originalPriceText?: string | undefined;
2432
+ discountLabel?: string | undefined;
2433
+ claimActionLabel?: string | undefined;
2434
+ stockText?: string | undefined;
2435
+ usageNoticeText?: string | undefined;
2436
+ guaranteeText?: string | undefined;
2437
+ usageSceneText?: string | undefined;
2438
+ claimTimeText?: string | undefined;
2439
+ usageRuleText?: string | undefined;
2440
+ availabilityStatus?: "UNKNOWN" | "AVAILABLE" | "UNAVAILABLE" | "REQUIRES_ACTION" | undefined;
2441
+ validityText?: string | undefined;
2442
+ }[] | undefined;
2443
+ }, {
2444
+ authoritative: boolean;
2445
+ originalAmountCents: number;
2446
+ appliedOfferRefs: string[];
2447
+ message?: string | undefined;
2448
+ savingsCents?: number | undefined;
2449
+ expectedPayCents?: number | undefined;
2450
+ candidates?: {
2451
+ title: string;
2452
+ offerRef: string;
2453
+ offerType: "COUPON" | "BUNDLE" | "PROMOTION" | "ACTIVITY" | "GROUPON";
2454
+ claimable: boolean;
2455
+ tags: string[];
2456
+ subtitle?: string | undefined;
2457
+ imageUrl?: string | undefined;
2458
+ usageTimeText?: string | undefined;
2459
+ purchaseUrl?: string | undefined;
2460
+ freeCouponClaimMode?: "DIRECT" | "REDIRECT" | undefined;
2461
+ itemActions?: ({
2462
+ kind: "send";
2463
+ label: string;
2464
+ value?: string | undefined;
2465
+ visibleValue?: string | undefined;
2466
+ } | {
2467
+ url: string;
2468
+ kind: "link";
2469
+ label: string;
2470
+ })[] | undefined;
2471
+ benefitText?: string | undefined;
2472
+ thresholdText?: string | undefined;
2473
+ priceText?: string | undefined;
2474
+ originalPriceText?: string | undefined;
2475
+ discountLabel?: string | undefined;
2476
+ claimActionLabel?: string | undefined;
2477
+ stockText?: string | undefined;
2478
+ usageNoticeText?: string | undefined;
2479
+ guaranteeText?: string | undefined;
2480
+ usageSceneText?: string | undefined;
2481
+ claimTimeText?: string | undefined;
2482
+ usageRuleText?: string | undefined;
2483
+ availabilityStatus?: "UNKNOWN" | "AVAILABLE" | "UNAVAILABLE" | "REQUIRES_ACTION" | undefined;
2484
+ validityText?: string | undefined;
2485
+ }[] | undefined;
2486
+ }>>;
2487
+ };
2488
+ skills: {
2489
+ [k: string]: _tbox_cn_app_sdk_server.LocalSkill;
2490
+ };
2491
+ preTools: {
2492
+ listCoupons: PreToolDef<_mastra_core_tools.Tool<{
2493
+ mode: "CLAIMABLE" | "OWNED";
2494
+ limit?: string | undefined;
2495
+ keyword?: string | undefined;
2496
+ cursor?: string | undefined;
2497
+ }, unknown, unknown, unknown, _mastra_core_tools.ToolExecutionContext<unknown, unknown, unknown>, "listCoupons", unknown>>;
58
2498
  };
59
2499
  register(ctx: ServerContext): void;
60
2500
  };
61
2501
 
62
- export { InMemoryPromotionService, meta as couponMeta, serverModule };
2502
+ export { InMemoryPromotionService, inMemoryPromotion, promotionCards, resolvePromotionAcquisitionPort, resolvePromotionActivitiesPort, resolvePromotionEntitlementsPort, resolvePromotionOffersPort, serverModule };