@classytic/revenue 1.0.2 → 1.0.6
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.
- package/README.md +171 -2
- package/dist/{actions-CwG-b7fR.d.ts → actions-Ctf2XUL-.d.ts} +1 -1
- package/dist/core/index.d.ts +2 -2
- package/dist/core/index.js +74 -4
- package/dist/core/index.js.map +1 -1
- package/dist/enums/index.d.ts +35 -27
- package/dist/enums/index.js +107 -11
- package/dist/enums/index.js.map +1 -1
- package/dist/{index-BnJWVXuw.d.ts → index-BnEXsnLJ.d.ts} +1 -1
- package/dist/{index-ChVD3P9k.d.ts → index-C5SsOrV0.d.ts} +31 -1
- package/dist/index.d.ts +10 -9
- package/dist/index.js +187 -36
- package/dist/index.js.map +1 -1
- package/dist/payment.enums-B_RwB8iR.d.ts +184 -0
- package/dist/providers/index.d.ts +1 -1
- package/dist/schemas/index.d.ts +294 -137
- package/dist/schemas/index.js +132 -29
- package/dist/schemas/index.js.map +1 -1
- package/dist/schemas/validation.d.ts +83 -8
- package/dist/schemas/validation.js +55 -2
- package/dist/schemas/validation.js.map +1 -1
- package/dist/services/index.d.ts +2 -2
- package/dist/services/index.js +74 -4
- package/dist/services/index.js.map +1 -1
- package/dist/{split.schema-DYVP7Wu2.d.ts → split.schema-DLVF3XBI.d.ts} +301 -137
- package/dist/transaction.enums-7uBnuswI.d.ts +87 -0
- package/dist/utils/index.d.ts +2 -2
- package/dist/utils/index.js +75 -2
- package/dist/utils/index.js.map +1 -1
- package/package.json +6 -5
- package/dist/split.enums-Bh24jw8p.d.ts +0 -255
package/dist/schemas/index.js
CHANGED
|
@@ -11,8 +11,7 @@ var baseMetadataSchema = new Schema(
|
|
|
11
11
|
var referenceSchema = {
|
|
12
12
|
referenceId: {
|
|
13
13
|
type: Schema.Types.ObjectId,
|
|
14
|
-
refPath: "referenceModel"
|
|
15
|
-
index: true
|
|
14
|
+
refPath: "referenceModel"
|
|
16
15
|
},
|
|
17
16
|
referenceModel: {
|
|
18
17
|
type: String,
|
|
@@ -23,18 +22,15 @@ var gatewaySchema = new Schema(
|
|
|
23
22
|
{
|
|
24
23
|
type: {
|
|
25
24
|
type: String,
|
|
26
|
-
required: true
|
|
27
|
-
index: true
|
|
25
|
+
required: true
|
|
28
26
|
},
|
|
29
27
|
sessionId: {
|
|
30
28
|
type: String,
|
|
31
|
-
sparse: true
|
|
32
|
-
index: true
|
|
29
|
+
sparse: true
|
|
33
30
|
},
|
|
34
31
|
paymentIntentId: {
|
|
35
32
|
type: String,
|
|
36
|
-
sparse: true
|
|
37
|
-
index: true
|
|
33
|
+
sparse: true
|
|
38
34
|
},
|
|
39
35
|
provider: {
|
|
40
36
|
type: String
|
|
@@ -51,6 +47,43 @@ var gatewaySchema = new Schema(
|
|
|
51
47
|
);
|
|
52
48
|
var gateway_schema_default = gatewaySchema;
|
|
53
49
|
|
|
50
|
+
// src/enums/transaction.enums.ts
|
|
51
|
+
var TRANSACTION_TYPE = {
|
|
52
|
+
INCOME: "income",
|
|
53
|
+
EXPENSE: "expense"
|
|
54
|
+
};
|
|
55
|
+
var TRANSACTION_TYPE_VALUES = Object.values(
|
|
56
|
+
TRANSACTION_TYPE
|
|
57
|
+
);
|
|
58
|
+
var TRANSACTION_STATUS = {
|
|
59
|
+
PENDING: "pending",
|
|
60
|
+
PAYMENT_INITIATED: "payment_initiated",
|
|
61
|
+
PROCESSING: "processing",
|
|
62
|
+
REQUIRES_ACTION: "requires_action",
|
|
63
|
+
VERIFIED: "verified",
|
|
64
|
+
COMPLETED: "completed",
|
|
65
|
+
FAILED: "failed",
|
|
66
|
+
CANCELLED: "cancelled",
|
|
67
|
+
EXPIRED: "expired",
|
|
68
|
+
REFUNDED: "refunded",
|
|
69
|
+
PARTIALLY_REFUNDED: "partially_refunded"
|
|
70
|
+
};
|
|
71
|
+
var TRANSACTION_STATUS_VALUES = Object.values(
|
|
72
|
+
TRANSACTION_STATUS
|
|
73
|
+
);
|
|
74
|
+
var LIBRARY_CATEGORIES = {
|
|
75
|
+
SUBSCRIPTION: "subscription",
|
|
76
|
+
PURCHASE: "purchase"
|
|
77
|
+
};
|
|
78
|
+
var LIBRARY_CATEGORY_VALUES = Object.values(
|
|
79
|
+
LIBRARY_CATEGORIES
|
|
80
|
+
);
|
|
81
|
+
new Set(TRANSACTION_TYPE_VALUES);
|
|
82
|
+
new Set(
|
|
83
|
+
TRANSACTION_STATUS_VALUES
|
|
84
|
+
);
|
|
85
|
+
new Set(LIBRARY_CATEGORY_VALUES);
|
|
86
|
+
|
|
54
87
|
// src/enums/payment.enums.ts
|
|
55
88
|
var PAYMENT_STATUS = {
|
|
56
89
|
PENDING: "pending",
|
|
@@ -59,7 +92,21 @@ var PAYMENT_STATUS = {
|
|
|
59
92
|
REFUNDED: "refunded",
|
|
60
93
|
CANCELLED: "cancelled"
|
|
61
94
|
};
|
|
62
|
-
var PAYMENT_STATUS_VALUES = Object.values(
|
|
95
|
+
var PAYMENT_STATUS_VALUES = Object.values(
|
|
96
|
+
PAYMENT_STATUS
|
|
97
|
+
);
|
|
98
|
+
var PAYMENT_GATEWAY_TYPE = {
|
|
99
|
+
MANUAL: "manual",
|
|
100
|
+
STRIPE: "stripe",
|
|
101
|
+
SSLCOMMERZ: "sslcommerz"
|
|
102
|
+
};
|
|
103
|
+
var PAYMENT_GATEWAY_TYPE_VALUES = Object.values(
|
|
104
|
+
PAYMENT_GATEWAY_TYPE
|
|
105
|
+
);
|
|
106
|
+
new Set(PAYMENT_STATUS_VALUES);
|
|
107
|
+
new Set(
|
|
108
|
+
PAYMENT_GATEWAY_TYPE_VALUES
|
|
109
|
+
);
|
|
63
110
|
|
|
64
111
|
// src/enums/subscription.enums.ts
|
|
65
112
|
var SUBSCRIPTION_STATUS = {
|
|
@@ -70,13 +117,30 @@ var SUBSCRIPTION_STATUS = {
|
|
|
70
117
|
PENDING: "pending",
|
|
71
118
|
INACTIVE: "inactive"
|
|
72
119
|
};
|
|
73
|
-
var SUBSCRIPTION_STATUS_VALUES = Object.values(
|
|
120
|
+
var SUBSCRIPTION_STATUS_VALUES = Object.values(
|
|
121
|
+
SUBSCRIPTION_STATUS
|
|
122
|
+
);
|
|
74
123
|
var PLAN_KEYS = {
|
|
75
124
|
MONTHLY: "monthly",
|
|
76
125
|
QUARTERLY: "quarterly",
|
|
77
126
|
YEARLY: "yearly"
|
|
78
127
|
};
|
|
79
128
|
var PLAN_KEY_VALUES = Object.values(PLAN_KEYS);
|
|
129
|
+
new Set(
|
|
130
|
+
SUBSCRIPTION_STATUS_VALUES
|
|
131
|
+
);
|
|
132
|
+
new Set(PLAN_KEY_VALUES);
|
|
133
|
+
|
|
134
|
+
// src/enums/monetization.enums.ts
|
|
135
|
+
var MONETIZATION_TYPES = {
|
|
136
|
+
FREE: "free",
|
|
137
|
+
PURCHASE: "purchase",
|
|
138
|
+
SUBSCRIPTION: "subscription"
|
|
139
|
+
};
|
|
140
|
+
var MONETIZATION_TYPE_VALUES = Object.values(
|
|
141
|
+
MONETIZATION_TYPES
|
|
142
|
+
);
|
|
143
|
+
new Set(MONETIZATION_TYPE_VALUES);
|
|
80
144
|
|
|
81
145
|
// src/enums/escrow.enums.ts
|
|
82
146
|
var HOLD_STATUS = {
|
|
@@ -88,6 +152,15 @@ var HOLD_STATUS = {
|
|
|
88
152
|
PARTIALLY_RELEASED: "partially_released"
|
|
89
153
|
};
|
|
90
154
|
var HOLD_STATUS_VALUES = Object.values(HOLD_STATUS);
|
|
155
|
+
var RELEASE_REASON = {
|
|
156
|
+
PAYMENT_VERIFIED: "payment_verified",
|
|
157
|
+
MANUAL_RELEASE: "manual_release",
|
|
158
|
+
AUTO_RELEASE: "auto_release",
|
|
159
|
+
DISPUTE_RESOLVED: "dispute_resolved"
|
|
160
|
+
};
|
|
161
|
+
var RELEASE_REASON_VALUES = Object.values(
|
|
162
|
+
RELEASE_REASON
|
|
163
|
+
);
|
|
91
164
|
var HOLD_REASON = {
|
|
92
165
|
PAYMENT_VERIFICATION: "payment_verification",
|
|
93
166
|
FRAUD_CHECK: "fraud_check",
|
|
@@ -96,6 +169,9 @@ var HOLD_REASON = {
|
|
|
96
169
|
COMPLIANCE: "compliance"
|
|
97
170
|
};
|
|
98
171
|
var HOLD_REASON_VALUES = Object.values(HOLD_REASON);
|
|
172
|
+
new Set(HOLD_STATUS_VALUES);
|
|
173
|
+
new Set(RELEASE_REASON_VALUES);
|
|
174
|
+
new Set(HOLD_REASON_VALUES);
|
|
99
175
|
|
|
100
176
|
// src/enums/split.enums.ts
|
|
101
177
|
var SPLIT_TYPE = {
|
|
@@ -113,7 +189,9 @@ var SPLIT_STATUS = {
|
|
|
113
189
|
WAIVED: "waived",
|
|
114
190
|
CANCELLED: "cancelled"
|
|
115
191
|
};
|
|
116
|
-
var SPLIT_STATUS_VALUES = Object.values(
|
|
192
|
+
var SPLIT_STATUS_VALUES = Object.values(
|
|
193
|
+
SPLIT_STATUS
|
|
194
|
+
);
|
|
117
195
|
var PAYOUT_METHOD = {
|
|
118
196
|
BANK_TRANSFER: "bank_transfer",
|
|
119
197
|
MOBILE_WALLET: "mobile_wallet",
|
|
@@ -123,33 +201,63 @@ var PAYOUT_METHOD = {
|
|
|
123
201
|
MANUAL: "manual"
|
|
124
202
|
};
|
|
125
203
|
var PAYOUT_METHOD_VALUES = Object.values(PAYOUT_METHOD);
|
|
204
|
+
new Set(SPLIT_TYPE_VALUES);
|
|
205
|
+
new Set(SPLIT_STATUS_VALUES);
|
|
206
|
+
new Set(PAYOUT_METHOD_VALUES);
|
|
126
207
|
|
|
127
208
|
// src/schemas/transaction/payment.schema.ts
|
|
209
|
+
var paymentEntrySchema = new Schema(
|
|
210
|
+
{
|
|
211
|
+
method: {
|
|
212
|
+
type: String,
|
|
213
|
+
required: true
|
|
214
|
+
},
|
|
215
|
+
amount: {
|
|
216
|
+
type: Number,
|
|
217
|
+
required: true,
|
|
218
|
+
min: 0
|
|
219
|
+
},
|
|
220
|
+
reference: {
|
|
221
|
+
type: String,
|
|
222
|
+
trim: true
|
|
223
|
+
},
|
|
224
|
+
details: {
|
|
225
|
+
type: Schema.Types.Mixed
|
|
226
|
+
// For method-specific data: walletNumber, bankName, trxId, etc.
|
|
227
|
+
}
|
|
228
|
+
},
|
|
229
|
+
{ _id: false }
|
|
230
|
+
);
|
|
128
231
|
var currentPaymentSchema = new Schema(
|
|
129
232
|
{
|
|
130
233
|
transactionId: {
|
|
131
234
|
type: Schema.Types.ObjectId,
|
|
132
|
-
ref: "Transaction"
|
|
133
|
-
index: true
|
|
235
|
+
ref: "Transaction"
|
|
134
236
|
},
|
|
135
237
|
amount: {
|
|
136
238
|
type: Number,
|
|
137
239
|
min: 0
|
|
240
|
+
// Total amount (sum of all payments for split payments)
|
|
138
241
|
},
|
|
139
242
|
status: {
|
|
140
243
|
type: String,
|
|
141
244
|
enum: PAYMENT_STATUS_VALUES,
|
|
142
|
-
default: "pending"
|
|
143
|
-
index: true
|
|
245
|
+
default: "pending"
|
|
144
246
|
},
|
|
145
247
|
method: {
|
|
146
248
|
type: String
|
|
147
|
-
//
|
|
249
|
+
// Primary method for single payments, or 'split' when multiple methods
|
|
148
250
|
},
|
|
149
251
|
reference: {
|
|
150
252
|
type: String,
|
|
151
253
|
trim: true
|
|
152
254
|
},
|
|
255
|
+
// Split payments support - array of individual payment entries
|
|
256
|
+
payments: {
|
|
257
|
+
type: [paymentEntrySchema],
|
|
258
|
+
default: void 0
|
|
259
|
+
// Not set for single payments (backward compat)
|
|
260
|
+
},
|
|
153
261
|
verifiedAt: {
|
|
154
262
|
type: Date
|
|
155
263
|
},
|
|
@@ -205,6 +313,7 @@ var tenantSnapshotSchema = new Schema(
|
|
|
205
313
|
{ _id: false }
|
|
206
314
|
);
|
|
207
315
|
var payment_schema_default = {
|
|
316
|
+
paymentEntrySchema,
|
|
208
317
|
currentPaymentSchema,
|
|
209
318
|
paymentSummarySchema,
|
|
210
319
|
paymentDetailsSchema,
|
|
@@ -339,20 +448,17 @@ var subscriptionInfoSchema = new Schema(
|
|
|
339
448
|
status: {
|
|
340
449
|
type: String,
|
|
341
450
|
enum: SUBSCRIPTION_STATUS_VALUES,
|
|
342
|
-
default: "pending"
|
|
343
|
-
index: true
|
|
451
|
+
default: "pending"
|
|
344
452
|
},
|
|
345
453
|
isActive: {
|
|
346
454
|
type: Boolean,
|
|
347
|
-
default: false
|
|
348
|
-
index: true
|
|
455
|
+
default: false
|
|
349
456
|
},
|
|
350
457
|
startDate: {
|
|
351
458
|
type: Date
|
|
352
459
|
},
|
|
353
460
|
endDate: {
|
|
354
|
-
type: Date
|
|
355
|
-
index: true
|
|
461
|
+
type: Date
|
|
356
462
|
},
|
|
357
463
|
canceledAt: {
|
|
358
464
|
type: Date
|
|
@@ -389,8 +495,7 @@ var holdSchema = {
|
|
|
389
495
|
status: {
|
|
390
496
|
type: String,
|
|
391
497
|
enum: HOLD_STATUS_VALUES,
|
|
392
|
-
default: HOLD_STATUS.PENDING
|
|
393
|
-
index: true
|
|
498
|
+
default: HOLD_STATUS.PENDING
|
|
394
499
|
},
|
|
395
500
|
heldAmount: {
|
|
396
501
|
type: Number,
|
|
@@ -443,8 +548,7 @@ var splitSchema = new Schema(
|
|
|
443
548
|
},
|
|
444
549
|
recipientId: {
|
|
445
550
|
type: String,
|
|
446
|
-
required: true
|
|
447
|
-
index: true
|
|
551
|
+
required: true
|
|
448
552
|
},
|
|
449
553
|
recipientType: {
|
|
450
554
|
type: String,
|
|
@@ -481,8 +585,7 @@ var splitSchema = new Schema(
|
|
|
481
585
|
status: {
|
|
482
586
|
type: String,
|
|
483
587
|
enum: SPLIT_STATUS_VALUES,
|
|
484
|
-
default: SPLIT_STATUS.PENDING
|
|
485
|
-
index: true
|
|
588
|
+
default: SPLIT_STATUS.PENDING
|
|
486
589
|
},
|
|
487
590
|
dueDate: {
|
|
488
591
|
type: Date
|
|
@@ -519,6 +622,6 @@ var schemas_default = {
|
|
|
519
622
|
...split_default
|
|
520
623
|
};
|
|
521
624
|
|
|
522
|
-
export { baseMetadataSchema, commissionSchema, currentPaymentSchema, schemas_default as default, gatewaySchema, holdSchema, paymentDetailsSchema, paymentSummarySchema, planSchema, referenceSchema, splitSchema, subscriptionInfoSchema, tenantSnapshotSchema };
|
|
625
|
+
export { baseMetadataSchema, commissionSchema, currentPaymentSchema, schemas_default as default, gatewaySchema, holdSchema, paymentDetailsSchema, paymentEntrySchema, paymentSummarySchema, planSchema, referenceSchema, splitSchema, subscriptionInfoSchema, tenantSnapshotSchema };
|
|
523
626
|
//# sourceMappingURL=index.js.map
|
|
524
627
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/schemas/transaction/common.schema.ts","../../src/schemas/transaction/gateway.schema.ts","../../src/enums/payment.enums.ts","../../src/enums/subscription.enums.ts","../../src/enums/escrow.enums.ts","../../src/enums/split.enums.ts","../../src/schemas/transaction/payment.schema.ts","../../src/schemas/transaction/commission.schema.ts","../../src/schemas/transaction/index.ts","../../src/schemas/subscription/plan.schema.ts","../../src/schemas/subscription/info.schema.ts","../../src/schemas/subscription/index.ts","../../src/schemas/escrow/hold.schema.ts","../../src/schemas/escrow/index.ts","../../src/schemas/split/split.schema.ts","../../src/schemas/split/index.ts","../../src/schemas/index.ts"],"names":["Schema"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Common Transaction Schemas\n * @classytic/revenue\n *\n * Base schemas shared across transaction types\n */\n\nimport { Schema } from 'mongoose';\n\n/**\n * Base metadata schema for transactions\n */\nexport const baseMetadataSchema = new Schema(\n {\n // Flexible key-value metadata\n },\n { _id: false, strict: false }\n);\n\n/**\n * Reference schema for polymorphic associations\n */\nexport const referenceSchema = {\n referenceId: {\n type: Schema.Types.ObjectId,\n refPath: 'referenceModel',\n index: true,\n },\n referenceModel: {\n type: String,\n enum: ['Subscription', 'Order', 'Membership', 'Booking', 'Invoice'],\n },\n};\n\nexport default {\n baseMetadataSchema,\n referenceSchema,\n};\n\n","/**\n * Gateway Schema\n * @classytic/revenue\n *\n * Schema for payment gateway information\n */\n\nimport { Schema } from 'mongoose';\n\n/**\n * Gateway Schema - Embedded in Transaction\n * Tracks payment gateway details\n */\nexport const gatewaySchema = new Schema(\n {\n type: {\n type: String,\n required: true,\n index: true,\n },\n sessionId: {\n type: String,\n sparse: true,\n index: true,\n },\n paymentIntentId: {\n type: String,\n sparse: true,\n index: true,\n },\n provider: {\n type: String,\n },\n metadata: {\n type: Schema.Types.Mixed,\n default: {},\n },\n verificationData: {\n type: Schema.Types.Mixed,\n },\n },\n { _id: false }\n);\n\nexport default gatewaySchema;\n\n","/**\n * Payment Enums\n * @classytic/revenue\n *\n * Library-managed payment enums only.\n * Users define their own payment methods in their schema.\n */\n\n// ============ PAYMENT STATUS ============\n/**\n * Payment Status - Library-managed states\n */\nexport const PAYMENT_STATUS = {\n PENDING: 'pending',\n VERIFIED: 'verified',\n FAILED: 'failed',\n REFUNDED: 'refunded',\n CANCELLED: 'cancelled',\n} as const;\n\nexport type PaymentStatus = typeof PAYMENT_STATUS;\nexport type PaymentStatusValue = PaymentStatus[keyof PaymentStatus];\nexport const PAYMENT_STATUS_VALUES = Object.values(PAYMENT_STATUS);\n\n// ============ PAYMENT GATEWAY TYPES ============\n/**\n * Common gateway type constants for convenience\n *\n * ⚠️ IMPORTANT: These are NOT restrictions - just common reference values\n *\n * You can register ANY custom gateway provider by passing it to createRevenue():\n *\n * @example\n * ```typescript\n * const revenue = createRevenue({\n * providers: {\n * manual: new ManualProvider(),\n * bkash: new BkashProvider(), // ✅ Custom gateway\n * nagad: new NagadProvider(), // ✅ Custom gateway\n * stripe: new StripeProvider(), // ✅ Custom gateway\n * paypal: new PaypalProvider(), // ✅ Any gateway you want\n * }\n * });\n *\n * // Use by name\n * await revenue.monetization.create({ gateway: 'bkash', ... });\n * ```\n *\n * Reference values:\n * - MANUAL: Built-in manual provider (@classytic/revenue-manual)\n * - STRIPE: Stripe provider (build with @classytic/revenue-stripe)\n * - SSLCOMMERZ: SSLCommerz provider (build with @classytic/revenue-sslcommerz)\n *\n * Add your own: bkash, nagad, rocket, paypal, razorpay, flutterwave, etc.\n */\nexport const PAYMENT_GATEWAY_TYPE = {\n MANUAL: 'manual',\n STRIPE: 'stripe',\n SSLCOMMERZ: 'sslcommerz',\n} as const;\n\nexport type PaymentGatewayType = typeof PAYMENT_GATEWAY_TYPE;\nexport type PaymentGatewayTypeValue = PaymentGatewayType[keyof PaymentGatewayType];\nexport const PAYMENT_GATEWAY_TYPE_VALUES = Object.values(PAYMENT_GATEWAY_TYPE);\n\n// Backward compatibility alias\nexport const GATEWAY_TYPES = PAYMENT_GATEWAY_TYPE;\nexport const GATEWAY_TYPE_VALUES = PAYMENT_GATEWAY_TYPE_VALUES;\n\n","/**\n * Subscription Enums\n * @classytic/revenue\n *\n * All subscription-related enums and constants\n */\n\n// ============ SUBSCRIPTION STATUS ============\n/**\n * Subscription Status\n */\nexport const SUBSCRIPTION_STATUS = {\n ACTIVE: 'active',\n PAUSED: 'paused',\n CANCELLED: 'cancelled',\n EXPIRED: 'expired',\n PENDING: 'pending',\n INACTIVE: 'inactive',\n} as const;\n\nexport type SubscriptionStatus = typeof SUBSCRIPTION_STATUS;\nexport type SubscriptionStatusValue = SubscriptionStatus[keyof SubscriptionStatus];\nexport const SUBSCRIPTION_STATUS_VALUES = Object.values(SUBSCRIPTION_STATUS);\n\n// ============ PLAN KEYS ============\n/**\n * Supported plan intervals\n */\nexport const PLAN_KEYS = {\n MONTHLY: 'monthly',\n QUARTERLY: 'quarterly',\n YEARLY: 'yearly',\n} as const;\n\nexport type PlanKeys = typeof PLAN_KEYS;\nexport type PlanKeyValue = PlanKeys[keyof PlanKeys];\nexport const PLAN_KEY_VALUES = Object.values(PLAN_KEYS);\n\n","/**\n * Escrow/Hold Enums\n * @classytic/revenue\n *\n * Enums for platform-as-intermediary payment flow\n */\n\nexport const HOLD_STATUS = {\n PENDING: 'pending',\n HELD: 'held',\n RELEASED: 'released',\n CANCELLED: 'cancelled',\n EXPIRED: 'expired',\n PARTIALLY_RELEASED: 'partially_released',\n} as const;\n\nexport type HoldStatus = typeof HOLD_STATUS;\nexport type HoldStatusValue = HoldStatus[keyof HoldStatus];\nexport const HOLD_STATUS_VALUES = Object.values(HOLD_STATUS);\n\nexport const RELEASE_REASON = {\n PAYMENT_VERIFIED: 'payment_verified',\n MANUAL_RELEASE: 'manual_release',\n AUTO_RELEASE: 'auto_release',\n DISPUTE_RESOLVED: 'dispute_resolved',\n} as const;\n\nexport type ReleaseReason = typeof RELEASE_REASON;\nexport type ReleaseReasonValue = ReleaseReason[keyof ReleaseReason];\nexport const RELEASE_REASON_VALUES = Object.values(RELEASE_REASON);\n\nexport const HOLD_REASON = {\n PAYMENT_VERIFICATION: 'payment_verification',\n FRAUD_CHECK: 'fraud_check',\n MANUAL_REVIEW: 'manual_review',\n DISPUTE: 'dispute',\n COMPLIANCE: 'compliance',\n} as const;\n\nexport type HoldReason = typeof HOLD_REASON;\nexport type HoldReasonValue = HoldReason[keyof HoldReason];\nexport const HOLD_REASON_VALUES = Object.values(HOLD_REASON);\n\n","/**\n * Split Payment Enums\n * @classytic/revenue\n *\n * Enums for multi-party commission splits\n */\n\nexport const SPLIT_TYPE = {\n PLATFORM_COMMISSION: 'platform_commission',\n AFFILIATE_COMMISSION: 'affiliate_commission',\n REFERRAL_COMMISSION: 'referral_commission',\n PARTNER_COMMISSION: 'partner_commission',\n CUSTOM: 'custom',\n} as const;\n\nexport type SplitType = typeof SPLIT_TYPE;\nexport type SplitTypeValue = SplitType[keyof SplitType];\nexport const SPLIT_TYPE_VALUES = Object.values(SPLIT_TYPE);\n\nexport const SPLIT_STATUS = {\n PENDING: 'pending',\n DUE: 'due',\n PAID: 'paid',\n WAIVED: 'waived',\n CANCELLED: 'cancelled',\n} as const;\n\nexport type SplitStatus = typeof SPLIT_STATUS;\nexport type SplitStatusValue = SplitStatus[keyof SplitStatus];\nexport const SPLIT_STATUS_VALUES = Object.values(SPLIT_STATUS);\n\nexport const PAYOUT_METHOD = {\n BANK_TRANSFER: 'bank_transfer',\n MOBILE_WALLET: 'mobile_wallet',\n PLATFORM_BALANCE: 'platform_balance',\n CRYPTO: 'crypto',\n CHECK: 'check',\n MANUAL: 'manual',\n} as const;\n\nexport type PayoutMethod = typeof PAYOUT_METHOD;\nexport type PayoutMethodValue = PayoutMethod[keyof PayoutMethod];\nexport const PAYOUT_METHOD_VALUES = Object.values(PAYOUT_METHOD);\n\n","/**\n * Payment Schemas for Transaction Model\n * @classytic/revenue\n *\n * Schemas for payment tracking in transactions\n */\n\nimport { Schema } from 'mongoose';\nimport {\n PAYMENT_STATUS_VALUES,\n} from '../../enums/index.js';\n\n/**\n * Current Payment Schema\n * Use this in your model: currentPayment: { type: currentPaymentSchema }\n *\n * Tracks the latest payment transaction for an entity\n */\nexport const currentPaymentSchema = new Schema(\n {\n transactionId: {\n type: Schema.Types.ObjectId,\n ref: 'Transaction',\n index: true,\n },\n amount: {\n type: Number,\n min: 0,\n },\n status: {\n type: String,\n enum: PAYMENT_STATUS_VALUES,\n default: 'pending',\n index: true,\n },\n method: {\n type: String,\n // Users define payment methods in their transaction model\n },\n reference: {\n type: String,\n trim: true,\n },\n verifiedAt: {\n type: Date,\n },\n verifiedBy: {\n type: Schema.Types.ObjectId,\n ref: 'User',\n },\n },\n { _id: false }\n);\n\n/**\n * Payment Summary Schema\n * Use this in your model: paymentSummary: { type: paymentSummarySchema }\n *\n * Tracks payment history and totals\n */\nexport const paymentSummarySchema = new Schema(\n {\n totalPayments: {\n type: Number,\n default: 0,\n min: 0,\n },\n totalAmountPaid: {\n type: Number,\n default: 0,\n min: 0,\n },\n lastPaymentDate: {\n type: Date,\n },\n lastPaymentAmount: {\n type: Number,\n min: 0,\n },\n },\n { _id: false }\n);\n\n/**\n * Payment Details Schema (for manual payments)\n * Embedded in Transaction model\n */\nexport const paymentDetailsSchema = new Schema(\n {\n provider: { type: String },\n walletNumber: { type: String },\n walletType: { type: String },\n trxId: { type: String },\n bankName: { type: String },\n accountNumber: { type: String },\n accountName: { type: String },\n proofUrl: { type: String },\n },\n { _id: false }\n);\n\n/**\n * Tenant Snapshot Schema\n * Captures organization payment details at transaction time (audit trail)\n */\nexport const tenantSnapshotSchema = new Schema(\n {\n paymentInstructions: { type: String },\n bkashNumber: { type: String },\n nagadNumber: { type: String },\n bankAccount: { type: String },\n },\n { _id: false }\n);\n\nexport default {\n currentPaymentSchema,\n paymentSummarySchema,\n paymentDetailsSchema,\n tenantSnapshotSchema,\n};\n\n","/**\n * Commission Schema\n * @classytic/revenue\n *\n * Schema for platform commission tracking\n * Embedded in Transaction model\n */\n\nimport { Schema } from 'mongoose';\n\n/**\n * Commission Schema - Embedded in Transaction\n * Tracks platform commission with gateway fee deduction\n *\n * Usage: commission: commissionSchema\n */\nexport const commissionSchema = new Schema(\n {\n // Commission rate (e.g., 0.10 for 10%)\n rate: {\n type: Number,\n min: 0,\n max: 1,\n },\n // Gross commission amount (before gateway fees)\n grossAmount: {\n type: Number,\n min: 0,\n },\n // Gateway fee rate (e.g., 0.029 for 2.9%)\n gatewayFeeRate: {\n type: Number,\n min: 0,\n max: 1,\n },\n // Gateway fee amount deducted from commission\n gatewayFeeAmount: {\n type: Number,\n min: 0,\n },\n // Net commission (grossAmount - gatewayFeeAmount)\n netAmount: {\n type: Number,\n min: 0,\n },\n // Commission status\n status: {\n type: String,\n enum: ['pending', 'paid', 'waived', 'reversed'],\n default: 'pending',\n },\n // For affiliate tracking\n affiliate: {\n recipientId: String,\n recipientType: {\n type: String,\n enum: ['user', 'organization', 'partner'],\n },\n rate: Number,\n grossAmount: Number,\n netAmount: Number,\n },\n // For multi-party splits\n splits: [\n {\n type: String,\n recipientId: String,\n rate: Number,\n grossAmount: Number,\n netAmount: Number,\n },\n ],\n },\n { _id: false }\n);\n\nexport default commissionSchema;\n\n","/**\n * Transaction Schemas Index\n * @classytic/revenue\n */\n\nexport * from './common.schema.js';\nexport * from './gateway.schema.js';\nexport * from './payment.schema.js';\nexport * from './commission.schema.js';\n\nimport { baseMetadataSchema, referenceSchema } from './common.schema.js';\nimport gatewaySchema from './gateway.schema.js';\nimport paymentSchemas from './payment.schema.js';\nimport commissionSchema from './commission.schema.js';\n\nexport default {\n baseMetadataSchema,\n referenceSchema,\n gatewaySchema,\n commissionSchema,\n ...paymentSchemas,\n};\n\n","/**\n * Plan Schema\n * @classytic/revenue\n *\n * Schema for subscription plans\n */\n\nimport { Schema } from 'mongoose';\nimport { PLAN_KEY_VALUES } from '../../enums/subscription.enums.js';\n\n/**\n * Plan Schema - for defining subscription plans\n */\nexport const planSchema = new Schema(\n {\n key: {\n type: String,\n enum: PLAN_KEY_VALUES,\n required: true,\n },\n name: {\n type: String,\n required: true,\n },\n description: {\n type: String,\n },\n amount: {\n type: Number,\n required: true,\n min: 0,\n },\n currency: {\n type: String,\n default: 'BDT',\n },\n interval: {\n type: String,\n enum: ['day', 'week', 'month', 'year'],\n default: 'month',\n },\n intervalCount: {\n type: Number,\n default: 1,\n min: 1,\n },\n features: [\n {\n type: String,\n },\n ],\n metadata: {\n type: Schema.Types.Mixed,\n default: {},\n },\n isActive: {\n type: Boolean,\n default: true,\n },\n },\n { _id: false }\n);\n\nexport default planSchema;\n\n","/**\n * Subscription Info Schema\n * @classytic/revenue\n *\n * Schema for subscription information embedded in entities\n */\n\nimport { Schema } from 'mongoose';\nimport { SUBSCRIPTION_STATUS_VALUES, PLAN_KEY_VALUES } from '../../enums/subscription.enums.js';\n\n/**\n * Subscription Info Schema\n * Use this in your entity models that have subscriptions\n *\n * @example\n * const OrganizationSchema = new Schema({\n * name: String,\n * subscription: { type: subscriptionInfoSchema },\n * });\n */\nexport const subscriptionInfoSchema = new Schema(\n {\n planKey: {\n type: String,\n enum: PLAN_KEY_VALUES,\n required: true,\n },\n status: {\n type: String,\n enum: SUBSCRIPTION_STATUS_VALUES,\n default: 'pending',\n index: true,\n },\n isActive: {\n type: Boolean,\n default: false,\n index: true,\n },\n startDate: {\n type: Date,\n },\n endDate: {\n type: Date,\n index: true,\n },\n canceledAt: {\n type: Date,\n },\n cancelAt: {\n type: Date,\n },\n pausedAt: {\n type: Date,\n },\n lastPaymentDate: {\n type: Date,\n },\n lastPaymentAmount: {\n type: Number,\n },\n renewalCount: {\n type: Number,\n default: 0,\n },\n },\n { _id: false }\n);\n\nexport default subscriptionInfoSchema;\n\n","/**\n * Subscription Schemas Index\n * @classytic/revenue\n */\n\nexport { planSchema } from './plan.schema.js';\nexport { subscriptionInfoSchema } from './info.schema.js';\n\nimport planSchema from './plan.schema.js';\nimport subscriptionInfoSchema from './info.schema.js';\n\nexport default {\n planSchema,\n subscriptionInfoSchema,\n};\n\n","/**\n * Hold/Escrow Schema\n * @classytic/revenue\n *\n * Schema for platform-as-intermediary escrow flow\n * Spread into transaction schema when needed\n */\n\nimport { HOLD_STATUS, HOLD_STATUS_VALUES, HOLD_REASON_VALUES } from '../../enums/escrow.enums.js';\n\nexport const holdSchema = {\n status: {\n type: String,\n enum: HOLD_STATUS_VALUES,\n default: HOLD_STATUS.PENDING,\n index: true,\n },\n\n heldAmount: {\n type: Number,\n required: false,\n },\n\n releasedAmount: {\n type: Number,\n default: 0,\n },\n\n reason: {\n type: String,\n enum: HOLD_REASON_VALUES,\n required: false,\n },\n\n holdUntil: {\n type: Date,\n required: false,\n },\n\n heldAt: Date,\n releasedAt: Date,\n cancelledAt: Date,\n\n releases: [\n {\n amount: Number,\n recipientId: String,\n recipientType: String,\n releasedAt: Date,\n releasedBy: String,\n reason: String,\n metadata: Object,\n },\n ],\n\n metadata: {\n type: Object,\n default: {},\n },\n} as const;\n\nexport default holdSchema;\n\n","/**\n * Escrow Schemas Index\n * @classytic/revenue\n */\n\nexport { holdSchema } from './hold.schema.js';\n\nimport holdSchema from './hold.schema.js';\n\nexport default {\n holdSchema,\n};\n\n","/**\n * Split Schema\n * @classytic/revenue\n *\n * Schema for multi-party commission splits\n */\n\nimport { Schema } from 'mongoose';\nimport {\n SPLIT_TYPE_VALUES,\n SPLIT_STATUS,\n SPLIT_STATUS_VALUES,\n PAYOUT_METHOD_VALUES,\n} from '../../enums/split.enums.js';\n\n/**\n * Split Schema - Embedded in Transaction\n */\nexport const splitSchema = new Schema(\n {\n type: {\n type: String,\n enum: SPLIT_TYPE_VALUES,\n required: true,\n },\n recipientId: {\n type: String,\n required: true,\n index: true,\n },\n recipientType: {\n type: String,\n enum: ['platform', 'organization', 'user', 'affiliate', 'partner'],\n required: true,\n },\n rate: {\n type: Number,\n required: true,\n min: 0,\n max: 1,\n },\n grossAmount: {\n type: Number,\n required: true,\n min: 0,\n },\n gatewayFeeRate: {\n type: Number,\n default: 0,\n min: 0,\n max: 1,\n },\n gatewayFeeAmount: {\n type: Number,\n default: 0,\n min: 0,\n },\n netAmount: {\n type: Number,\n required: true,\n min: 0,\n },\n status: {\n type: String,\n enum: SPLIT_STATUS_VALUES,\n default: SPLIT_STATUS.PENDING,\n index: true,\n },\n dueDate: {\n type: Date,\n },\n paidDate: {\n type: Date,\n },\n payoutMethod: {\n type: String,\n enum: PAYOUT_METHOD_VALUES,\n },\n payoutTransactionId: {\n type: String,\n },\n metadata: {\n type: Schema.Types.Mixed,\n default: {},\n },\n },\n { _id: false }\n);\n\nexport default splitSchema;\n\n","/**\n * Split Schemas Index\n * @classytic/revenue\n */\n\nexport { splitSchema } from './split.schema.js';\n\nimport splitSchema from './split.schema.js';\n\nexport default {\n splitSchema,\n};\n\n","/**\n * Schema Index\n * @classytic/revenue\n *\n * Core schemas for injection into your models\n *\n * Note: Enums are separate. Import them from '@classytic/revenue/enums'\n */\n\n// Re-export core schemas only\nexport * from './transaction/index.js';\nexport * from './subscription/index.js';\nexport * from './escrow/index.js';\nexport * from './split/index.js';\n\n// Default export with core schemas\nimport transactionSchemas from './transaction/index.js';\nimport subscriptionSchemas from './subscription/index.js';\nimport escrowSchemas from './escrow/index.js';\nimport splitSchemas from './split/index.js';\n\nexport default {\n ...transactionSchemas,\n ...subscriptionSchemas,\n ...escrowSchemas,\n ...splitSchemas,\n};\n\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/schemas/transaction/common.schema.ts","../../src/schemas/transaction/gateway.schema.ts","../../src/enums/transaction.enums.ts","../../src/enums/payment.enums.ts","../../src/enums/subscription.enums.ts","../../src/enums/monetization.enums.ts","../../src/enums/escrow.enums.ts","../../src/enums/split.enums.ts","../../src/schemas/transaction/payment.schema.ts","../../src/schemas/transaction/commission.schema.ts","../../src/schemas/transaction/index.ts","../../src/schemas/subscription/plan.schema.ts","../../src/schemas/subscription/info.schema.ts","../../src/schemas/subscription/index.ts","../../src/schemas/escrow/hold.schema.ts","../../src/schemas/escrow/index.ts","../../src/schemas/split/split.schema.ts","../../src/schemas/split/index.ts","../../src/schemas/index.ts"],"names":["Schema"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Common Transaction Schemas\n * @classytic/revenue\n *\n * Base schemas shared across transaction types\n */\n\nimport { Schema } from 'mongoose';\n\n/**\n * Base metadata schema for transactions\n */\nexport const baseMetadataSchema = new Schema(\n {\n // Flexible key-value metadata\n },\n { _id: false, strict: false }\n);\n\n/**\n * Reference schema for polymorphic associations\n */\nexport const referenceSchema = {\n referenceId: {\n type: Schema.Types.ObjectId,\n refPath: 'referenceModel',\n },\n referenceModel: {\n type: String,\n enum: ['Subscription', 'Order', 'Membership', 'Booking', 'Invoice'],\n },\n};\n\nexport default {\n baseMetadataSchema,\n referenceSchema,\n};\n\n","/**\n * Gateway Schema\n * @classytic/revenue\n *\n * Schema for payment gateway information\n */\n\nimport { Schema } from 'mongoose';\n\n/**\n * Gateway Schema - Embedded in Transaction\n * Tracks payment gateway details\n */\nexport const gatewaySchema = new Schema(\n {\n type: {\n type: String,\n required: true,\n },\n sessionId: {\n type: String,\n sparse: true,\n },\n paymentIntentId: {\n type: String,\n sparse: true,\n },\n provider: {\n type: String,\n },\n metadata: {\n type: Schema.Types.Mixed,\n default: {},\n },\n verificationData: {\n type: Schema.Types.Mixed,\n },\n },\n { _id: false }\n);\n\nexport default gatewaySchema;\n","/**\n * Transaction Enums\n * @classytic/revenue\n *\n * Library-managed transaction enums only.\n * Users should define their own categories and merge with these.\n */\n\n// ============ TRANSACTION TYPE ============\n/**\n * Transaction Type - Income vs Expense\n *\n * INCOME: Money coming in (payments, subscriptions, purchases)\n * EXPENSE: Money going out (refunds, payouts)\n *\n * Users can map these in their config via transactionTypeMapping\n */\nexport const TRANSACTION_TYPE = {\n INCOME: 'income',\n EXPENSE: 'expense',\n} as const;\n\nexport type TransactionType = typeof TRANSACTION_TYPE;\nexport type TransactionTypeValue = TransactionType[keyof TransactionType];\nexport const TRANSACTION_TYPE_VALUES = Object.values(\n TRANSACTION_TYPE,\n) as TransactionTypeValue[];\n\n// ============ TRANSACTION STATUS ============\n/**\n * Transaction Status - Library-managed states\n */\nexport const TRANSACTION_STATUS = {\n PENDING: 'pending',\n PAYMENT_INITIATED: 'payment_initiated',\n PROCESSING: 'processing',\n REQUIRES_ACTION: 'requires_action',\n VERIFIED: 'verified',\n COMPLETED: 'completed',\n FAILED: 'failed',\n CANCELLED: 'cancelled',\n EXPIRED: 'expired',\n REFUNDED: 'refunded',\n PARTIALLY_REFUNDED: 'partially_refunded',\n} as const;\n\nexport type TransactionStatus = typeof TRANSACTION_STATUS;\nexport type TransactionStatusValue = TransactionStatus[keyof TransactionStatus];\nexport const TRANSACTION_STATUS_VALUES = Object.values(\n TRANSACTION_STATUS,\n) as TransactionStatusValue[];\n\n// ============ LIBRARY CATEGORIES ============\n/**\n * Categories managed by this library\n *\n * SUBSCRIPTION: Recurring subscription payments\n * PURCHASE: One-time purchases\n *\n * Users should spread these into their own category enums:\n *\n * @example\n * import { LIBRARY_CATEGORIES } from '@classytic/revenue';\n *\n * export const MY_CATEGORIES = {\n * ...LIBRARY_CATEGORIES,\n * SALARY: 'salary',\n * RENT: 'rent',\n * EQUIPMENT: 'equipment',\n * } as const;\n */\nexport const LIBRARY_CATEGORIES = {\n SUBSCRIPTION: 'subscription',\n PURCHASE: 'purchase',\n} as const;\n\nexport type LibraryCategories = typeof LIBRARY_CATEGORIES;\nexport type LibraryCategoryValue = LibraryCategories[keyof LibraryCategories];\nexport const LIBRARY_CATEGORY_VALUES = Object.values(\n LIBRARY_CATEGORIES,\n) as LibraryCategoryValue[];\n\nconst transactionTypeSet = new Set<TransactionTypeValue>(TRANSACTION_TYPE_VALUES);\nconst transactionStatusSet = new Set<TransactionStatusValue>(\n TRANSACTION_STATUS_VALUES,\n);\nconst libraryCategorySet = new Set<LibraryCategoryValue>(LIBRARY_CATEGORY_VALUES);\n\nexport function isLibraryCategory(value: unknown): value is LibraryCategoryValue {\n return typeof value === 'string' && libraryCategorySet.has(value as LibraryCategoryValue);\n}\n\nexport function isTransactionType(value: unknown): value is TransactionTypeValue {\n return typeof value === 'string' && transactionTypeSet.has(value as TransactionTypeValue);\n}\n\nexport function isTransactionStatus(\n value: unknown,\n): value is TransactionStatusValue {\n return typeof value === 'string' && transactionStatusSet.has(value as TransactionStatusValue);\n}\n","/**\n * Payment Enums\n * @classytic/revenue\n *\n * Library-managed payment enums only.\n * Users define their own payment methods in their schema.\n */\n\n// ============ PAYMENT STATUS ============\n/**\n * Payment Status - Library-managed states\n */\nexport const PAYMENT_STATUS = {\n PENDING: 'pending',\n VERIFIED: 'verified',\n FAILED: 'failed',\n REFUNDED: 'refunded',\n CANCELLED: 'cancelled',\n} as const;\n\nexport type PaymentStatus = typeof PAYMENT_STATUS;\nexport type PaymentStatusValue = PaymentStatus[keyof PaymentStatus];\nexport const PAYMENT_STATUS_VALUES = Object.values(\n PAYMENT_STATUS,\n) as PaymentStatusValue[];\n\n// ============ PAYMENT GATEWAY TYPES ============\n/**\n * Common gateway type constants for convenience\n *\n * ⚠️ IMPORTANT: These are NOT restrictions - just common reference values\n *\n * You can register ANY custom gateway provider by passing it to createRevenue():\n *\n * @example\n * ```typescript\n * const revenue = createRevenue({\n * providers: {\n * manual: new ManualProvider(),\n * bkash: new BkashProvider(), // ✅ Custom gateway\n * nagad: new NagadProvider(), // ✅ Custom gateway\n * stripe: new StripeProvider(), // ✅ Custom gateway\n * paypal: new PaypalProvider(), // ✅ Any gateway you want\n * }\n * });\n *\n * // Use by name\n * await revenue.monetization.create({ gateway: 'bkash', ... });\n * ```\n *\n * Reference values:\n * - MANUAL: Built-in manual provider (@classytic/revenue-manual)\n * - STRIPE: Stripe provider (build with @classytic/revenue-stripe)\n * - SSLCOMMERZ: SSLCommerz provider (build with @classytic/revenue-sslcommerz)\n *\n * Add your own: bkash, nagad, rocket, paypal, razorpay, flutterwave, etc.\n */\nexport const PAYMENT_GATEWAY_TYPE = {\n MANUAL: 'manual',\n STRIPE: 'stripe',\n SSLCOMMERZ: 'sslcommerz',\n} as const;\n\nexport type PaymentGatewayType = typeof PAYMENT_GATEWAY_TYPE;\nexport type PaymentGatewayTypeValue = PaymentGatewayType[keyof PaymentGatewayType];\nexport const PAYMENT_GATEWAY_TYPE_VALUES = Object.values(\n PAYMENT_GATEWAY_TYPE,\n) as PaymentGatewayTypeValue[];\n\n// Backward compatibility alias\nexport const GATEWAY_TYPES = PAYMENT_GATEWAY_TYPE;\nexport const GATEWAY_TYPE_VALUES = PAYMENT_GATEWAY_TYPE_VALUES;\n\nconst paymentStatusSet = new Set<PaymentStatusValue>(PAYMENT_STATUS_VALUES);\nconst paymentGatewayTypeSet = new Set<PaymentGatewayTypeValue>(\n PAYMENT_GATEWAY_TYPE_VALUES,\n);\n\nexport function isPaymentStatus(value: unknown): value is PaymentStatusValue {\n return typeof value === 'string' && paymentStatusSet.has(value as PaymentStatusValue);\n}\n\nexport function isPaymentGatewayType(\n value: unknown,\n): value is PaymentGatewayTypeValue {\n return (\n typeof value === 'string' &&\n paymentGatewayTypeSet.has(value as PaymentGatewayTypeValue)\n );\n}\n\nexport const isGatewayType = isPaymentGatewayType;\n","/**\n * Subscription Enums\n * @classytic/revenue\n *\n * All subscription-related enums and constants\n */\n\n// ============ SUBSCRIPTION STATUS ============\n/**\n * Subscription Status\n */\nexport const SUBSCRIPTION_STATUS = {\n ACTIVE: 'active',\n PAUSED: 'paused',\n CANCELLED: 'cancelled',\n EXPIRED: 'expired',\n PENDING: 'pending',\n INACTIVE: 'inactive',\n} as const;\n\nexport type SubscriptionStatus = typeof SUBSCRIPTION_STATUS;\nexport type SubscriptionStatusValue = SubscriptionStatus[keyof SubscriptionStatus];\nexport const SUBSCRIPTION_STATUS_VALUES = Object.values(\n SUBSCRIPTION_STATUS,\n) as SubscriptionStatusValue[];\n\n// ============ PLAN KEYS ============\n/**\n * Supported plan intervals\n */\nexport const PLAN_KEYS = {\n MONTHLY: 'monthly',\n QUARTERLY: 'quarterly',\n YEARLY: 'yearly',\n} as const;\n\nexport type PlanKeys = typeof PLAN_KEYS;\nexport type PlanKeyValue = PlanKeys[keyof PlanKeys];\nexport const PLAN_KEY_VALUES = Object.values(PLAN_KEYS) as PlanKeyValue[];\n\nconst subscriptionStatusSet = new Set<SubscriptionStatusValue>(\n SUBSCRIPTION_STATUS_VALUES,\n);\nconst planKeySet = new Set<PlanKeyValue>(PLAN_KEY_VALUES);\n\nexport function isSubscriptionStatus(\n value: unknown,\n): value is SubscriptionStatusValue {\n return (\n typeof value === 'string' &&\n subscriptionStatusSet.has(value as SubscriptionStatusValue)\n );\n}\n\nexport function isPlanKey(value: unknown): value is PlanKeyValue {\n return typeof value === 'string' && planKeySet.has(value as PlanKeyValue);\n}\n","/**\n * Monetization Enums\n * @classytic/revenue\n *\n * General monetization enums and constants\n */\n\n// ============ MONETIZATION TYPES ============\nexport const MONETIZATION_TYPES = {\n FREE: 'free',\n PURCHASE: 'purchase',\n SUBSCRIPTION: 'subscription',\n} as const;\n\nexport type MonetizationTypes = typeof MONETIZATION_TYPES;\nexport type MonetizationTypeValue = MonetizationTypes[keyof MonetizationTypes];\nexport const MONETIZATION_TYPE_VALUES = Object.values(\n MONETIZATION_TYPES,\n) as MonetizationTypeValue[];\n\nconst monetizationTypeSet = new Set<MonetizationTypeValue>(MONETIZATION_TYPE_VALUES);\n\nexport function isMonetizationType(\n value: unknown,\n): value is MonetizationTypeValue {\n return (\n typeof value === 'string' &&\n monetizationTypeSet.has(value as MonetizationTypeValue)\n );\n}\n","/**\n * Escrow/Hold Enums\n * @classytic/revenue\n *\n * Enums for platform-as-intermediary payment flow\n */\n\nexport const HOLD_STATUS = {\n PENDING: 'pending',\n HELD: 'held',\n RELEASED: 'released',\n CANCELLED: 'cancelled',\n EXPIRED: 'expired',\n PARTIALLY_RELEASED: 'partially_released',\n} as const;\n\nexport type HoldStatus = typeof HOLD_STATUS;\nexport type HoldStatusValue = HoldStatus[keyof HoldStatus];\nexport const HOLD_STATUS_VALUES = Object.values(HOLD_STATUS) as HoldStatusValue[];\n\nexport const RELEASE_REASON = {\n PAYMENT_VERIFIED: 'payment_verified',\n MANUAL_RELEASE: 'manual_release',\n AUTO_RELEASE: 'auto_release',\n DISPUTE_RESOLVED: 'dispute_resolved',\n} as const;\n\nexport type ReleaseReason = typeof RELEASE_REASON;\nexport type ReleaseReasonValue = ReleaseReason[keyof ReleaseReason];\nexport const RELEASE_REASON_VALUES = Object.values(\n RELEASE_REASON,\n) as ReleaseReasonValue[];\n\nexport const HOLD_REASON = {\n PAYMENT_VERIFICATION: 'payment_verification',\n FRAUD_CHECK: 'fraud_check',\n MANUAL_REVIEW: 'manual_review',\n DISPUTE: 'dispute',\n COMPLIANCE: 'compliance',\n} as const;\n\nexport type HoldReason = typeof HOLD_REASON;\nexport type HoldReasonValue = HoldReason[keyof HoldReason];\nexport const HOLD_REASON_VALUES = Object.values(HOLD_REASON) as HoldReasonValue[];\n\nconst holdStatusSet = new Set<HoldStatusValue>(HOLD_STATUS_VALUES);\nconst releaseReasonSet = new Set<ReleaseReasonValue>(RELEASE_REASON_VALUES);\nconst holdReasonSet = new Set<HoldReasonValue>(HOLD_REASON_VALUES);\n\nexport function isHoldStatus(value: unknown): value is HoldStatusValue {\n return typeof value === 'string' && holdStatusSet.has(value as HoldStatusValue);\n}\n\nexport function isReleaseReason(value: unknown): value is ReleaseReasonValue {\n return (\n typeof value === 'string' &&\n releaseReasonSet.has(value as ReleaseReasonValue)\n );\n}\n\nexport function isHoldReason(value: unknown): value is HoldReasonValue {\n return typeof value === 'string' && holdReasonSet.has(value as HoldReasonValue);\n}\n","/**\n * Split Payment Enums\n * @classytic/revenue\n *\n * Enums for multi-party commission splits\n */\n\nexport const SPLIT_TYPE = {\n PLATFORM_COMMISSION: 'platform_commission',\n AFFILIATE_COMMISSION: 'affiliate_commission',\n REFERRAL_COMMISSION: 'referral_commission',\n PARTNER_COMMISSION: 'partner_commission',\n CUSTOM: 'custom',\n} as const;\n\nexport type SplitType = typeof SPLIT_TYPE;\nexport type SplitTypeValue = SplitType[keyof SplitType];\nexport const SPLIT_TYPE_VALUES = Object.values(SPLIT_TYPE) as SplitTypeValue[];\n\nexport const SPLIT_STATUS = {\n PENDING: 'pending',\n DUE: 'due',\n PAID: 'paid',\n WAIVED: 'waived',\n CANCELLED: 'cancelled',\n} as const;\n\nexport type SplitStatus = typeof SPLIT_STATUS;\nexport type SplitStatusValue = SplitStatus[keyof SplitStatus];\nexport const SPLIT_STATUS_VALUES = Object.values(\n SPLIT_STATUS,\n) as SplitStatusValue[];\n\nexport const PAYOUT_METHOD = {\n BANK_TRANSFER: 'bank_transfer',\n MOBILE_WALLET: 'mobile_wallet',\n PLATFORM_BALANCE: 'platform_balance',\n CRYPTO: 'crypto',\n CHECK: 'check',\n MANUAL: 'manual',\n} as const;\n\nexport type PayoutMethod = typeof PAYOUT_METHOD;\nexport type PayoutMethodValue = PayoutMethod[keyof PayoutMethod];\nexport const PAYOUT_METHOD_VALUES = Object.values(PAYOUT_METHOD) as PayoutMethodValue[];\n\nconst splitTypeSet = new Set<SplitTypeValue>(SPLIT_TYPE_VALUES);\nconst splitStatusSet = new Set<SplitStatusValue>(SPLIT_STATUS_VALUES);\nconst payoutMethodSet = new Set<PayoutMethodValue>(PAYOUT_METHOD_VALUES);\n\nexport function isSplitType(value: unknown): value is SplitTypeValue {\n return typeof value === 'string' && splitTypeSet.has(value as SplitTypeValue);\n}\n\nexport function isSplitStatus(value: unknown): value is SplitStatusValue {\n return (\n typeof value === 'string' &&\n splitStatusSet.has(value as SplitStatusValue)\n );\n}\n\nexport function isPayoutMethod(value: unknown): value is PayoutMethodValue {\n return (\n typeof value === 'string' &&\n payoutMethodSet.has(value as PayoutMethodValue)\n );\n}\n","/**\n * Payment Schemas for Transaction Model\n * @classytic/revenue\n *\n * Schemas for payment tracking in transactions\n */\n\nimport { Schema } from 'mongoose';\nimport {\n PAYMENT_STATUS_VALUES,\n} from '../../enums/index.js';\n\n/**\n * Individual Payment Entry Schema\n * For split/multi-payment scenarios (e.g., cash + bank + mobile wallet)\n *\n * Use in currentPaymentSchema.payments array\n */\nexport const paymentEntrySchema = new Schema(\n {\n method: {\n type: String,\n required: true,\n },\n amount: {\n type: Number,\n required: true,\n min: 0,\n },\n reference: {\n type: String,\n trim: true,\n },\n details: {\n type: Schema.Types.Mixed,\n // For method-specific data: walletNumber, bankName, trxId, etc.\n },\n },\n { _id: false }\n);\n\n/**\n * Current Payment Schema\n * Use this in your model: currentPayment: { type: currentPaymentSchema }\n *\n * Tracks the latest payment transaction for an entity\n * Supports both single payments and multi-payment (split) scenarios\n */\nexport const currentPaymentSchema = new Schema(\n {\n transactionId: {\n type: Schema.Types.ObjectId,\n ref: 'Transaction',\n },\n amount: {\n type: Number,\n min: 0,\n // Total amount (sum of all payments for split payments)\n },\n status: {\n type: String,\n enum: PAYMENT_STATUS_VALUES,\n default: 'pending',\n },\n method: {\n type: String,\n // Primary method for single payments, or 'split' when multiple methods\n },\n reference: {\n type: String,\n trim: true,\n },\n // Split payments support - array of individual payment entries\n payments: {\n type: [paymentEntrySchema],\n default: undefined, // Not set for single payments (backward compat)\n },\n verifiedAt: {\n type: Date,\n },\n verifiedBy: {\n type: Schema.Types.ObjectId,\n ref: 'User',\n },\n },\n { _id: false }\n);\n\n/**\n * Payment Summary Schema\n * Use this in your model: paymentSummary: { type: paymentSummarySchema }\n *\n * Tracks payment history and totals\n */\nexport const paymentSummarySchema = new Schema(\n {\n totalPayments: {\n type: Number,\n default: 0,\n min: 0,\n },\n totalAmountPaid: {\n type: Number,\n default: 0,\n min: 0,\n },\n lastPaymentDate: {\n type: Date,\n },\n lastPaymentAmount: {\n type: Number,\n min: 0,\n },\n },\n { _id: false }\n);\n\n/**\n * Payment Details Schema (for manual payments)\n * Embedded in Transaction model\n */\nexport const paymentDetailsSchema = new Schema(\n {\n provider: { type: String },\n walletNumber: { type: String },\n walletType: { type: String },\n trxId: { type: String },\n bankName: { type: String },\n accountNumber: { type: String },\n accountName: { type: String },\n proofUrl: { type: String },\n },\n { _id: false }\n);\n\n/**\n * Tenant Snapshot Schema\n * Captures organization payment details at transaction time (audit trail)\n */\nexport const tenantSnapshotSchema = new Schema(\n {\n paymentInstructions: { type: String },\n bkashNumber: { type: String },\n nagadNumber: { type: String },\n bankAccount: { type: String },\n },\n { _id: false }\n);\n\nexport default {\n paymentEntrySchema,\n currentPaymentSchema,\n paymentSummarySchema,\n paymentDetailsSchema,\n tenantSnapshotSchema,\n};\n","/**\n * Commission Schema\n * @classytic/revenue\n *\n * Schema for platform commission tracking\n * Embedded in Transaction model\n */\n\nimport { Schema } from 'mongoose';\n\n/**\n * Commission Schema - Embedded in Transaction\n * Tracks platform commission with gateway fee deduction\n *\n * Usage: commission: commissionSchema\n */\nexport const commissionSchema = new Schema(\n {\n // Commission rate (e.g., 0.10 for 10%)\n rate: {\n type: Number,\n min: 0,\n max: 1,\n },\n // Gross commission amount (before gateway fees)\n grossAmount: {\n type: Number,\n min: 0,\n },\n // Gateway fee rate (e.g., 0.029 for 2.9%)\n gatewayFeeRate: {\n type: Number,\n min: 0,\n max: 1,\n },\n // Gateway fee amount deducted from commission\n gatewayFeeAmount: {\n type: Number,\n min: 0,\n },\n // Net commission (grossAmount - gatewayFeeAmount)\n netAmount: {\n type: Number,\n min: 0,\n },\n // Commission status\n status: {\n type: String,\n enum: ['pending', 'paid', 'waived', 'reversed'],\n default: 'pending',\n },\n // For affiliate tracking\n affiliate: {\n recipientId: String,\n recipientType: {\n type: String,\n enum: ['user', 'organization', 'partner'],\n },\n rate: Number,\n grossAmount: Number,\n netAmount: Number,\n },\n // For multi-party splits\n splits: [\n {\n type: String,\n recipientId: String,\n rate: Number,\n grossAmount: Number,\n netAmount: Number,\n },\n ],\n },\n { _id: false }\n);\n\nexport default commissionSchema;\n\n","/**\n * Transaction Schemas Index\n * @classytic/revenue\n */\n\nexport * from './common.schema.js';\nexport * from './gateway.schema.js';\nexport * from './payment.schema.js';\nexport * from './commission.schema.js';\n\nimport { baseMetadataSchema, referenceSchema } from './common.schema.js';\nimport gatewaySchema from './gateway.schema.js';\nimport paymentSchemas from './payment.schema.js';\nimport commissionSchema from './commission.schema.js';\n\nexport default {\n baseMetadataSchema,\n referenceSchema,\n gatewaySchema,\n commissionSchema,\n ...paymentSchemas,\n};\n\n","/**\n * Plan Schema\n * @classytic/revenue\n *\n * Schema for subscription plans\n */\n\nimport { Schema } from 'mongoose';\nimport { PLAN_KEY_VALUES } from '../../enums/subscription.enums.js';\n\n/**\n * Plan Schema - for defining subscription plans\n */\nexport const planSchema = new Schema(\n {\n key: {\n type: String,\n enum: PLAN_KEY_VALUES,\n required: true,\n },\n name: {\n type: String,\n required: true,\n },\n description: {\n type: String,\n },\n amount: {\n type: Number,\n required: true,\n min: 0,\n },\n currency: {\n type: String,\n default: 'BDT',\n },\n interval: {\n type: String,\n enum: ['day', 'week', 'month', 'year'],\n default: 'month',\n },\n intervalCount: {\n type: Number,\n default: 1,\n min: 1,\n },\n features: [\n {\n type: String,\n },\n ],\n metadata: {\n type: Schema.Types.Mixed,\n default: {},\n },\n isActive: {\n type: Boolean,\n default: true,\n },\n },\n { _id: false }\n);\n\nexport default planSchema;\n\n","/**\n * Subscription Info Schema\n * @classytic/revenue\n *\n * Schema for subscription information embedded in entities\n */\n\nimport { Schema } from 'mongoose';\nimport { SUBSCRIPTION_STATUS_VALUES, PLAN_KEY_VALUES } from '../../enums/subscription.enums.js';\n\n/**\n * Subscription Info Schema\n * Use this in your entity models that have subscriptions\n *\n * @example\n * const OrganizationSchema = new Schema({\n * name: String,\n * subscription: { type: subscriptionInfoSchema },\n * });\n */\nexport const subscriptionInfoSchema = new Schema(\n {\n planKey: {\n type: String,\n enum: PLAN_KEY_VALUES,\n required: true,\n },\n status: {\n type: String,\n enum: SUBSCRIPTION_STATUS_VALUES,\n default: 'pending',\n },\n isActive: {\n type: Boolean,\n default: false,\n },\n startDate: {\n type: Date,\n },\n endDate: {\n type: Date,\n },\n canceledAt: {\n type: Date,\n },\n cancelAt: {\n type: Date,\n },\n pausedAt: {\n type: Date,\n },\n lastPaymentDate: {\n type: Date,\n },\n lastPaymentAmount: {\n type: Number,\n },\n renewalCount: {\n type: Number,\n default: 0,\n },\n },\n { _id: false }\n);\n\nexport default subscriptionInfoSchema;\n","/**\n * Subscription Schemas Index\n * @classytic/revenue\n */\n\nexport { planSchema } from './plan.schema.js';\nexport { subscriptionInfoSchema } from './info.schema.js';\n\nimport planSchema from './plan.schema.js';\nimport subscriptionInfoSchema from './info.schema.js';\n\nexport default {\n planSchema,\n subscriptionInfoSchema,\n};\n\n","/**\n * Hold/Escrow Schema\n * @classytic/revenue\n *\n * Schema for platform-as-intermediary escrow flow\n * Spread into transaction schema when needed\n */\n\nimport { HOLD_STATUS, HOLD_STATUS_VALUES, HOLD_REASON_VALUES } from '../../enums/escrow.enums.js';\n\nexport const holdSchema = {\n status: {\n type: String,\n enum: HOLD_STATUS_VALUES,\n default: HOLD_STATUS.PENDING,\n },\n\n heldAmount: {\n type: Number,\n required: false,\n },\n\n releasedAmount: {\n type: Number,\n default: 0,\n },\n\n reason: {\n type: String,\n enum: HOLD_REASON_VALUES,\n required: false,\n },\n\n holdUntil: {\n type: Date,\n required: false,\n },\n\n heldAt: Date,\n releasedAt: Date,\n cancelledAt: Date,\n\n releases: [\n {\n amount: Number,\n recipientId: String,\n recipientType: String,\n releasedAt: Date,\n releasedBy: String,\n reason: String,\n metadata: Object,\n },\n ],\n\n metadata: {\n type: Object,\n default: {},\n },\n} as const;\n\nexport default holdSchema;\n","/**\n * Escrow Schemas Index\n * @classytic/revenue\n */\n\nexport { holdSchema } from './hold.schema.js';\n\nimport holdSchema from './hold.schema.js';\n\nexport default {\n holdSchema,\n};\n\n","/**\n * Split Schema\n * @classytic/revenue\n *\n * Schema for multi-party commission splits\n */\n\nimport { Schema } from 'mongoose';\nimport {\n SPLIT_TYPE_VALUES,\n SPLIT_STATUS,\n SPLIT_STATUS_VALUES,\n PAYOUT_METHOD_VALUES,\n} from '../../enums/split.enums.js';\n\n/**\n * Split Schema - Embedded in Transaction\n */\nexport const splitSchema = new Schema(\n {\n type: {\n type: String,\n enum: SPLIT_TYPE_VALUES,\n required: true,\n },\n recipientId: {\n type: String,\n required: true,\n },\n recipientType: {\n type: String,\n enum: ['platform', 'organization', 'user', 'affiliate', 'partner'],\n required: true,\n },\n rate: {\n type: Number,\n required: true,\n min: 0,\n max: 1,\n },\n grossAmount: {\n type: Number,\n required: true,\n min: 0,\n },\n gatewayFeeRate: {\n type: Number,\n default: 0,\n min: 0,\n max: 1,\n },\n gatewayFeeAmount: {\n type: Number,\n default: 0,\n min: 0,\n },\n netAmount: {\n type: Number,\n required: true,\n min: 0,\n },\n status: {\n type: String,\n enum: SPLIT_STATUS_VALUES,\n default: SPLIT_STATUS.PENDING,\n },\n dueDate: {\n type: Date,\n },\n paidDate: {\n type: Date,\n },\n payoutMethod: {\n type: String,\n enum: PAYOUT_METHOD_VALUES,\n },\n payoutTransactionId: {\n type: String,\n },\n metadata: {\n type: Schema.Types.Mixed,\n default: {},\n },\n },\n { _id: false }\n);\n\nexport default splitSchema;\n","/**\n * Split Schemas Index\n * @classytic/revenue\n */\n\nexport { splitSchema } from './split.schema.js';\n\nimport splitSchema from './split.schema.js';\n\nexport default {\n splitSchema,\n};\n\n","/**\n * Schema Index\n * @classytic/revenue\n *\n * Core schemas for injection into your models\n *\n * Note: Enums are separate. Import them from '@classytic/revenue/enums'\n */\n\n// Re-export core schemas only\nexport * from './transaction/index.js';\nexport * from './subscription/index.js';\nexport * from './escrow/index.js';\nexport * from './split/index.js';\n\n// Default export with core schemas\nimport transactionSchemas from './transaction/index.js';\nimport subscriptionSchemas from './subscription/index.js';\nimport escrowSchemas from './escrow/index.js';\nimport splitSchemas from './split/index.js';\n\nexport default {\n ...transactionSchemas,\n ...subscriptionSchemas,\n ...escrowSchemas,\n ...splitSchemas,\n};\n\n"]}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import * as z from 'zod';
|
|
2
|
-
export { z };
|
|
3
2
|
|
|
4
3
|
/**
|
|
5
4
|
* Zod Validation Schemas
|
|
@@ -83,10 +82,10 @@ type RefundInput = z.infer<typeof RefundSchema>;
|
|
|
83
82
|
*/
|
|
84
83
|
declare const SubscriptionStatusSchema: z.ZodEnum<{
|
|
85
84
|
pending: "pending";
|
|
86
|
-
cancelled: "cancelled";
|
|
87
|
-
expired: "expired";
|
|
88
85
|
active: "active";
|
|
89
86
|
paused: "paused";
|
|
87
|
+
cancelled: "cancelled";
|
|
88
|
+
expired: "expired";
|
|
90
89
|
past_due: "past_due";
|
|
91
90
|
}>;
|
|
92
91
|
type SubscriptionStatus = z.infer<typeof SubscriptionStatusSchema>;
|
|
@@ -139,8 +138,8 @@ type CancelSubscriptionInput = z.infer<typeof CancelSubscriptionSchema>;
|
|
|
139
138
|
* Monetization type
|
|
140
139
|
*/
|
|
141
140
|
declare const MonetizationTypeSchema: z.ZodEnum<{
|
|
142
|
-
subscription: "subscription";
|
|
143
141
|
purchase: "purchase";
|
|
142
|
+
subscription: "subscription";
|
|
144
143
|
free: "free";
|
|
145
144
|
}>;
|
|
146
145
|
type MonetizationType = z.infer<typeof MonetizationTypeSchema>;
|
|
@@ -149,8 +148,8 @@ type MonetizationType = z.infer<typeof MonetizationTypeSchema>;
|
|
|
149
148
|
*/
|
|
150
149
|
declare const CreateMonetizationSchema: z.ZodObject<{
|
|
151
150
|
type: z.ZodDefault<z.ZodEnum<{
|
|
152
|
-
subscription: "subscription";
|
|
153
151
|
purchase: "purchase";
|
|
152
|
+
subscription: "subscription";
|
|
154
153
|
free: "free";
|
|
155
154
|
}>>;
|
|
156
155
|
amount: z.ZodOptional<z.ZodNumber>;
|
|
@@ -203,15 +202,63 @@ declare const CommissionConfigSchema: z.ZodObject<{
|
|
|
203
202
|
}, z.core.$strip>>;
|
|
204
203
|
}, z.core.$strip>;
|
|
205
204
|
type CommissionConfig = z.infer<typeof CommissionConfigSchema>;
|
|
205
|
+
/**
|
|
206
|
+
* Payment status enum
|
|
207
|
+
*/
|
|
208
|
+
declare const PaymentStatusEnumSchema: z.ZodEnum<{
|
|
209
|
+
pending: "pending";
|
|
210
|
+
cancelled: "cancelled";
|
|
211
|
+
verified: "verified";
|
|
212
|
+
failed: "failed";
|
|
213
|
+
refunded: "refunded";
|
|
214
|
+
}>;
|
|
215
|
+
type PaymentStatusEnum = z.infer<typeof PaymentStatusEnumSchema>;
|
|
216
|
+
/**
|
|
217
|
+
* Individual payment entry for split/multi-payment scenarios
|
|
218
|
+
* e.g., cash + bank transfer + mobile wallet
|
|
219
|
+
*/
|
|
220
|
+
declare const PaymentEntrySchema: z.ZodObject<{
|
|
221
|
+
method: z.ZodString;
|
|
222
|
+
amount: z.ZodNumber;
|
|
223
|
+
reference: z.ZodOptional<z.ZodString>;
|
|
224
|
+
details: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
225
|
+
}, z.core.$strip>;
|
|
226
|
+
type PaymentEntryInput = z.infer<typeof PaymentEntrySchema>;
|
|
227
|
+
/**
|
|
228
|
+
* Current payment schema with split payment support
|
|
229
|
+
* Backward compatible - single payments work without the payments array
|
|
230
|
+
*/
|
|
231
|
+
declare const CurrentPaymentInputSchema: z.ZodObject<{
|
|
232
|
+
transactionId: z.ZodOptional<z.ZodString>;
|
|
233
|
+
amount: z.ZodNumber;
|
|
234
|
+
status: z.ZodDefault<z.ZodEnum<{
|
|
235
|
+
pending: "pending";
|
|
236
|
+
cancelled: "cancelled";
|
|
237
|
+
verified: "verified";
|
|
238
|
+
failed: "failed";
|
|
239
|
+
refunded: "refunded";
|
|
240
|
+
}>>;
|
|
241
|
+
method: z.ZodString;
|
|
242
|
+
reference: z.ZodOptional<z.ZodString>;
|
|
243
|
+
payments: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
244
|
+
method: z.ZodString;
|
|
245
|
+
amount: z.ZodNumber;
|
|
246
|
+
reference: z.ZodOptional<z.ZodString>;
|
|
247
|
+
details: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
248
|
+
}, z.core.$strip>>>;
|
|
249
|
+
verifiedAt: z.ZodOptional<z.ZodDate>;
|
|
250
|
+
verifiedBy: z.ZodOptional<z.ZodString>;
|
|
251
|
+
}, z.core.$strip>;
|
|
252
|
+
type CurrentPaymentInput = z.infer<typeof CurrentPaymentInputSchema>;
|
|
206
253
|
/**
|
|
207
254
|
* Hold status
|
|
208
255
|
*/
|
|
209
256
|
declare const HoldStatusSchema: z.ZodEnum<{
|
|
210
257
|
cancelled: "cancelled";
|
|
211
|
-
held: "held";
|
|
212
|
-
released: "released";
|
|
213
258
|
none: "none";
|
|
259
|
+
held: "held";
|
|
214
260
|
partial_release: "partial_release";
|
|
261
|
+
released: "released";
|
|
215
262
|
}>;
|
|
216
263
|
type HoldStatus = z.infer<typeof HoldStatusSchema>;
|
|
217
264
|
/**
|
|
@@ -305,5 +352,33 @@ declare function safeValidate<T extends z.ZodType>(schema: T, data: unknown): {
|
|
|
305
352
|
* Zod v4 uses `issues` property
|
|
306
353
|
*/
|
|
307
354
|
declare function formatZodError(error: z.ZodError): string;
|
|
355
|
+
/**
|
|
356
|
+
* Validates that split payment totals match the transaction amount
|
|
357
|
+
* Returns true for single payments (no payments array)
|
|
358
|
+
*
|
|
359
|
+
* @param currentPayment - The current payment object to validate
|
|
360
|
+
* @returns true if valid, false if split totals don't match
|
|
361
|
+
*
|
|
362
|
+
* @example
|
|
363
|
+
* // Single payment - always valid
|
|
364
|
+
* validateSplitPayments({ amount: 50000, method: 'cash', status: 'verified' }) // true
|
|
365
|
+
*
|
|
366
|
+
* // Split payment - totals must match
|
|
367
|
+
* validateSplitPayments({
|
|
368
|
+
* amount: 50000,
|
|
369
|
+
* method: 'split',
|
|
370
|
+
* status: 'verified',
|
|
371
|
+
* payments: [
|
|
372
|
+
* { method: 'cash', amount: 10000 },
|
|
373
|
+
* { method: 'bkash', amount: 40000 },
|
|
374
|
+
* ]
|
|
375
|
+
* }) // true (10000 + 40000 = 50000)
|
|
376
|
+
*/
|
|
377
|
+
declare function validateSplitPayments(currentPayment: {
|
|
378
|
+
amount: number;
|
|
379
|
+
payments?: Array<{
|
|
380
|
+
amount: number;
|
|
381
|
+
}>;
|
|
382
|
+
}): boolean;
|
|
308
383
|
|
|
309
|
-
export { type CancelSubscriptionInput, CancelSubscriptionSchema, type CommissionConfig, CommissionConfigSchema, type CreateHoldInput, CreateHoldSchema, type CreateMonetizationInput, CreateMonetizationSchema, type CreatePaymentInput, CreatePaymentSchema, type CreateSubscriptionInput, CreateSubscriptionSchema, CurrencySchema, EmailSchema, type HoldStatus, HoldStatusSchema, IdempotencyKeySchema, type Interval, IntervalSchema, MetadataSchema, type MonetizationType, MonetizationTypeSchema, MoneyAmountSchema, MoneySchema, ObjectIdSchema, ProviderConfigSchema, type RefundInput, RefundSchema, type ReleaseHoldInput, ReleaseHoldSchema, type RetryConfig, RetryConfigSchema, type RevenueConfigInput, RevenueConfigSchema, type SplitRecipient, SplitRecipientSchema, type SubscriptionStatus, SubscriptionStatusSchema, type VerifyPaymentInput, VerifyPaymentSchema, formatZodError, safeValidate, validate };
|
|
384
|
+
export { type CancelSubscriptionInput, CancelSubscriptionSchema, type CommissionConfig, CommissionConfigSchema, type CreateHoldInput, CreateHoldSchema, type CreateMonetizationInput, CreateMonetizationSchema, type CreatePaymentInput, CreatePaymentSchema, type CreateSubscriptionInput, CreateSubscriptionSchema, CurrencySchema, type CurrentPaymentInput, CurrentPaymentInputSchema, EmailSchema, type HoldStatus, HoldStatusSchema, IdempotencyKeySchema, type Interval, IntervalSchema, MetadataSchema, type MonetizationType, MonetizationTypeSchema, MoneyAmountSchema, MoneySchema, ObjectIdSchema, type PaymentEntryInput, PaymentEntrySchema, type PaymentStatusEnum, PaymentStatusEnumSchema, ProviderConfigSchema, type RefundInput, RefundSchema, type ReleaseHoldInput, ReleaseHoldSchema, type RetryConfig, RetryConfigSchema, type RevenueConfigInput, RevenueConfigSchema, type SplitRecipient, SplitRecipientSchema, type SubscriptionStatus, SubscriptionStatusSchema, type VerifyPaymentInput, VerifyPaymentSchema, formatZodError, safeValidate, validate, validateSplitPayments };
|