@voyantjs/finance-contracts 0.95.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 @@
1
+ {"version":3,"file":"validation-payments.d.ts","sourceRoot":"","sources":["../src/validation-payments.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,339 @@
1
+ import { z } from "zod";
2
+ import { captureModeSchema, guaranteeStatusSchema, guaranteeTypeSchema, paginationSchema, paymentAuthorizationStatusSchema, paymentCaptureStatusSchema, paymentInstrumentOwnerTypeSchema, paymentInstrumentStatusSchema, paymentInstrumentTypeSchema, paymentMethodSchema, paymentScheduleStatusSchema, paymentScheduleTypeSchema, paymentSessionStatusSchema, paymentSessionTargetTypeSchema, paymentStatusSchema, } from "./validation-shared.js";
3
+ const paymentInstrumentCoreSchema = z.object({
4
+ ownerType: paymentInstrumentOwnerTypeSchema.default("client"),
5
+ personId: z.string().optional().nullable(),
6
+ organizationId: z.string().optional().nullable(),
7
+ supplierId: z.string().optional().nullable(),
8
+ channelId: z.string().optional().nullable(),
9
+ instrumentType: paymentInstrumentTypeSchema,
10
+ status: paymentInstrumentStatusSchema.default("active"),
11
+ label: z.string().min(1).max(255),
12
+ provider: z.string().max(255).optional().nullable(),
13
+ brand: z.string().max(100).optional().nullable(),
14
+ last4: z.string().max(4).optional().nullable(),
15
+ holderName: z.string().max(255).optional().nullable(),
16
+ expiryMonth: z.number().int().min(1).max(12).optional().nullable(),
17
+ expiryYear: z.number().int().min(2000).max(9999).optional().nullable(),
18
+ externalToken: z.string().max(255).optional().nullable(),
19
+ externalCustomerId: z.string().max(255).optional().nullable(),
20
+ billingEmail: z.string().email().optional().nullable(),
21
+ billingAddress: z.string().max(2000).optional().nullable(),
22
+ directBillReference: z.string().max(255).optional().nullable(),
23
+ notes: z.string().optional().nullable(),
24
+ metadata: z.record(z.string(), z.unknown()).optional().nullable(),
25
+ });
26
+ export const insertPaymentInstrumentSchema = paymentInstrumentCoreSchema;
27
+ export const updatePaymentInstrumentSchema = paymentInstrumentCoreSchema.partial();
28
+ export const paymentInstrumentListQuerySchema = paginationSchema.extend({
29
+ ownerType: paymentInstrumentOwnerTypeSchema.optional(),
30
+ personId: z.string().optional(),
31
+ organizationId: z.string().optional(),
32
+ supplierId: z.string().optional(),
33
+ channelId: z.string().optional(),
34
+ status: paymentInstrumentStatusSchema.optional(),
35
+ instrumentType: paymentInstrumentTypeSchema.optional(),
36
+ search: z.string().optional(),
37
+ });
38
+ const paymentSessionCoreSchema = z.object({
39
+ targetType: paymentSessionTargetTypeSchema.default("other"),
40
+ targetId: z.string().optional().nullable(),
41
+ bookingId: z.string().optional().nullable(),
42
+ orderId: z.string().optional().nullable(),
43
+ invoiceId: z.string().optional().nullable(),
44
+ bookingPaymentScheduleId: z.string().optional().nullable(),
45
+ bookingGuaranteeId: z.string().optional().nullable(),
46
+ paymentInstrumentId: z.string().optional().nullable(),
47
+ paymentAuthorizationId: z.string().optional().nullable(),
48
+ paymentCaptureId: z.string().optional().nullable(),
49
+ paymentId: z.string().optional().nullable(),
50
+ status: paymentSessionStatusSchema.default("pending"),
51
+ provider: z.string().max(255).optional().nullable(),
52
+ providerSessionId: z.string().max(255).optional().nullable(),
53
+ providerPaymentId: z.string().max(255).optional().nullable(),
54
+ externalReference: z.string().max(255).optional().nullable(),
55
+ idempotencyKey: z.string().max(255).optional().nullable(),
56
+ clientReference: z.string().max(255).optional().nullable(),
57
+ currency: z.string().min(3).max(3),
58
+ amountCents: z.number().int().min(1),
59
+ paymentMethod: paymentMethodSchema.optional().nullable(),
60
+ payerPersonId: z.string().optional().nullable(),
61
+ payerOrganizationId: z.string().optional().nullable(),
62
+ payerEmail: z.string().email().optional().nullable(),
63
+ payerName: z.string().max(255).optional().nullable(),
64
+ redirectUrl: z.string().url().optional().nullable(),
65
+ returnUrl: z.string().url().optional().nullable(),
66
+ cancelUrl: z.string().url().optional().nullable(),
67
+ callbackUrl: z.string().url().optional().nullable(),
68
+ expiresAt: z.string().optional().nullable(),
69
+ completedAt: z.string().optional().nullable(),
70
+ failedAt: z.string().optional().nullable(),
71
+ cancelledAt: z.string().optional().nullable(),
72
+ expiredAt: z.string().optional().nullable(),
73
+ failureCode: z.string().max(255).optional().nullable(),
74
+ failureMessage: z.string().max(2000).optional().nullable(),
75
+ notes: z.string().optional().nullable(),
76
+ providerPayload: z.record(z.string(), z.unknown()).optional().nullable(),
77
+ metadata: z.record(z.string(), z.unknown()).optional().nullable(),
78
+ });
79
+ export const insertPaymentSessionSchema = paymentSessionCoreSchema;
80
+ export const updatePaymentSessionSchema = paymentSessionCoreSchema.partial();
81
+ export const paymentSessionListQuerySchema = paginationSchema.extend({
82
+ bookingId: z.string().optional(),
83
+ orderId: z.string().optional(),
84
+ invoiceId: z.string().optional(),
85
+ bookingPaymentScheduleId: z.string().optional(),
86
+ bookingGuaranteeId: z.string().optional(),
87
+ targetType: paymentSessionTargetTypeSchema.optional(),
88
+ status: paymentSessionStatusSchema.optional(),
89
+ provider: z.string().optional(),
90
+ providerSessionId: z.string().optional(),
91
+ providerPaymentId: z.string().optional(),
92
+ externalReference: z.string().optional(),
93
+ clientReference: z.string().optional(),
94
+ idempotencyKey: z.string().optional(),
95
+ });
96
+ const paymentSessionProvisioningSchema = z.object({
97
+ provider: z.string().max(255).optional().nullable(),
98
+ paymentMethod: paymentMethodSchema.optional().nullable(),
99
+ payerPersonId: z.string().optional().nullable(),
100
+ payerOrganizationId: z.string().optional().nullable(),
101
+ payerEmail: z.string().email().optional().nullable(),
102
+ payerName: z.string().max(255).optional().nullable(),
103
+ externalReference: z.string().max(255).optional().nullable(),
104
+ idempotencyKey: z.string().max(255).optional().nullable(),
105
+ clientReference: z.string().max(255).optional().nullable(),
106
+ returnUrl: z.string().url().optional().nullable(),
107
+ cancelUrl: z.string().url().optional().nullable(),
108
+ callbackUrl: z.string().url().optional().nullable(),
109
+ expiresAt: z.string().optional().nullable(),
110
+ notes: z.string().optional().nullable(),
111
+ providerPayload: z.record(z.string(), z.unknown()).optional().nullable(),
112
+ metadata: z.record(z.string(), z.unknown()).optional().nullable(),
113
+ });
114
+ export const createPaymentSessionFromScheduleSchema = paymentSessionProvisioningSchema;
115
+ export const createPaymentSessionFromGuaranteeSchema = paymentSessionProvisioningSchema;
116
+ export const createPaymentSessionFromInvoiceSchema = paymentSessionProvisioningSchema;
117
+ export const applyDefaultBookingPaymentPlanSchema = z.object({
118
+ depositMode: z.enum(["none", "percentage", "fixed_amount"]).default("percentage"),
119
+ depositValue: z.number().int().min(0).default(30),
120
+ depositDueDate: z.string().optional().nullable(),
121
+ balanceDueDaysBeforeStart: z.number().int().min(0).default(30),
122
+ clearExistingPending: z.boolean().default(true),
123
+ createGuarantee: z.boolean().default(false),
124
+ guaranteeType: guaranteeTypeSchema.default("deposit"),
125
+ notes: z.string().optional().nullable(),
126
+ });
127
+ export const markPaymentSessionRequiresRedirectSchema = z.object({
128
+ provider: z.string().max(255).optional().nullable(),
129
+ providerSessionId: z.string().max(255).optional().nullable(),
130
+ providerPaymentId: z.string().max(255).optional().nullable(),
131
+ externalReference: z.string().max(255).optional().nullable(),
132
+ redirectUrl: z.string().url(),
133
+ returnUrl: z.string().url().optional().nullable(),
134
+ cancelUrl: z.string().url().optional().nullable(),
135
+ callbackUrl: z.string().url().optional().nullable(),
136
+ expiresAt: z.string().optional().nullable(),
137
+ providerPayload: z.record(z.string(), z.unknown()).optional().nullable(),
138
+ metadata: z.record(z.string(), z.unknown()).optional().nullable(),
139
+ notes: z.string().optional().nullable(),
140
+ });
141
+ export const completePaymentSessionSchema = z.object({
142
+ status: z.enum(["authorized", "paid"]).default("paid"),
143
+ providerSessionId: z.string().max(255).optional().nullable(),
144
+ providerPaymentId: z.string().max(255).optional().nullable(),
145
+ externalReference: z.string().max(255).optional().nullable(),
146
+ paymentMethod: paymentMethodSchema.optional().nullable(),
147
+ paymentInstrumentId: z.string().optional().nullable(),
148
+ captureMode: captureModeSchema.default("manual"),
149
+ externalAuthorizationId: z.string().max(255).optional().nullable(),
150
+ externalCaptureId: z.string().max(255).optional().nullable(),
151
+ approvalCode: z.string().max(255).optional().nullable(),
152
+ authorizedAt: z.string().optional().nullable(),
153
+ capturedAt: z.string().optional().nullable(),
154
+ settledAt: z.string().optional().nullable(),
155
+ paymentDate: z.string().optional().nullable(),
156
+ expiresAt: z.string().optional().nullable(),
157
+ referenceNumber: z.string().max(255).optional().nullable(),
158
+ notes: z.string().optional().nullable(),
159
+ providerPayload: z.record(z.string(), z.unknown()).optional().nullable(),
160
+ metadata: z.record(z.string(), z.unknown()).optional().nullable(),
161
+ });
162
+ export const failPaymentSessionSchema = z.object({
163
+ providerSessionId: z.string().max(255).optional().nullable(),
164
+ providerPaymentId: z.string().max(255).optional().nullable(),
165
+ externalReference: z.string().max(255).optional().nullable(),
166
+ failureCode: z.string().max(255).optional().nullable(),
167
+ failureMessage: z.string().max(2000).optional().nullable(),
168
+ notes: z.string().optional().nullable(),
169
+ providerPayload: z.record(z.string(), z.unknown()).optional().nullable(),
170
+ metadata: z.record(z.string(), z.unknown()).optional().nullable(),
171
+ });
172
+ export const cancelPaymentSessionSchema = z.object({
173
+ notes: z.string().optional().nullable(),
174
+ providerPayload: z.record(z.string(), z.unknown()).optional().nullable(),
175
+ metadata: z.record(z.string(), z.unknown()).optional().nullable(),
176
+ cancelledAt: z.string().optional().nullable(),
177
+ });
178
+ export const expirePaymentSessionSchema = z.object({
179
+ notes: z.string().optional().nullable(),
180
+ providerPayload: z.record(z.string(), z.unknown()).optional().nullable(),
181
+ metadata: z.record(z.string(), z.unknown()).optional().nullable(),
182
+ expiredAt: z.string().optional().nullable(),
183
+ });
184
+ const paymentAuthorizationCoreSchema = z.object({
185
+ bookingId: z.string().optional().nullable(),
186
+ orderId: z.string().optional().nullable(),
187
+ invoiceId: z.string().optional().nullable(),
188
+ bookingGuaranteeId: z.string().optional().nullable(),
189
+ paymentInstrumentId: z.string().optional().nullable(),
190
+ status: paymentAuthorizationStatusSchema.default("pending"),
191
+ captureMode: captureModeSchema.default("manual"),
192
+ currency: z.string().min(3).max(3),
193
+ amountCents: z.number().int().min(0),
194
+ provider: z.string().max(255).optional().nullable(),
195
+ externalAuthorizationId: z.string().max(255).optional().nullable(),
196
+ approvalCode: z.string().max(255).optional().nullable(),
197
+ authorizedAt: z.string().optional().nullable(),
198
+ expiresAt: z.string().optional().nullable(),
199
+ voidedAt: z.string().optional().nullable(),
200
+ notes: z.string().optional().nullable(),
201
+ });
202
+ export const insertPaymentAuthorizationSchema = paymentAuthorizationCoreSchema;
203
+ export const updatePaymentAuthorizationSchema = paymentAuthorizationCoreSchema.partial();
204
+ export const paymentAuthorizationListQuerySchema = paginationSchema.extend({
205
+ bookingId: z.string().optional(),
206
+ orderId: z.string().optional(),
207
+ invoiceId: z.string().optional(),
208
+ bookingGuaranteeId: z.string().optional(),
209
+ paymentInstrumentId: z.string().optional(),
210
+ status: paymentAuthorizationStatusSchema.optional(),
211
+ });
212
+ const paymentCaptureCoreSchema = z.object({
213
+ paymentAuthorizationId: z.string().optional().nullable(),
214
+ invoiceId: z.string().optional().nullable(),
215
+ status: paymentCaptureStatusSchema.default("pending"),
216
+ currency: z.string().min(3).max(3),
217
+ amountCents: z.number().int().min(0),
218
+ provider: z.string().max(255).optional().nullable(),
219
+ externalCaptureId: z.string().max(255).optional().nullable(),
220
+ capturedAt: z.string().optional().nullable(),
221
+ settledAt: z.string().optional().nullable(),
222
+ notes: z.string().optional().nullable(),
223
+ });
224
+ export const insertPaymentCaptureSchema = paymentCaptureCoreSchema;
225
+ export const updatePaymentCaptureSchema = paymentCaptureCoreSchema.partial();
226
+ export const paymentCaptureListQuerySchema = paginationSchema.extend({
227
+ paymentAuthorizationId: z.string().optional(),
228
+ invoiceId: z.string().optional(),
229
+ status: paymentCaptureStatusSchema.optional(),
230
+ });
231
+ const bookingPaymentScheduleCoreSchema = z.object({
232
+ bookingItemId: z.string().optional().nullable(),
233
+ scheduleType: paymentScheduleTypeSchema.default("balance"),
234
+ status: paymentScheduleStatusSchema.default("pending"),
235
+ dueDate: z.string().min(1),
236
+ currency: z.string().min(3).max(3),
237
+ amountCents: z.number().int().min(0),
238
+ notes: z.string().optional().nullable(),
239
+ });
240
+ export const insertBookingPaymentScheduleSchema = bookingPaymentScheduleCoreSchema;
241
+ export const updateBookingPaymentScheduleSchema = bookingPaymentScheduleCoreSchema.partial();
242
+ const bookingGuaranteeCoreSchema = z.object({
243
+ bookingPaymentScheduleId: z.string().optional().nullable(),
244
+ bookingItemId: z.string().optional().nullable(),
245
+ guaranteeType: guaranteeTypeSchema,
246
+ status: guaranteeStatusSchema.default("pending"),
247
+ paymentInstrumentId: z.string().optional().nullable(),
248
+ paymentAuthorizationId: z.string().optional().nullable(),
249
+ currency: z.string().min(3).max(3).optional().nullable(),
250
+ amountCents: z.number().int().min(0).optional().nullable(),
251
+ provider: z.string().max(255).optional().nullable(),
252
+ referenceNumber: z.string().max(255).optional().nullable(),
253
+ guaranteedAt: z.string().optional().nullable(),
254
+ expiresAt: z.string().optional().nullable(),
255
+ releasedAt: z.string().optional().nullable(),
256
+ notes: z.string().optional().nullable(),
257
+ });
258
+ export const insertBookingGuaranteeSchema = bookingGuaranteeCoreSchema;
259
+ export const updateBookingGuaranteeSchema = bookingGuaranteeCoreSchema.partial();
260
+ const paymentCoreSchema = z.object({
261
+ amountCents: z.number().int().min(1),
262
+ currency: z.string().min(3).max(3),
263
+ baseCurrency: z.string().min(3).max(3).optional().nullable(),
264
+ baseAmountCents: z.number().int().min(0).optional().nullable(),
265
+ fxRateSetId: z.string().optional().nullable(),
266
+ paymentMethod: paymentMethodSchema,
267
+ paymentInstrumentId: z.string().optional().nullable(),
268
+ paymentAuthorizationId: z.string().optional().nullable(),
269
+ paymentCaptureId: z.string().optional().nullable(),
270
+ status: paymentStatusSchema.default("pending"),
271
+ referenceNumber: z.string().max(255).optional().nullable(),
272
+ paymentDate: z.string().min(1),
273
+ notes: z.string().optional().nullable(),
274
+ });
275
+ export const insertPaymentSchema = paymentCoreSchema;
276
+ export const updatePaymentSchema = paymentCoreSchema.partial();
277
+ const supplierPaymentCoreSchema = z.object({
278
+ bookingId: z.string().min(1),
279
+ supplierId: z.string().optional().nullable(),
280
+ bookingSupplierStatusId: z.string().optional().nullable(),
281
+ amountCents: z.number().int().min(1),
282
+ currency: z.string().min(3).max(3),
283
+ baseCurrency: z.string().min(3).max(3).optional().nullable(),
284
+ baseAmountCents: z.number().int().min(0).optional().nullable(),
285
+ fxRateSetId: z.string().optional().nullable(),
286
+ paymentMethod: paymentMethodSchema,
287
+ paymentInstrumentId: z.string().optional().nullable(),
288
+ status: paymentStatusSchema.default("pending"),
289
+ referenceNumber: z.string().max(255).optional().nullable(),
290
+ paymentDate: z.string().min(1),
291
+ notes: z.string().optional().nullable(),
292
+ });
293
+ export const insertSupplierPaymentSchema = supplierPaymentCoreSchema;
294
+ export const updateSupplierPaymentSchema = supplierPaymentCoreSchema.partial();
295
+ export const supplierPaymentListSortFieldSchema = z.enum([
296
+ "amountCents",
297
+ "status",
298
+ "paymentDate",
299
+ "createdAt",
300
+ ]);
301
+ export const supplierPaymentListSortDirSchema = z.enum(["asc", "desc"]);
302
+ export const supplierPaymentListQuerySchema = z.object({
303
+ bookingId: z.string().optional(),
304
+ supplierId: z.string().optional(),
305
+ status: paymentStatusSchema.optional(),
306
+ paymentMethod: paymentMethodSchema.optional(),
307
+ currency: z.string().optional(),
308
+ paymentDateFrom: z.string().optional(),
309
+ paymentDateTo: z.string().optional(),
310
+ sortBy: supplierPaymentListSortFieldSchema.default("createdAt"),
311
+ sortDir: supplierPaymentListSortDirSchema.default("desc"),
312
+ limit: z.coerce.number().int().min(1).max(100).default(50),
313
+ offset: z.coerce.number().int().min(0).default(0),
314
+ });
315
+ // ---------- unified payments listing (customer + supplier) ----------
316
+ export const paymentKindSchema = z.enum(["customer", "supplier"]);
317
+ export const paymentListSortFieldSchema = z.enum([
318
+ "amountCents",
319
+ "status",
320
+ "paymentDate",
321
+ "createdAt",
322
+ ]);
323
+ export const paymentListSortDirSchema = z.enum(["asc", "desc"]);
324
+ export const paymentListQuerySchema = z.object({
325
+ kind: paymentKindSchema.optional(),
326
+ status: paymentStatusSchema.optional(),
327
+ paymentMethod: paymentMethodSchema.optional(),
328
+ currency: z.string().optional(),
329
+ invoiceId: z.string().optional(),
330
+ bookingId: z.string().optional(),
331
+ supplierId: z.string().optional(),
332
+ paymentDateFrom: z.string().optional(),
333
+ paymentDateTo: z.string().optional(),
334
+ search: z.string().optional(),
335
+ sortBy: paymentListSortFieldSchema.default("createdAt"),
336
+ sortDir: paymentListSortDirSchema.default("desc"),
337
+ limit: z.coerce.number().int().min(1).max(100).default(50),
338
+ offset: z.coerce.number().int().min(0).default(0),
339
+ });