@classytic/revenue 1.0.0 → 1.0.2

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/providers/base.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["/**\r\n * Payment Provider Base Class\r\n * @classytic/revenue\r\n *\r\n * Abstract base class for all payment providers\r\n * Inspired by: Vercel AI SDK, Stripe SDK\r\n */\r\n\r\nimport type {\r\n CreateIntentParams,\r\n PaymentIntentData,\r\n PaymentResultData,\r\n RefundResultData,\r\n WebhookEventData,\r\n ProviderCapabilities,\r\n} from '../types/index.js';\r\n\r\n/**\r\n * Payment Intent - standardized response from createIntent\r\n */\r\nexport class PaymentIntent implements PaymentIntentData {\r\n public readonly id: string;\r\n public readonly sessionId: string | null;\r\n public readonly paymentIntentId: string | null;\r\n public readonly provider: string;\r\n public readonly status: string;\r\n public readonly amount: number;\r\n public readonly currency: string;\r\n public readonly metadata: Record<string, unknown>;\r\n public readonly clientSecret?: string;\r\n public readonly paymentUrl?: string;\r\n public readonly instructions?: string;\r\n public readonly raw?: unknown;\r\n\r\n constructor(data: PaymentIntentData) {\r\n this.id = data.id;\r\n this.sessionId = data.sessionId ?? null;\r\n this.paymentIntentId = data.paymentIntentId ?? null;\r\n this.provider = data.provider;\r\n this.status = data.status;\r\n this.amount = data.amount;\r\n this.currency = data.currency ?? 'BDT';\r\n this.metadata = data.metadata ?? {};\r\n this.clientSecret = data.clientSecret;\r\n this.paymentUrl = data.paymentUrl;\r\n this.instructions = data.instructions;\r\n this.raw = data.raw;\r\n }\r\n}\r\n\r\n/**\r\n * Payment Result - standardized response from verifyPayment\r\n */\r\nexport class PaymentResult implements PaymentResultData {\r\n public readonly id: string;\r\n public readonly provider: string;\r\n public readonly status: 'succeeded' | 'failed' | 'processing';\r\n public readonly amount?: number;\r\n public readonly currency: string;\r\n public readonly paidAt?: Date;\r\n public readonly metadata: Record<string, unknown>;\r\n public readonly raw?: unknown;\r\n\r\n constructor(data: PaymentResultData) {\r\n this.id = data.id;\r\n this.provider = data.provider;\r\n this.status = data.status;\r\n this.amount = data.amount;\r\n this.currency = data.currency ?? 'BDT';\r\n this.paidAt = data.paidAt;\r\n this.metadata = data.metadata ?? {};\r\n this.raw = data.raw;\r\n }\r\n}\r\n\r\n/**\r\n * Refund Result - standardized response from refund\r\n */\r\nexport class RefundResult implements RefundResultData {\r\n public readonly id: string;\r\n public readonly provider: string;\r\n public readonly status: 'succeeded' | 'failed' | 'processing';\r\n public readonly amount?: number;\r\n public readonly currency: string;\r\n public readonly refundedAt?: Date;\r\n public readonly reason?: string;\r\n public readonly metadata: Record<string, unknown>;\r\n public readonly raw?: unknown;\r\n\r\n constructor(data: RefundResultData) {\r\n this.id = data.id;\r\n this.provider = data.provider;\r\n this.status = data.status;\r\n this.amount = data.amount;\r\n this.currency = data.currency ?? 'BDT';\r\n this.refundedAt = data.refundedAt;\r\n this.reason = data.reason;\r\n this.metadata = data.metadata ?? {};\r\n this.raw = data.raw;\r\n }\r\n}\r\n\r\n/**\r\n * Webhook Event - standardized webhook event\r\n */\r\nexport class WebhookEvent implements WebhookEventData {\r\n public readonly id: string;\r\n public readonly provider: string;\r\n public readonly type: string;\r\n public readonly data: { sessionId?: string; paymentIntentId?: string; [key: string]: unknown };\r\n public readonly createdAt?: Date;\r\n public readonly raw?: unknown;\r\n\r\n constructor(data: WebhookEventData) {\r\n this.id = data.id;\r\n this.provider = data.provider;\r\n this.type = data.type;\r\n this.data = data.data;\r\n this.createdAt = data.createdAt;\r\n this.raw = data.raw;\r\n }\r\n}\r\n\r\n/**\r\n * Base Payment Provider\r\n * All payment providers must extend this class\r\n */\r\nexport abstract class PaymentProvider {\r\n public readonly config: Record<string, unknown>;\r\n public readonly name: string;\r\n\r\n constructor(config: Record<string, unknown> = {}) {\r\n this.config = config;\r\n this.name = 'base'; // Override in subclass\r\n }\r\n\r\n /**\r\n * Create a payment intent\r\n * @param params - Payment parameters\r\n * @returns Promise<PaymentIntent>\r\n */\r\n abstract createIntent(params: CreateIntentParams): Promise<PaymentIntent>;\r\n\r\n /**\r\n * Verify a payment\r\n * @param intentId - Payment intent ID\r\n * @returns Promise<PaymentResult>\r\n */\r\n abstract verifyPayment(intentId: string): Promise<PaymentResult>;\r\n\r\n /**\r\n * Get payment status\r\n * @param intentId - Payment intent ID\r\n * @returns Promise<PaymentResult>\r\n */\r\n abstract getStatus(intentId: string): Promise<PaymentResult>;\r\n\r\n /**\r\n * Refund a payment\r\n * @param paymentId - Payment ID\r\n * @param amount - Amount to refund (optional, full refund if not provided)\r\n * @param options - Refund options\r\n * @returns Promise<RefundResult>\r\n */\r\n abstract refund(\r\n paymentId: string,\r\n amount?: number | null,\r\n options?: { reason?: string }\r\n ): Promise<RefundResult>;\r\n\r\n /**\r\n * Handle webhook from provider\r\n * @param payload - Webhook payload\r\n * @param headers - Request headers (for signature verification)\r\n * @returns Promise<WebhookEvent>\r\n */\r\n abstract handleWebhook(\r\n payload: unknown,\r\n headers?: Record<string, string>\r\n ): Promise<WebhookEvent>;\r\n\r\n /**\r\n * Verify webhook signature (optional)\r\n * @param payload - Webhook payload\r\n * @param signature - Webhook signature\r\n * @returns boolean\r\n */\r\n verifyWebhookSignature(_payload: unknown, _signature: string): boolean {\r\n // Override in subclass if provider supports webhook signatures\r\n return true;\r\n }\r\n\r\n /**\r\n * Get provider capabilities\r\n * @returns ProviderCapabilities\r\n */\r\n getCapabilities(): ProviderCapabilities {\r\n return {\r\n supportsWebhooks: false,\r\n supportsRefunds: false,\r\n supportsPartialRefunds: false,\r\n requiresManualVerification: true,\r\n };\r\n }\r\n}\r\n\r\nexport default PaymentProvider;\r\n\r\n"]}
1
+ {"version":3,"sources":["../../src/providers/base.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Payment Provider Base Class\n * @classytic/revenue\n *\n * Abstract base class for all payment providers\n * Inspired by: Vercel AI SDK, Stripe SDK\n */\n\nimport type {\n CreateIntentParams,\n PaymentIntentData,\n PaymentResultData,\n RefundResultData,\n WebhookEventData,\n ProviderCapabilities,\n} from '../types/index.js';\n\n/**\n * Payment Intent - standardized response from createIntent\n */\nexport class PaymentIntent implements PaymentIntentData {\n public readonly id: string;\n public readonly sessionId: string | null;\n public readonly paymentIntentId: string | null;\n public readonly provider: string;\n public readonly status: string;\n public readonly amount: number;\n public readonly currency: string;\n public readonly metadata: Record<string, unknown>;\n public readonly clientSecret?: string;\n public readonly paymentUrl?: string;\n public readonly instructions?: string;\n public readonly raw?: unknown;\n\n constructor(data: PaymentIntentData) {\n this.id = data.id;\n this.sessionId = data.sessionId ?? null;\n this.paymentIntentId = data.paymentIntentId ?? null;\n this.provider = data.provider;\n this.status = data.status;\n this.amount = data.amount;\n this.currency = data.currency ?? 'BDT';\n this.metadata = data.metadata ?? {};\n this.clientSecret = data.clientSecret;\n this.paymentUrl = data.paymentUrl;\n this.instructions = data.instructions;\n this.raw = data.raw;\n }\n}\n\n/**\n * Payment Result - standardized response from verifyPayment\n */\nexport class PaymentResult implements PaymentResultData {\n public readonly id: string;\n public readonly provider: string;\n public readonly status: 'succeeded' | 'failed' | 'processing';\n public readonly amount?: number;\n public readonly currency: string;\n public readonly paidAt?: Date;\n public readonly metadata: Record<string, unknown>;\n public readonly raw?: unknown;\n\n constructor(data: PaymentResultData) {\n this.id = data.id;\n this.provider = data.provider;\n this.status = data.status;\n this.amount = data.amount;\n this.currency = data.currency ?? 'BDT';\n this.paidAt = data.paidAt;\n this.metadata = data.metadata ?? {};\n this.raw = data.raw;\n }\n}\n\n/**\n * Refund Result - standardized response from refund\n */\nexport class RefundResult implements RefundResultData {\n public readonly id: string;\n public readonly provider: string;\n public readonly status: 'succeeded' | 'failed' | 'processing';\n public readonly amount?: number;\n public readonly currency: string;\n public readonly refundedAt?: Date;\n public readonly reason?: string;\n public readonly metadata: Record<string, unknown>;\n public readonly raw?: unknown;\n\n constructor(data: RefundResultData) {\n this.id = data.id;\n this.provider = data.provider;\n this.status = data.status;\n this.amount = data.amount;\n this.currency = data.currency ?? 'BDT';\n this.refundedAt = data.refundedAt;\n this.reason = data.reason;\n this.metadata = data.metadata ?? {};\n this.raw = data.raw;\n }\n}\n\n/**\n * Webhook Event - standardized webhook event\n */\nexport class WebhookEvent implements WebhookEventData {\n public readonly id: string;\n public readonly provider: string;\n public readonly type: string;\n public readonly data: { sessionId?: string; paymentIntentId?: string; [key: string]: unknown };\n public readonly createdAt?: Date;\n public readonly raw?: unknown;\n\n constructor(data: WebhookEventData) {\n this.id = data.id;\n this.provider = data.provider;\n this.type = data.type;\n this.data = data.data;\n this.createdAt = data.createdAt;\n this.raw = data.raw;\n }\n}\n\n/**\n * Base Payment Provider\n * All payment providers must extend this class\n */\nexport abstract class PaymentProvider {\n public readonly config: Record<string, unknown>;\n public readonly name: string;\n\n constructor(config: Record<string, unknown> = {}) {\n this.config = config;\n this.name = 'base'; // Override in subclass\n }\n\n /**\n * Create a payment intent\n * @param params - Payment parameters\n * @returns Promise<PaymentIntent>\n */\n abstract createIntent(params: CreateIntentParams): Promise<PaymentIntent>;\n\n /**\n * Verify a payment\n * @param intentId - Payment intent ID\n * @returns Promise<PaymentResult>\n */\n abstract verifyPayment(intentId: string): Promise<PaymentResult>;\n\n /**\n * Get payment status\n * @param intentId - Payment intent ID\n * @returns Promise<PaymentResult>\n */\n abstract getStatus(intentId: string): Promise<PaymentResult>;\n\n /**\n * Refund a payment\n * @param paymentId - Payment ID\n * @param amount - Amount to refund (optional, full refund if not provided)\n * @param options - Refund options\n * @returns Promise<RefundResult>\n */\n abstract refund(\n paymentId: string,\n amount?: number | null,\n options?: { reason?: string }\n ): Promise<RefundResult>;\n\n /**\n * Handle webhook from provider\n * @param payload - Webhook payload\n * @param headers - Request headers (for signature verification)\n * @returns Promise<WebhookEvent>\n */\n abstract handleWebhook(\n payload: unknown,\n headers?: Record<string, string>\n ): Promise<WebhookEvent>;\n\n /**\n * Verify webhook signature (optional)\n * @param payload - Webhook payload\n * @param signature - Webhook signature\n * @returns boolean\n */\n verifyWebhookSignature(_payload: unknown, _signature: string): boolean {\n // Override in subclass if provider supports webhook signatures\n return true;\n }\n\n /**\n * Get provider capabilities\n * @returns ProviderCapabilities\n */\n getCapabilities(): ProviderCapabilities {\n return {\n supportsWebhooks: false,\n supportsRefunds: false,\n supportsPartialRefunds: false,\n requiresManualVerification: true,\n };\n }\n}\n\nexport default PaymentProvider;\n\n"]}
@@ -1,5 +1,5 @@
1
1
  import * as mongoose from 'mongoose';
