aivilife-contracts 5.6.0 → 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/README.md +30 -0
  2. package/dist/auth/index.d.mts +2 -1
  3. package/dist/auth/index.d.ts +2 -1
  4. package/dist/auth/index.js +130 -0
  5. package/dist/auth/index.js.map +1 -1
  6. package/dist/auth/index.mjs +130 -0
  7. package/dist/auth/index.mjs.map +1 -1
  8. package/dist/box/index.d.mts +437 -0
  9. package/dist/box/index.d.ts +437 -0
  10. package/dist/box/index.js +1355 -0
  11. package/dist/box/index.js.map +1 -0
  12. package/dist/box/index.mjs +1333 -0
  13. package/dist/box/index.mjs.map +1 -0
  14. package/dist/catalog/index.d.mts +5 -1
  15. package/dist/catalog/index.d.ts +5 -1
  16. package/dist/catalog/index.js +3 -0
  17. package/dist/catalog/index.js.map +1 -1
  18. package/dist/catalog/index.mjs +3 -0
  19. package/dist/catalog/index.mjs.map +1 -1
  20. package/dist/{marketing.enums-pV5acC3L.d.mts → index-DC3vBOFB.d.mts} +2 -12
  21. package/dist/{marketing.enums-pV5acC3L.d.ts → index-mteQAHWO.d.ts} +2 -12
  22. package/dist/index.d.mts +9 -50
  23. package/dist/index.d.ts +9 -50
  24. package/dist/index.js +453 -97
  25. package/dist/index.js.map +1 -1
  26. package/dist/index.mjs +419 -98
  27. package/dist/index.mjs.map +1 -1
  28. package/dist/marketing/index.d.mts +212 -0
  29. package/dist/marketing/index.d.ts +212 -0
  30. package/dist/marketing/index.js +238 -0
  31. package/dist/marketing/index.js.map +1 -0
  32. package/dist/marketing/index.mjs +212 -0
  33. package/dist/marketing/index.mjs.map +1 -0
  34. package/dist/marketing.enums-CNJ2Ayc_.d.mts +26 -0
  35. package/dist/marketing.enums-CNJ2Ayc_.d.ts +26 -0
  36. package/dist/order/index.d.mts +35 -70
  37. package/dist/order/index.d.ts +35 -70
  38. package/dist/order/index.js +15 -0
  39. package/dist/order/index.js.map +1 -1
  40. package/dist/order/index.mjs +15 -1
  41. package/dist/order/index.mjs.map +1 -1
  42. package/dist/order.enums-DdujST4H.d.mts +68 -0
  43. package/dist/order.enums-DdujST4H.d.ts +68 -0
  44. package/package.json +11 -1
