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