2
- export { b as baseMetadataSchema, d as commissionSchema, c as currentPaymentSchema, g as gatewaySchema, h as holdSchema, a as paymentDetailsSchema, p as paymentSummarySchema, e as planSchema, r as referenceSchema, f as splitSchema, s as subscriptionInfoSchema, t as tenantSnapshotSchema } from '../split.schema-BPdFZMbU.js';
2
+ export { b as baseMetadataSchema, d as commissionSchema, c as currentPaymentSchema, g as gatewaySchema, h as holdSchema, a as paymentDetailsSchema, p as paymentSummarySchema, e as planSchema, r as referenceSchema, f as splitSchema, s as subscriptionInfoSchema, t as tenantSnapshotSchema } from '../split.schema-DYVP7Wu2.js';
3
3
 
4
4
  declare const _default: {
5
5
  splitSchema: mongoose.Schema<any, mongoose.Model<any, any, any, any, any, any, any>, {}, {}, {}, {}, {
@@ -10,7 +10,7 @@ declare const _default: {
10
10
  recipientId: string;
11
11
  grossAmount: number;
12
12
  netAmount: number;
13
- status: "pending" | "cancelled" | "paid" | "waived" | "due";
13
+ status: "pending" | "cancelled" | "due" | "paid" | "waived";
14
14
  rate: number;
15
15
  gatewayFeeRate: number;
16
16
  gatewayFeeAmount: number;
@@ -25,7 +25,7 @@ declare const _default: {
25
25
  recipientId: string;
26
26
  grossAmount: number;
27
27
  netAmount: number;
28
- status: "pending" | "cancelled" | "paid" | "waived" | "due";
28
+ status: "pending" | "cancelled" | "due" | "paid" | "waived";
29
29
  rate: number;
30
30
  gatewayFeeRate: number;
31
31
  gatewayFeeAmount: number;
@@ -44,7 +44,7 @@ declare const _default: {
44
44
  recipientId: string;
45
45
  grossAmount: number;
46
46
  netAmount: number;
47
- status: "pending" | "cancelled" | "paid" | "waived" | "due";
47
+ status: "pending" | "cancelled" | "due" | "paid" | "waived";
48
48
  rate: number;
49
49
  gatewayFeeRate: number;
50
50
  gatewayFeeAmount: number;
@@ -68,7 +68,7 @@ declare const _default: {
68
68
  recipientId: string;
69
69
  grossAmount: number;
70
70
  netAmount: number;
71
- status: "pending" | "cancelled" | "paid" | "waived" | "due";
71
+ status: "pending" | "cancelled" | "due" | "paid" | "waived";
72
72
  rate: number;
73
73
  gatewayFeeRate: number;
74
74
  gatewayFeeAmount: number;
@@ -87,7 +87,7 @@ declare const _default: {
87
87
  recipientId: string;
88
88
  grossAmount: number;
89
89
  netAmount: number;
90
- status: "pending" | "cancelled" | "paid" | "waived" | "due";
90
+ status: "pending" | "cancelled" | "due" | "paid" | "waived";
91
91
  rate: number;
92
92
  gatewayFeeRate: number;
93
93
  gatewayFeeAmount: number;
@@ -109,7 +109,7 @@ declare const _default: {
109
109
  recipientId: string;
110
110
  grossAmount: number;
111
111
  netAmount: number;
112
- status: "pending" | "cancelled" | "paid" | "waived" | "due";
112
+ status: "pending" | "cancelled" | "due" | "paid" | "waived";
113
113
  rate: number;
114
114
  gatewayFeeRate: number;
115
115
  gatewayFeeAmount: number;
@@ -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":["/**\r\n * Common Transaction Schemas\r\n * @classytic/revenue\r\n *\r\n * Base schemas shared across transaction types\r\n */\r\n\r\nimport { Schema } from 'mongoose';\r\n\r\n/**\r\n * Base metadata schema for transactions\r\n */\r\nexport const baseMetadataSchema = new Schema(\r\n {\r\n // Flexible key-value metadata\r\n },\r\n { _id: false, strict: false }\r\n);\r\n\r\n/**\r\n * Reference schema for polymorphic associations\r\n */\r\nexport const referenceSchema = {\r\n referenceId: {\r\n type: Schema.Types.ObjectId,\r\n refPath: 'referenceModel',\r\n index: true,\r\n },\r\n referenceModel: {\r\n type: String,\r\n enum: ['Subscription', 'Order', 'Membership', 'Booking', 'Invoice'],\r\n },\r\n};\r\n\r\nexport default {\r\n baseMetadataSchema,\r\n referenceSchema,\r\n};\r\n\r\n","/**\r\n * Gateway Schema\r\n * @classytic/revenue\r\n *\r\n * Schema for payment gateway information\r\n */\r\n\r\nimport { Schema } from 'mongoose';\r\n\r\n/**\r\n * Gateway Schema - Embedded in Transaction\r\n * Tracks payment gateway details\r\n */\r\nexport const gatewaySchema = new Schema(\r\n {\r\n type: {\r\n type: String,\r\n required: true,\r\n index: true,\r\n },\r\n sessionId: {\r\n type: String,\r\n sparse: true,\r\n index: true,\r\n },\r\n paymentIntentId: {\r\n type: String,\r\n sparse: true,\r\n index: true,\r\n },\r\n provider: {\r\n type: String,\r\n },\r\n metadata: {\r\n type: Schema.Types.Mixed,\r\n default: {},\r\n },\r\n verificationData: {\r\n type: Schema.Types.Mixed,\r\n },\r\n },\r\n { _id: false }\r\n);\r\n\r\nexport default gatewaySchema;\r\n\r\n","/**\r\n * Payment Enums\r\n * @classytic/revenue\r\n *\r\n * Library-managed payment enums only.\r\n * Users define their own payment methods in their schema.\r\n */\r\n\r\n// ============ PAYMENT STATUS ============\r\n/**\r\n * Payment Status - Library-managed states\r\n */\r\nexport const PAYMENT_STATUS = {\r\n PENDING: 'pending',\r\n VERIFIED: 'verified',\r\n FAILED: 'failed',\r\n REFUNDED: 'refunded',\r\n CANCELLED: 'cancelled',\r\n} as const;\r\n\r\nexport type PaymentStatus = typeof PAYMENT_STATUS;\r\nexport type PaymentStatusValue = PaymentStatus[keyof PaymentStatus];\r\nexport const PAYMENT_STATUS_VALUES = Object.values(PAYMENT_STATUS);\r\n\r\n// ============ PAYMENT GATEWAY TYPES ============\r\n/**\r\n * Common gateway type constants for convenience\r\n *\r\n * ⚠️ IMPORTANT: These are NOT restrictions - just common reference values\r\n *\r\n * You can register ANY custom gateway provider by passing it to createRevenue():\r\n *\r\n * @example\r\n * ```typescript\r\n * const revenue = createRevenue({\r\n * providers: {\r\n * manual: new ManualProvider(),\r\n * bkash: new BkashProvider(), // ✅ Custom gateway\r\n * nagad: new NagadProvider(), // ✅ Custom gateway\r\n * stripe: new StripeProvider(), // ✅ Custom gateway\r\n * paypal: new PaypalProvider(), // ✅ Any gateway you want\r\n * }\r\n * });\r\n *\r\n * // Use by name\r\n * await revenue.monetization.create({ gateway: 'bkash', ... });\r\n * ```\r\n *\r\n * Reference values:\r\n * - MANUAL: Built-in manual provider (@classytic/revenue-manual)\r\n * - STRIPE: Stripe provider (build with @classytic/revenue-stripe)\r\n * - SSLCOMMERZ: SSLCommerz provider (build with @classytic/revenue-sslcommerz)\r\n *\r\n * Add your own: bkash, nagad, rocket, paypal, razorpay, flutterwave, etc.\r\n */\r\nexport const PAYMENT_GATEWAY_TYPE = {\r\n MANUAL: 'manual',\r\n STRIPE: 'stripe',\r\n SSLCOMMERZ: 'sslcommerz',\r\n} as const;\r\n\r\nexport type PaymentGatewayType = typeof PAYMENT_GATEWAY_TYPE;\r\nexport type PaymentGatewayTypeValue = PaymentGatewayType[keyof PaymentGatewayType];\r\nexport const PAYMENT_GATEWAY_TYPE_VALUES = Object.values(PAYMENT_GATEWAY_TYPE);\r\n\r\n// Backward compatibility alias\r\nexport const GATEWAY_TYPES = PAYMENT_GATEWAY_TYPE;\r\nexport const GATEWAY_TYPE_VALUES = PAYMENT_GATEWAY_TYPE_VALUES;\r\n\r\n","/**\r\n * Subscription Enums\r\n * @classytic/revenue\r\n *\r\n * All subscription-related enums and constants\r\n */\r\n\r\n// ============ SUBSCRIPTION STATUS ============\r\n/**\r\n * Subscription Status\r\n */\r\nexport const SUBSCRIPTION_STATUS = {\r\n ACTIVE: 'active',\r\n PAUSED: 'paused',\r\n CANCELLED: 'cancelled',\r\n EXPIRED: 'expired',\r\n PENDING: 'pending',\r\n INACTIVE: 'inactive',\r\n} as const;\r\n\r\nexport type SubscriptionStatus = typeof SUBSCRIPTION_STATUS;\r\nexport type SubscriptionStatusValue = SubscriptionStatus[keyof SubscriptionStatus];\r\nexport const SUBSCRIPTION_STATUS_VALUES = Object.values(SUBSCRIPTION_STATUS);\r\n\r\n// ============ PLAN KEYS ============\r\n/**\r\n * Supported plan intervals\r\n */\r\nexport const PLAN_KEYS = {\r\n MONTHLY: 'monthly',\r\n QUARTERLY: 'quarterly',\r\n YEARLY: 'yearly',\r\n} as const;\r\n\r\nexport type PlanKeys = typeof PLAN_KEYS;\r\nexport type PlanKeyValue = PlanKeys[keyof PlanKeys];\r\nexport const PLAN_KEY_VALUES = Object.values(PLAN_KEYS);\r\n\r\n","/**\r\n * Escrow/Hold Enums\r\n * @classytic/revenue\r\n *\r\n * Enums for platform-as-intermediary payment flow\r\n */\r\n\r\nexport const HOLD_STATUS = {\r\n PENDING: 'pending',\r\n HELD: 'held',\r\n RELEASED: 'released',\r\n CANCELLED: 'cancelled',\r\n EXPIRED: 'expired',\r\n PARTIALLY_RELEASED: 'partially_released',\r\n} as const;\r\n\r\nexport type HoldStatus = typeof HOLD_STATUS;\r\nexport type HoldStatusValue = HoldStatus[keyof HoldStatus];\r\nexport const HOLD_STATUS_VALUES = Object.values(HOLD_STATUS);\r\n\r\nexport const RELEASE_REASON = {\r\n PAYMENT_VERIFIED: 'payment_verified',\r\n MANUAL_RELEASE: 'manual_release',\r\n AUTO_RELEASE: 'auto_release',\r\n DISPUTE_RESOLVED: 'dispute_resolved',\r\n} as const;\r\n\r\nexport type ReleaseReason = typeof RELEASE_REASON;\r\nexport type ReleaseReasonValue = ReleaseReason[keyof ReleaseReason];\r\nexport const RELEASE_REASON_VALUES = Object.values(RELEASE_REASON);\r\n\r\nexport const HOLD_REASON = {\r\n PAYMENT_VERIFICATION: 'payment_verification',\r\n FRAUD_CHECK: 'fraud_check',\r\n MANUAL_REVIEW: 'manual_review',\r\n DISPUTE: 'dispute',\r\n COMPLIANCE: 'compliance',\r\n} as const;\r\n\r\nexport type HoldReason = typeof HOLD_REASON;\r\nexport type HoldReasonValue = HoldReason[keyof HoldReason];\r\nexport const HOLD_REASON_VALUES = Object.values(HOLD_REASON);\r\n\r\n","/**\r\n * Split Payment Enums\r\n * @classytic/revenue\r\n *\r\n * Enums for multi-party commission splits\r\n */\r\n\r\nexport const SPLIT_TYPE = {\r\n PLATFORM_COMMISSION: 'platform_commission',\r\n AFFILIATE_COMMISSION: 'affiliate_commission',\r\n REFERRAL_COMMISSION: 'referral_commission',\r\n PARTNER_COMMISSION: 'partner_commission',\r\n CUSTOM: 'custom',\r\n} as const;\r\n\r\nexport type SplitType = typeof SPLIT_TYPE;\r\nexport type SplitTypeValue = SplitType[keyof SplitType];\r\nexport const SPLIT_TYPE_VALUES = Object.values(SPLIT_TYPE);\r\n\r\nexport const SPLIT_STATUS = {\r\n PENDING: 'pending',\r\n DUE: 'due',\r\n PAID: 'paid',\r\n WAIVED: 'waived',\r\n CANCELLED: 'cancelled',\r\n} as const;\r\n\r\nexport type SplitStatus = typeof SPLIT_STATUS;\r\nexport type SplitStatusValue = SplitStatus[keyof SplitStatus];\r\nexport const SPLIT_STATUS_VALUES = Object.values(SPLIT_STATUS);\r\n\r\nexport const PAYOUT_METHOD = {\r\n BANK_TRANSFER: 'bank_transfer',\r\n MOBILE_WALLET: 'mobile_wallet',\r\n PLATFORM_BALANCE: 'platform_balance',\r\n CRYPTO: 'crypto',\r\n CHECK: 'check',\r\n MANUAL: 'manual',\r\n} as const;\r\n\r\nexport type PayoutMethod = typeof PAYOUT_METHOD;\r\nexport type PayoutMethodValue = PayoutMethod[keyof PayoutMethod];\r\nexport const PAYOUT_METHOD_VALUES = Object.values(PAYOUT_METHOD);\r\n\r\n","/**\r\n * Payment Schemas for Transaction Model\r\n * @classytic/revenue\r\n *\r\n * Schemas for payment tracking in transactions\r\n */\r\n\r\nimport { Schema } from 'mongoose';\r\nimport {\r\n PAYMENT_STATUS_VALUES,\r\n} from '../../enums/index.js';\r\n\r\n/**\r\n * Current Payment Schema\r\n * Use this in your model: currentPayment: { type: currentPaymentSchema }\r\n *\r\n * Tracks the latest payment transaction for an entity\r\n */\r\nexport const currentPaymentSchema = new Schema(\r\n {\r\n transactionId: {\r\n type: Schema.Types.ObjectId,\r\n ref: 'Transaction',\r\n index: true,\r\n },\r\n amount: {\r\n type: Number,\r\n min: 0,\r\n },\r\n status: {\r\n type: String,\r\n enum: PAYMENT_STATUS_VALUES,\r\n default: 'pending',\r\n index: true,\r\n },\r\n method: {\r\n type: String,\r\n // Users define payment methods in their transaction model\r\n },\r\n reference: {\r\n type: String,\r\n trim: true,\r\n },\r\n verifiedAt: {\r\n type: Date,\r\n },\r\n verifiedBy: {\r\n type: Schema.Types.ObjectId,\r\n ref: 'User',\r\n },\r\n },\r\n { _id: false }\r\n);\r\n\r\n/**\r\n * Payment Summary Schema\r\n * Use this in your model: paymentSummary: { type: paymentSummarySchema }\r\n *\r\n * Tracks payment history and totals\r\n */\r\nexport const paymentSummarySchema = new Schema(\r\n {\r\n totalPayments: {\r\n type: Number,\r\n default: 0,\r\n min: 0,\r\n },\r\n totalAmountPaid: {\r\n type: Number,\r\n default: 0,\r\n min: 0,\r\n },\r\n lastPaymentDate: {\r\n type: Date,\r\n },\r\n lastPaymentAmount: {\r\n type: Number,\r\n min: 0,\r\n },\r\n },\r\n { _id: false }\r\n);\r\n\r\n/**\r\n * Payment Details Schema (for manual payments)\r\n * Embedded in Transaction model\r\n */\r\nexport const paymentDetailsSchema = new Schema(\r\n {\r\n provider: { type: String },\r\n walletNumber: { type: String },\r\n walletType: { type: String },\r\n trxId: { type: String },\r\n bankName: { type: String },\r\n accountNumber: { type: String },\r\n accountName: { type: String },\r\n proofUrl: { type: String },\r\n },\r\n { _id: false }\r\n);\r\n\r\n/**\r\n * Tenant Snapshot Schema\r\n * Captures organization payment details at transaction time (audit trail)\r\n */\r\nexport const tenantSnapshotSchema = new Schema(\r\n {\r\n paymentInstructions: { type: String },\r\n bkashNumber: { type: String },\r\n nagadNumber: { type: String },\r\n bankAccount: { type: String },\r\n },\r\n { _id: false }\r\n);\r\n\r\nexport default {\r\n currentPaymentSchema,\r\n paymentSummarySchema,\r\n paymentDetailsSchema,\r\n tenantSnapshotSchema,\r\n};\r\n\r\n","/**\r\n * Commission Schema\r\n * @classytic/revenue\r\n *\r\n * Schema for platform commission tracking\r\n * Embedded in Transaction model\r\n */\r\n\r\nimport { Schema } from 'mongoose';\r\n\r\n/**\r\n * Commission Schema - Embedded in Transaction\r\n * Tracks platform commission with gateway fee deduction\r\n *\r\n * Usage: commission: commissionSchema\r\n */\r\nexport const commissionSchema = new Schema(\r\n {\r\n // Commission rate (e.g., 0.10 for 10%)\r\n rate: {\r\n type: Number,\r\n min: 0,\r\n max: 1,\r\n },\r\n // Gross commission amount (before gateway fees)\r\n grossAmount: {\r\n type: Number,\r\n min: 0,\r\n },\r\n // Gateway fee rate (e.g., 0.029 for 2.9%)\r\n gatewayFeeRate: {\r\n type: Number,\r\n min: 0,\r\n max: 1,\r\n },\r\n // Gateway fee amount deducted from commission\r\n gatewayFeeAmount: {\r\n type: Number,\r\n min: 0,\r\n },\r\n // Net commission (grossAmount - gatewayFeeAmount)\r\n netAmount: {\r\n type: Number,\r\n min: 0,\r\n },\r\n // Commission status\r\n status: {\r\n type: String,\r\n enum: ['pending', 'paid', 'waived', 'reversed'],\r\n default: 'pending',\r\n },\r\n // For affiliate tracking\r\n affiliate: {\r\n recipientId: String,\r\n recipientType: {\r\n type: String,\r\n enum: ['user', 'organization', 'partner'],\r\n },\r\n rate: Number,\r\n grossAmount: Number,\r\n netAmount: Number,\r\n },\r\n // For multi-party splits\r\n splits: [\r\n {\r\n type: String,\r\n recipientId: String,\r\n rate: Number,\r\n grossAmount: Number,\r\n netAmount: Number,\r\n },\r\n ],\r\n },\r\n { _id: false }\r\n);\r\n\r\nexport default commissionSchema;\r\n\r\n","/**\r\n * Transaction Schemas Index\r\n * @classytic/revenue\r\n */\r\n\r\nexport * from './common.schema.js';\r\nexport * from './gateway.schema.js';\r\nexport * from './payment.schema.js';\r\nexport * from './commission.schema.js';\r\n\r\nimport { baseMetadataSchema, referenceSchema } from './common.schema.js';\r\nimport gatewaySchema from './gateway.schema.js';\r\nimport paymentSchemas from './payment.schema.js';\r\nimport commissionSchema from './commission.schema.js';\r\n\r\nexport default {\r\n baseMetadataSchema,\r\n referenceSchema,\r\n gatewaySchema,\r\n commissionSchema,\r\n ...paymentSchemas,\r\n};\r\n\r\n","/**\r\n * Plan Schema\r\n * @classytic/revenue\r\n *\r\n * Schema for subscription plans\r\n */\r\n\r\nimport { Schema } from 'mongoose';\r\nimport { PLAN_KEY_VALUES } from '../../enums/subscription.enums.js';\r\n\r\n/**\r\n * Plan Schema - for defining subscription plans\r\n */\r\nexport const planSchema = new Schema(\r\n {\r\n key: {\r\n type: String,\r\n enum: PLAN_KEY_VALUES,\r\n required: true,\r\n },\r\n name: {\r\n type: String,\r\n required: true,\r\n },\r\n description: {\r\n type: String,\r\n },\r\n amount: {\r\n type: Number,\r\n required: true,\r\n min: 0,\r\n },\r\n currency: {\r\n type: String,\r\n default: 'BDT',\r\n },\r\n interval: {\r\n type: String,\r\n enum: ['day', 'week', 'month', 'year'],\r\n default: 'month',\r\n },\r\n intervalCount: {\r\n type: Number,\r\n default: 1,\r\n min: 1,\r\n },\r\n features: [\r\n {\r\n type: String,\r\n },\r\n ],\r\n metadata: {\r\n type: Schema.Types.Mixed,\r\n default: {},\r\n },\r\n isActive: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n },\r\n { _id: false }\r\n);\r\n\r\nexport default planSchema;\r\n\r\n","/**\r\n * Subscription Info Schema\r\n * @classytic/revenue\r\n *\r\n * Schema for subscription information embedded in entities\r\n */\r\n\r\nimport { Schema } from 'mongoose';\r\nimport { SUBSCRIPTION_STATUS_VALUES, PLAN_KEY_VALUES } from '../../enums/subscription.enums.js';\r\n\r\n/**\r\n * Subscription Info Schema\r\n * Use this in your entity models that have subscriptions\r\n *\r\n * @example\r\n * const OrganizationSchema = new Schema({\r\n * name: String,\r\n * subscription: { type: subscriptionInfoSchema },\r\n * });\r\n */\r\nexport const subscriptionInfoSchema = new Schema(\r\n {\r\n planKey: {\r\n type: String,\r\n enum: PLAN_KEY_VALUES,\r\n required: true,\r\n },\r\n status: {\r\n type: String,\r\n enum: SUBSCRIPTION_STATUS_VALUES,\r\n default: 'pending',\r\n index: true,\r\n },\r\n isActive: {\r\n type: Boolean,\r\n default: false,\r\n index: true,\r\n },\r\n startDate: {\r\n type: Date,\r\n },\r\n endDate: {\r\n type: Date,\r\n index: true,\r\n },\r\n canceledAt: {\r\n type: Date,\r\n },\r\n cancelAt: {\r\n type: Date,\r\n },\r\n pausedAt: {\r\n type: Date,\r\n },\r\n lastPaymentDate: {\r\n type: Date,\r\n },\r\n lastPaymentAmount: {\r\n type: Number,\r\n },\r\n renewalCount: {\r\n type: Number,\r\n default: 0,\r\n },\r\n },\r\n { _id: false }\r\n);\r\n\r\nexport default subscriptionInfoSchema;\r\n\r\n","/**\r\n * Subscription Schemas Index\r\n * @classytic/revenue\r\n */\r\n\r\nexport { planSchema } from './plan.schema.js';\r\nexport { subscriptionInfoSchema } from './info.schema.js';\r\n\r\nimport planSchema from './plan.schema.js';\r\nimport subscriptionInfoSchema from './info.schema.js';\r\n\r\nexport default {\r\n planSchema,\r\n subscriptionInfoSchema,\r\n};\r\n\r\n","/**\r\n * Hold/Escrow Schema\r\n * @classytic/revenue\r\n *\r\n * Schema for platform-as-intermediary escrow flow\r\n * Spread into transaction schema when needed\r\n */\r\n\r\nimport { HOLD_STATUS, HOLD_STATUS_VALUES, HOLD_REASON_VALUES } from '../../enums/escrow.enums.js';\r\n\r\nexport const holdSchema = {\r\n status: {\r\n type: String,\r\n enum: HOLD_STATUS_VALUES,\r\n default: HOLD_STATUS.PENDING,\r\n index: true,\r\n },\r\n\r\n heldAmount: {\r\n type: Number,\r\n required: false,\r\n },\r\n\r\n releasedAmount: {\r\n type: Number,\r\n default: 0,\r\n },\r\n\r\n reason: {\r\n type: String,\r\n enum: HOLD_REASON_VALUES,\r\n required: false,\r\n },\r\n\r\n holdUntil: {\r\n type: Date,\r\n required: false,\r\n },\r\n\r\n heldAt: Date,\r\n releasedAt: Date,\r\n cancelledAt: Date,\r\n\r\n releases: [\r\n {\r\n amount: Number,\r\n recipientId: String,\r\n recipientType: String,\r\n releasedAt: Date,\r\n releasedBy: String,\r\n reason: String,\r\n metadata: Object,\r\n },\r\n ],\r\n\r\n metadata: {\r\n type: Object,\r\n default: {},\r\n },\r\n} as const;\r\n\r\nexport default holdSchema;\r\n\r\n","/**\r\n * Escrow Schemas Index\r\n * @classytic/revenue\r\n */\r\n\r\nexport { holdSchema } from './hold.schema.js';\r\n\r\nimport holdSchema from './hold.schema.js';\r\n\r\nexport default {\r\n holdSchema,\r\n};\r\n\r\n","/**\r\n * Split Schema\r\n * @classytic/revenue\r\n *\r\n * Schema for multi-party commission splits\r\n */\r\n\r\nimport { Schema } from 'mongoose';\r\nimport {\r\n SPLIT_TYPE_VALUES,\r\n SPLIT_STATUS,\r\n SPLIT_STATUS_VALUES,\r\n PAYOUT_METHOD_VALUES,\r\n} from '../../enums/split.enums.js';\r\n\r\n/**\r\n * Split Schema - Embedded in Transaction\r\n */\r\nexport const splitSchema = new Schema(\r\n {\r\n type: {\r\n type: String,\r\n enum: SPLIT_TYPE_VALUES,\r\n required: true,\r\n },\r\n recipientId: {\r\n type: String,\r\n required: true,\r\n index: true,\r\n },\r\n recipientType: {\r\n type: String,\r\n enum: ['platform', 'organization', 'user', 'affiliate', 'partner'],\r\n required: true,\r\n },\r\n rate: {\r\n type: Number,\r\n required: true,\r\n min: 0,\r\n max: 1,\r\n },\r\n grossAmount: {\r\n type: Number,\r\n required: true,\r\n min: 0,\r\n },\r\n gatewayFeeRate: {\r\n type: Number,\r\n default: 0,\r\n min: 0,\r\n max: 1,\r\n },\r\n gatewayFeeAmount: {\r\n type: Number,\r\n default: 0,\r\n min: 0,\r\n },\r\n netAmount: {\r\n type: Number,\r\n required: true,\r\n min: 0,\r\n },\r\n status: {\r\n type: String,\r\n enum: SPLIT_STATUS_VALUES,\r\n default: SPLIT_STATUS.PENDING,\r\n index: true,\r\n },\r\n dueDate: {\r\n type: Date,\r\n },\r\n paidDate: {\r\n type: Date,\r\n },\r\n payoutMethod: {\r\n type: String,\r\n enum: PAYOUT_METHOD_VALUES,\r\n },\r\n payoutTransactionId: {\r\n type: String,\r\n },\r\n metadata: {\r\n type: Schema.Types.Mixed,\r\n default: {},\r\n },\r\n },\r\n { _id: false }\r\n);\r\n\r\nexport default splitSchema;\r\n\r\n","/**\r\n * Split Schemas Index\r\n * @classytic/revenue\r\n */\r\n\r\nexport { splitSchema } from './split.schema.js';\r\n\r\nimport splitSchema from './split.schema.js';\r\n\r\nexport default {\r\n splitSchema,\r\n};\r\n\r\n","/**\r\n * Schema Index\r\n * @classytic/revenue\r\n *\r\n * Core schemas for injection into your models\r\n *\r\n * Note: Enums are separate. Import them from '@classytic/revenue/enums'\r\n */\r\n\r\n// Re-export core schemas only\r\nexport * from './transaction/index.js';\r\nexport * from './subscription/index.js';\r\nexport * from './escrow/index.js';\r\nexport * from './split/index.js';\r\n\r\n// Default export with core schemas\r\nimport transactionSchemas from './transaction/index.js';\r\nimport subscriptionSchemas from './subscription/index.js';\r\nimport escrowSchemas from './escrow/index.js';\r\nimport splitSchemas from './split/index.js';\r\n\r\nexport default {\r\n ...transactionSchemas,\r\n ...subscriptionSchemas,\r\n ...escrowSchemas,\r\n ...splitSchemas,\r\n};\r\n\r\n"]}
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":";;;;AAYO,IAAM,qBAAqB,IAAI,MAAA;AAAA,EACpC;AAAA;AAAA,GAEA;AAAA,EACA,EAAE,GAAA,EAAK,KAAA,EAAO,MAAA,EAAQ,KAAA;AACxB;AAKO,IAAM,eAAA,GAAkB;AAAA,EAC7B,WAAA,EAAa;AAAA,IACX,IAAA,EAAM,OAAO,KAAA,CAAM,QAAA;AAAA,IACnB,OAAA,EAAS,gBAAA;AAAA,IACT,KAAA,EAAO;AAAA,GACT;AAAA,EACA,cAAA,EAAgB;AAAA,IACd,IAAA,EAAM,MAAA;AAAA,IACN,MAAM,CAAC,cAAA,EAAgB,OAAA,EAAS,YAAA,EAAc,WAAW,SAAS;AAAA;AAEtE;ACnBO,IAAM,gBAAgB,IAAIA,MAAAA;AAAA,EAC/B;AAAA,IACE,IAAA,EAAM;AAAA,MACJ,IAAA,EAAM,MAAA;AAAA,MACN,QAAA,EAAU,IAAA;AAAA,MACV,KAAA,EAAO;AAAA,KACT;AAAA,IACA,SAAA,EAAW;AAAA,MACT,IAAA,EAAM,MAAA;AAAA,MACN,MAAA,EAAQ,IAAA;AAAA,MACR,KAAA,EAAO;AAAA,KACT;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,IAAA,EAAM,MAAA;AAAA,MACN,MAAA,EAAQ,IAAA;AAAA,MACR,KAAA,EAAO;AAAA,KACT;AAAA,IACA,QAAA,EAAU;AAAA,MACR,IAAA,EAAM;AAAA,KACR;AAAA,IACA,QAAA,EAAU;AAAA,MACR,IAAA,EAAMA,OAAO,KAAA,CAAM,KAAA;AAAA,MACnB,SAAS;AAAC,KACZ;AAAA,IACA,gBAAA,EAAkB;AAAA,MAChB,IAAA,EAAMA,OAAO,KAAA,CAAM;AAAA;AACrB,GACF;AAAA,EACA,EAAE,KAAK,KAAA;AACT;AAEA,IAAO,sBAAA,GAAQ,aAAA;;;AChCR,IAAM,cAAA,GAAiB;AAAA,EAC5B,OAAA,EAAS,SAAA;AAAA,EACT,QAAA,EAAU,UAAA;AAAA,EACV,MAAA,EAAQ,QAAA;AAAA,EACR,QAAA,EAAU,UAAA;AAAA,EACV,SAAA,EAAW;AACb,CAAA;AAIO,IAAM,qBAAA,GAAwB,MAAA,CAAO,MAAA,CAAO,cAAc,CAAA;;;ACX1D,IAAM,mBAAA,GAAsB;AAAA,EACjC,MAAA,EAAQ,QAAA;AAAA,EACR,MAAA,EAAQ,QAAA;AAAA,EACR,SAAA,EAAW,WAAA;AAAA,EACX,OAAA,EAAS,SAAA;AAAA,EACT,OAAA,EAAS,SAAA;AAAA,EACT,QAAA,EAAU;AACZ,CAAA;AAIO,IAAM,0BAAA,GAA6B,MAAA,CAAO,MAAA,CAAO,mBAAmB,CAAA;AAMpE,IAAM,SAAA,GAAY;AAAA,EACvB,OAAA,EAAS,SAAA;AAAA,EACT,SAAA,EAAW,WAAA;AAAA,EACX,MAAA,EAAQ;AACV,CAAA;AAIO,IAAM,eAAA,GAAkB,MAAA,CAAO,MAAA,CAAO,SAAS,CAAA;;;AC7B/C,IAAM,WAAA,GAAc;AAAA,EACzB,OAAA,EAAS,SAAA;AAAA,EACT,IAAA,EAAM,MAAA;AAAA,EACN,QAAA,EAAU,UAAA;AAAA,EACV,SAAA,EAAW,WAAA;AAAA,EACX,OAAA,EAAS,SAAA;AAAA,EACT,kBAAA,EAAoB;AACtB,CAAA;AAIO,IAAM,kBAAA,GAAqB,MAAA,CAAO,MAAA,CAAO,WAAW,CAAA;AAapD,IAAM,WAAA,GAAc;AAAA,EACzB,oBAAA,EAAsB,sBAAA;AAAA,EACtB,WAAA,EAAa,aAAA;AAAA,EACb,aAAA,EAAe,eAAA;AAAA,EACf,OAAA,EAAS,SAAA;AAAA,EACT,UAAA,EAAY;AACd,CAAA;AAIO,IAAM,kBAAA,GAAqB,MAAA,CAAO,MAAA,CAAO,WAAW,CAAA;;;AClCpD,IAAM,UAAA,GAAa;AAAA,EACxB,mBAAA,EAAqB,qBAAA;AAAA,EACrB,oBAAA,EAAsB,sBAAA;AAAA,EACtB,mBAAA,EAAqB,qBAAA;AAAA,EACrB,kBAAA,EAAoB,oBAAA;AAAA,EACpB,MAAA,EAAQ;AACV,CAAA;AAIO,IAAM,iBAAA,GAAoB,MAAA,CAAO,MAAA,CAAO,UAAU,CAAA;AAElD,IAAM,YAAA,GAAe;AAAA,EAC1B,OAAA,EAAS,SAAA;AAAA,EACT,GAAA,EAAK,KAAA;AAAA,EACL,IAAA,EAAM,MAAA;AAAA,EACN,MAAA,EAAQ,QAAA;AAAA,EACR,SAAA,EAAW;AACb,CAAA;AAIO,IAAM,mBAAA,GAAsB,MAAA,CAAO,MAAA,CAAO,YAAY,CAAA;AAEtD,IAAM,aAAA,GAAgB;AAAA,EAC3B,aAAA,EAAe,eAAA;AAAA,EACf,aAAA,EAAe,eAAA;AAAA,EACf,gBAAA,EAAkB,kBAAA;AAAA,EAClB,MAAA,EAAQ,QAAA;AAAA,EACR,KAAA,EAAO,OAAA;AAAA,EACP,MAAA,EAAQ;AACV,CAAA;AAIO,IAAM,oBAAA,GAAuB,MAAA,CAAO,MAAA,CAAO,aAAa,CAAA;;;ACxBxD,IAAM,uBAAuB,IAAIA,MAAAA;AAAA,EACtC;AAAA,IACE,aAAA,EAAe;AAAA,MACb,IAAA,EAAMA,OAAO,KAAA,CAAM,QAAA;AAAA,MACnB,GAAA,EAAK,aAAA;AAAA,MACL,KAAA,EAAO;AAAA,KACT;AAAA,IACA,MAAA,EAAQ;AAAA,MACN,IAAA,EAAM,MAAA;AAAA,MACN,GAAA,EAAK;AAAA,KACP;AAAA,IACA,MAAA,EAAQ;AAAA,MACN,IAAA,EAAM,MAAA;AAAA,MACN,IAAA,EAAM,qBAAA;AAAA,MACN,OAAA,EAAS,SAAA;AAAA,MACT,KAAA,EAAO;AAAA,KACT;AAAA,IACA,MAAA,EAAQ;AAAA,MACN,IAAA,EAAM;AAAA;AAAA,KAER;AAAA,IACA,SAAA,EAAW;AAAA,MACT,IAAA,EAAM,MAAA;AAAA,MACN,IAAA,EAAM;AAAA,KACR;AAAA,IACA,UAAA,EAAY;AAAA,MACV,IAAA,EAAM;AAAA,KACR;AAAA,IACA,UAAA,EAAY;AAAA,MACV,IAAA,EAAMA,OAAO,KAAA,CAAM,QAAA;AAAA,MACnB,GAAA,EAAK;AAAA;AACP,GACF;AAAA,EACA,EAAE,KAAK,KAAA;AACT;AAQO,IAAM,uBAAuB,IAAIA,MAAAA;AAAA,EACtC;AAAA,IACE,aAAA,EAAe;AAAA,MACb,IAAA,EAAM,MAAA;AAAA,MACN,OAAA,EAAS,CAAA;AAAA,MACT,GAAA,EAAK;AAAA,KACP;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,IAAA,EAAM,MAAA;AAAA,MACN,OAAA,EAAS,CAAA;AAAA,MACT,GAAA,EAAK;AAAA,KACP;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,IAAA,EAAM;AAAA,KACR;AAAA,IACA,iBAAA,EAAmB;AAAA,MACjB,IAAA,EAAM,MAAA;AAAA,MACN,GAAA,EAAK;AAAA;AACP,GACF;AAAA,EACA,EAAE,KAAK,KAAA;AACT;AAMO,IAAM,uBAAuB,IAAIA,MAAAA;AAAA,EACtC;AAAA,IACE,QAAA,EAAU,EAAE,IAAA,EAAM,MAAA,EAAO;AAAA,IACzB,YAAA,EAAc,EAAE,IAAA,EAAM,MAAA,EAAO;AAAA,IAC7B,UAAA,EAAY,EAAE,IAAA,EAAM,MAAA,EAAO;AAAA,IAC3B,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAO;AAAA,IACtB,QAAA,EAAU,EAAE,IAAA,EAAM,MAAA,EAAO;AAAA,IACzB,aAAA,EAAe,EAAE,IAAA,EAAM,MAAA,EAAO;AAAA,IAC9B,WAAA,EAAa,EAAE,IAAA,EAAM,MAAA,EAAO;AAAA,IAC5B,QAAA,EAAU,EAAE,IAAA,EAAM,MAAA;AAAO,GAC3B;AAAA,EACA,EAAE,KAAK,KAAA;AACT;AAMO,IAAM,uBAAuB,IAAIA,MAAAA;AAAA,EACtC;AAAA,IACE,mBAAA,EAAqB,EAAE,IAAA,EAAM,MAAA,EAAO;AAAA,IACpC,WAAA,EAAa,EAAE,IAAA,EAAM,MAAA,EAAO;AAAA,IAC5B,WAAA,EAAa,EAAE,IAAA,EAAM,MAAA,EAAO;AAAA,IAC5B,WAAA,EAAa,EAAE,IAAA,EAAM,MAAA;AAAO,GAC9B;AAAA,EACA,EAAE,KAAK,KAAA;AACT;AAEA,IAAO,sBAAA,GAAQ;AAAA,EACb,oBAAA;AAAA,EACA,oBAAA;AAAA,EACA,oBAAA;AAAA,EACA;AACF,CAAA;ACxGO,IAAM,mBAAmB,IAAIA,MAAAA;AAAA,EAClC;AAAA;AAAA,IAEE,IAAA,EAAM;AAAA,MACJ,IAAA,EAAM,MAAA;AAAA,MACN,GAAA,EAAK,CAAA;AAAA,MACL,GAAA,EAAK;AAAA,KACP;AAAA;AAAA,IAEA,WAAA,EAAa;AAAA,MACX,IAAA,EAAM,MAAA;AAAA,MACN,GAAA,EAAK;AAAA,KACP;AAAA;AAAA,IAEA,cAAA,EAAgB;AAAA,MACd,IAAA,EAAM,MAAA;AAAA,MACN,GAAA,EAAK,CAAA;AAAA,MACL,GAAA,EAAK;AAAA,KACP;AAAA;AAAA,IAEA,gBAAA,EAAkB;AAAA,MAChB,IAAA,EAAM,MAAA;AAAA,MACN,GAAA,EAAK;AAAA,KACP;AAAA;AAAA,IAEA,SAAA,EAAW;AAAA,MACT,IAAA,EAAM,MAAA;AAAA,MACN,GAAA,EAAK;AAAA,KACP;AAAA;AAAA,IAEA,MAAA,EAAQ;AAAA,MACN,IAAA,EAAM,MAAA;AAAA,MACN,IAAA,EAAM,CAAC,SAAA,EAAW,MAAA,EAAQ,UAAU,UAAU,CAAA;AAAA,MAC9C,OAAA,EAAS;AAAA,KACX;AAAA;AAAA,IAEA,SAAA,EAAW;AAAA,MACT,WAAA,EAAa,MAAA;AAAA,MACb,aAAA,EAAe;AAAA,QACb,IAAA,EAAM,MAAA;AAAA,QACN,IAAA,EAAM,CAAC,MAAA,EAAQ,cAAA,EAAgB,SAAS;AAAA,OAC1C;AAAA,MACA,IAAA,EAAM,MAAA;AAAA,MACN,WAAA,EAAa,MAAA;AAAA,MACb,SAAA,EAAW;AAAA,KACb;AAAA;AAAA,IAEA,MAAA,EAAQ;AAAA,MACN;AAAA,QACE,IAAA,EAAM,MAAA;AAAA,QACN,WAAA,EAAa,MAAA;AAAA,QACb,IAAA,EAAM,MAAA;AAAA,QACN,WAAA,EAAa,MAAA;AAAA,QACb,SAAA,EAAW;AAAA;AACb;AACF,GACF;AAAA,EACA,EAAE,KAAK,KAAA;AACT;AAEA,IAAO,yBAAA,GAAQ,gBAAA;;;AC7Df,IAAO,mBAAA,GAAQ;AAAA,EACb,kBAAA;AAAA,EACA,eAAA;AAAA,EACA,aAAA,EAAA,sBAAA;AAAA,EACA,gBAAA,EAAA,yBAAA;AAAA,EACA,GAAG;AACL,CAAA;ACRO,IAAM,aAAa,IAAIA,MAAAA;AAAA,EAC5B;AAAA,IACE,GAAA,EAAK;AAAA,MACH,IAAA,EAAM,MAAA;AAAA,MACN,IAAA,EAAM,eAAA;AAAA,MACN,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,IAAA,EAAM;AAAA,MACJ,IAAA,EAAM,MAAA;AAAA,MACN,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,WAAA,EAAa;AAAA,MACX,IAAA,EAAM;AAAA,KACR;AAAA,IACA,MAAA,EAAQ;AAAA,MACN,IAAA,EAAM,MAAA;AAAA,MACN,QAAA,EAAU,IAAA;AAAA,MACV,GAAA,EAAK;AAAA,KACP;AAAA,IACA,QAAA,EAAU;AAAA,MACR,IAAA,EAAM,MAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA,QAAA,EAAU;AAAA,MACR,IAAA,EAAM,MAAA;AAAA,MACN,IAAA,EAAM,CAAC,KAAA,EAAO,MAAA,EAAQ,SAAS,MAAM,CAAA;AAAA,MACrC,OAAA,EAAS;AAAA,KACX;AAAA,IACA,aAAA,EAAe;AAAA,MACb,IAAA,EAAM,MAAA;AAAA,MACN,OAAA,EAAS,CAAA;AAAA,MACT,GAAA,EAAK;AAAA,KACP;AAAA,IACA,QAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAM;AAAA;AACR,KACF;AAAA,IACA,QAAA,EAAU;AAAA,MACR,IAAA,EAAMA,OAAO,KAAA,CAAM,KAAA;AAAA,MACnB,SAAS;AAAC,KACZ;AAAA,IACA,QAAA,EAAU;AAAA,MACR,IAAA,EAAM,OAAA;AAAA,MACN,OAAA,EAAS;AAAA;AACX,GACF;AAAA,EACA,EAAE,KAAK,KAAA;AACT;AAEA,IAAO,mBAAA,GAAQ,UAAA;AC3CR,IAAM,yBAAyB,IAAIA,MAAAA;AAAA,EACxC;AAAA,IACE,OAAA,EAAS;AAAA,MACP,IAAA,EAAM,MAAA;AAAA,MACN,IAAA,EAAM,eAAA;AAAA,MACN,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,MAAA,EAAQ;AAAA,MACN,IAAA,EAAM,MAAA;AAAA,MACN,IAAA,EAAM,0BAAA;AAAA,MACN,OAAA,EAAS,SAAA;AAAA,MACT,KAAA,EAAO;AAAA,KACT;AAAA,IACA,QAAA,EAAU;AAAA,MACR,IAAA,EAAM,OAAA;AAAA,MACN,OAAA,EAAS,KAAA;AAAA,MACT,KAAA,EAAO;AAAA,KACT;AAAA,IACA,SAAA,EAAW;AAAA,MACT,IAAA,EAAM;AAAA,KACR;AAAA,IACA,OAAA,EAAS;AAAA,MACP,IAAA,EAAM,IAAA;AAAA,MACN,KAAA,EAAO;AAAA,KACT;AAAA,IACA,UAAA,EAAY;AAAA,MACV,IAAA,EAAM;AAAA,KACR;AAAA,IACA,QAAA,EAAU;AAAA,MACR,IAAA,EAAM;AAAA,KACR;AAAA,IACA,QAAA,EAAU;AAAA,MACR,IAAA,EAAM;AAAA,KACR;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,IAAA,EAAM;AAAA,KACR;AAAA,IACA,iBAAA,EAAmB;AAAA,MACjB,IAAA,EAAM;AAAA,KACR;AAAA,IACA,YAAA,EAAc;AAAA,MACZ,IAAA,EAAM,MAAA;AAAA,MACN,OAAA,EAAS;AAAA;AACX,GACF;AAAA,EACA,EAAE,KAAK,KAAA;AACT;AAEA,IAAO,mBAAA,GAAQ,sBAAA;;;ACzDf,IAAO,oBAAA,GAAQ;AAAA,EACb,UAAA,EAAA,mBAAA;AAAA,EACA,sBAAA,EAAA;AACF,CAAA;;;ACJO,IAAM,UAAA,GAAa;AAAA,EACxB,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,MAAA;AAAA,IACN,IAAA,EAAM,kBAAA;AAAA,IACN,SAAS,WAAA,CAAY,OAAA;AAAA,IACrB,KAAA,EAAO;AAAA,GACT;AAAA,EAEA,UAAA,EAAY;AAAA,IACV,IAAA,EAAM,MAAA;AAAA,IACN,QAAA,EAAU;AAAA,GACZ;AAAA,EAEA,cAAA,EAAgB;AAAA,IACd,IAAA,EAAM,MAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACX;AAAA,EAEA,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,MAAA;AAAA,IACN,IAAA,EAAM,kBAAA;AAAA,IACN,QAAA,EAAU;AAAA,GACZ;AAAA,EAEA,SAAA,EAAW;AAAA,IACT,IAAA,EAAM,IAAA;AAAA,IACN,QAAA,EAAU;AAAA,GACZ;AAAA,EAEA,MAAA,EAAQ,IAAA;AAAA,EACR,UAAA,EAAY,IAAA;AAAA,EACZ,WAAA,EAAa,IAAA;AAAA,EAEb,QAAA,EAAU;AAAA,IACR;AAAA,MACE,MAAA,EAAQ,MAAA;AAAA,MACR,WAAA,EAAa,MAAA;AAAA,MACb,aAAA,EAAe,MAAA;AAAA,MACf,UAAA,EAAY,IAAA;AAAA,MACZ,UAAA,EAAY,MAAA;AAAA,MACZ,MAAA,EAAQ,MAAA;AAAA,MACR,QAAA,EAAU;AAAA;AACZ,GACF;AAAA,EAEA,QAAA,EAAU;AAAA,IACR,IAAA,EAAM,MAAA;AAAA,IACN,SAAS;AAAC;AAEd;AAEA,IAAO,mBAAA,GAAQ,UAAA;;;ACpDf,IAAO,cAAA,GAAQ;AAAA,EACb,UAAA,EAAA;AACF,CAAA;ACOO,IAAM,cAAc,IAAIA,MAAAA;AAAA,EAC7B;AAAA,IACE,IAAA,EAAM;AAAA,MACJ,IAAA,EAAM,MAAA;AAAA,MACN,IAAA,EAAM,iBAAA;AAAA,MACN,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,WAAA,EAAa;AAAA,MACX,IAAA,EAAM,MAAA;AAAA,MACN,QAAA,EAAU,IAAA;AAAA,MACV,KAAA,EAAO;AAAA,KACT;AAAA,IACA,aAAA,EAAe;AAAA,MACb,IAAA,EAAM,MAAA;AAAA,MACN,MAAM,CAAC,UAAA,EAAY,cAAA,EAAgB,MAAA,EAAQ,aAAa,SAAS,CAAA;AAAA,MACjE,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,IAAA,EAAM;AAAA,MACJ,IAAA,EAAM,MAAA;AAAA,MACN,QAAA,EAAU,IAAA;AAAA,MACV,GAAA,EAAK,CAAA;AAAA,MACL,GAAA,EAAK;AAAA,KACP;AAAA,IACA,WAAA,EAAa;AAAA,MACX,IAAA,EAAM,MAAA;AAAA,MACN,QAAA,EAAU,IAAA;AAAA,MACV,GAAA,EAAK;AAAA,KACP;AAAA,IACA,cAAA,EAAgB;AAAA,MACd,IAAA,EAAM,MAAA;AAAA,MACN,OAAA,EAAS,CAAA;AAAA,MACT,GAAA,EAAK,CAAA;AAAA,MACL,GAAA,EAAK;AAAA,KACP;AAAA,IACA,gBAAA,EAAkB;AAAA,MAChB,IAAA,EAAM,MAAA;AAAA,MACN,OAAA,EAAS,CAAA;AAAA,MACT,GAAA,EAAK;AAAA,KACP;AAAA,IACA,SAAA,EAAW;AAAA,MACT,IAAA,EAAM,MAAA;AAAA,MACN,QAAA,EAAU,IAAA;AAAA,MACV,GAAA,EAAK;AAAA,KACP;AAAA,IACA,MAAA,EAAQ;AAAA,MACN,IAAA,EAAM,MAAA;AAAA,MACN,IAAA,EAAM,mBAAA;AAAA,MACN,SAAS,YAAA,CAAa,OAAA;AAAA,MACtB,KAAA,EAAO;AAAA,KACT;AAAA,IACA,OAAA,EAAS;AAAA,MACP,IAAA,EAAM;AAAA,KACR;AAAA,IACA,QAAA,EAAU;AAAA,MACR,IAAA,EAAM;AAAA,KACR;AAAA,IACA,YAAA,EAAc;AAAA,MACZ,IAAA,EAAM,MAAA;AAAA,MACN,IAAA,EAAM;AAAA,KACR;AAAA,IACA,mBAAA,EAAqB;AAAA,MACnB,IAAA,EAAM;AAAA,KACR;AAAA,IACA,QAAA,EAAU;AAAA,MACR,IAAA,EAAMA,OAAO,KAAA,CAAM,KAAA;AAAA,MACnB,SAAS;AAAC;AACZ,GACF;AAAA,EACA,EAAE,KAAK,KAAA;AACT;AAEA,IAAO,oBAAA,GAAQ,WAAA;;;AChFf,IAAO,aAAA,GAAQ;AAAA,EACb,WAAA,EAAA;AACF,CAAA;;;ACUA,IAAO,eAAA,GAAQ;AAAA,EACb,GAAG,mBAAA;AAAA,EACH,GAAG,oBAAA;AAAA,EACH,GAAG,cAAA;AAAA,EACH,GAAG;AACL","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"]}
@@ -139,9 +139,9 @@ type CancelSubscriptionInput = z.infer<typeof CancelSubscriptionSchema>;
139
139
  * Monetization type
140
140
  */
141
141
  declare const MonetizationTypeSchema: z.ZodEnum<{
142
- free: "free";
143
- purchase: "purchase";
144
142
  subscription: "subscription";
143
+ purchase: "purchase";
144
+ free: "free";
145
145
  }>;
146
146
  type MonetizationType = z.infer<typeof MonetizationTypeSchema>;
147
147
  /**
@@ -149,9 +149,9 @@ type MonetizationType = z.infer<typeof MonetizationTypeSchema>;
149
149
  */
150
150
  declare const CreateMonetizationSchema: z.ZodObject<{
151
151
  type: z.ZodDefault<z.ZodEnum<{
152
- free: "free";
153
- purchase: "purchase";
154
152
  subscription: "subscription";
153
+ purchase: "purchase";
154
+ free: "free";
155
155
  }>>;
156
156
  amount: z.ZodOptional<z.ZodNumber>;
157
157
  currency: z.ZodDefault<z.ZodString>;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/schemas/validation.ts"],"names":[],"mappings":"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","file":"validation.js","sourcesContent":["/**\r\n * Zod Validation Schemas\r\n * @classytic/revenue\r\n *\r\n * Runtime validation with TypeScript inference\r\n * Using Zod v4 - Modern schema validation\r\n *\r\n * Inspired by: tRPC, Zod best practices\r\n */\r\n\r\nimport * as z from 'zod';\r\n\r\n// ============ PRIMITIVE SCHEMAS ============\r\n\r\n/**\r\n * MongoDB ObjectId pattern\r\n */\r\nexport const ObjectIdSchema = z.string().regex(\r\n /^[a-fA-F0-9]{24}$/,\r\n 'Invalid ObjectId format'\r\n);\r\n\r\n/**\r\n * Currency code (ISO 4217)\r\n */\r\nexport const CurrencySchema = z.string()\r\n .length(3, 'Currency must be 3 characters')\r\n .transform(val => val.toUpperCase())\r\n .default('USD');\r\n\r\n/**\r\n * Money amount in smallest unit (cents, paisa)\r\n */\r\nexport const MoneyAmountSchema = z.number()\r\n .int('Amount must be integer (smallest unit)')\r\n .nonnegative('Amount cannot be negative');\r\n\r\n/**\r\n * Money object\r\n */\r\nexport const MoneySchema = z.object({\r\n amount: MoneyAmountSchema,\r\n currency: z.string().length(3).default('USD'),\r\n});\r\n\r\n/**\r\n * Email address\r\n */\r\nexport const EmailSchema = z.string().email();\r\n\r\n/**\r\n * Idempotency key (optional, auto-generated if not provided)\r\n */\r\nexport const IdempotencyKeySchema = z.string()\r\n .min(1)\r\n .max(255)\r\n .optional();\r\n\r\n/**\r\n * Metadata object - Zod v4 record syntax\r\n */\r\nexport const MetadataSchema = z.record(z.string(), z.unknown()).optional().default({});\r\n\r\n// ============ PAYMENT SCHEMAS ============\r\n\r\n/**\r\n * Create payment intent params\r\n */\r\nexport const CreatePaymentSchema = z.object({\r\n /** Amount in smallest currency unit (cents) */\r\n amount: MoneyAmountSchema,\r\n /** ISO 4217 currency code */\r\n currency: z.string().length(3).default('USD'),\r\n /** Customer identifier */\r\n customerId: z.string().min(1, 'Customer ID is required'),\r\n /** Organization/merchant identifier */\r\n organizationId: z.string().min(1, 'Organization ID is required'),\r\n /** Payment provider to use */\r\n provider: z.string().min(1, 'Provider is required'),\r\n /** Idempotency key for safe retries */\r\n idempotencyKey: IdempotencyKeySchema,\r\n /** Description of the payment */\r\n description: z.string().optional(),\r\n /** Additional metadata */\r\n metadata: MetadataSchema,\r\n /** Success redirect URL */\r\n successUrl: z.string().url().optional(),\r\n /** Cancel redirect URL */\r\n cancelUrl: z.string().url().optional(),\r\n});\r\n\r\nexport type CreatePaymentInput = z.infer<typeof CreatePaymentSchema>;\r\n\r\n/**\r\n * Verify payment params\r\n */\r\nexport const VerifyPaymentSchema = z.object({\r\n /** Transaction ID or payment intent ID */\r\n id: z.string().min(1),\r\n /** Provider name (optional, auto-detected) */\r\n provider: z.string().optional(),\r\n /** Additional verification data */\r\n data: z.record(z.string(), z.unknown()).optional(),\r\n});\r\n\r\nexport type VerifyPaymentInput = z.infer<typeof VerifyPaymentSchema>;\r\n\r\n/**\r\n * Refund params\r\n */\r\nexport const RefundSchema = z.object({\r\n /** Transaction ID to refund */\r\n transactionId: z.string().min(1),\r\n /** Amount to refund (optional, full refund if not provided) */\r\n amount: MoneyAmountSchema.optional(),\r\n /** Reason for refund */\r\n reason: z.string().optional(),\r\n /** Idempotency key */\r\n idempotencyKey: IdempotencyKeySchema,\r\n /** Additional metadata */\r\n metadata: MetadataSchema,\r\n});\r\n\r\nexport type RefundInput = z.infer<typeof RefundSchema>;\r\n\r\n// ============ SUBSCRIPTION SCHEMAS ============\r\n\r\n/**\r\n * Subscription status\r\n */\r\nexport const SubscriptionStatusSchema = z.enum([\r\n 'pending',\r\n 'active',\r\n 'paused',\r\n 'cancelled',\r\n 'expired',\r\n 'past_due',\r\n]);\r\n\r\nexport type SubscriptionStatus = z.infer<typeof SubscriptionStatusSchema>;\r\n\r\n/**\r\n * Subscription interval\r\n */\r\nexport const IntervalSchema = z.enum([\r\n 'day',\r\n 'week',\r\n 'month',\r\n 'year',\r\n 'one_time',\r\n]);\r\n\r\nexport type Interval = z.infer<typeof IntervalSchema>;\r\n\r\n/**\r\n * Create subscription params\r\n */\r\nexport const CreateSubscriptionSchema = z.object({\r\n /** Customer ID */\r\n customerId: z.string().min(1),\r\n /** Organization ID */\r\n organizationId: z.string().min(1),\r\n /** Plan identifier */\r\n planKey: z.string().min(1),\r\n /** Amount per period (smallest unit) */\r\n amount: MoneyAmountSchema,\r\n /** Currency */\r\n currency: z.string().length(3).default('USD'),\r\n /** Billing interval */\r\n interval: IntervalSchema.default('month'),\r\n /** Interval count (e.g., 2 for bi-monthly) */\r\n intervalCount: z.number().int().positive().default(1),\r\n /** Payment provider */\r\n provider: z.string().min(1),\r\n /** Reference to external entity */\r\n referenceId: z.string().optional(),\r\n /** Reference model name */\r\n referenceModel: z.string().optional(),\r\n /** Idempotency key */\r\n idempotencyKey: IdempotencyKeySchema,\r\n /** Metadata */\r\n metadata: MetadataSchema,\r\n /** Trial period in days */\r\n trialDays: z.number().int().nonnegative().optional(),\r\n});\r\n\r\nexport type CreateSubscriptionInput = z.infer<typeof CreateSubscriptionSchema>;\r\n\r\n/**\r\n * Cancel subscription params\r\n */\r\nexport const CancelSubscriptionSchema = z.object({\r\n /** Subscription ID */\r\n subscriptionId: z.string().min(1),\r\n /** Cancel immediately or at period end */\r\n immediate: z.boolean().default(false),\r\n /** Cancellation reason */\r\n reason: z.string().optional(),\r\n});\r\n\r\nexport type CancelSubscriptionInput = z.infer<typeof CancelSubscriptionSchema>;\r\n\r\n// ============ MONETIZATION SCHEMAS ============\r\n\r\n/**\r\n * Monetization type\r\n */\r\nexport const MonetizationTypeSchema = z.enum([\r\n 'purchase',\r\n 'subscription',\r\n 'free',\r\n]);\r\n\r\nexport type MonetizationType = z.infer<typeof MonetizationTypeSchema>;\r\n\r\n/**\r\n * Create monetization params (unified API)\r\n */\r\nexport const CreateMonetizationSchema = z.object({\r\n /** Type of monetization */\r\n type: MonetizationTypeSchema.default('purchase'),\r\n /** Amount (smallest unit) - required for purchase/subscription */\r\n amount: MoneyAmountSchema.optional(),\r\n /** Currency */\r\n currency: z.string().length(3).default('USD'),\r\n /** Customer ID */\r\n customerId: z.string().min(1),\r\n /** Organization ID */\r\n organizationId: z.string().min(1),\r\n /** Payment provider */\r\n provider: z.string().min(1),\r\n /** Plan key for categorization */\r\n planKey: z.string().optional(),\r\n /** Reference ID */\r\n referenceId: z.string().optional(),\r\n /** Reference model */\r\n referenceModel: z.string().optional(),\r\n /** Idempotency key */\r\n idempotencyKey: IdempotencyKeySchema,\r\n /** Metadata */\r\n metadata: MetadataSchema,\r\n /** Subscription-specific: interval */\r\n interval: IntervalSchema.optional(),\r\n /** Subscription-specific: trial days */\r\n trialDays: z.number().int().nonnegative().optional(),\r\n}).refine(\r\n (data) => {\r\n if (data.type !== 'free' && !data.amount) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n { message: 'Amount is required for non-free monetization types' }\r\n);\r\n\r\nexport type CreateMonetizationInput = z.infer<typeof CreateMonetizationSchema>;\r\n\r\n// ============ COMMISSION SCHEMAS ============\r\n\r\n/**\r\n * Commission split recipient\r\n */\r\nexport const SplitRecipientSchema = z.object({\r\n /** Recipient ID */\r\n recipientId: z.string().min(1),\r\n /** Recipient type (user, organization, etc.) */\r\n recipientType: z.string().default('user'),\r\n /** Percentage of net amount (0-100) */\r\n percentage: z.number().min(0).max(100),\r\n /** Role description */\r\n role: z.string().optional(),\r\n});\r\n\r\nexport type SplitRecipient = z.infer<typeof SplitRecipientSchema>;\r\n\r\n/**\r\n * Commission configuration\r\n */\r\nexport const CommissionConfigSchema = z.object({\r\n /** Platform commission rate (0-100) */\r\n platformRate: z.number().min(0).max(100).default(0),\r\n /** Gateway fee rate (0-100) */\r\n gatewayFeeRate: z.number().min(0).max(100).default(0),\r\n /** Fixed gateway fee (smallest unit) */\r\n gatewayFixedFee: MoneyAmountSchema.default(0),\r\n /** Split recipients */\r\n splits: z.array(SplitRecipientSchema).optional(),\r\n /** Affiliate configuration */\r\n affiliate: z.object({\r\n recipientId: z.string(),\r\n recipientType: z.string().default('user'),\r\n rate: z.number().min(0).max(100),\r\n }).optional(),\r\n});\r\n\r\nexport type CommissionConfig = z.infer<typeof CommissionConfigSchema>;\r\n\r\n// ============ ESCROW SCHEMAS ============\r\n\r\n/**\r\n * Hold status\r\n */\r\nexport const HoldStatusSchema = z.enum([\r\n 'none',\r\n 'held',\r\n 'partial_release',\r\n 'released',\r\n 'cancelled',\r\n]);\r\n\r\nexport type HoldStatus = z.infer<typeof HoldStatusSchema>;\r\n\r\n/**\r\n * Create hold params\r\n */\r\nexport const CreateHoldSchema = z.object({\r\n /** Transaction ID */\r\n transactionId: z.string().min(1),\r\n /** Hold amount (optional, defaults to full transaction amount) */\r\n amount: MoneyAmountSchema.optional(),\r\n /** Hold until date */\r\n holdUntil: z.date().optional(),\r\n /** Reason for hold */\r\n reason: z.string().optional(),\r\n});\r\n\r\nexport type CreateHoldInput = z.infer<typeof CreateHoldSchema>;\r\n\r\n/**\r\n * Release hold params\r\n */\r\nexport const ReleaseHoldSchema = z.object({\r\n /** Transaction ID */\r\n transactionId: z.string().min(1),\r\n /** Amount to release (optional, full release if not provided) */\r\n amount: MoneyAmountSchema.optional(),\r\n /** Recipient ID */\r\n recipientId: z.string().min(1),\r\n /** Recipient type */\r\n recipientType: z.string().default('user'),\r\n /** Release notes */\r\n notes: z.string().optional(),\r\n});\r\n\r\nexport type ReleaseHoldInput = z.infer<typeof ReleaseHoldSchema>;\r\n\r\n// ============ CONFIG SCHEMAS ============\r\n\r\n/**\r\n * Provider configuration\r\n */\r\nexport const ProviderConfigSchema = z.record(z.string(), z.unknown());\r\n\r\n/**\r\n * Retry configuration\r\n */\r\nexport const RetryConfigSchema = z.object({\r\n /** Maximum retry attempts */\r\n maxAttempts: z.number().int().positive().default(3),\r\n /** Base delay in ms */\r\n baseDelay: z.number().positive().default(1000),\r\n /** Maximum delay in ms */\r\n maxDelay: z.number().positive().default(30000),\r\n /** Backoff multiplier */\r\n backoffMultiplier: z.number().positive().default(2),\r\n /** Jitter factor (0-1) */\r\n jitter: z.number().min(0).max(1).default(0.1),\r\n});\r\n\r\nexport type RetryConfig = z.infer<typeof RetryConfigSchema>;\r\n\r\n/**\r\n * Revenue configuration\r\n */\r\nexport const RevenueConfigSchema = z.object({\r\n /** Default currency */\r\n defaultCurrency: z.string().length(3).default('USD'),\r\n /** Commission configuration */\r\n commission: CommissionConfigSchema.optional(),\r\n /** Retry configuration */\r\n retry: RetryConfigSchema.optional(),\r\n /** Enable debug logging */\r\n debug: z.boolean().default(false),\r\n /** Environment */\r\n environment: z.enum(['development', 'staging', 'production']).default('development'),\r\n});\r\n\r\nexport type RevenueConfigInput = z.infer<typeof RevenueConfigSchema>;\r\n\r\n// ============ VALIDATION HELPERS ============\r\n\r\n/**\r\n * Validate input against schema\r\n */\r\nexport function validate<T extends z.ZodType>(\r\n schema: T,\r\n data: unknown\r\n): z.infer<T> {\r\n return schema.parse(data);\r\n}\r\n\r\n/**\r\n * Safe validate (returns result, doesn't throw)\r\n */\r\nexport function safeValidate<T extends z.ZodType>(\r\n schema: T,\r\n data: unknown\r\n): { success: true; data: z.infer<T> } | { success: false; error: z.ZodError } {\r\n const result = schema.safeParse(data);\r\n if (result.success) {\r\n return { success: true, data: result.data };\r\n }\r\n return { success: false, error: result.error };\r\n}\r\n\r\n/**\r\n * Format Zod error for display\r\n * Zod v4 uses `issues` property\r\n */\r\nexport function formatZodError(error: z.ZodError): string {\r\n return error.issues\r\n .map((issue) => `${issue.path.join('.')}: ${issue.message}`)\r\n .join(', ');\r\n}\r\n\r\nexport { z };\r\n"]}
1
+ {"version":3,"sources":["../../src/schemas/validation.ts"],"names":[],"mappings":"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","file":"validation.js","sourcesContent":["/**\n * Zod Validation Schemas\n * @classytic/revenue\n *\n * Runtime validation with TypeScript inference\n * Using Zod v4 - Modern schema validation\n *\n * Inspired by: tRPC, Zod best practices\n */\n\nimport * as z from 'zod';\n\n// ============ PRIMITIVE SCHEMAS ============\n\n/**\n * MongoDB ObjectId pattern\n */\nexport const ObjectIdSchema = z.string().regex(\n /^[a-fA-F0-9]{24}$/,\n 'Invalid ObjectId format'\n);\n\n/**\n * Currency code (ISO 4217)\n */\nexport const CurrencySchema = z.string()\n .length(3, 'Currency must be 3 characters')\n .transform(val => val.toUpperCase())\n .default('USD');\n\n/**\n * Money amount in smallest unit (cents, paisa)\n */\nexport const MoneyAmountSchema = z.number()\n .int('Amount must be integer (smallest unit)')\n .nonnegative('Amount cannot be negative');\n\n/**\n * Money object\n */\nexport const MoneySchema = z.object({\n amount: MoneyAmountSchema,\n currency: z.string().length(3).default('USD'),\n});\n\n/**\n * Email address\n */\nexport const EmailSchema = z.string().email();\n\n/**\n * Idempotency key (optional, auto-generated if not provided)\n */\nexport const IdempotencyKeySchema = z.string()\n .min(1)\n .max(255)\n .optional();\n\n/**\n * Metadata object - Zod v4 record syntax\n */\nexport const MetadataSchema = z.record(z.string(), z.unknown()).optional().default({});\n\n// ============ PAYMENT SCHEMAS ============\n\n/**\n * Create payment intent params\n */\nexport const CreatePaymentSchema = z.object({\n /** Amount in smallest currency unit (cents) */\n amount: MoneyAmountSchema,\n /** ISO 4217 currency code */\n currency: z.string().length(3).default('USD'),\n /** Customer identifier */\n customerId: z.string().min(1, 'Customer ID is required'),\n /** Organization/merchant identifier */\n organizationId: z.string().min(1, 'Organization ID is required'),\n /** Payment provider to use */\n provider: z.string().min(1, 'Provider is required'),\n /** Idempotency key for safe retries */\n idempotencyKey: IdempotencyKeySchema,\n /** Description of the payment */\n description: z.string().optional(),\n /** Additional metadata */\n metadata: MetadataSchema,\n /** Success redirect URL */\n successUrl: z.string().url().optional(),\n /** Cancel redirect URL */\n cancelUrl: z.string().url().optional(),\n});\n\nexport type CreatePaymentInput = z.infer<typeof CreatePaymentSchema>;\n\n/**\n * Verify payment params\n */\nexport const VerifyPaymentSchema = z.object({\n /** Transaction ID or payment intent ID */\n id: z.string().min(1),\n /** Provider name (optional, auto-detected) */\n provider: z.string().optional(),\n /** Additional verification data */\n data: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport type VerifyPaymentInput = z.infer<typeof VerifyPaymentSchema>;\n\n/**\n * Refund params\n */\nexport const RefundSchema = z.object({\n /** Transaction ID to refund */\n transactionId: z.string().min(1),\n /** Amount to refund (optional, full refund if not provided) */\n amount: MoneyAmountSchema.optional(),\n /** Reason for refund */\n reason: z.string().optional(),\n /** Idempotency key */\n idempotencyKey: IdempotencyKeySchema,\n /** Additional metadata */\n metadata: MetadataSchema,\n});\n\nexport type RefundInput = z.infer<typeof RefundSchema>;\n\n// ============ SUBSCRIPTION SCHEMAS ============\n\n/**\n * Subscription status\n */\nexport const SubscriptionStatusSchema = z.enum([\n 'pending',\n 'active',\n 'paused',\n 'cancelled',\n 'expired',\n 'past_due',\n]);\n\nexport type SubscriptionStatus = z.infer<typeof SubscriptionStatusSchema>;\n\n/**\n * Subscription interval\n */\nexport const IntervalSchema = z.enum([\n 'day',\n 'week',\n 'month',\n 'year',\n 'one_time',\n]);\n\nexport type Interval = z.infer<typeof IntervalSchema>;\n\n/**\n * Create subscription params\n */\nexport const CreateSubscriptionSchema = z.object({\n /** Customer ID */\n customerId: z.string().min(1),\n /** Organization ID */\n organizationId: z.string().min(1),\n /** Plan identifier */\n planKey: z.string().min(1),\n /** Amount per period (smallest unit) */\n amount: MoneyAmountSchema,\n /** Currency */\n currency: z.string().length(3).default('USD'),\n /** Billing interval */\n interval: IntervalSchema.default('month'),\n /** Interval count (e.g., 2 for bi-monthly) */\n intervalCount: z.number().int().positive().default(1),\n /** Payment provider */\n provider: z.string().min(1),\n /** Reference to external entity */\n referenceId: z.string().optional(),\n /** Reference model name */\n referenceModel: z.string().optional(),\n /** Idempotency key */\n idempotencyKey: IdempotencyKeySchema,\n /** Metadata */\n metadata: MetadataSchema,\n /** Trial period in days */\n trialDays: z.number().int().nonnegative().optional(),\n});\n\nexport type CreateSubscriptionInput = z.infer<typeof CreateSubscriptionSchema>;\n\n/**\n * Cancel subscription params\n */\nexport const CancelSubscriptionSchema = z.object({\n /** Subscription ID */\n subscriptionId: z.string().min(1),\n /** Cancel immediately or at period end */\n immediate: z.boolean().default(false),\n /** Cancellation reason */\n reason: z.string().optional(),\n});\n\nexport type CancelSubscriptionInput = z.infer<typeof CancelSubscriptionSchema>;\n\n// ============ MONETIZATION SCHEMAS ============\n\n/**\n * Monetization type\n */\nexport const MonetizationTypeSchema = z.enum([\n 'purchase',\n 'subscription',\n 'free',\n]);\n\nexport type MonetizationType = z.infer<typeof MonetizationTypeSchema>;\n\n/**\n * Create monetization params (unified API)\n */\nexport const CreateMonetizationSchema = z.object({\n /** Type of monetization */\n type: MonetizationTypeSchema.default('purchase'),\n /** Amount (smallest unit) - required for purchase/subscription */\n amount: MoneyAmountSchema.optional(),\n /** Currency */\n currency: z.string().length(3).default('USD'),\n /** Customer ID */\n customerId: z.string().min(1),\n /** Organization ID */\n organizationId: z.string().min(1),\n /** Payment provider */\n provider: z.string().min(1),\n /** Plan key for categorization */\n planKey: z.string().optional(),\n /** Reference ID */\n referenceId: z.string().optional(),\n /** Reference model */\n referenceModel: z.string().optional(),\n /** Idempotency key */\n idempotencyKey: IdempotencyKeySchema,\n /** Metadata */\n metadata: MetadataSchema,\n /** Subscription-specific: interval */\n interval: IntervalSchema.optional(),\n /** Subscription-specific: trial days */\n trialDays: z.number().int().nonnegative().optional(),\n}).refine(\n (data) => {\n if (data.type !== 'free' && !data.amount) {\n return false;\n }\n return true;\n },\n { message: 'Amount is required for non-free monetization types' }\n);\n\nexport type CreateMonetizationInput = z.infer<typeof CreateMonetizationSchema>;\n\n// ============ COMMISSION SCHEMAS ============\n\n/**\n * Commission split recipient\n */\nexport const SplitRecipientSchema = z.object({\n /** Recipient ID */\n recipientId: z.string().min(1),\n /** Recipient type (user, organization, etc.) */\n recipientType: z.string().default('user'),\n /** Percentage of net amount (0-100) */\n percentage: z.number().min(0).max(100),\n /** Role description */\n role: z.string().optional(),\n});\n\nexport type SplitRecipient = z.infer<typeof SplitRecipientSchema>;\n\n/**\n * Commission configuration\n */\nexport const CommissionConfigSchema = z.object({\n /** Platform commission rate (0-100) */\n platformRate: z.number().min(0).max(100).default(0),\n /** Gateway fee rate (0-100) */\n gatewayFeeRate: z.number().min(0).max(100).default(0),\n /** Fixed gateway fee (smallest unit) */\n gatewayFixedFee: MoneyAmountSchema.default(0),\n /** Split recipients */\n splits: z.array(SplitRecipientSchema).optional(),\n /** Affiliate configuration */\n affiliate: z.object({\n recipientId: z.string(),\n recipientType: z.string().default('user'),\n rate: z.number().min(0).max(100),\n }).optional(),\n});\n\nexport type CommissionConfig = z.infer<typeof CommissionConfigSchema>;\n\n// ============ ESCROW SCHEMAS ============\n\n/**\n * Hold status\n */\nexport const HoldStatusSchema = z.enum([\n 'none',\n 'held',\n 'partial_release',\n 'released',\n 'cancelled',\n]);\n\nexport type HoldStatus = z.infer<typeof HoldStatusSchema>;\n\n/**\n * Create hold params\n */\nexport const CreateHoldSchema = z.object({\n /** Transaction ID */\n transactionId: z.string().min(1),\n /** Hold amount (optional, defaults to full transaction amount) */\n amount: MoneyAmountSchema.optional(),\n /** Hold until date */\n holdUntil: z.date().optional(),\n /** Reason for hold */\n reason: z.string().optional(),\n});\n\nexport type CreateHoldInput = z.infer<typeof CreateHoldSchema>;\n\n/**\n * Release hold params\n */\nexport const ReleaseHoldSchema = z.object({\n /** Transaction ID */\n transactionId: z.string().min(1),\n /** Amount to release (optional, full release if not provided) */\n amount: MoneyAmountSchema.optional(),\n /** Recipient ID */\n recipientId: z.string().min(1),\n /** Recipient type */\n recipientType: z.string().default('user'),\n /** Release notes */\n notes: z.string().optional(),\n});\n\nexport type ReleaseHoldInput = z.infer<typeof ReleaseHoldSchema>;\n\n// ============ CONFIG SCHEMAS ============\n\n/**\n * Provider configuration\n */\nexport const ProviderConfigSchema = z.record(z.string(), z.unknown());\n\n/**\n * Retry configuration\n */\nexport const RetryConfigSchema = z.object({\n /** Maximum retry attempts */\n maxAttempts: z.number().int().positive().default(3),\n /** Base delay in ms */\n baseDelay: z.number().positive().default(1000),\n /** Maximum delay in ms */\n maxDelay: z.number().positive().default(30000),\n /** Backoff multiplier */\n backoffMultiplier: z.number().positive().default(2),\n /** Jitter factor (0-1) */\n jitter: z.number().min(0).max(1).default(0.1),\n});\n\nexport type RetryConfig = z.infer<typeof RetryConfigSchema>;\n\n/**\n * Revenue configuration\n */\nexport const RevenueConfigSchema = z.object({\n /** Default currency */\n defaultCurrency: z.string().length(3).default('USD'),\n /** Commission configuration */\n commission: CommissionConfigSchema.optional(),\n /** Retry configuration */\n retry: RetryConfigSchema.optional(),\n /** Enable debug logging */\n debug: z.boolean().default(false),\n /** Environment */\n environment: z.enum(['development', 'staging', 'production']).default('development'),\n});\n\nexport type RevenueConfigInput = z.infer<typeof RevenueConfigSchema>;\n\n// ============ VALIDATION HELPERS ============\n\n/**\n * Validate input against schema\n */\nexport function validate<T extends z.ZodType>(\n schema: T,\n data: unknown\n): z.infer<T> {\n return schema.parse(data);\n}\n\n/**\n * Safe validate (returns result, doesn't throw)\n */\nexport function safeValidate<T extends z.ZodType>(\n schema: T,\n data: unknown\n): { success: true; data: z.infer<T> } | { success: false; error: z.ZodError } {\n const result = schema.safeParse(data);\n if (result.success) {\n return { success: true, data: result.data };\n }\n return { success: false, error: result.error };\n}\n\n/**\n * Format Zod error for display\n * Zod v4 uses `issues` property\n */\nexport function formatZodError(error: z.ZodError): string {\n return error.issues\n .map((issue) => `${issue.path.join('.')}: ${issue.message}`)\n .join(', ');\n}\n\nexport { z };\n"]}