@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.
@@ -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(PAYMENT_STATUS);
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(SUBSCRIPTION_STATUS);
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(SPLIT_STATUS);
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
- // Users define payment methods in their transaction model
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 };