@classytic/revenue 1.1.2 → 1.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/README.md +8 -7
  2. package/dist/application/services/index.d.mts +4 -0
  3. package/dist/application/services/index.mjs +3 -0
  4. package/dist/base-CsTlVQJe.d.mts +136 -0
  5. package/dist/base-DCoyIUj6.mjs +152 -0
  6. package/dist/category-resolver-DV83N8ok.mjs +284 -0
  7. package/dist/commission-split-BzB8cd39.mjs +485 -0
  8. package/dist/core/events.d.mts +294 -0
  9. package/dist/core/events.mjs +100 -0
  10. package/dist/core/index.d.mts +9 -0
  11. package/dist/core/index.mjs +8 -0
  12. package/dist/enums/index.d.mts +157 -0
  13. package/dist/enums/index.mjs +56 -0
  14. package/dist/errors-rRdOqnWx.d.mts +787 -0
  15. package/dist/escrow.enums-CZGrrdg7.mjs +101 -0
  16. package/dist/{escrow.enums-CE0VQsfe.d.ts → escrow.enums-DwdLuuve.d.mts} +30 -28
  17. package/dist/idempotency-DaYcUGY1.mjs +172 -0
  18. package/dist/index-Dsp7H5Wb.d.mts +471 -0
  19. package/dist/index.d.mts +9 -0
  20. package/dist/index.mjs +38 -0
  21. package/dist/infrastructure/plugins/{index.d.ts → index.d.mts} +81 -109
  22. package/dist/infrastructure/plugins/index.mjs +345 -0
  23. package/dist/money-CvrDOijQ.mjs +271 -0
  24. package/dist/money-DPG8AtJ8.d.mts +112 -0
  25. package/dist/{payment.enums-C1BiGlRa.d.ts → payment.enums-HAuAS9Pp.d.mts} +14 -13
  26. package/dist/payment.enums-tEFVa-Xp.mjs +69 -0
  27. package/dist/plugin-BbK0OVHy.d.mts +327 -0
  28. package/dist/plugin-Cd_V04Em.mjs +210 -0
  29. package/dist/providers/index.d.mts +3 -0
  30. package/dist/providers/index.mjs +3 -0
  31. package/dist/reconciliation/{index.d.ts → index.d.mts} +90 -112
  32. package/dist/reconciliation/index.mjs +192 -0
  33. package/dist/retry-HHCOXYdn.d.mts +186 -0
  34. package/dist/revenue-BhdS7nXh.mjs +553 -0
  35. package/dist/schemas/index.d.mts +2665 -0
  36. package/dist/schemas/index.mjs +717 -0
  37. package/dist/schemas/validation.d.mts +375 -0
  38. package/dist/schemas/validation.mjs +325 -0
  39. package/dist/{settlement.enums-ByC1x0ye.d.ts → settlement.enums-DFhkqZEY.d.mts} +31 -29
  40. package/dist/settlement.schema-DnNSFpGd.d.mts +344 -0
  41. package/dist/settlement.service-DjzAjezU.d.mts +594 -0
  42. package/dist/settlement.service-DmdKv0Zu.mjs +2511 -0
  43. package/dist/split.enums-BrjabxIX.mjs +86 -0
  44. package/dist/split.enums-DmskfLOM.d.mts +43 -0
  45. package/dist/tax-BoCt5cEd.d.mts +61 -0
  46. package/dist/tax-EQ15DO81.mjs +162 -0
  47. package/dist/transaction.enums-pCyMFT4Z.mjs +96 -0
  48. package/dist/utils/{index.d.ts → index.d.mts} +91 -161
  49. package/dist/utils/index.mjs +346 -0
  50. package/package.json +39 -37
  51. package/dist/application/services/index.d.ts +0 -6
  52. package/dist/application/services/index.js +0 -3288
  53. package/dist/application/services/index.js.map +0 -1
  54. package/dist/core/events.d.ts +0 -455
  55. package/dist/core/events.js +0 -122
  56. package/dist/core/events.js.map +0 -1
  57. package/dist/core/index.d.ts +0 -13
  58. package/dist/core/index.js +0 -4591
  59. package/dist/core/index.js.map +0 -1
  60. package/dist/enums/index.d.ts +0 -159
  61. package/dist/enums/index.js +0 -296
  62. package/dist/enums/index.js.map +0 -1
  63. package/dist/index-DxIK0UmZ.d.ts +0 -633
  64. package/dist/index-EnfKzDbs.d.ts +0 -806
  65. package/dist/index-cLJBLUvx.d.ts +0 -478
  66. package/dist/index.d.ts +0 -43
  67. package/dist/index.js +0 -4864
  68. package/dist/index.js.map +0 -1
  69. package/dist/infrastructure/plugins/index.js +0 -292
  70. package/dist/infrastructure/plugins/index.js.map +0 -1
  71. package/dist/money-widWVD7r.d.ts +0 -111
  72. package/dist/plugin-Bb9HOE10.d.ts +0 -336
  73. package/dist/providers/index.d.ts +0 -145
  74. package/dist/providers/index.js +0 -141
  75. package/dist/providers/index.js.map +0 -1
  76. package/dist/reconciliation/index.js +0 -140
  77. package/dist/reconciliation/index.js.map +0 -1
  78. package/dist/retry-D4hFUwVk.d.ts +0 -194
  79. package/dist/schemas/index.d.ts +0 -2655
  80. package/dist/schemas/index.js +0 -841
  81. package/dist/schemas/index.js.map +0 -1
  82. package/dist/schemas/validation.d.ts +0 -384
  83. package/dist/schemas/validation.js +0 -303
  84. package/dist/schemas/validation.js.map +0 -1
  85. package/dist/settlement.schema-CpamV7ZY.d.ts +0 -343
  86. package/dist/split.enums-DG3TxQf9.d.ts +0 -42
  87. package/dist/tax-CV8A0sxl.d.ts +0 -60
  88. package/dist/utils/index.js +0 -1202
  89. package/dist/utils/index.js.map +0 -1
