aivilife-contracts 5.0.0 → 5.2.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.
@@ -0,0 +1,690 @@
1
+ import { z } from 'zod';
2
+
3
+ // src/order/order.enums.ts
4
+ var OrderDeliveryMethod = /* @__PURE__ */ ((OrderDeliveryMethod2) => {
5
+ OrderDeliveryMethod2["PICKUP"] = "PICKUP";
6
+ return OrderDeliveryMethod2;
7
+ })(OrderDeliveryMethod || {});
8
+ var OrderPaymentMethod = /* @__PURE__ */ ((OrderPaymentMethod2) => {
9
+ OrderPaymentMethod2["CASH"] = "CASH";
10
+ OrderPaymentMethod2["MAIN_WALLET"] = "MAIN_WALLET";
11
+ return OrderPaymentMethod2;
12
+ })(OrderPaymentMethod || {});
13
+ var OrderStatus = /* @__PURE__ */ ((OrderStatus2) => {
14
+ OrderStatus2["PENDING_PAYMENT"] = "PENDING_PAYMENT";
15
+ OrderStatus2["PROCESSING"] = "PROCESSING";
16
+ OrderStatus2["READY_FOR_PICKUP"] = "READY_FOR_PICKUP";
17
+ OrderStatus2["COMPLETED"] = "COMPLETED";
18
+ OrderStatus2["CANCELLED"] = "CANCELLED";
19
+ return OrderStatus2;
20
+ })(OrderStatus || {});
21
+ var OrderPaymentStatus = /* @__PURE__ */ ((OrderPaymentStatus2) => {
22
+ OrderPaymentStatus2["AWAITING_RECEIPT"] = "AWAITING_RECEIPT";
23
+ OrderPaymentStatus2["UNDER_REVIEW"] = "UNDER_REVIEW";
24
+ OrderPaymentStatus2["REJECTED"] = "REJECTED";
25
+ OrderPaymentStatus2["PAID"] = "PAID";
26
+ OrderPaymentStatus2["CANCELLED"] = "CANCELLED";
27
+ return OrderPaymentStatus2;
28
+ })(OrderPaymentStatus || {});
29
+ var OrderReceiptStatus = /* @__PURE__ */ ((OrderReceiptStatus2) => {
30
+ OrderReceiptStatus2["UNDER_REVIEW"] = "UNDER_REVIEW";
31
+ OrderReceiptStatus2["APPROVED"] = "APPROVED";
32
+ OrderReceiptStatus2["REJECTED"] = "REJECTED";
33
+ return OrderReceiptStatus2;
34
+ })(OrderReceiptStatus || {});
35
+ var OrderReceiptDecision = /* @__PURE__ */ ((OrderReceiptDecision2) => {
36
+ OrderReceiptDecision2["APPROVE"] = "APPROVE";
37
+ OrderReceiptDecision2["REJECT"] = "REJECT";
38
+ return OrderReceiptDecision2;
39
+ })(OrderReceiptDecision || {});
40
+ var OrderStockAvailability = /* @__PURE__ */ ((OrderStockAvailability2) => {
41
+ OrderStockAvailability2["AVAILABLE"] = "AVAILABLE";
42
+ OrderStockAvailability2["OUT_OF_STOCK"] = "OUT_OF_STOCK";
43
+ OrderStockAvailability2["INSUFFICIENT_STOCK"] = "INSUFFICIENT_STOCK";
44
+ return OrderStockAvailability2;
45
+ })(OrderStockAvailability || {});
46
+ var OrderEventType = /* @__PURE__ */ ((OrderEventType2) => {
47
+ OrderEventType2["CREATED"] = "CREATED";
48
+ OrderEventType2["WALLET_DEBITED"] = "WALLET_DEBITED";
49
+ OrderEventType2["RECEIPT_UPLOADED"] = "RECEIPT_UPLOADED";
50
+ OrderEventType2["PAYMENT_APPROVED"] = "PAYMENT_APPROVED";
51
+ OrderEventType2["PAYMENT_REJECTED"] = "PAYMENT_REJECTED";
52
+ OrderEventType2["CANCELLED_TIMEOUT"] = "CANCELLED_TIMEOUT";
53
+ OrderEventType2["WALLET_REFUNDED"] = "WALLET_REFUNDED";
54
+ return OrderEventType2;
55
+ })(OrderEventType || {});
56
+ var OrderNotificationType = /* @__PURE__ */ ((OrderNotificationType2) => {
57
+ OrderNotificationType2["ORDER_CREATED"] = "ORDER_CREATED";
58
+ OrderNotificationType2["RECEIPT_RECEIVED"] = "RECEIPT_RECEIVED";
59
+ OrderNotificationType2["PAYMENT_APPROVED"] = "PAYMENT_APPROVED";
60
+ OrderNotificationType2["PAYMENT_REJECTED"] = "PAYMENT_REJECTED";
61
+ OrderNotificationType2["ORDER_CANCELLED"] = "ORDER_CANCELLED";
62
+ return OrderNotificationType2;
63
+ })(OrderNotificationType || {});
64
+
65
+ // src/catalog/catalog.enums.ts
66
+ var ProductUnit = {
67
+ CAPSULE: "CAPSULE",
68
+ GRAM: "GRAM",
69
+ MILLILITER: "MILLILITER",
70
+ PIECE: "PIECE"
71
+ };
72
+
73
+ // src/cart/cart.enums.ts
74
+ var CartItemAvailability = /* @__PURE__ */ ((CartItemAvailability2) => {
75
+ CartItemAvailability2["AVAILABLE"] = "AVAILABLE";
76
+ CartItemAvailability2["PRODUCT_UNAVAILABLE"] = "PRODUCT_UNAVAILABLE";
77
+ CartItemAvailability2["VARIANT_UNAVAILABLE"] = "VARIANT_UNAVAILABLE";
78
+ return CartItemAvailability2;
79
+ })(CartItemAvailability || {});
80
+
81
+ // src/cart/cart.schemas.ts
82
+ var PublicIdSchema = z.uuid();
83
+ var QuantitySchema = z.number().int().min(1).max(999);
84
+ var DecimalSchema = z.string().regex(/^\d{1,16}(?:\.\d{1,2})?$/);
85
+ z.object({
86
+ variantPublicId: PublicIdSchema,
87
+ quantity: QuantitySchema.default(1)
88
+ });
89
+ z.object({
90
+ quantity: QuantitySchema,
91
+ version: z.number().int().positive()
92
+ });
93
+ z.object({
94
+ itemPublicId: PublicIdSchema
95
+ });
96
+ var CartItemSchema = z.object({
97
+ publicId: PublicIdSchema,
98
+ quantity: QuantitySchema,
99
+ version: z.number().int().positive(),
100
+ availability: z.enum(CartItemAvailability),
101
+ product: z.object({
102
+ publicId: PublicIdSchema,
103
+ slug: z.string(),
104
+ name: z.string(),
105
+ coverContentUrl: z.string().nullable()
106
+ }),
107
+ variant: z.object({
108
+ publicId: PublicIdSchema,
109
+ sku: z.string(),
110
+ quantity: z.string(),
111
+ unit: z.enum(ProductUnit),
112
+ priceUsd: DecimalSchema,
113
+ pv: DecimalSchema
114
+ }),
115
+ lineTotalUsd: DecimalSchema,
116
+ lineTotalPv: DecimalSchema,
117
+ createdAt: z.string().datetime(),
118
+ updatedAt: z.string().datetime()
119
+ });
120
+ var CartSchema = z.object({
121
+ publicId: PublicIdSchema.nullable(),
122
+ items: z.array(CartItemSchema),
123
+ totalQuantity: z.number().int().nonnegative(),
124
+ subtotalUsd: DecimalSchema,
125
+ totalPv: DecimalSchema,
126
+ hasUnavailableItems: z.boolean(),
127
+ updatedAt: z.string().datetime().nullable()
128
+ });
129
+ var PageSchema = z.coerce.number().int().min(1).default(1);
130
+ var LimitSchema = z.coerce.number().int().min(1).max(100).default(20);
131
+ var SortOrderSchema = z.enum(["asc", "desc"]).default("desc");
132
+ z.object({
133
+ page: PageSchema.optional(),
134
+ limit: LimitSchema.optional()
135
+ });
136
+
137
+ // src/common/list-query.schemas.ts
138
+ var DateFromSchema = z.string().datetime().optional();
139
+ var DateToSchema = z.string().datetime().optional();
140
+ var SearchSchema = z.string().trim().min(1).max(255).optional();
141
+ var BaseListQuerySchema = z.object({
142
+ page: PageSchema.optional(),
143
+ limit: LimitSchema.optional(),
144
+ search: SearchSchema,
145
+ dateFrom: DateFromSchema,
146
+ dateTo: DateToSchema,
147
+ sortOrder: SortOrderSchema.optional()
148
+ });
149
+
150
+ // src/warehouse/warehouse.enums.ts
151
+ var WarehouseStatus = {
152
+ DRAFT: "DRAFT",
153
+ ACTIVE: "ACTIVE",
154
+ SUSPENDED: "SUSPENDED",
155
+ ARCHIVED: "ARCHIVED"
156
+ };
157
+ var WarehouseAssignmentType = {
158
+ STAFF: "STAFF"
159
+ };
160
+ var WarehouseRequestType = {
161
+ REPLENISHMENT: "REPLENISHMENT",
162
+ WRITE_OFF: "WRITE_OFF",
163
+ TRANSFER: "TRANSFER"
164
+ };
165
+ var WarehouseRequestStatus = {
166
+ DRAFT: "DRAFT",
167
+ PENDING_REVIEW: "PENDING_REVIEW",
168
+ APPROVED: "APPROVED",
169
+ READY_TO_SHIP: "READY_TO_SHIP",
170
+ IN_TRANSIT: "IN_TRANSIT",
171
+ COMPLETED: "COMPLETED",
172
+ REJECTED: "REJECTED",
173
+ CANCELLED: "CANCELLED",
174
+ DISCREPANCY_REPORTED: "DISCREPANCY_REPORTED",
175
+ FAILED: "FAILED"
176
+ };
177
+ var WarehouseMovementType = {
178
+ REPLENISHMENT: "REPLENISHMENT",
179
+ WRITE_OFF: "WRITE_OFF",
180
+ TRANSFER_OUT: "TRANSFER_OUT",
181
+ TRANSFER_IN: "TRANSFER_IN",
182
+ ORDER_ISSUE: "ORDER_ISSUE"
183
+ };
184
+ var WarehouseWriteOffReason = {
185
+ DEFECT: "DEFECT",
186
+ DAMAGED: "DAMAGED",
187
+ EXPIRED: "EXPIRED",
188
+ LOST: "LOST",
189
+ INVENTORY_SHORTAGE: "INVENTORY_SHORTAGE",
190
+ OTHER: "OTHER"
191
+ };
192
+ var WarehouseWeekday = {
193
+ MONDAY: "MONDAY",
194
+ TUESDAY: "TUESDAY",
195
+ WEDNESDAY: "WEDNESDAY",
196
+ THURSDAY: "THURSDAY",
197
+ FRIDAY: "FRIDAY",
198
+ SATURDAY: "SATURDAY",
199
+ SUNDAY: "SUNDAY"
200
+ };
201
+
202
+ // src/warehouse/warehouse.schemas.ts
203
+ var PublicIdSchema2 = z.uuid();
204
+ var CodeSchema = z.string().trim().toUpperCase().regex(/^[A-Z0-9][A-Z0-9_-]{1,63}$/);
205
+ var DateSchema = z.iso.date();
206
+ var DateTimeSchema = z.iso.datetime();
207
+ var TimeSchema = z.string().regex(/^([01]\d|2[0-3]):[0-5]\d$/);
208
+ var NullableTrimmedSchema = (max) => z.string().trim().min(1).max(max).nullable().optional();
209
+ var WarehouseDayScheduleSchema = z.object({
210
+ isOpen: z.boolean(),
211
+ opensAt: TimeSchema.nullable(),
212
+ closesAt: TimeSchema.nullable()
213
+ }).superRefine((value, context) => {
214
+ if (value.isOpen && (!value.opensAt || !value.closesAt)) {
215
+ context.addIssue({
216
+ code: "custom",
217
+ 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"
218
+ });
219
+ }
220
+ if (!value.isOpen && (value.opensAt || value.closesAt)) {
221
+ context.addIssue({
222
+ code: "custom",
223
+ 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"
224
+ });
225
+ }
226
+ if (value.isOpen && value.opensAt && value.closesAt && value.opensAt >= value.closesAt) {
227
+ context.addIssue({
228
+ code: "custom",
229
+ 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"
230
+ });
231
+ }
232
+ });
233
+ var WarehouseWeeklyScheduleSchema = z.record(
234
+ z.enum(WarehouseWeekday),
235
+ WarehouseDayScheduleSchema
236
+ );
237
+ var WarehouseFieldsSchema = z.object({
238
+ name: z.string().trim().min(2).max(160),
239
+ countryCode: z.string().trim().toUpperCase().length(2),
240
+ country: z.string().trim().min(2).max(120),
241
+ city: z.string().trim().min(1).max(160),
242
+ address: z.string().trim().min(3).max(500),
243
+ phoneNumber: z.string().trim().min(7).max(32),
244
+ mapUrl: z.url().max(2e3).refine((value) => new URL(value).protocol === "https:", {
245
+ 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"
246
+ }),
247
+ timezone: z.string().trim().min(1).max(64),
248
+ schedule: WarehouseWeeklyScheduleSchema,
249
+ isPickupPoint: z.boolean()
250
+ });
251
+ WarehouseFieldsSchema.extend({
252
+ code: CodeSchema,
253
+ isPickupPoint: WarehouseFieldsSchema.shape.isPickupPoint.default(true)
254
+ });
255
+ WarehouseFieldsSchema.partial().extend({ version: z.number().int().positive() }).required({ version: true });
256
+ z.object({
257
+ publicId: PublicIdSchema2
258
+ });
259
+ z.object({
260
+ publicId: PublicIdSchema2,
261
+ assignmentPublicId: PublicIdSchema2
262
+ });
263
+ BaseListQuerySchema.extend({
264
+ status: z.enum(WarehouseStatus).optional(),
265
+ countryCode: z.string().trim().toUpperCase().length(2).optional(),
266
+ city: z.string().trim().min(1).max(160).optional()
267
+ });
268
+ z.object({
269
+ search: z.string().trim().min(2).max(100),
270
+ page: z.coerce.number().int().min(1).default(1),
271
+ limit: z.coerce.number().int().min(1).max(20).default(20)
272
+ });
273
+ z.object({
274
+ userUuid: z.string().trim().min(3).max(32),
275
+ type: z.enum(WarehouseAssignmentType)
276
+ });
277
+ var WarehouseRequestLineInputSchema = z.object({
278
+ variantPublicId: PublicIdSchema2,
279
+ quantity: z.number().int().positive().max(1e9),
280
+ expiresAt: DateSchema.nullable().optional(),
281
+ batchNumber: NullableTrimmedSchema(120),
282
+ comment: NullableTrimmedSchema(1e3)
283
+ });
284
+ z.object({
285
+ type: z.enum(WarehouseRequestType),
286
+ sourceWarehousePublicId: PublicIdSchema2.nullable().optional(),
287
+ destinationWarehousePublicId: PublicIdSchema2.nullable().optional(),
288
+ writeOffReason: z.enum(WarehouseWriteOffReason).nullable().optional(),
289
+ comment: z.string().trim().max(2e3).nullable().optional(),
290
+ lines: z.array(WarehouseRequestLineInputSchema).min(1).max(500)
291
+ }).superRefine((value, context) => {
292
+ const source = value.sourceWarehousePublicId ?? null;
293
+ const destination = value.destinationWarehousePublicId ?? null;
294
+ if (value.type === WarehouseRequestType.REPLENISHMENT) {
295
+ if (!destination || source) {
296
+ context.addIssue({
297
+ code: "custom",
298
+ path: ["destinationWarehousePublicId"],
299
+ 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"
300
+ });
301
+ }
302
+ value.lines.forEach((line, index) => {
303
+ if (!line.expiresAt) {
304
+ context.addIssue({
305
+ code: "custom",
306
+ path: ["lines", index, "expiresAt"],
307
+ 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"
308
+ });
309
+ }
310
+ });
311
+ }
312
+ if (value.type === WarehouseRequestType.WRITE_OFF) {
313
+ if (!source || destination) {
314
+ context.addIssue({
315
+ code: "custom",
316
+ path: ["sourceWarehousePublicId"],
317
+ 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"
318
+ });
319
+ }
320
+ if (!value.writeOffReason) {
321
+ context.addIssue({
322
+ code: "custom",
323
+ path: ["writeOffReason"],
324
+ 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"
325
+ });
326
+ }
327
+ if (!value.comment?.trim()) {
328
+ context.addIssue({
329
+ code: "custom",
330
+ path: ["comment"],
331
+ 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"
332
+ });
333
+ }
334
+ }
335
+ if (value.type === WarehouseRequestType.TRANSFER) {
336
+ if (!source || !destination || source === destination) {
337
+ context.addIssue({
338
+ code: "custom",
339
+ path: ["destinationWarehousePublicId"],
340
+ 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"
341
+ });
342
+ }
343
+ }
344
+ });
345
+ z.object({
346
+ publicId: PublicIdSchema2
347
+ });
348
+ z.object({
349
+ publicId: PublicIdSchema2,
350
+ attachmentPublicId: PublicIdSchema2
351
+ });
352
+ BaseListQuerySchema.extend({
353
+ type: z.enum(WarehouseRequestType).optional(),
354
+ status: z.enum(WarehouseRequestStatus).optional(),
355
+ warehousePublicId: PublicIdSchema2.optional(),
356
+ createdByUserId: z.coerce.number().int().positive().optional()
357
+ });
358
+ z.object({
359
+ comment: z.string().trim().max(2e3).nullable().optional()
360
+ });
361
+ z.object({
362
+ comment: z.string().trim().min(1).max(2e3)
363
+ });
364
+ z.object({
365
+ idempotencyKey: z.uuid(),
366
+ comment: z.string().trim().max(2e3).nullable().optional()
367
+ });
368
+ z.object({
369
+ comment: z.string().trim().min(1).max(2e3)
370
+ });
371
+ BaseListQuerySchema.extend({
372
+ warehousePublicId: PublicIdSchema2.optional(),
373
+ variantPublicId: PublicIdSchema2.optional(),
374
+ expired: z.union([z.boolean(), z.enum(["true", "false"]).transform((v) => v === "true")]).optional(),
375
+ expiresBefore: DateSchema.optional()
376
+ });
377
+ var WarehouseSchema = z.object({
378
+ publicId: PublicIdSchema2,
379
+ code: CodeSchema,
380
+ name: z.string(),
381
+ status: z.enum(WarehouseStatus),
382
+ countryCode: z.string().length(2),
383
+ country: z.string(),
384
+ city: z.string(),
385
+ address: z.string(),
386
+ phoneNumber: z.string(),
387
+ mapUrl: z.string(),
388
+ timezone: z.string(),
389
+ schedule: WarehouseWeeklyScheduleSchema,
390
+ isPickupPoint: z.boolean(),
391
+ version: z.number().int().positive(),
392
+ createdAt: DateTimeSchema,
393
+ updatedAt: DateTimeSchema
394
+ });
395
+ var WarehouseUserLookupSchema = z.object({
396
+ id: z.number().int().positive(),
397
+ uuid: z.string(),
398
+ login: z.string(),
399
+ firstName: z.string(),
400
+ lastName: z.string(),
401
+ email: z.email(),
402
+ role: z.string()
403
+ });
404
+ z.object({
405
+ publicId: PublicIdSchema2,
406
+ warehousePublicId: PublicIdSchema2,
407
+ type: z.enum(WarehouseAssignmentType),
408
+ user: WarehouseUserLookupSchema,
409
+ assignedByLogin: z.string(),
410
+ assignedAt: DateTimeSchema
411
+ });
412
+ var WarehouseOperationLineSchema = z.object({
413
+ publicId: PublicIdSchema2,
414
+ variantPublicId: PublicIdSchema2,
415
+ sku: z.string(),
416
+ quantity: z.number().int().positive(),
417
+ expiresAt: DateSchema.nullable(),
418
+ batchNumber: z.string().nullable(),
419
+ comment: z.string().nullable()
420
+ });
421
+ var WarehouseOperationEventSchema = z.object({
422
+ publicId: PublicIdSchema2,
423
+ fromStatus: z.enum(WarehouseRequestStatus).nullable(),
424
+ toStatus: z.enum(WarehouseRequestStatus),
425
+ actorUserId: z.number().int().positive(),
426
+ actorLogin: z.string(),
427
+ comment: z.string().nullable(),
428
+ createdAt: DateTimeSchema
429
+ });
430
+ var WarehouseOperationAttachmentSchema = z.object({
431
+ publicId: PublicIdSchema2,
432
+ mimeType: z.string(),
433
+ sizeBytes: z.number().int().positive(),
434
+ originalName: z.string().nullable(),
435
+ uploadedByLogin: z.string(),
436
+ contentUrl: z.string(),
437
+ createdAt: DateTimeSchema
438
+ });
439
+ z.object({
440
+ publicId: PublicIdSchema2,
441
+ type: z.enum(WarehouseRequestType),
442
+ status: z.enum(WarehouseRequestStatus),
443
+ sourceWarehouse: WarehouseSchema.nullable(),
444
+ destinationWarehouse: WarehouseSchema.nullable(),
445
+ writeOffReason: z.enum(WarehouseWriteOffReason).nullable(),
446
+ comment: z.string().nullable(),
447
+ rejectionComment: z.string().nullable(),
448
+ createdByUserId: z.number().int().positive(),
449
+ createdByLogin: z.string(),
450
+ approvedByUserId: z.number().int().positive().nullable(),
451
+ approvedByLogin: z.string().nullable(),
452
+ approvedAt: DateTimeSchema.nullable(),
453
+ completedByUserId: z.number().int().positive().nullable(),
454
+ completedByLogin: z.string().nullable(),
455
+ completedAt: DateTimeSchema.nullable(),
456
+ version: z.number().int().positive(),
457
+ lines: z.array(WarehouseOperationLineSchema),
458
+ events: z.array(WarehouseOperationEventSchema),
459
+ attachments: z.array(WarehouseOperationAttachmentSchema),
460
+ createdAt: DateTimeSchema,
461
+ updatedAt: DateTimeSchema
462
+ });
463
+ z.object({
464
+ publicId: PublicIdSchema2,
465
+ warehouse: WarehouseSchema,
466
+ variantPublicId: PublicIdSchema2,
467
+ sku: z.string(),
468
+ productPublicId: PublicIdSchema2,
469
+ productCode: z.string(),
470
+ batchNumber: z.string().nullable(),
471
+ expiresAt: DateSchema,
472
+ onHand: z.number().int().nonnegative(),
473
+ reserved: z.number().int().nonnegative(),
474
+ available: z.number().int().nonnegative(),
475
+ expired: z.boolean(),
476
+ version: z.number().int().positive(),
477
+ updatedAt: DateTimeSchema
478
+ });
479
+ z.object({
480
+ publicId: PublicIdSchema2,
481
+ warehousePublicId: PublicIdSchema2,
482
+ operationPublicId: PublicIdSchema2,
483
+ variantPublicId: PublicIdSchema2,
484
+ inventoryBatchPublicId: PublicIdSchema2.nullable(),
485
+ type: z.enum(WarehouseMovementType),
486
+ quantityDelta: z.number().int(),
487
+ balanceAfter: z.number().int().nonnegative(),
488
+ actorUserId: z.number().int().positive(),
489
+ actorLogin: z.string(),
490
+ createdAt: DateTimeSchema
491
+ });
492
+
493
+ // src/order/order.schemas.ts
494
+ var PublicIdSchema3 = z.uuid();
495
+ var DateTimeSchema2 = z.iso.datetime();
496
+ var MoneySchema = z.string().regex(/^\d{1,16}\.\d{2}$/);
497
+ var DecimalSchema2 = z.string().regex(/^\d{1,16}(?:\.\d{1,3})?$/);
498
+ var OrderNumberSchema = z.string().regex(/^AV-\d{8}-[A-Z0-9]{6}$/);
499
+ var CheckoutWarehouseQuerySchema = z.object({
500
+ countryCode: z.string().trim().toUpperCase().length(2),
501
+ city: z.string().trim().min(1).max(160)
502
+ });
503
+ var CheckoutLocationSchema = z.object({
504
+ countryCode: z.string().length(2),
505
+ country: z.string(),
506
+ cities: z.array(z.string()).min(1)
507
+ });
508
+ var CheckoutSnapshotSchema = z.object({
509
+ cart: CartSchema,
510
+ locations: z.array(CheckoutLocationSchema),
511
+ mainWallet: z.object({
512
+ balanceUsd: MoneySchema,
513
+ availableBalanceUsd: MoneySchema
514
+ }),
515
+ paymentMethods: z.array(z.enum(OrderPaymentMethod)),
516
+ reserveDurationHours: z.literal(24)
517
+ });
518
+ var CheckoutWarehouseAvailabilitySchema = z.object({
519
+ variantPublicId: PublicIdSchema3,
520
+ requestedQuantity: z.number().int().positive(),
521
+ availableQuantity: z.number().int().nonnegative(),
522
+ availability: z.enum(OrderStockAvailability)
523
+ });
524
+ var CheckoutWarehouseSchema = z.object({
525
+ publicId: PublicIdSchema3,
526
+ code: z.string(),
527
+ name: z.string(),
528
+ countryCode: z.string().length(2),
529
+ country: z.string(),
530
+ city: z.string(),
531
+ address: z.string(),
532
+ phoneNumber: z.string(),
533
+ mapUrl: z.url(),
534
+ timezone: z.string(),
535
+ schedule: WarehouseWeeklyScheduleSchema,
536
+ canFulfill: z.boolean(),
537
+ items: z.array(CheckoutWarehouseAvailabilitySchema)
538
+ });
539
+ var CheckoutWarehouseListSchema = z.array(CheckoutWarehouseSchema);
540
+ var CreateOrderRequestSchema = z.object({
541
+ warehousePublicId: PublicIdSchema3,
542
+ deliveryMethod: z.literal("PICKUP" /* PICKUP */),
543
+ paymentMethod: z.enum(OrderPaymentMethod),
544
+ walletAmountUsd: MoneySchema.optional(),
545
+ idempotencyKey: PublicIdSchema3
546
+ }).superRefine((value, context) => {
547
+ if (value.paymentMethod === "CASH" /* CASH */ && value.walletAmountUsd) {
548
+ context.addIssue({
549
+ code: "custom",
550
+ path: ["walletAmountUsd"],
551
+ 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"
552
+ });
553
+ }
554
+ if (value.paymentMethod === "MAIN_WALLET" /* MAIN_WALLET */ && (!value.walletAmountUsd || value.walletAmountUsd === "0.00")) {
555
+ context.addIssue({
556
+ code: "custom",
557
+ path: ["walletAmountUsd"],
558
+ 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"
559
+ });
560
+ }
561
+ });
562
+ var OrderPublicIdParamSchema = z.object({ publicId: PublicIdSchema3 });
563
+ var OrderReceiptParamSchema = z.object({
564
+ publicId: PublicIdSchema3,
565
+ receiptPublicId: PublicIdSchema3
566
+ });
567
+ var OrderWarehouseSchema = z.object({
568
+ publicId: PublicIdSchema3,
569
+ code: z.string(),
570
+ name: z.string(),
571
+ countryCode: z.string().length(2),
572
+ country: z.string(),
573
+ city: z.string(),
574
+ address: z.string(),
575
+ phoneNumber: z.string(),
576
+ mapUrl: z.url(),
577
+ timezone: z.string(),
578
+ schedule: WarehouseWeeklyScheduleSchema
579
+ });
580
+ var OrderItemSchema = z.object({
581
+ publicId: PublicIdSchema3,
582
+ productPublicId: PublicIdSchema3,
583
+ variantPublicId: PublicIdSchema3,
584
+ productName: z.string(),
585
+ sku: z.string(),
586
+ variantQuantity: DecimalSchema2,
587
+ unit: z.enum(ProductUnit),
588
+ quantity: z.number().int().positive(),
589
+ unitPriceUsd: MoneySchema,
590
+ lineTotalUsd: MoneySchema,
591
+ unitPv: MoneySchema,
592
+ lineTotalPv: MoneySchema,
593
+ coverContentUrl: z.string().nullable()
594
+ });
595
+ var OrderReceiptSchema = z.object({
596
+ publicId: PublicIdSchema3,
597
+ status: z.enum(OrderReceiptStatus),
598
+ originalName: z.string().nullable(),
599
+ mimeType: z.string(),
600
+ sizeBytes: z.number().int().positive(),
601
+ version: z.number().int().positive(),
602
+ rejectionReason: z.string().nullable(),
603
+ reviewedAt: DateTimeSchema2.nullable(),
604
+ createdAt: DateTimeSchema2,
605
+ contentUrl: z.string()
606
+ });
607
+ var OrderEventSchema = z.object({
608
+ publicId: PublicIdSchema3,
609
+ type: z.enum(OrderEventType),
610
+ actorLogin: z.string().nullable(),
611
+ comment: z.string().nullable(),
612
+ createdAt: DateTimeSchema2
613
+ });
614
+ var OrderSchema = z.object({
615
+ publicId: PublicIdSchema3,
616
+ number: OrderNumberSchema,
617
+ status: z.enum(OrderStatus),
618
+ paymentStatus: z.enum(OrderPaymentStatus),
619
+ deliveryMethod: z.enum(OrderDeliveryMethod),
620
+ paymentMethod: z.enum(OrderPaymentMethod),
621
+ locale: z.string().length(2),
622
+ baseCurrencyCode: z.string().length(3),
623
+ displayCurrencyCode: z.string().length(3),
624
+ displayRate: z.string(),
625
+ subtotalUsd: MoneySchema,
626
+ totalPv: MoneySchema,
627
+ walletPaidUsd: MoneySchema,
628
+ walletRefundedUsd: MoneySchema,
629
+ cashDueUsd: MoneySchema,
630
+ reserveExpiresAt: DateTimeSchema2.nullable(),
631
+ paidAt: DateTimeSchema2.nullable(),
632
+ cancelledAt: DateTimeSchema2.nullable(),
633
+ cancellationReason: z.string().nullable(),
634
+ warehouse: OrderWarehouseSchema,
635
+ items: z.array(OrderItemSchema).min(1),
636
+ receipts: z.array(OrderReceiptSchema),
637
+ events: z.array(OrderEventSchema),
638
+ createdAt: DateTimeSchema2,
639
+ updatedAt: DateTimeSchema2
640
+ });
641
+ var OrderListItemSchema = OrderSchema.omit({
642
+ receipts: true,
643
+ events: true
644
+ });
645
+ var OrderListQuerySchema = BaseListQuerySchema.extend({
646
+ status: z.enum(OrderStatus).optional(),
647
+ paymentStatus: z.enum(OrderPaymentStatus).optional()
648
+ });
649
+ var OrderListResponseSchema = z.object({
650
+ items: z.array(OrderListItemSchema),
651
+ meta: z.object({
652
+ page: z.number().int().positive(),
653
+ limit: z.number().int().positive(),
654
+ total: z.number().int().nonnegative(),
655
+ pageCount: z.number().int().nonnegative()
656
+ })
657
+ });
658
+ var ReviewOrderReceiptRequestSchema = z.object({
659
+ decision: z.enum(OrderReceiptDecision),
660
+ version: z.number().int().positive(),
661
+ rejectionReason: z.string().trim().min(1).max(2e3).optional()
662
+ }).superRefine((value, context) => {
663
+ if (value.decision === "REJECT" /* REJECT */ && !value.rejectionReason) {
664
+ context.addIssue({
665
+ code: "custom",
666
+ path: ["rejectionReason"],
667
+ 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"
668
+ });
669
+ }
670
+ if (value.decision === "APPROVE" /* APPROVE */ && value.rejectionReason) {
671
+ context.addIssue({
672
+ code: "custom",
673
+ path: ["rejectionReason"],
674
+ 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"
675
+ });
676
+ }
677
+ });
678
+ var OrderNotificationSchema = z.object({
679
+ publicId: PublicIdSchema3,
680
+ orderPublicId: PublicIdSchema3,
681
+ orderNumber: OrderNumberSchema,
682
+ type: z.enum(OrderNotificationType),
683
+ isRead: z.boolean(),
684
+ createdAt: DateTimeSchema2
685
+ });
686
+ var OrderNotificationListSchema = z.array(OrderNotificationSchema);
687
+
688
+ export { CheckoutLocationSchema, CheckoutSnapshotSchema, CheckoutWarehouseAvailabilitySchema, CheckoutWarehouseListSchema, CheckoutWarehouseQuerySchema, CheckoutWarehouseSchema, CreateOrderRequestSchema, OrderDeliveryMethod, OrderEventSchema, OrderEventType, OrderItemSchema, OrderListItemSchema, OrderListQuerySchema, OrderListResponseSchema, OrderNotificationListSchema, OrderNotificationSchema, OrderNotificationType, OrderPaymentMethod, OrderPaymentStatus, OrderPublicIdParamSchema, OrderReceiptDecision, OrderReceiptParamSchema, OrderReceiptSchema, OrderReceiptStatus, OrderSchema, OrderStatus, OrderStockAvailability, OrderWarehouseSchema, ReviewOrderReceiptRequestSchema };
689
+ //# sourceMappingURL=index.mjs.map
690
+ //# sourceMappingURL=index.mjs.map