@@ -0,0 +1,1333 @@
1
+ import { z } from 'zod';
2
+
3
+ // src/box/box.enums.ts
4
+ var BoxStatus = /* @__PURE__ */ ((BoxStatus2) => {
5
+ BoxStatus2["DRAFT"] = "DRAFT";
6
+ BoxStatus2["ACTIVE"] = "ACTIVE";
7
+ BoxStatus2["INACTIVE"] = "INACTIVE";
8
+ BoxStatus2["ARCHIVED"] = "ARCHIVED";
9
+ return BoxStatus2;
10
+ })(BoxStatus || {});
11
+ var BoxPurchaseStatus = /* @__PURE__ */ ((BoxPurchaseStatus2) => {
12
+ BoxPurchaseStatus2["PENDING_PAYMENT"] = "PENDING_PAYMENT";
13
+ BoxPurchaseStatus2["ACTIVE"] = "ACTIVE";
14
+ BoxPurchaseStatus2["SUPERSEDED"] = "SUPERSEDED";
15
+ BoxPurchaseStatus2["CANCELLED"] = "CANCELLED";
16
+ return BoxPurchaseStatus2;
17
+ })(BoxPurchaseStatus || {});
18
+ var BoxPurchaseKind = /* @__PURE__ */ ((BoxPurchaseKind2) => {
19
+ BoxPurchaseKind2["INITIAL"] = "INITIAL";
20
+ BoxPurchaseKind2["UPGRADE"] = "UPGRADE";
21
+ return BoxPurchaseKind2;
22
+ })(BoxPurchaseKind || {});
23
+
24
+ // src/localization/app-locale.enum.ts
25
+ var AppLocale = {
26
+ RU: "ru",
27
+ KK: "kk",
28
+ UZ: "uz",
29
+ EN: "en"
30
+ };
31
+ Object.values(
32
+ AppLocale
33
+ );
34
+
35
+ // src/localization/app-locale.schema.ts
36
+ var AppLocaleSchema = z.enum(AppLocale);
37
+ var PageSchema = z.coerce.number().int().min(1).default(1);
38
+ var LimitSchema = z.coerce.number().int().min(1).max(100).default(20);
39
+ var SortOrderSchema = z.enum(["asc", "desc"]).default("desc");
40
+ z.object({
41
+ page: PageSchema.optional(),
42
+ limit: LimitSchema.optional()
43
+ });
44
+
45
+ // src/common/list-query.schemas.ts
46
+ var DateFromSchema = z.string().datetime().optional();
47
+ var DateToSchema = z.string().datetime().optional();
48
+ var SearchSchema = z.string().trim().min(1).max(255).optional();
49
+ var BaseListQuerySchema = z.object({
50
+ page: PageSchema.optional(),
51
+ limit: LimitSchema.optional(),
52
+ search: SearchSchema,
53
+ dateFrom: DateFromSchema,
54
+ dateTo: DateToSchema,
55
+ sortOrder: SortOrderSchema.optional()
56
+ });
57
+
58
+ // src/order/order.enums.ts
59
+ var OrderDeliveryMethod = /* @__PURE__ */ ((OrderDeliveryMethod2) => {
60
+ OrderDeliveryMethod2["PICKUP"] = "PICKUP";
61
+ return OrderDeliveryMethod2;
62
+ })(OrderDeliveryMethod || {});
63
+ var OrderType = /* @__PURE__ */ ((OrderType2) => {
64
+ OrderType2["PRODUCT"] = "PRODUCT";
65
+ OrderType2["BOX"] = "BOX";
66
+ return OrderType2;
67
+ })(OrderType || {});
68
+ var OrderPaymentMethod = /* @__PURE__ */ ((OrderPaymentMethod2) => {
69
+ OrderPaymentMethod2["CASH"] = "CASH";
70
+ OrderPaymentMethod2["MAIN_WALLET"] = "MAIN_WALLET";
71
+ return OrderPaymentMethod2;
72
+ })(OrderPaymentMethod || {});
73
+ var OrderStatus = /* @__PURE__ */ ((OrderStatus2) => {
74
+ OrderStatus2["PENDING_PAYMENT"] = "PENDING_PAYMENT";
75
+ OrderStatus2["PROCESSING"] = "PROCESSING";
76
+ OrderStatus2["READY_FOR_PICKUP"] = "READY_FOR_PICKUP";
77
+ OrderStatus2["COMPLETED"] = "COMPLETED";
78
+ OrderStatus2["CANCELLED"] = "CANCELLED";
79
+ return OrderStatus2;
80
+ })(OrderStatus || {});
81
+ var OrderPaymentStatus = /* @__PURE__ */ ((OrderPaymentStatus2) => {
82
+ OrderPaymentStatus2["AWAITING_RECEIPT"] = "AWAITING_RECEIPT";
83
+ OrderPaymentStatus2["UNDER_REVIEW"] = "UNDER_REVIEW";
84
+ OrderPaymentStatus2["REJECTED"] = "REJECTED";
85
+ OrderPaymentStatus2["PAID"] = "PAID";
86
+ OrderPaymentStatus2["CANCELLED"] = "CANCELLED";
87
+ return OrderPaymentStatus2;
88
+ })(OrderPaymentStatus || {});
89
+ var OrderReceiptStatus = /* @__PURE__ */ ((OrderReceiptStatus2) => {
90
+ OrderReceiptStatus2["UNDER_REVIEW"] = "UNDER_REVIEW";
91
+ OrderReceiptStatus2["APPROVED"] = "APPROVED";
92
+ OrderReceiptStatus2["REJECTED"] = "REJECTED";
93
+ return OrderReceiptStatus2;
94
+ })(OrderReceiptStatus || {});
95
+ var OrderReceiptDecision = /* @__PURE__ */ ((OrderReceiptDecision2) => {
96
+ OrderReceiptDecision2["APPROVE"] = "APPROVE";
97
+ OrderReceiptDecision2["REJECT"] = "REJECT";
98
+ return OrderReceiptDecision2;
99
+ })(OrderReceiptDecision || {});
100
+ var OrderStockAvailability = /* @__PURE__ */ ((OrderStockAvailability2) => {
101
+ OrderStockAvailability2["AVAILABLE"] = "AVAILABLE";
102
+ OrderStockAvailability2["OUT_OF_STOCK"] = "OUT_OF_STOCK";
103
+ OrderStockAvailability2["INSUFFICIENT_STOCK"] = "INSUFFICIENT_STOCK";
104
+ return OrderStockAvailability2;
105
+ })(OrderStockAvailability || {});
106
+ var OrderReservationStatus = /* @__PURE__ */ ((OrderReservationStatus2) => {
107
+ OrderReservationStatus2["ACTIVE"] = "ACTIVE";
108
+ OrderReservationStatus2["RELEASED"] = "RELEASED";
109
+ OrderReservationStatus2["FULFILLED"] = "FULFILLED";
110
+ return OrderReservationStatus2;
111
+ })(OrderReservationStatus || {});
112
+ var OrderEventType = /* @__PURE__ */ ((OrderEventType2) => {
113
+ OrderEventType2["CREATED"] = "CREATED";
114
+ OrderEventType2["WALLET_DEBITED"] = "WALLET_DEBITED";
115
+ OrderEventType2["RECEIPT_UPLOADED"] = "RECEIPT_UPLOADED";
116
+ OrderEventType2["PAYMENT_APPROVED"] = "PAYMENT_APPROVED";
117
+ OrderEventType2["PAYMENT_REJECTED"] = "PAYMENT_REJECTED";
118
+ OrderEventType2["CANCELLED_TIMEOUT"] = "CANCELLED_TIMEOUT";
119
+ OrderEventType2["WALLET_REFUNDED"] = "WALLET_REFUNDED";
120
+ OrderEventType2["READY_FOR_PICKUP"] = "READY_FOR_PICKUP";
121
+ OrderEventType2["PICKUP_CODE_FAILED"] = "PICKUP_CODE_FAILED";
122
+ OrderEventType2["COMPLETED"] = "COMPLETED";
123
+ OrderEventType2["CASHBACK_CREDITED"] = "CASHBACK_CREDITED";
124
+ return OrderEventType2;
125
+ })(OrderEventType || {});
126
+ var OrderNotificationType = /* @__PURE__ */ ((OrderNotificationType2) => {
127
+ OrderNotificationType2["ORDER_CREATED"] = "ORDER_CREATED";
128
+ OrderNotificationType2["RECEIPT_RECEIVED"] = "RECEIPT_RECEIVED";
129
+ OrderNotificationType2["PAYMENT_APPROVED"] = "PAYMENT_APPROVED";
130
+ OrderNotificationType2["PAYMENT_REJECTED"] = "PAYMENT_REJECTED";
131
+ OrderNotificationType2["ORDER_CANCELLED"] = "ORDER_CANCELLED";
132
+ OrderNotificationType2["ORDER_READY_FOR_PICKUP"] = "ORDER_READY_FOR_PICKUP";
133
+ OrderNotificationType2["ORDER_COMPLETED"] = "ORDER_COMPLETED";
134
+ return OrderNotificationType2;
135
+ })(OrderNotificationType || {});
136
+
137
+ // src/catalog/catalog.enums.ts
138
+ var ProductStatus = {
139
+ DRAFT: "DRAFT",
140
+ ACTIVE: "ACTIVE",
141
+ ARCHIVED: "ARCHIVED"
142
+ };
143
+ var ProductUnit = {
144
+ CAPSULE: "CAPSULE",
145
+ GRAM: "GRAM",
146
+ MILLILITER: "MILLILITER",
147
+ PIECE: "PIECE"
148
+ };
149
+ var ProductMediaType = {
150
+ IMAGE: "IMAGE",
151
+ UPLOADED_VIDEO: "UPLOADED_VIDEO",
152
+ EXTERNAL_VIDEO: "EXTERNAL_VIDEO"
153
+ };
154
+ var ProductMediaRole = {
155
+ COVER: "COVER",
156
+ GALLERY: "GALLERY"
157
+ };
158
+
159
+ // src/cart/cart.enums.ts
160
+ var CartItemAvailability = /* @__PURE__ */ ((CartItemAvailability2) => {
161
+ CartItemAvailability2["AVAILABLE"] = "AVAILABLE";
162
+ CartItemAvailability2["PRODUCT_UNAVAILABLE"] = "PRODUCT_UNAVAILABLE";
163
+ CartItemAvailability2["VARIANT_UNAVAILABLE"] = "VARIANT_UNAVAILABLE";
164
+ return CartItemAvailability2;
165
+ })(CartItemAvailability || {});
166
+
167
+ // src/cart/cart.schemas.ts
168
+ var PublicIdSchema = z.uuid();
169
+ var QuantitySchema = z.number().int().min(1).max(999);
170
+ var DecimalSchema = z.string().regex(/^\d{1,16}(?:\.\d{1,2})?$/);
171
+ z.object({
172
+ variantPublicId: PublicIdSchema,
173
+ quantity: QuantitySchema.default(1)
174
+ });
175
+ z.object({
176
+ quantity: QuantitySchema,
177
+ version: z.number().int().positive()
178
+ });
179
+ z.object({
180
+ itemPublicId: PublicIdSchema
181
+ });
182
+ var CartItemSchema = z.object({
183
+ publicId: PublicIdSchema,
184
+ quantity: QuantitySchema,
185
+ version: z.number().int().positive(),
186
+ availability: z.enum(CartItemAvailability),
187
+ product: z.object({
188
+ publicId: PublicIdSchema,
189
+ slug: z.string(),
190
+ name: z.string(),
191
+ coverContentUrl: z.string().nullable()
192
+ }),
193
+ variant: z.object({
194
+ publicId: PublicIdSchema,
195
+ sku: z.string(),
196
+ quantity: z.string(),
197
+ unit: z.enum(ProductUnit),
198
+ priceUsd: DecimalSchema,
199
+ pv: DecimalSchema
200
+ }),
201
+ lineTotalUsd: DecimalSchema,
202
+ lineTotalPv: DecimalSchema,
203
+ createdAt: z.string().datetime(),
204
+ updatedAt: z.string().datetime()
205
+ });
206
+ var CartSchema = z.object({
207
+ publicId: PublicIdSchema.nullable(),
208
+ items: z.array(CartItemSchema),
209
+ totalQuantity: z.number().int().nonnegative(),
210
+ subtotalUsd: DecimalSchema,
211
+ totalPv: DecimalSchema,
212
+ hasUnavailableItems: z.boolean(),
213
+ updatedAt: z.string().datetime().nullable()
214
+ });
215
+
216
+ // src/warehouse/warehouse.enums.ts
217
+ var WarehouseStatus = {
218
+ DRAFT: "DRAFT",
219
+ ACTIVE: "ACTIVE",
220
+ SUSPENDED: "SUSPENDED",
221
+ ARCHIVED: "ARCHIVED"
222
+ };
223
+ var WarehouseAssignmentType = {
224
+ STAFF: "STAFF"
225
+ };
226
+ var WarehouseRequestType = {
227
+ REPLENISHMENT: "REPLENISHMENT",
228
+ WRITE_OFF: "WRITE_OFF",
229
+ TRANSFER: "TRANSFER"
230
+ };
231
+ var WarehouseRequestStatus = {
232
+ DRAFT: "DRAFT",
233
+ PENDING_REVIEW: "PENDING_REVIEW",
234
+ APPROVED: "APPROVED",
235
+ READY_TO_SHIP: "READY_TO_SHIP",
236
+ IN_TRANSIT: "IN_TRANSIT",
237
+ COMPLETED: "COMPLETED",
238
+ REJECTED: "REJECTED",
239
+ CANCELLED: "CANCELLED",
240
+ DISCREPANCY_REPORTED: "DISCREPANCY_REPORTED",
241
+ FAILED: "FAILED"
242
+ };
243
+ var WarehouseMovementType = {
244
+ REPLENISHMENT: "REPLENISHMENT",
245
+ WRITE_OFF: "WRITE_OFF",
246
+ TRANSFER_OUT: "TRANSFER_OUT",
247
+ TRANSFER_IN: "TRANSFER_IN",
248
+ ORDER_ISSUE: "ORDER_ISSUE"
249
+ };
250
+ var WarehouseWriteOffReason = {
251
+ DEFECT: "DEFECT",
252
+ DAMAGED: "DAMAGED",
253
+ EXPIRED: "EXPIRED",
254
+ LOST: "LOST",
255
+ INVENTORY_SHORTAGE: "INVENTORY_SHORTAGE",
256
+ OTHER: "OTHER"
257
+ };
258
+ var WarehouseWeekday = {
259
+ MONDAY: "MONDAY",
260
+ TUESDAY: "TUESDAY",
261
+ WEDNESDAY: "WEDNESDAY",
262
+ THURSDAY: "THURSDAY",
263
+ FRIDAY: "FRIDAY",
264
+ SATURDAY: "SATURDAY",
265
+ SUNDAY: "SUNDAY"
266
+ };
267
+
268
+ // src/warehouse/warehouse.schemas.ts
269
+ var PublicIdSchema2 = z.uuid();
270
+ var CodeSchema = z.string().trim().toUpperCase().regex(/^[A-Z0-9][A-Z0-9_-]{1,63}$/);
271
+ var DateSchema = z.iso.date();
272
+ var DateTimeSchema = z.iso.datetime();
273
+ var MoneySchema = z.string().regex(/^\d{1,16}\.\d{2}$/);
274
+ var TimeSchema = z.string().regex(/^([01]\d|2[0-3]):[0-5]\d$/);
275
+ var NullableTrimmedSchema = (max) => z.string().trim().min(1).max(max).nullable().optional();
276
+ var WarehouseDayScheduleSchema = z.object({
277
+ isOpen: z.boolean(),
278
+ opensAt: TimeSchema.nullable(),
279
+ closesAt: TimeSchema.nullable()
280
+ }).superRefine((value, context) => {
281
+ if (value.isOpen && (!value.opensAt || !value.closesAt)) {
282
+ context.addIssue({
283
+ code: "custom",
284
+ message: "\u0414\u043B\u044F \u0440\u0430\u0431\u043E\u0447\u0435\u0433\u043E \u0434\u043D\u044F \u0443\u043A\u0430\u0436\u0438\u0442\u0435 \u0432\u0440\u0435\u043C\u044F \u043E\u0442\u043A\u0440\u044B\u0442\u0438\u044F \u0438 \u0437\u0430\u043A\u0440\u044B\u0442\u0438\u044F"
285
+ });
286
+ }
287
+ if (!value.isOpen && (value.opensAt || value.closesAt)) {
288
+ context.addIssue({
289
+ code: "custom",
290
+ message: "\u0414\u043B\u044F \u0432\u044B\u0445\u043E\u0434\u043D\u043E\u0433\u043E \u0434\u043D\u044F \u0432\u0440\u0435\u043C\u044F \u0434\u043E\u043B\u0436\u043D\u043E \u0431\u044B\u0442\u044C \u043F\u0443\u0441\u0442\u044B\u043C"
291
+ });
292
+ }
293
+ if (value.isOpen && value.opensAt && value.closesAt && value.opensAt >= value.closesAt) {
294
+ context.addIssue({
295
+ code: "custom",
296
+ message: "\u0412\u0440\u0435\u043C\u044F \u0437\u0430\u043A\u0440\u044B\u0442\u0438\u044F \u0434\u043E\u043B\u0436\u043D\u043E \u0431\u044B\u0442\u044C \u043F\u043E\u0437\u0436\u0435 \u0432\u0440\u0435\u043C\u0435\u043D\u0438 \u043E\u0442\u043A\u0440\u044B\u0442\u0438\u044F"
297
+ });
298
+ }
299
+ });
300
+ var WarehouseWeeklyScheduleSchema = z.record(
301
+ z.enum(WarehouseWeekday),
302
+ WarehouseDayScheduleSchema
303
+ );
304
+ var WarehouseFieldsSchema = z.object({
305
+ name: z.string().trim().min(2).max(160),
306
+ countryCode: z.string().trim().toUpperCase().length(2),
307
+ country: z.string().trim().min(2).max(120),
308
+ city: z.string().trim().min(1).max(160),
309
+ address: z.string().trim().min(3).max(500),
310
+ phoneNumber: z.string().trim().min(7).max(32),
311
+ mapUrl: z.url().max(2e3).refine((value) => new URL(value).protocol === "https:", {
312
+ message: "\u0421\u0441\u044B\u043B\u043A\u0430 \u043D\u0430 \u043A\u0430\u0440\u0442\u0443 \u0434\u043E\u043B\u0436\u043D\u0430 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C HTTPS"
313
+ }),
314
+ timezone: z.string().trim().min(1).max(64),
315
+ schedule: WarehouseWeeklyScheduleSchema,
316
+ isPickupPoint: z.boolean()
317
+ });
318
+ WarehouseFieldsSchema.extend({
319
+ code: CodeSchema,
320
+ isPickupPoint: WarehouseFieldsSchema.shape.isPickupPoint.default(true)
321
+ });
322
+ WarehouseFieldsSchema.partial().extend({ version: z.number().int().positive() }).required({ version: true });
323
+ z.object({
324
+ publicId: PublicIdSchema2
325
+ });
326
+ z.object({
327
+ publicId: PublicIdSchema2,
328
+ assignmentPublicId: PublicIdSchema2
329
+ });
330
+ BaseListQuerySchema.extend({
331
+ status: z.enum(WarehouseStatus).optional(),
332
+ countryCode: z.string().trim().toUpperCase().length(2).optional(),
333
+ city: z.string().trim().min(1).max(160).optional()
334
+ });
335
+ z.object({
336
+ search: z.string().trim().min(2).max(100),
337
+ page: z.coerce.number().int().min(1).default(1),
338
+ limit: z.coerce.number().int().min(1).max(20).default(20)
339
+ });
340
+ z.object({
341
+ userUuid: z.string().trim().min(3).max(32),
342
+ type: z.enum(WarehouseAssignmentType)
343
+ });
344
+ var WarehouseRequestLineInputSchema = z.object({
345
+ variantPublicId: PublicIdSchema2,
346
+ quantity: z.number().int().positive().max(1e9),
347
+ expiresAt: DateSchema.nullable().optional(),
348
+ batchNumber: NullableTrimmedSchema(120),
349
+ comment: NullableTrimmedSchema(1e3)
350
+ });
351
+ z.object({
352
+ type: z.enum(WarehouseRequestType),
353
+ sourceWarehousePublicId: PublicIdSchema2.nullable().optional(),
354
+ destinationWarehousePublicId: PublicIdSchema2.nullable().optional(),
355
+ writeOffReason: z.enum(WarehouseWriteOffReason).nullable().optional(),
356
+ comment: z.string().trim().max(2e3).nullable().optional(),
357
+ lines: z.array(WarehouseRequestLineInputSchema).min(1).max(500)
358
+ }).superRefine((value, context) => {
359
+ const source = value.sourceWarehousePublicId ?? null;
360
+ const destination = value.destinationWarehousePublicId ?? null;
361
+ if (value.type === WarehouseRequestType.REPLENISHMENT) {
362
+ if (!destination || source) {
363
+ context.addIssue({
364
+ code: "custom",
365
+ path: ["destinationWarehousePublicId"],
366
+ message: "\u0414\u043B\u044F \u043F\u043E\u043F\u043E\u043B\u043D\u0435\u043D\u0438\u044F \u043D\u0443\u0436\u0435\u043D \u0442\u043E\u043B\u044C\u043A\u043E \u0441\u043A\u043B\u0430\u0434 \u043D\u0430\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F"
367
+ });
368
+ }
369
+ value.lines.forEach((line, index) => {
370
+ if (!line.expiresAt) {
371
+ context.addIssue({
372
+ code: "custom",
373
+ path: ["lines", index, "expiresAt"],
374
+ message: "\u0421\u0440\u043E\u043A \u0433\u043E\u0434\u043D\u043E\u0441\u0442\u0438 \u043F\u043E\u0441\u0442\u0443\u043F\u043B\u0435\u043D\u0438\u044F \u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u0435\u043D"
375
+ });
376
+ }
377
+ });
378
+ }
379
+ if (value.type === WarehouseRequestType.WRITE_OFF) {
380
+ if (!source || destination) {
381
+ context.addIssue({
382
+ code: "custom",
383
+ path: ["sourceWarehousePublicId"],
384
+ message: "\u0414\u043B\u044F \u0441\u043F\u0438\u0441\u0430\u043D\u0438\u044F \u043D\u0443\u0436\u0435\u043D \u0442\u043E\u043B\u044C\u043A\u043E \u0438\u0441\u0445\u043E\u0434\u043D\u044B\u0439 \u0441\u043A\u043B\u0430\u0434"
385
+ });
386
+ }
387
+ if (!value.writeOffReason) {
388
+ context.addIssue({
389
+ code: "custom",
390
+ path: ["writeOffReason"],
391
+ message: "\u041F\u0440\u0438\u0447\u0438\u043D\u0430 \u0441\u043F\u0438\u0441\u0430\u043D\u0438\u044F \u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u0430"
392
+ });
393
+ }
394
+ if (!value.comment?.trim()) {
395
+ context.addIssue({
396
+ code: "custom",
397
+ path: ["comment"],
398
+ message: "\u041A\u043E\u043C\u043C\u0435\u043D\u0442\u0430\u0440\u0438\u0439 \u043A \u0441\u043F\u0438\u0441\u0430\u043D\u0438\u044E \u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u0435\u043D"
399
+ });
400
+ }
401
+ }
402
+ if (value.type === WarehouseRequestType.TRANSFER) {
403
+ if (!source || !destination || source === destination) {
404
+ context.addIssue({
405
+ code: "custom",
406
+ path: ["destinationWarehousePublicId"],
407
+ message: "\u0423\u043A\u0430\u0436\u0438\u0442\u0435 \u0440\u0430\u0437\u043D\u044B\u0435 \u0438\u0441\u0445\u043E\u0434\u043D\u044B\u0439 \u0441\u043A\u043B\u0430\u0434 \u0438 \u0441\u043A\u043B\u0430\u0434 \u043D\u0430\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F"
408
+ });
409
+ }
410
+ }
411
+ });
412
+ z.object({
413
+ publicId: PublicIdSchema2
414
+ });
415
+ z.object({
416
+ publicId: PublicIdSchema2,
417
+ attachmentPublicId: PublicIdSchema2
418
+ });
419
+ BaseListQuerySchema.extend({
420
+ type: z.enum(WarehouseRequestType).optional(),
421
+ status: z.enum(WarehouseRequestStatus).optional(),
422
+ warehousePublicId: PublicIdSchema2.optional(),
423
+ createdByUserId: z.coerce.number().int().positive().optional()
424
+ });
425
+ z.object({
426
+ comment: z.string().trim().max(2e3).nullable().optional()
427
+ });
428
+ z.object({
429
+ comment: z.string().trim().min(1).max(2e3)
430
+ });
431
+ z.object({
432
+ idempotencyKey: z.uuid(),
433
+ comment: z.string().trim().max(2e3).nullable().optional()
434
+ });
435
+ z.object({
436
+ comment: z.string().trim().min(1).max(2e3)
437
+ });
438
+ BaseListQuerySchema.extend({
439
+ warehousePublicId: PublicIdSchema2.optional(),
440
+ variantPublicId: PublicIdSchema2.optional(),
441
+ expired: z.union([
442
+ z.boolean(),
443
+ z.enum(["true", "false"]).transform((v) => v === "true")
444
+ ]).optional(),
445
+ expiresBefore: DateSchema.optional()
446
+ });
447
+ z.object({
448
+ warehousePublicId: PublicIdSchema2.optional(),
449
+ dateFrom: DateFromSchema,
450
+ dateTo: DateToSchema
451
+ });
452
+ var WarehouseAnalyticsOrderMetricsSchema = z.object({
453
+ total: z.number().int().nonnegative(),
454
+ paid: z.number().int().nonnegative(),
455
+ pendingPayment: z.number().int().nonnegative(),
456
+ processing: z.number().int().nonnegative(),
457
+ readyForPickup: z.number().int().nonnegative(),
458
+ completed: z.number().int().nonnegative(),
459
+ cancelled: z.number().int().nonnegative()
460
+ });
461
+ var WarehouseAnalyticsInventoryMetricsSchema = z.object({
462
+ onHand: z.number().int().nonnegative(),
463
+ reserved: z.number().int().nonnegative(),
464
+ available: z.number().int().nonnegative(),
465
+ expired: z.number().int().nonnegative(),
466
+ requiredForPaidOrders: z.number().int().nonnegative(),
467
+ replenished: z.number().int().nonnegative(),
468
+ writtenOff: z.number().int().nonnegative(),
469
+ transferredIn: z.number().int().nonnegative(),
470
+ transferredOut: z.number().int().nonnegative(),
471
+ issued: z.number().int().nonnegative()
472
+ });
473
+ var WarehouseAnalyticsFinancialMetricsSchema = z.object({
474
+ paidRevenueUsd: MoneySchema,
475
+ completedRevenueUsd: MoneySchema,
476
+ cashbackAwardedPv: MoneySchema
477
+ });
478
+ z.object({
479
+ period: z.object({
480
+ dateFrom: DateTimeSchema.nullable(),
481
+ dateTo: DateTimeSchema.nullable()
482
+ }),
483
+ summary: z.object({
484
+ warehouses: z.object({
485
+ total: z.number().int().nonnegative(),
486
+ active: z.number().int().nonnegative(),
487
+ withActivity: z.number().int().nonnegative(),
488
+ withoutActivity: z.number().int().nonnegative()
489
+ }),
490
+ orders: WarehouseAnalyticsOrderMetricsSchema,
491
+ inventory: WarehouseAnalyticsInventoryMetricsSchema,
492
+ financials: WarehouseAnalyticsFinancialMetricsSchema
493
+ }),
494
+ warehouses: z.array(
495
+ z.object({
496
+ publicId: PublicIdSchema2,
497
+ code: z.string(),
498
+ name: z.string(),
499
+ status: z.enum(WarehouseStatus),
500
+ countryCode: z.string().length(2),
501
+ city: z.string(),
502
+ orders: WarehouseAnalyticsOrderMetricsSchema,
503
+ inventory: WarehouseAnalyticsInventoryMetricsSchema,
504
+ financials: WarehouseAnalyticsFinancialMetricsSchema,
505
+ activity: z.object({
506
+ orders: z.number().int().nonnegative(),
507
+ movements: z.number().int().nonnegative(),
508
+ pendingRequests: z.number().int().nonnegative(),
509
+ lastActivityAt: DateTimeSchema.nullable()
510
+ })
511
+ })
512
+ ),
513
+ selectedWarehousePublicId: PublicIdSchema2.nullable(),
514
+ products: z.array(
515
+ z.object({
516
+ productPublicId: PublicIdSchema2,
517
+ variantPublicId: PublicIdSchema2,
518
+ productCode: z.string(),
519
+ sku: z.string(),
520
+ onHand: z.number().int().nonnegative(),
521
+ reserved: z.number().int().nonnegative(),
522
+ available: z.number().int().nonnegative(),
523
+ expired: z.number().int().nonnegative(),
524
+ requiredForPaidOrders: z.number().int().nonnegative(),
525
+ replenished: z.number().int().nonnegative(),
526
+ writtenOff: z.number().int().nonnegative(),
527
+ transferredIn: z.number().int().nonnegative(),
528
+ transferredOut: z.number().int().nonnegative(),
529
+ issued: z.number().int().nonnegative()
530
+ })
531
+ )
532
+ });
533
+ var WarehouseSchema = z.object({
534
+ publicId: PublicIdSchema2,
535
+ code: CodeSchema,
536
+ name: z.string(),
537
+ status: z.enum(WarehouseStatus),
538
+ countryCode: z.string().length(2),
539
+ country: z.string(),
540
+ city: z.string(),
541
+ address: z.string(),
542
+ phoneNumber: z.string(),
543
+ mapUrl: z.string(),
544
+ timezone: z.string(),
545
+ schedule: WarehouseWeeklyScheduleSchema,
546
+ isPickupPoint: z.boolean(),
547
+ version: z.number().int().positive(),
548
+ createdAt: DateTimeSchema,
549
+ updatedAt: DateTimeSchema
550
+ });
551
+ var WarehouseUserLookupSchema = z.object({
552
+ id: z.number().int().positive(),
553
+ uuid: z.string(),
554
+ login: z.string(),
555
+ firstName: z.string(),
556
+ lastName: z.string(),
557
+ email: z.email(),
558
+ role: z.string()
559
+ });
560
+ z.object({
561
+ publicId: PublicIdSchema2,
562
+ warehousePublicId: PublicIdSchema2,
563
+ type: z.enum(WarehouseAssignmentType),
564
+ user: WarehouseUserLookupSchema,
565
+ assignedByLogin: z.string(),
566
+ assignedAt: DateTimeSchema
567
+ });
568
+ var WarehouseOperationLineSchema = z.object({
569
+ publicId: PublicIdSchema2,
570
+ variantPublicId: PublicIdSchema2,
571
+ sku: z.string(),
572
+ quantity: z.number().int().positive(),
573
+ expiresAt: DateSchema.nullable(),
574
+ batchNumber: z.string().nullable(),
575
+ comment: z.string().nullable()
576
+ });
577
+ var WarehouseOperationEventSchema = z.object({
578
+ publicId: PublicIdSchema2,
579
+ fromStatus: z.enum(WarehouseRequestStatus).nullable(),
580
+ toStatus: z.enum(WarehouseRequestStatus),
581
+ actorUserId: z.number().int().positive(),
582
+ actorLogin: z.string(),
583
+ comment: z.string().nullable(),
584
+ createdAt: DateTimeSchema
585
+ });
586
+ var WarehouseOperationAttachmentSchema = z.object({
587
+ publicId: PublicIdSchema2,
588
+ mimeType: z.string(),
589
+ sizeBytes: z.number().int().positive(),
590
+ originalName: z.string().nullable(),
591
+ uploadedByLogin: z.string(),
592
+ contentUrl: z.string(),
593
+ createdAt: DateTimeSchema
594
+ });
595
+ z.object({
596
+ publicId: PublicIdSchema2,
597
+ type: z.enum(WarehouseRequestType),
598
+ status: z.enum(WarehouseRequestStatus),
599
+ sourceWarehouse: WarehouseSchema.nullable(),
600
+ destinationWarehouse: WarehouseSchema.nullable(),
601
+ writeOffReason: z.enum(WarehouseWriteOffReason).nullable(),
602
+ comment: z.string().nullable(),
603
+ rejectionComment: z.string().nullable(),
604
+ createdByUserId: z.number().int().positive(),
605
+ createdByLogin: z.string(),
606
+ approvedByUserId: z.number().int().positive().nullable(),
607
+ approvedByLogin: z.string().nullable(),
608
+ approvedAt: DateTimeSchema.nullable(),
609
+ completedByUserId: z.number().int().positive().nullable(),
610
+ completedByLogin: z.string().nullable(),
611
+ completedAt: DateTimeSchema.nullable(),
612
+ version: z.number().int().positive(),
613
+ lines: z.array(WarehouseOperationLineSchema),
614
+ events: z.array(WarehouseOperationEventSchema),
615
+ attachments: z.array(WarehouseOperationAttachmentSchema),
616
+ createdAt: DateTimeSchema,
617
+ updatedAt: DateTimeSchema
618
+ });
619
+ z.object({
620
+ publicId: PublicIdSchema2,
621
+ warehouse: WarehouseSchema,
622
+ variantPublicId: PublicIdSchema2,
623
+ sku: z.string(),
624
+ productPublicId: PublicIdSchema2,
625
+ productCode: z.string(),
626
+ batchNumber: z.string().nullable(),
627
+ expiresAt: DateSchema,
628
+ onHand: z.number().int().nonnegative(),
629
+ reserved: z.number().int().nonnegative(),
630
+ available: z.number().int().nonnegative(),
631
+ expired: z.boolean(),
632
+ version: z.number().int().positive(),
633
+ updatedAt: DateTimeSchema
634
+ });
635
+ z.object({
636
+ publicId: PublicIdSchema2,
637
+ warehousePublicId: PublicIdSchema2,
638
+ operationPublicId: PublicIdSchema2,
639
+ variantPublicId: PublicIdSchema2,
640
+ inventoryBatchPublicId: PublicIdSchema2.nullable(),
641
+ type: z.enum(WarehouseMovementType),
642
+ quantityDelta: z.number().int(),
643
+ balanceAfter: z.number().int().nonnegative(),
644
+ actorUserId: z.number().int().positive(),
645
+ actorLogin: z.string(),
646
+ createdAt: DateTimeSchema
647
+ });
648
+
649
+ // src/order/order.schemas.ts
650
+ var PublicIdSchema3 = z.uuid();
651
+ var DateTimeSchema2 = z.iso.datetime();
652
+ var MoneySchema2 = z.string().regex(/^\d{1,16}\.\d{2}$/);
653
+ var DecimalSchema2 = z.string().regex(/^\d{1,16}(?:\.\d{1,3})?$/);
654
+ var OrderNumberSchema = z.string().regex(/^AV-\d{8}-[A-Z0-9]{6}$/);
655
+ z.object({
656
+ countryCode: z.string().trim().toUpperCase().length(2),
657
+ city: z.string().trim().min(1).max(160)
658
+ });
659
+ var CheckoutLocationSchema = z.object({
660
+ countryCode: z.string().length(2),
661
+ country: z.string(),
662
+ cities: z.array(z.string()).min(1)
663
+ });
664
+ z.object({
665
+ cart: CartSchema,
666
+ locations: z.array(CheckoutLocationSchema),
667
+ mainWallet: z.object({
668
+ balanceUsd: MoneySchema2,
669
+ availableBalanceUsd: MoneySchema2
670
+ }),
671
+ paymentMethods: z.array(z.enum(OrderPaymentMethod)),
672
+ reserveDurationHours: z.literal(24)
673
+ });
674
+ var CheckoutWarehouseAvailabilitySchema = z.object({
675
+ variantPublicId: PublicIdSchema3,
676
+ requestedQuantity: z.number().int().positive(),
677
+ availableQuantity: z.number().int().nonnegative(),
678
+ availability: z.enum(OrderStockAvailability)
679
+ });
680
+ var CheckoutWarehouseSchema = z.object({
681
+ publicId: PublicIdSchema3,
682
+ code: z.string(),
683
+ name: z.string(),
684
+ countryCode: z.string().length(2),
685
+ country: z.string(),
686
+ city: z.string(),
687
+ address: z.string(),
688
+ phoneNumber: z.string(),
689
+ mapUrl: z.url(),
690
+ timezone: z.string(),
691
+ schedule: WarehouseWeeklyScheduleSchema,
692
+ canFulfill: z.boolean(),
693
+ items: z.array(CheckoutWarehouseAvailabilitySchema)
694
+ });
695
+ z.array(CheckoutWarehouseSchema);
696
+ z.object({
697
+ warehousePublicId: PublicIdSchema3,
698
+ deliveryMethod: z.literal("PICKUP" /* PICKUP */),
699
+ paymentMethod: z.enum(OrderPaymentMethod),
700
+ walletAmountUsd: MoneySchema2.optional(),
701
+ idempotencyKey: PublicIdSchema3
702
+ }).superRefine((value, context) => {
703
+ if (value.paymentMethod === "CASH" /* CASH */ && value.walletAmountUsd) {
704
+ context.addIssue({
705
+ code: "custom",
706
+ path: ["walletAmountUsd"],
707
+ message: "\u0414\u043B\u044F \u043E\u043F\u043B\u0430\u0442\u044B \u043D\u0430\u043B\u0438\u0447\u043D\u044B\u043C\u0438 \u0441\u0443\u043C\u043C\u0430 \u043A\u043E\u0448\u0435\u043B\u044C\u043A\u0430 \u043D\u0435 \u043F\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044F"
708
+ });
709
+ }
710
+ if (value.paymentMethod === "MAIN_WALLET" /* MAIN_WALLET */ && (!value.walletAmountUsd || value.walletAmountUsd === "0.00")) {
711
+ context.addIssue({
712
+ code: "custom",
713
+ path: ["walletAmountUsd"],
714
+ message: "\u0423\u043A\u0430\u0436\u0438\u0442\u0435 \u0441\u0443\u043C\u043C\u0443 \u043E\u043F\u043B\u0430\u0442\u044B \u0441 \u043E\u0441\u043D\u043E\u0432\u043D\u043E\u0433\u043E \u043A\u043E\u0448\u0435\u043B\u044C\u043A\u0430"
715
+ });
716
+ }
717
+ });
718
+ z.object({ publicId: PublicIdSchema3 });
719
+ z.object({
720
+ version: z.number().int().positive()
721
+ });
722
+ z.object({
723
+ code: z.string().regex(/^\d{6}$/)
724
+ });
725
+ z.object({
726
+ publicId: PublicIdSchema3,
727
+ receiptPublicId: PublicIdSchema3
728
+ });
729
+ var OrderWarehouseSchema = z.object({
730
+ publicId: PublicIdSchema3,
731
+ code: z.string(),
732
+ name: z.string(),
733
+ countryCode: z.string().length(2),
734
+ country: z.string(),
735
+ city: z.string(),
736
+ address: z.string(),
737
+ phoneNumber: z.string(),
738
+ mapUrl: z.url(),
739
+ timezone: z.string(),
740
+ schedule: WarehouseWeeklyScheduleSchema
741
+ });
742
+ var OrderItemSchema = z.object({
743
+ publicId: PublicIdSchema3,
744
+ productPublicId: PublicIdSchema3,
745
+ variantPublicId: PublicIdSchema3,
746
+ productName: z.string(),
747
+ sku: z.string(),
748
+ variantQuantity: DecimalSchema2,
749
+ unit: z.enum(ProductUnit),
750
+ quantity: z.number().int().positive(),
751
+ unitPriceUsd: MoneySchema2,
752
+ lineTotalUsd: MoneySchema2,
753
+ unitPv: MoneySchema2,
754
+ lineTotalPv: MoneySchema2,
755
+ coverContentUrl: z.string().nullable()
756
+ });
757
+ var OrderReceiptSchema = z.object({
758
+ publicId: PublicIdSchema3,
759
+ status: z.enum(OrderReceiptStatus),
760
+ originalName: z.string().nullable(),
761
+ mimeType: z.string(),
762
+ sizeBytes: z.number().int().positive(),
763
+ version: z.number().int().positive(),
764
+ rejectionReason: z.string().nullable(),
765
+ reviewedAt: DateTimeSchema2.nullable(),
766
+ createdAt: DateTimeSchema2,
767
+ contentUrl: z.string()
768
+ });
769
+ var OrderEventSchema = z.object({
770
+ publicId: PublicIdSchema3,
771
+ type: z.enum(OrderEventType),
772
+ actorLogin: z.string().nullable(),
773
+ comment: z.string().nullable(),
774
+ createdAt: DateTimeSchema2
775
+ });
776
+ var OrderSchema = z.object({
777
+ publicId: PublicIdSchema3,
778
+ version: z.number().int().positive(),
779
+ number: OrderNumberSchema,
780
+ type: z.enum(OrderType),
781
+ status: z.enum(OrderStatus),
782
+ paymentStatus: z.enum(OrderPaymentStatus),
783
+ deliveryMethod: z.enum(OrderDeliveryMethod),
784
+ paymentMethod: z.enum(OrderPaymentMethod),
785
+ locale: z.string().length(2),
786
+ baseCurrencyCode: z.string().length(3),
787
+ displayCurrencyCode: z.string().length(3),
788
+ displayRate: z.string(),
789
+ subtotalUsd: MoneySchema2,
790
+ totalPv: MoneySchema2,
791
+ box: z.object({
792
+ publicId: PublicIdSchema3,
793
+ code: z.string(),
794
+ name: z.string(),
795
+ version: z.number().int().positive(),
796
+ priceUsd: MoneySchema2,
797
+ pvBudget: MoneySchema2
798
+ }).nullable(),
799
+ walletPaidUsd: MoneySchema2,
800
+ walletRefundedUsd: MoneySchema2,
801
+ cashDueUsd: MoneySchema2,
802
+ reserveExpiresAt: DateTimeSchema2.nullable(),
803
+ paidAt: DateTimeSchema2.nullable(),
804
+ readyForPickupAt: DateTimeSchema2.nullable(),
805
+ completedAt: DateTimeSchema2.nullable(),
806
+ cancelledAt: DateTimeSchema2.nullable(),
807
+ cancellationReason: z.string().nullable(),
808
+ warehouse: OrderWarehouseSchema,
809
+ items: z.array(OrderItemSchema).min(1),
810
+ receipts: z.array(OrderReceiptSchema),
811
+ events: z.array(OrderEventSchema),
812
+ pickupCode: z.string().regex(/^\d{6}$/).nullable(),
813
+ cashbackCredit: z.object({
814
+ amountPv: MoneySchema2,
815
+ balanceBeforePv: MoneySchema2,
816
+ balanceAfterPv: MoneySchema2,
817
+ creditedAt: DateTimeSchema2
818
+ }).nullable(),
819
+ createdAt: DateTimeSchema2,
820
+ updatedAt: DateTimeSchema2
821
+ });
822
+ var OrderListItemSchema = OrderSchema.omit({
823
+ receipts: true,
824
+ events: true,
825
+ pickupCode: true,
826
+ cashbackCredit: true
827
+ });
828
+ BaseListQuerySchema.extend({
829
+ status: z.enum(OrderStatus).optional(),
830
+ paymentStatus: z.enum(OrderPaymentStatus).optional(),
831
+ warehousePublicId: PublicIdSchema3.optional()
832
+ });
833
+ z.object({
834
+ items: z.array(OrderListItemSchema),
835
+ meta: z.object({
836
+ page: z.number().int().positive(),
837
+ limit: z.number().int().positive(),
838
+ total: z.number().int().nonnegative(),
839
+ pageCount: z.number().int().nonnegative()
840
+ })
841
+ });
842
+ z.object({
843
+ warehousePublicId: PublicIdSchema3,
844
+ dateFrom: DateFromSchema,
845
+ dateTo: DateToSchema
846
+ });
847
+ z.object({
848
+ warehousePublicId: PublicIdSchema3,
849
+ period: z.object({
850
+ dateFrom: DateTimeSchema2.nullable(),
851
+ dateTo: DateTimeSchema2.nullable()
852
+ }),
853
+ orders: z.object({
854
+ total: z.number().int().nonnegative(),
855
+ pendingPayment: z.number().int().nonnegative(),
856
+ processing: z.number().int().nonnegative(),
857
+ readyForPickup: z.number().int().nonnegative(),
858
+ completed: z.number().int().nonnegative(),
859
+ cancelled: z.number().int().nonnegative(),
860
+ paid: z.number().int().nonnegative()
861
+ }),
862
+ units: z.object({
863
+ total: z.number().int().nonnegative(),
864
+ active: z.number().int().nonnegative(),
865
+ completed: z.number().int().nonnegative()
866
+ }),
867
+ financials: z.object({
868
+ paidRevenueUsd: MoneySchema2,
869
+ completedRevenueUsd: MoneySchema2,
870
+ cashbackAwardedPv: MoneySchema2
871
+ })
872
+ });
873
+ BaseListQuerySchema.extend({
874
+ warehousePublicId: PublicIdSchema3,
875
+ reservationStatus: z.enum(OrderReservationStatus).optional()
876
+ });
877
+ BaseListQuerySchema.extend({
878
+ warehousePublicId: PublicIdSchema3,
879
+ status: z.enum(["PROCESSING" /* PROCESSING */, "READY_FOR_PICKUP" /* READY_FOR_PICKUP */]).optional()
880
+ });
881
+ var WarehouseOrderReservationSchema = z.object({
882
+ publicId: PublicIdSchema3,
883
+ status: z.enum(OrderReservationStatus),
884
+ quantity: z.number().int().positive(),
885
+ createdAt: DateTimeSchema2,
886
+ releasedAt: DateTimeSchema2.nullable(),
887
+ fulfilledAt: DateTimeSchema2.nullable(),
888
+ reserveExpiresAt: DateTimeSchema2.nullable(),
889
+ releaseReason: z.string().nullable(),
890
+ order: z.object({
891
+ publicId: PublicIdSchema3,
892
+ number: OrderNumberSchema,
893
+ status: z.enum(OrderStatus),
894
+ paymentStatus: z.enum(OrderPaymentStatus)
895
+ }),
896
+ item: z.object({
897
+ publicId: PublicIdSchema3,
898
+ productPublicId: PublicIdSchema3,
899
+ variantPublicId: PublicIdSchema3,
900
+ productName: z.string(),
901
+ sku: z.string(),
902
+ coverContentUrl: z.string().nullable()
903
+ }),
904
+ batch: z.object({
905
+ publicId: PublicIdSchema3,
906
+ batchNumber: z.string().nullable(),
907
+ expiresAt: z.iso.date()
908
+ })
909
+ });
910
+ z.object({
911
+ items: z.array(WarehouseOrderReservationSchema),
912
+ meta: z.object({
913
+ page: z.number().int().positive(),
914
+ limit: z.number().int().positive(),
915
+ total: z.number().int().nonnegative(),
916
+ pageCount: z.number().int().nonnegative()
917
+ }),
918
+ summary: z.object({
919
+ activeQuantity: z.number().int().nonnegative(),
920
+ activeReservations: z.number().int().nonnegative(),
921
+ releasedReservations: z.number().int().nonnegative()
922
+ })
923
+ });
924
+ z.object({
925
+ decision: z.enum(OrderReceiptDecision),
926
+ version: z.number().int().positive(),
927
+ rejectionReason: z.string().trim().min(1).max(2e3).optional()
928
+ }).superRefine((value, context) => {
929
+ if (value.decision === "REJECT" /* REJECT */ && !value.rejectionReason) {
930
+ context.addIssue({
931
+ code: "custom",
932
+ path: ["rejectionReason"],
933
+ message: "\u041F\u0440\u0438\u0447\u0438\u043D\u0430 \u043E\u0442\u043A\u043B\u043E\u043D\u0435\u043D\u0438\u044F \u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u0430"
934
+ });
935
+ }
936
+ if (value.decision === "APPROVE" /* APPROVE */ && value.rejectionReason) {
937
+ context.addIssue({
938
+ code: "custom",
939
+ path: ["rejectionReason"],
940
+ message: "\u041F\u0440\u0438\u0447\u0438\u043D\u0430 \u043D\u0435 \u043F\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044F \u043F\u0440\u0438 \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u0438\u0438"
941
+ });
942
+ }
943
+ });
944
+ var OrderNotificationSchema = z.object({
945
+ publicId: PublicIdSchema3,
946
+ orderPublicId: PublicIdSchema3,
947
+ orderNumber: OrderNumberSchema,
948
+ type: z.enum(OrderNotificationType),
949
+ pickupCode: z.string().regex(/^\d{6}$/).nullable(),
950
+ isRead: z.boolean(),
951
+ createdAt: DateTimeSchema2
952
+ });
953
+ z.array(OrderNotificationSchema);
954
+ var CodeSchema2 = z.string().trim().toUpperCase().regex(/^[A-Z0-9][A-Z0-9_-]{1,63}$/);
955
+ var SlugSchema = z.string().trim().toLowerCase().regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/).max(160);
956
+ var PublicIdSchema4 = z.uuid();
957
+ var MoneySchema3 = z.string().trim().regex(/^\d{1,16}(?:\.\d{1,2})?$/).refine((value) => Number(value) > 0, "\u0417\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043E\u043B\u0436\u043D\u043E \u0431\u044B\u0442\u044C \u0431\u043E\u043B\u044C\u0448\u0435 \u043D\u0443\u043B\u044F");
958
+ var PvSchema = z.string().trim().regex(/^\d{1,16}(?:\.\d{1,2})?$/).refine((value) => Number(value) > 0, "PV \u0434\u043E\u043B\u0436\u0435\u043D \u0431\u044B\u0442\u044C \u0431\u043E\u043B\u044C\u0448\u0435 \u043D\u0443\u043B\u044F");
959
+ var PositiveDecimalSchema = z.string().trim().regex(/^\d{1,9}(?:\.\d{1,3})?$/).refine((value) => Number(value) > 0, "\u0417\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043E\u043B\u0436\u043D\u043E \u0431\u044B\u0442\u044C \u0431\u043E\u043B\u044C\u0448\u0435 \u043D\u0443\u043B\u044F");
960
+ var ProductCategoryTranslationInputSchema = z.object({
961
+ locale: AppLocaleSchema,
962
+ name: z.string().trim().min(1).max(120),
963
+ description: z.string().trim().max(500).nullable().optional()
964
+ });
965
+ var ProductTranslationInputSchema = z.object({
966
+ locale: AppLocaleSchema,
967
+ name: z.string().trim().min(1).max(180),
968
+ shortDescription: z.string().trim().min(1).max(500),
969
+ description: z.string().trim().min(1).max(2e4),
970
+ composition: z.string().trim().max(2e4).nullable().optional(),
971
+ usageInstructions: z.string().trim().max(2e4).nullable().optional(),
972
+ features: z.string().trim().max(2e4).nullable().optional(),
973
+ contraindications: z.string().trim().max(2e4).nullable().optional(),
974
+ shelfLife: z.string().trim().min(1).max(255),
975
+ packageContents: z.string().trim().max(2e3).nullable().optional()
976
+ });
977
+ var UniqueLocalesSchema = (schema) => z.array(schema).min(1).max(4).refine(
978
+ (items) => new Set(items.map((item) => item.locale)).size === items.length,
979
+ "\u041F\u0435\u0440\u0435\u0432\u043E\u0434 \u0434\u043B\u044F \u043A\u0430\u0436\u0434\u043E\u0433\u043E \u044F\u0437\u044B\u043A\u0430 \u043C\u043E\u0436\u043D\u043E \u043F\u0435\u0440\u0435\u0434\u0430\u0442\u044C \u0442\u043E\u043B\u044C\u043A\u043E \u043E\u0434\u0438\u043D \u0440\u0430\u0437"
980
+ );
981
+ z.object({
982
+ code: CodeSchema2,
983
+ slug: SlugSchema,
984
+ sortOrder: z.number().int().min(0).max(1e6).default(0),
985
+ translations: UniqueLocalesSchema(ProductCategoryTranslationInputSchema)
986
+ });
987
+ z.object({
988
+ slug: SlugSchema,
989
+ sortOrder: z.number().int().min(0).max(1e6),
990
+ translations: UniqueLocalesSchema(ProductCategoryTranslationInputSchema),
991
+ version: z.number().int().positive()
992
+ }).partial().required({ version: true });
993
+ var ProductVariantFieldsSchema = z.object({
994
+ sku: CodeSchema2,
995
+ barcode: z.string().trim().min(1).max(64).nullable().optional(),
996
+ quantity: PositiveDecimalSchema,
997
+ unit: z.enum(ProductUnit),
998
+ netWeightGrams: PositiveDecimalSchema.nullable().optional(),
999
+ priceUsd: MoneySchema3,
1000
+ pv: PvSchema,
1001
+ shippingWeightGrams: PositiveDecimalSchema.nullable().optional(),
1002
+ lengthMm: PositiveDecimalSchema.nullable().optional(),
1003
+ widthMm: PositiveDecimalSchema.nullable().optional(),
1004
+ heightMm: PositiveDecimalSchema.nullable().optional(),
1005
+ isDefault: z.boolean(),
1006
+ isActive: z.boolean(),
1007
+ sortOrder: z.number().int().min(0).max(1e6)
1008
+ });
1009
+ var ProductVariantInputSchema = ProductVariantFieldsSchema.extend({
1010
+ isDefault: ProductVariantFieldsSchema.shape.isDefault.default(false),
1011
+ isActive: ProductVariantFieldsSchema.shape.isActive.default(true),
1012
+ sortOrder: ProductVariantFieldsSchema.shape.sortOrder.default(0)
1013
+ });
1014
+ z.object({
1015
+ code: CodeSchema2,
1016
+ slug: SlugSchema,
1017
+ manufacturerCountryCode: z.string().trim().toUpperCase().length(2),
1018
+ manufacturerName: z.string().trim().max(255).nullable().optional(),
1019
+ sgr: z.string().trim().max(255).nullable().optional(),
1020
+ isFeatured: z.boolean().default(false),
1021
+ isBoxEligible: z.boolean().default(false),
1022
+ sortOrder: z.number().int().min(0).max(1e6).default(0),
1023
+ translations: UniqueLocalesSchema(ProductTranslationInputSchema),
1024
+ categoryPublicIds: z.array(PublicIdSchema4).min(1).max(100),
1025
+ primaryCategoryPublicId: PublicIdSchema4,
1026
+ variants: z.array(ProductVariantInputSchema).min(1).max(100).refine(
1027
+ (items) => items.filter((item) => item.isDefault).length === 1,
1028
+ "\u0414\u043E\u043B\u0436\u043D\u0430 \u0431\u044B\u0442\u044C \u0440\u043E\u0432\u043D\u043E \u043E\u0434\u043D\u0430 \u043E\u0441\u043D\u043E\u0432\u043D\u0430\u044F \u0432\u0430\u0440\u0438\u0430\u0446\u0438\u044F"
1029
+ )
1030
+ }).refine(
1031
+ (value) => value.categoryPublicIds.includes(value.primaryCategoryPublicId),
1032
+ {
1033
+ message: "\u041E\u0441\u043D\u043E\u0432\u043D\u0430\u044F \u043A\u0430\u0442\u0435\u0433\u043E\u0440\u0438\u044F \u0434\u043E\u043B\u0436\u043D\u0430 \u043F\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u043E\u0432\u0430\u0442\u044C \u0432 \u0441\u043F\u0438\u0441\u043A\u0435 \u043A\u0430\u0442\u0435\u0433\u043E\u0440\u0438\u0439",
1034
+ path: ["primaryCategoryPublicId"]
1035
+ }
1036
+ );
1037
+ z.object({
1038
+ slug: SlugSchema,
1039
+ manufacturerCountryCode: z.string().trim().toUpperCase().length(2),
1040
+ manufacturerName: z.string().trim().max(255).nullable(),
1041
+ sgr: z.string().trim().max(255).nullable(),
1042
+ isFeatured: z.boolean(),
1043
+ isBoxEligible: z.boolean(),
1044
+ sortOrder: z.number().int().min(0).max(1e6),
1045
+ translations: UniqueLocalesSchema(ProductTranslationInputSchema),
1046
+ categoryPublicIds: z.array(PublicIdSchema4).min(1).max(100),
1047
+ primaryCategoryPublicId: PublicIdSchema4,
1048
+ version: z.number().int().positive()
1049
+ }).partial().required({ version: true }).refine(
1050
+ (value) => !value.primaryCategoryPublicId || !value.categoryPublicIds || value.categoryPublicIds.includes(value.primaryCategoryPublicId),
1051
+ {
1052
+ message: "\u041E\u0441\u043D\u043E\u0432\u043D\u0430\u044F \u043A\u0430\u0442\u0435\u0433\u043E\u0440\u0438\u044F \u0434\u043E\u043B\u0436\u043D\u0430 \u043F\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u043E\u0432\u0430\u0442\u044C \u0432 \u0441\u043F\u0438\u0441\u043A\u0435 \u043A\u0430\u0442\u0435\u0433\u043E\u0440\u0438\u0439",
1053
+ path: ["primaryCategoryPublicId"]
1054
+ }
1055
+ );
1056
+ ProductVariantFieldsSchema.partial().extend({
1057
+ version: z.number().int().positive()
1058
+ });
1059
+ z.object({
1060
+ publicId: PublicIdSchema4
1061
+ });
1062
+ z.object({ slug: SlugSchema });
1063
+ z.object({
1064
+ publicId: PublicIdSchema4,
1065
+ variantPublicId: PublicIdSchema4
1066
+ });
1067
+ z.object({
1068
+ publicId: PublicIdSchema4,
1069
+ mediaPublicId: PublicIdSchema4
1070
+ });
1071
+ var QueryBooleanSchema = z.union([
1072
+ z.boolean(),
1073
+ z.enum(["true", "false"]).transform((value) => value === "true")
1074
+ ]);
1075
+ BaseListQuerySchema.extend({
1076
+ status: z.enum(ProductStatus).optional(),
1077
+ category: SlugSchema.optional(),
1078
+ featured: QueryBooleanSchema.optional()
1079
+ });
1080
+ z.object({
1081
+ url: z.url().max(2e3).refine((value) => {
1082
+ const url = new URL(value);
1083
+ const host = url.hostname.toLowerCase().replace(/^www\./, "");
1084
+ return url.protocol === "https:" && ["youtube.com", "youtu.be", "vimeo.com", "player.vimeo.com"].includes(
1085
+ host
1086
+ );
1087
+ }, "\u041F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044E\u0442\u0441\u044F \u0442\u043E\u043B\u044C\u043A\u043E HTTPS-\u0441\u0441\u044B\u043B\u043A\u0438 YouTube \u0438 Vimeo"),
1088
+ sortOrder: z.number().int().min(0).max(1e6).default(0)
1089
+ });
1090
+ z.object({
1091
+ role: z.enum(ProductMediaRole).default(ProductMediaRole.GALLERY),
1092
+ sortOrder: z.coerce.number().int().min(0).max(1e6).default(0)
1093
+ });
1094
+ z.object({
1095
+ sortOrder: z.coerce.number().int().min(0).max(1e6).default(0)
1096
+ });
1097
+ z.object({
1098
+ role: z.enum(ProductMediaRole).optional(),
1099
+ sortOrder: z.number().int().min(0).max(1e6).optional()
1100
+ });
1101
+ var ProductCategorySchema = z.object({
1102
+ publicId: PublicIdSchema4,
1103
+ code: CodeSchema2,
1104
+ slug: SlugSchema,
1105
+ status: z.enum(ProductStatus),
1106
+ sortOrder: z.number().int().nonnegative(),
1107
+ version: z.number().int().positive(),
1108
+ translations: z.array(ProductCategoryTranslationInputSchema),
1109
+ createdAt: z.string().datetime(),
1110
+ updatedAt: z.string().datetime()
1111
+ });
1112
+ var ProductVariantSchema = ProductVariantInputSchema.extend({
1113
+ publicId: PublicIdSchema4,
1114
+ version: z.number().int().positive(),
1115
+ createdAt: z.string().datetime(),
1116
+ updatedAt: z.string().datetime()
1117
+ });
1118
+ var ProductMediaSchema = z.object({
1119
+ publicId: PublicIdSchema4,
1120
+ type: z.enum(ProductMediaType),
1121
+ role: z.enum(ProductMediaRole),
1122
+ externalUrl: z.string().nullable(),
1123
+ contentUrl: z.string().nullable(),
1124
+ mimeType: z.string().nullable(),
1125
+ sizeBytes: z.number().int().positive().nullable(),
1126
+ originalName: z.string().nullable(),
1127
+ sortOrder: z.number().int().nonnegative(),
1128
+ createdAt: z.string().datetime(),
1129
+ updatedAt: z.string().datetime()
1130
+ });
1131
+ var ProductSchema = z.object({
1132
+ publicId: PublicIdSchema4,
1133
+ code: CodeSchema2,
1134
+ slug: SlugSchema,
1135
+ status: z.enum(ProductStatus),
1136
+ manufacturerCountryCode: z.string().length(2),
1137
+ manufacturerName: z.string().nullable(),
1138
+ sgr: z.string().nullable(),
1139
+ isFeatured: z.boolean(),
1140
+ isBoxEligible: z.boolean(),
1141
+ sortOrder: z.number().int().nonnegative(),
1142
+ publishedAt: z.string().datetime().nullable(),
1143
+ version: z.number().int().positive(),
1144
+ translations: z.array(ProductTranslationInputSchema),
1145
+ categories: z.array(ProductCategorySchema),
1146
+ primaryCategoryPublicId: PublicIdSchema4,
1147
+ variants: z.array(ProductVariantSchema),
1148
+ media: z.array(ProductMediaSchema),
1149
+ createdAt: z.string().datetime(),
1150
+ updatedAt: z.string().datetime()
1151
+ });
1152
+ var LocalizedProductCategorySchema = z.object({
1153
+ publicId: PublicIdSchema4,
1154
+ code: CodeSchema2,
1155
+ slug: SlugSchema,
1156
+ name: z.string(),
1157
+ description: z.string().nullable()
1158
+ });
1159
+ var LocalizedProductSchema = ProductSchema.omit({
1160
+ translations: true,
1161
+ categories: true,
1162
+ version: true
1163
+ }).extend({
1164
+ isAvailable: z.boolean(),
1165
+ name: z.string(),
1166
+ shortDescription: z.string(),
1167
+ description: z.string(),
1168
+ composition: z.string().nullable(),
1169
+ usageInstructions: z.string().nullable(),
1170
+ features: z.string().nullable(),
1171
+ contraindications: z.string().nullable(),
1172
+ shelfLife: z.string(),
1173
+ packageContents: z.string().nullable(),
1174
+ categories: z.array(LocalizedProductCategorySchema),
1175
+ variants: z.array(ProductVariantSchema.extend({ isAvailable: z.boolean() }))
1176
+ });
1177
+
1178
+ // src/box/box.schemas.ts
1179
+ var PublicIdSchema5 = z.uuid();
1180
+ var CodeSchema3 = z.string().trim().toUpperCase().regex(/^[A-Z0-9][A-Z0-9_-]{1,63}$/);
1181
+ var MoneySchema4 = z.string().trim().regex(/^\d{1,16}(?:\.\d{1,2})?$/).refine((value) => Number(value) > 0, "\u0417\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043E\u043B\u0436\u043D\u043E \u0431\u044B\u0442\u044C \u0431\u043E\u043B\u044C\u0448\u0435 \u043D\u0443\u043B\u044F");
1182
+ var PvSchema2 = z.string().trim().regex(/^\d{1,16}(?:\.\d{1,2})?$/).refine((value) => Number(value) > 0, "PV \u0434\u043E\u043B\u0436\u0435\u043D \u0431\u044B\u0442\u044C \u0431\u043E\u043B\u044C\u0448\u0435 \u043D\u0443\u043B\u044F");
1183
+ var PercentSchema = z.number().int().min(0).max(100);
1184
+ var BoxTranslationInputSchema = z.object({
1185
+ locale: AppLocaleSchema,
1186
+ name: z.string().trim().min(1).max(160),
1187
+ description: z.string().trim().max(2e3).nullable().optional()
1188
+ });
1189
+ var BoxStructureLevelInputSchema = z.object({
1190
+ level: z.number().int().positive().max(1e3),
1191
+ percent: PercentSchema
1192
+ });
1193
+ var UniqueTranslationsSchema = z.array(BoxTranslationInputSchema).min(1).max(4).refine(
1194
+ (items) => new Set(items.map((item) => item.locale)).size === items.length,
1195
+ "\u041F\u0435\u0440\u0435\u0432\u043E\u0434 \u0434\u043B\u044F \u043A\u0430\u0436\u0434\u043E\u0433\u043E \u044F\u0437\u044B\u043A\u0430 \u043C\u043E\u0436\u043D\u043E \u043F\u0435\u0440\u0435\u0434\u0430\u0442\u044C \u0442\u043E\u043B\u044C\u043A\u043E \u043E\u0434\u0438\u043D \u0440\u0430\u0437"
1196
+ );
1197
+ var UniqueStructureLevelsSchema = z.array(BoxStructureLevelInputSchema).max(1e3).refine(
1198
+ (items) => new Set(items.map((item) => item.level)).size === items.length,
1199
+ "\u041A\u0430\u0436\u0434\u044B\u0439 \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u043D\u044B\u0439 \u0443\u0440\u043E\u0432\u0435\u043D\u044C \u043C\u043E\u0436\u043D\u043E \u043F\u0435\u0440\u0435\u0434\u0430\u0442\u044C \u0442\u043E\u043B\u044C\u043A\u043E \u043E\u0434\u0438\u043D \u0440\u0430\u0437"
1200
+ );
1201
+ var BoxFieldsSchema = z.object({
1202
+ code: CodeSchema3,
1203
+ priceUsd: MoneySchema4,
1204
+ pvBudget: PvSchema2,
1205
+ referralPercent: PercentSchema,
1206
+ binaryPercent: PercentSchema,
1207
+ extraBonusPercent: PercentSchema,
1208
+ extraStatusVolumePercent: PercentSchema,
1209
+ sortOrder: z.number().int().min(0).max(1e6),
1210
+ translations: UniqueTranslationsSchema,
1211
+ structureLevels: UniqueStructureLevelsSchema
1212
+ });
1213
+ var CreateBoxRequestSchema = BoxFieldsSchema.extend({
1214
+ referralPercent: PercentSchema.default(0),
1215
+ binaryPercent: PercentSchema.default(0),
1216
+ extraBonusPercent: PercentSchema.default(0),
1217
+ extraStatusVolumePercent: PercentSchema.default(0),
1218
+ sortOrder: z.number().int().min(0).max(1e6).default(0),
1219
+ structureLevels: UniqueStructureLevelsSchema.default([])
1220
+ });
1221
+ var UpdateBoxRequestSchema = BoxFieldsSchema.partial().extend({
1222
+ version: z.number().int().positive()
1223
+ });
1224
+ var BoxPublicIdParamSchema = z.object({ publicId: PublicIdSchema5 });
1225
+ var BoxListQuerySchema = BaseListQuerySchema.extend({
1226
+ status: z.enum(BoxStatus).optional()
1227
+ });
1228
+ var BoxStructureLevelSchema = BoxStructureLevelInputSchema.extend({
1229
+ publicId: PublicIdSchema5
1230
+ });
1231
+ var BoxSchema = z.object({
1232
+ publicId: PublicIdSchema5,
1233
+ code: CodeSchema3,
1234
+ status: z.enum(BoxStatus),
1235
+ priceUsd: z.string().regex(/^\d{1,16}\.\d{2}$/),
1236
+ pvBudget: z.string().regex(/^\d{1,16}\.\d{2}$/),
1237
+ referralPercent: PercentSchema,
1238
+ binaryPercent: PercentSchema,
1239
+ extraBonusPercent: PercentSchema,
1240
+ extraStatusVolumePercent: PercentSchema,
1241
+ sortOrder: z.number().int().nonnegative(),
1242
+ version: z.number().int().positive(),
1243
+ purchaseCount: z.number().int().nonnegative(),
1244
+ translations: z.array(BoxTranslationInputSchema),
1245
+ structureLevels: z.array(BoxStructureLevelSchema),
1246
+ createdAt: z.iso.datetime(),
1247
+ updatedAt: z.iso.datetime()
1248
+ });
1249
+ var LocalizedBoxSchema = BoxSchema.omit({
1250
+ translations: true,
1251
+ purchaseCount: true
1252
+ }).extend({
1253
+ name: z.string(),
1254
+ description: z.string().nullable()
1255
+ });
1256
+ var BoxListResponseSchema = z.object({
1257
+ items: z.array(BoxSchema),
1258
+ meta: z.object({
1259
+ page: z.number().int().positive(),
1260
+ limit: z.number().int().positive(),
1261
+ total: z.number().int().nonnegative(),
1262
+ pageCount: z.number().int().nonnegative()
1263
+ })
1264
+ });
1265
+ var LocalizedBoxListResponseSchema = z.object({
1266
+ items: z.array(LocalizedBoxSchema),
1267
+ meta: BoxListResponseSchema.shape.meta
1268
+ });
1269
+ var BoxSelectionLineSchema = z.object({
1270
+ variantPublicId: PublicIdSchema5,
1271
+ quantity: z.number().int().positive().max(1e5)
1272
+ });
1273
+ var BoxSelectionSchema = z.object({
1274
+ lines: z.array(BoxSelectionLineSchema).min(1).max(500)
1275
+ });
1276
+ var BoxCheckoutWarehouseRequestSchema = BoxSelectionSchema.extend({
1277
+ countryCode: z.string().trim().toUpperCase().length(2),
1278
+ city: z.string().trim().min(1).max(160)
1279
+ });
1280
+ var BoxCheckoutSnapshotSchema = z.object({
1281
+ box: LocalizedBoxSchema,
1282
+ products: z.array(LocalizedProductSchema),
1283
+ locations: z.array(CheckoutLocationSchema),
1284
+ mainWallet: z.object({
1285
+ balanceUsd: z.string().regex(/^\d{1,16}\.\d{2}$/),
1286
+ availableBalanceUsd: z.string().regex(/^\d{1,16}\.\d{2}$/)
1287
+ }),
1288
+ paymentMethods: z.array(z.enum(OrderPaymentMethod)),
1289
+ reserveDurationHours: z.literal(24)
1290
+ });
1291
+ var BoxCheckoutWarehouseListSchema = z.array(CheckoutWarehouseSchema);
1292
+ var CreateBoxOrderRequestSchema = BoxSelectionSchema.extend({
1293
+ boxPublicId: PublicIdSchema5,
1294
+ warehousePublicId: PublicIdSchema5,
1295
+ deliveryMethod: z.literal("PICKUP" /* PICKUP */),
1296
+ paymentMethod: z.enum(OrderPaymentMethod),
1297
+ walletAmountUsd: z.string().regex(/^\d{1,16}\.\d{2}$/).optional(),
1298
+ idempotencyKey: PublicIdSchema5
1299
+ }).superRefine((value, context) => {
1300
+ if (value.paymentMethod === "CASH" /* CASH */ && value.walletAmountUsd) {
1301
+ context.addIssue({
1302
+ code: "custom",
1303
+ path: ["walletAmountUsd"],
1304
+ message: "\u0414\u043B\u044F \u043E\u043F\u043B\u0430\u0442\u044B \u043D\u0430\u043B\u0438\u0447\u043D\u044B\u043C\u0438 \u0441\u0443\u043C\u043C\u0430 \u043A\u043E\u0448\u0435\u043B\u044C\u043A\u0430 \u043D\u0435 \u043F\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044F"
1305
+ });
1306
+ }
1307
+ if (value.paymentMethod === "MAIN_WALLET" /* MAIN_WALLET */ && (!value.walletAmountUsd || value.walletAmountUsd === "0.00")) {
1308
+ context.addIssue({
1309
+ code: "custom",
1310
+ path: ["walletAmountUsd"],
1311
+ message: "\u0423\u043A\u0430\u0436\u0438\u0442\u0435 \u0441\u0443\u043C\u043C\u0443 \u043E\u043F\u043B\u0430\u0442\u044B \u0441 \u043E\u0441\u043D\u043E\u0432\u043D\u043E\u0433\u043E \u043A\u043E\u0448\u0435\u043B\u044C\u043A\u0430"
1312
+ });
1313
+ }
1314
+ });
1315
+ var BoxPurchaseSchema = z.object({
1316
+ publicId: PublicIdSchema5,
1317
+ boxPublicId: PublicIdSchema5,
1318
+ orderPublicId: PublicIdSchema5,
1319
+ boxCode: CodeSchema3,
1320
+ boxName: z.string(),
1321
+ kind: z.enum(BoxPurchaseKind),
1322
+ status: z.enum(BoxPurchaseStatus),
1323
+ boxVersion: z.number().int().positive(),
1324
+ priceUsd: z.string().regex(/^\d{1,16}\.\d{2}$/),
1325
+ pvBudget: z.string().regex(/^\d{1,16}\.\d{2}$/),
1326
+ pvDelta: z.string().regex(/^\d{1,16}\.\d{2}$/),
1327
+ activatedAt: z.iso.datetime().nullable(),
1328
+ createdAt: z.iso.datetime()
1329
+ });
1330
+
1331
+ export { BoxCheckoutSnapshotSchema, BoxCheckoutWarehouseListSchema, BoxCheckoutWarehouseRequestSchema, BoxListQuerySchema, BoxListResponseSchema, BoxPublicIdParamSchema, BoxPurchaseKind, BoxPurchaseSchema, BoxPurchaseStatus, BoxSchema, BoxSelectionLineSchema, BoxSelectionSchema, BoxStatus, BoxStructureLevelInputSchema, BoxStructureLevelSchema, BoxTranslationInputSchema, CreateBoxOrderRequestSchema, CreateBoxRequestSchema, LocalizedBoxListResponseSchema, LocalizedBoxSchema, UpdateBoxRequestSchema };
1332
+ //# sourceMappingURL=index.mjs.map
1333
+ //# sourceMappingURL=index.mjs.map