@@ -1 +0,0 @@
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/enums/settlement.enums.ts","../../src/schemas/transaction/payment.schema.ts","../../src/schemas/transaction/commission.schema.ts","../../src/schemas/transaction/tax.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/settlement/settlement.schema.ts","../../src/schemas/settlement/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\nexport default {\n baseMetadataSchema,\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 FLOW ============\n/**\n * Transaction Flow - Directional money movement\n *\n * INFLOW: Money coming in (payments, subscriptions, purchases, receipts)\n * OUTFLOW: Money going out (refunds, payouts, expenses, disbursements)\n *\n * Industry-standard terminology compatible with QuickBooks, Xero, and other accounting systems.\n * Users can map categories to flow directions via transactionTypeMapping config.\n *\n * @example\n * // Revenue platform\n * { type: 'subscription', flow: 'inflow' }\n *\n * // Payroll platform\n * { type: 'salary', flow: 'outflow' }\n *\n * // Marketplace\n * { type: 'commission', flow: 'outflow' } // Paying sellers\n * { type: 'platform_fee', flow: 'inflow' } // Platform revenue\n */\nexport const TRANSACTION_FLOW = {\n INFLOW: 'inflow',\n OUTFLOW: 'outflow',\n} as const;\n\n/** @deprecated Use TRANSACTION_FLOW instead */\nexport const TRANSACTION_TYPE = TRANSACTION_FLOW;\n\nexport type TransactionFlow = typeof TRANSACTION_FLOW;\nexport type TransactionFlowValue = TransactionFlow[keyof TransactionFlow];\nexport const TRANSACTION_FLOW_VALUES = Object.values(\n TRANSACTION_FLOW,\n) as TransactionFlowValue[];\n\n/** @deprecated Use TransactionFlow instead */\nexport type TransactionType = TransactionFlow;\n/** @deprecated Use TransactionFlowValue instead */\nexport type TransactionTypeValue = TransactionFlowValue;\n/** @deprecated Use TRANSACTION_FLOW_VALUES instead */\nexport const TRANSACTION_TYPE_VALUES = TRANSACTION_FLOW_VALUES;\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 transactionFlowSet = new Set<TransactionFlowValue>(TRANSACTION_FLOW_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 isTransactionFlow(value: unknown): value is TransactionFlowValue {\n return typeof value === 'string' && transactionFlowSet.has(value as TransactionFlowValue);\n}\n\n/** @deprecated Use isTransactionFlow instead */\nexport function isTransactionType(value: unknown): value is TransactionTypeValue {\n return isTransactionFlow(value);\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 PENDING_RENEWAL: 'pending_renewal',\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 * Settlement Enums\n * @classytic/revenue\n *\n * Enums for settlement/payout tracking\n */\n\n// ============ SETTLEMENT STATUS ============\n\nexport const SETTLEMENT_STATUS = {\n PENDING: 'pending',\n PROCESSING: 'processing',\n COMPLETED: 'completed',\n FAILED: 'failed',\n CANCELLED: 'cancelled',\n} as const;\n\nexport type SettlementStatus = typeof SETTLEMENT_STATUS;\nexport type SettlementStatusValue = SettlementStatus[keyof SettlementStatus];\n\nexport const SETTLEMENT_STATUS_VALUES = Object.values(SETTLEMENT_STATUS);\n\n/**\n * Type guard for settlement status\n */\nexport function isSettlementStatus(value: unknown): value is SettlementStatusValue {\n return typeof value === 'string' && SETTLEMENT_STATUS_VALUES.includes(value as SettlementStatusValue);\n}\n\n// ============ SETTLEMENT TYPE ============\n\nexport const SETTLEMENT_TYPE = {\n SPLIT_PAYOUT: 'split_payout', // Payout to split recipient (vendor/affiliate)\n PLATFORM_WITHDRAWAL: 'platform_withdrawal', // Platform withdraws commission\n MANUAL_PAYOUT: 'manual_payout', // Manual vendor payout\n ESCROW_RELEASE: 'escrow_release', // Release from escrow hold\n} as const;\n\nexport type SettlementType = typeof SETTLEMENT_TYPE;\nexport type SettlementTypeValue = SettlementType[keyof SettlementType];\n\nexport const SETTLEMENT_TYPE_VALUES = Object.values(SETTLEMENT_TYPE);\n\n/**\n * Type guard for settlement type\n */\nexport function isSettlementType(value: unknown): value is SettlementTypeValue {\n return typeof value === 'string' && SETTLEMENT_TYPE_VALUES.includes(value as SettlementTypeValue);\n}\n\n// ============ EXPORTS ============\n\nexport default {\n SETTLEMENT_STATUS,\n SETTLEMENT_STATUS_VALUES,\n SETTLEMENT_TYPE,\n SETTLEMENT_TYPE_VALUES,\n isSettlementStatus,\n isSettlementType,\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 * Tax Schema\n * @classytic/revenue\n *\n * Mongoose schema for tax breakdown in transactions\n */\n\nimport { Schema } from 'mongoose';\n\n/**\n * Tax Breakdown Schema\n * Embed this in Transaction model to track tax\n *\n * @example\n * ```typescript\n * import mongoose from 'mongoose';\n * import { taxBreakdownSchema } from '@classytic/revenue/schemas';\n *\n * const transactionSchema = new mongoose.Schema({\n * amount: Number,\n * tax: taxBreakdownSchema, // Add tax tracking\n * // ... other fields\n * });\n * ```\n */\nexport const taxBreakdownSchema = new Schema({\n /** Is tax applicable for this transaction? */\n isApplicable: {\n type: Boolean,\n default: false,\n },\n\n /** Tax rate used (0-1, e.g., 0.15 = 15%) */\n rate: {\n type: Number,\n default: 0,\n min: 0,\n max: 1,\n },\n\n /** Base amount (before tax) */\n baseAmount: {\n type: Number,\n default: 0,\n min: 0,\n },\n\n /** Tax amount */\n taxAmount: {\n type: Number,\n default: 0,\n min: 0,\n },\n\n /** Total amount (base + tax) */\n totalAmount: {\n type: Number,\n default: 0,\n min: 0,\n },\n\n /** Were prices tax-inclusive? */\n pricesIncludeTax: {\n type: Boolean,\n },\n\n /** Tax type: collected (revenue), paid (expense), or exempt */\n type: {\n type: String,\n enum: ['collected', 'paid', 'exempt'],\n },\n}, { _id: false });\n\n/**\n * TypeScript type inference\n */\nexport type TaxBreakdown = {\n isApplicable: boolean;\n rate: number;\n baseAmount: number;\n taxAmount: number;\n totalAmount: number;\n pricesIncludeTax?: boolean;\n type?: 'collected' | 'paid' | 'exempt';\n};\n\nexport default taxBreakdownSchema;\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';\nexport * from './tax.schema.js';\n\nimport { baseMetadataSchema } from './common.schema.js';\nimport gatewaySchema from './gateway.schema.js';\nimport paymentSchemas from './payment.schema.js';\nimport commissionSchema from './commission.schema.js';\nimport taxBreakdownSchema from './tax.schema.js';\n\nexport default {\n baseMetadataSchema,\n gatewaySchema,\n commissionSchema,\n taxBreakdownSchema,\n ...paymentSchemas,\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 * Settlement Schema\n * @classytic/revenue\n *\n * Mongoose schema for settlement/payout tracking\n */\n\nimport mongoose, { Schema } from 'mongoose';\nimport { SETTLEMENT_STATUS_VALUES, SETTLEMENT_TYPE_VALUES } from '../../enums/settlement.enums.js';\nimport { PAYOUT_METHOD_VALUES } from '../../enums/split.enums.js';\n\n/**\n * Settlement Schema\n * Tracks payouts from platform to vendors/affiliates/partners\n *\n * Use in your Settlement model:\n * ```typescript\n * import mongoose from 'mongoose';\n * import { settlementSchema } from '@classytic/revenue/schemas';\n *\n * const Settlement = mongoose.model('Settlement', settlementSchema);\n * ```\n */\nexport const settlementSchema = new Schema({\n // ============ IDENTIFICATION ============\n\n organizationId: {\n type: Schema.Types.ObjectId,\n required: true,\n index: true,\n // The organization responsible for this payout\n },\n\n recipientId: {\n type: Schema.Types.ObjectId,\n required: true,\n index: true,\n // Who receives the payout (vendor, affiliate, partner)\n },\n\n recipientType: {\n type: String,\n enum: ['platform', 'organization', 'user', 'affiliate', 'partner'],\n required: true,\n // Type of recipient\n },\n\n // ============ CLASSIFICATION ============\n\n type: {\n type: String,\n enum: SETTLEMENT_TYPE_VALUES,\n required: true,\n // split_payout | platform_withdrawal | manual_payout | escrow_release\n },\n\n status: {\n type: String,\n enum: SETTLEMENT_STATUS_VALUES,\n default: 'pending',\n index: true,\n // pending | processing | completed | failed | cancelled\n },\n\n payoutMethod: {\n type: String,\n enum: PAYOUT_METHOD_VALUES,\n required: true,\n // bank_transfer | mobile_wallet | platform_balance | crypto | manual\n },\n\n // ============ AMOUNT ============\n\n amount: {\n type: Number,\n required: true,\n min: 0,\n // Amount in smallest currency unit (cents, paisa, etc.)\n },\n\n currency: {\n type: String,\n required: true,\n default: 'USD',\n // ISO 4217 currency code\n },\n\n // ============ SOURCE LINKAGE ============\n\n sourceTransactionIds: [{\n type: Schema.Types.ObjectId,\n ref: 'Transaction',\n // Transactions this settlement pays out from\n }],\n\n sourceSplitIds: [{\n type: String,\n // Split IDs within transactions (if applicable)\n }],\n\n // ============ BANK TRANSFER DETAILS ============\n\n bankTransferDetails: {\n accountNumber: { type: String },\n accountName: { type: String },\n bankName: { type: String },\n routingNumber: { type: String },\n swiftCode: { type: String },\n iban: { type: String },\n transferReference: { type: String }, // Bank confirmation reference\n transferredAt: { type: Date },\n },\n\n // ============ MOBILE WALLET DETAILS ============\n\n mobileWalletDetails: {\n provider: { type: String }, // bKash, Nagad, Rocket, etc.\n phoneNumber: { type: String },\n accountNumber: { type: String }, // Wallet account number\n transactionId: { type: String }, // Provider transaction ID\n transferredAt: { type: Date },\n },\n\n // ============ CRYPTO DETAILS ============\n\n cryptoDetails: {\n network: { type: String }, // Ethereum, Bitcoin, etc.\n walletAddress: { type: String },\n transactionHash: { type: String },\n transferredAt: { type: Date },\n },\n\n // ============ PLATFORM BALANCE ============\n\n platformBalanceDetails: {\n balanceId: { type: Schema.Types.ObjectId }, // Reference to balance record\n appliedAt: { type: Date },\n },\n\n // ============ DATES ============\n\n scheduledAt: {\n type: Date,\n index: true,\n // When this payout is scheduled for\n },\n\n processedAt: {\n type: Date,\n // When processing started\n },\n\n completedAt: {\n type: Date,\n // When successfully completed\n },\n\n failedAt: {\n type: Date,\n // When it failed\n },\n\n cancelledAt: {\n type: Date,\n // When it was cancelled\n },\n\n // ============ FAILURE INFO ============\n\n failureReason: {\n type: String,\n // Human-readable failure reason\n },\n\n failureCode: {\n type: String,\n // Machine-readable error code\n },\n\n retryCount: {\n type: Number,\n default: 0,\n min: 0,\n // Number of retry attempts\n },\n\n // ============ NOTES & METADATA ============\n\n notes: {\n type: String,\n // Admin notes about this settlement\n },\n\n metadata: {\n type: Schema.Types.Mixed,\n default: {},\n // Flexible metadata for app-specific data\n },\n}, {\n timestamps: true, // Adds createdAt and updatedAt\n});\n\n// ============ INDEXES ============\n\n// Query by organization and status\nsettlementSchema.index({ organizationId: 1, status: 1 });\n\n// Query by recipient and status\nsettlementSchema.index({ recipientId: 1, status: 1 });\n\n// Query scheduled settlements\nsettlementSchema.index({ type: 1, status: 1, scheduledAt: 1 });\n\n// Query by source transaction\nsettlementSchema.index({ sourceTransactionIds: 1 });\n\n// Query pending payouts by date\nsettlementSchema.index({ status: 1, scheduledAt: 1 });\n\n// ============ TYPESCRIPT TYPE ============\n\nexport type SettlementDocument = mongoose.InferSchemaType<typeof settlementSchema> &\n mongoose.Document & {\n _id: mongoose.Types.ObjectId;\n createdAt: Date;\n updatedAt: Date;\n };\n\n// ============ EXPORTS ============\n\nexport default settlementSchema;\n","/**\n * Settlement Schemas Index\n * @classytic/revenue\n */\n\nexport { settlementSchema, type SettlementDocument } from './settlement.schema.js';\n\nimport { settlementSchema } from './settlement.schema.js';\n\nexport default { settlementSchema };\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';\nexport * from './settlement/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';\nimport settlementSchemas from './settlement/index.js';\n\nexport default {\n ...transactionSchemas,\n ...subscriptionSchemas,\n ...escrowSchemas,\n ...splitSchemas,\n ...settlementSchemas,\n};\n\n"]}
@@ -1,384 +0,0 @@
1
- import * as z from 'zod';
2
-
3
- /**
4
- * Zod Validation Schemas
5
- * @classytic/revenue
6
- *
7
- * Runtime validation with TypeScript inference
8
- * Using Zod v4 - Modern schema validation
9
- *
10
- * Inspired by: tRPC, Zod best practices
11
- */
12
-
13
- /**
14
- * MongoDB ObjectId pattern
15
- */
16
- declare const ObjectIdSchema: z.ZodString;
17
- /**
18
- * Currency code (ISO 4217)
19
- */
20
- declare const CurrencySchema: z.ZodDefault<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
21
- /**
22
- * Money amount in smallest unit (cents, paisa)
23
- */
24
- declare const MoneyAmountSchema: z.ZodNumber;
25
- /**
26
- * Money object
27
- */
28
- declare const MoneySchema: z.ZodObject<{
29
- amount: z.ZodNumber;
30
- currency: z.ZodDefault<z.ZodString>;
31
- }, z.core.$strip>;
32
- /**
33
- * Email address
34
- */
35
- declare const EmailSchema: z.ZodString;
36
- /**
37
- * Idempotency key (optional, auto-generated if not provided)
38
- */
39
- declare const IdempotencyKeySchema: z.ZodOptional<z.ZodString>;
40
- /**
41
- * Metadata object - Zod v4 record syntax
42
- */
43
- declare const MetadataSchema: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
44
- /**
45
- * Create payment intent params
46
- */
47
- declare const CreatePaymentSchema: z.ZodObject<{
48
- amount: z.ZodNumber;
49
- currency: z.ZodDefault<z.ZodString>;
50
- customerId: z.ZodString;
51
- organizationId: z.ZodString;
52
- provider: z.ZodString;
53
- idempotencyKey: z.ZodOptional<z.ZodString>;
54
- description: z.ZodOptional<z.ZodString>;
55
- metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
56
- successUrl: z.ZodOptional<z.ZodString>;
57
- cancelUrl: z.ZodOptional<z.ZodString>;
58
- }, z.core.$strip>;
59
- type CreatePaymentInput = z.infer<typeof CreatePaymentSchema>;
60
- /**
61
- * Verify payment params
62
- */
63
- declare const VerifyPaymentSchema: z.ZodObject<{
64
- id: z.ZodString;
65
- provider: z.ZodOptional<z.ZodString>;
66
- data: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
67
- }, z.core.$strip>;
68
- type VerifyPaymentInput = z.infer<typeof VerifyPaymentSchema>;
69
- /**
70
- * Refund params
71
- */
72
- declare const RefundSchema: z.ZodObject<{
73
- transactionId: z.ZodString;
74
- amount: z.ZodOptional<z.ZodNumber>;
75
- reason: z.ZodOptional<z.ZodString>;
76
- idempotencyKey: z.ZodOptional<z.ZodString>;
77
- metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
78
- }, z.core.$strip>;
79
- type RefundInput = z.infer<typeof RefundSchema>;
80
- /**
81
- * Subscription status
82
- */
83
- declare const SubscriptionStatusSchema: z.ZodEnum<{
84
- pending: "pending";
85
- active: "active";
86
- paused: "paused";
87
- cancelled: "cancelled";
88
- expired: "expired";
89
- past_due: "past_due";
90
- }>;
91
- type SubscriptionStatus = z.infer<typeof SubscriptionStatusSchema>;
92
- /**
93
- * Subscription interval
94
- */
95
- declare const IntervalSchema: z.ZodEnum<{
96
- day: "day";
97
- week: "week";
98
- month: "month";
99
- year: "year";
100
- one_time: "one_time";
101
- }>;
102
- type Interval = z.infer<typeof IntervalSchema>;
103
- /**
104
- * Create subscription params
105
- */
106
- declare const CreateSubscriptionSchema: z.ZodObject<{
107
- customerId: z.ZodString;
108
- organizationId: z.ZodString;
109
- planKey: z.ZodString;
110
- amount: z.ZodNumber;
111
- currency: z.ZodDefault<z.ZodString>;
112
- interval: z.ZodDefault<z.ZodEnum<{
113
- day: "day";
114
- week: "week";
115
- month: "month";
116
- year: "year";
117
- one_time: "one_time";
118
- }>>;
119
- intervalCount: z.ZodDefault<z.ZodNumber>;
120
- provider: z.ZodString;
121
- sourceId: z.ZodOptional<z.ZodString>;
122
- sourceModel: z.ZodOptional<z.ZodString>;
123
- idempotencyKey: z.ZodOptional<z.ZodString>;
124
- metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
125
- trialDays: z.ZodOptional<z.ZodNumber>;
126
- }, z.core.$strip>;
127
- type CreateSubscriptionInput = z.infer<typeof CreateSubscriptionSchema>;
128
- /**
129
- * Cancel subscription params
130
- */
131
- declare const CancelSubscriptionSchema: z.ZodObject<{
132
- subscriptionId: z.ZodString;
133
- immediate: z.ZodDefault<z.ZodBoolean>;
134
- reason: z.ZodOptional<z.ZodString>;
135
- }, z.core.$strip>;
136
- type CancelSubscriptionInput = z.infer<typeof CancelSubscriptionSchema>;
137
- /**
138
- * Monetization type
139
- */
140
- declare const MonetizationTypeSchema: z.ZodEnum<{
141
- purchase: "purchase";
142
- subscription: "subscription";
143
- free: "free";
144
- }>;
145
- type MonetizationType = z.infer<typeof MonetizationTypeSchema>;
146
- /**
147
- * Create monetization params (unified API)
148
- */
149
- declare const CreateMonetizationSchema: z.ZodObject<{
150
- type: z.ZodDefault<z.ZodEnum<{
151
- purchase: "purchase";
152
- subscription: "subscription";
153
- free: "free";
154
- }>>;
155
- amount: z.ZodOptional<z.ZodNumber>;
156
- currency: z.ZodDefault<z.ZodString>;
157
- customerId: z.ZodString;
158
- organizationId: z.ZodString;
159
- provider: z.ZodString;
160
- planKey: z.ZodOptional<z.ZodString>;
161
- sourceId: z.ZodOptional<z.ZodString>;
162
- sourceModel: z.ZodOptional<z.ZodString>;
163
- idempotencyKey: z.ZodOptional<z.ZodString>;
164
- metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
165
- interval: z.ZodOptional<z.ZodEnum<{
166
- day: "day";
167
- week: "week";
168
- month: "month";
169
- year: "year";
170
- one_time: "one_time";
171
- }>>;
172
- trialDays: z.ZodOptional<z.ZodNumber>;
173
- }, z.core.$strip>;
174
- type CreateMonetizationInput = z.infer<typeof CreateMonetizationSchema>;
175
- /**
176
- * Commission split recipient
177
- */
178
- declare const SplitRecipientSchema: z.ZodObject<{
179
- recipientId: z.ZodString;
180
- recipientType: z.ZodDefault<z.ZodString>;
181
- percentage: z.ZodNumber;
182
- role: z.ZodOptional<z.ZodString>;
183
- }, z.core.$strip>;
184
- type SplitRecipient = z.infer<typeof SplitRecipientSchema>;
185
- /**
186
- * Commission configuration
187
- */
188
- declare const CommissionConfigSchema: z.ZodObject<{
189
- platformRate: z.ZodDefault<z.ZodNumber>;
190
- gatewayFeeRate: z.ZodDefault<z.ZodNumber>;
191
- gatewayFixedFee: z.ZodDefault<z.ZodNumber>;
192
- splits: z.ZodOptional<z.ZodArray<z.ZodObject<{
193
- recipientId: z.ZodString;
194
- recipientType: z.ZodDefault<z.ZodString>;
195
- percentage: z.ZodNumber;
196
- role: z.ZodOptional<z.ZodString>;
197
- }, z.core.$strip>>>;
198
- affiliate: z.ZodOptional<z.ZodObject<{
199
- recipientId: z.ZodString;
200
- recipientType: z.ZodDefault<z.ZodString>;
201
- rate: z.ZodNumber;
202
- }, z.core.$strip>>;
203
- }, z.core.$strip>;
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>;
253
- /**
254
- * Hold status
255
- */
256
- declare const HoldStatusSchema: z.ZodEnum<{
257
- cancelled: "cancelled";
258
- none: "none";
259
- held: "held";
260
- partial_release: "partial_release";
261
- released: "released";
262
- }>;
263
- type HoldStatus = z.infer<typeof HoldStatusSchema>;
264
- /**
265
- * Create hold params
266
- */
267
- declare const CreateHoldSchema: z.ZodObject<{
268
- transactionId: z.ZodString;
269
- amount: z.ZodOptional<z.ZodNumber>;
270
- holdUntil: z.ZodOptional<z.ZodDate>;
271
- reason: z.ZodOptional<z.ZodString>;
272
- }, z.core.$strip>;
273
- type CreateHoldInput = z.infer<typeof CreateHoldSchema>;
274
- /**
275
- * Release hold params
276
- */
277
- declare const ReleaseHoldSchema: z.ZodObject<{
278
- transactionId: z.ZodString;
279
- amount: z.ZodOptional<z.ZodNumber>;
280
- recipientId: z.ZodString;
281
- recipientType: z.ZodDefault<z.ZodString>;
282
- notes: z.ZodOptional<z.ZodString>;
283
- }, z.core.$strip>;
284
- type ReleaseHoldInput = z.infer<typeof ReleaseHoldSchema>;
285
- /**
286
- * Provider configuration
287
- */
288
- declare const ProviderConfigSchema: z.ZodRecord<z.ZodString, z.ZodUnknown>;
289
- /**
290
- * Retry configuration
291
- */
292
- declare const RetryConfigSchema: z.ZodObject<{
293
- maxAttempts: z.ZodDefault<z.ZodNumber>;
294
- baseDelay: z.ZodDefault<z.ZodNumber>;
295
- maxDelay: z.ZodDefault<z.ZodNumber>;
296
- backoffMultiplier: z.ZodDefault<z.ZodNumber>;
297
- jitter: z.ZodDefault<z.ZodNumber>;
298
- }, z.core.$strip>;
299
- type RetryConfig = z.infer<typeof RetryConfigSchema>;
300
- /**
301
- * Revenue configuration
302
- */
303
- declare const RevenueConfigSchema: z.ZodObject<{
304
- defaultCurrency: z.ZodDefault<z.ZodString>;
305
- commission: z.ZodOptional<z.ZodObject<{
306
- platformRate: z.ZodDefault<z.ZodNumber>;
307
- gatewayFeeRate: z.ZodDefault<z.ZodNumber>;
308
- gatewayFixedFee: z.ZodDefault<z.ZodNumber>;
309
- splits: z.ZodOptional<z.ZodArray<z.ZodObject<{
310
- recipientId: z.ZodString;
311
- recipientType: z.ZodDefault<z.ZodString>;
312
- percentage: z.ZodNumber;
313
- role: z.ZodOptional<z.ZodString>;
314
- }, z.core.$strip>>>;
315
- affiliate: z.ZodOptional<z.ZodObject<{
316
- recipientId: z.ZodString;
317
- recipientType: z.ZodDefault<z.ZodString>;
318
- rate: z.ZodNumber;
319
- }, z.core.$strip>>;
320
- }, z.core.$strip>>;
321
- retry: z.ZodOptional<z.ZodObject<{
322
- maxAttempts: z.ZodDefault<z.ZodNumber>;
323
- baseDelay: z.ZodDefault<z.ZodNumber>;
324
- maxDelay: z.ZodDefault<z.ZodNumber>;
325
- backoffMultiplier: z.ZodDefault<z.ZodNumber>;
326
- jitter: z.ZodDefault<z.ZodNumber>;
327
- }, z.core.$strip>>;
328
- debug: z.ZodDefault<z.ZodBoolean>;
329
- environment: z.ZodDefault<z.ZodEnum<{
330
- development: "development";
331
- staging: "staging";
332
- production: "production";
333
- }>>;
334
- }, z.core.$strip>;
335
- type RevenueConfigInput = z.infer<typeof RevenueConfigSchema>;
336
- /**
337
- * Validate input against schema
338
- */
339
- declare function validate<T extends z.ZodType>(schema: T, data: unknown): z.infer<T>;
340
- /**
341
- * Safe validate (returns result, doesn't throw)
342
- */
343
- declare function safeValidate<T extends z.ZodType>(schema: T, data: unknown): {
344
- success: true;
345
- data: z.infer<T>;
346
- } | {
347
- success: false;
348
- error: z.ZodError;
349
- };
350
- /**
351
- * Format Zod error for display
352
- * Zod v4 uses `issues` property
353
- */
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;
383
-
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 };