@classytic/revenue 1.0.2 → 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,4 @@
1
1
  import * as z from 'zod';
2
- export { z };
3
2
 
4
3
  // @classytic/revenue - Enterprise Revenue Management System
5
4
 
@@ -176,6 +175,50 @@ var CommissionConfigSchema = z.object({
176
175
  rate: z.number().min(0).max(100)
177
176
  }).optional()
178
177
  });
178
+ var PaymentStatusEnumSchema = z.enum([
179
+ "pending",
180
+ "verified",
181
+ "failed",
182
+ "refunded",
183
+ "cancelled"
184
+ ]);
185
+ var PaymentEntrySchema = z.object({
186
+ /** Payment method (e.g., 'cash', 'bank_transfer', 'bkash') */
187
+ method: z.string().min(1, "Payment method is required"),
188
+ /** Amount in smallest currency unit */
189
+ amount: MoneyAmountSchema,
190
+ /** Reference/transaction ID for this payment */
191
+ reference: z.string().optional(),
192
+ /** Method-specific details (walletNumber, bankName, trxId, etc.) */
193
+ details: z.record(z.string(), z.unknown()).optional()
194
+ });
195
+ var CurrentPaymentInputSchema = z.object({
196
+ /** Transaction ID reference */
197
+ transactionId: z.string().optional(),
198
+ /** Total amount (sum of all payments for split payments) */
199
+ amount: MoneyAmountSchema,
200
+ /** Payment status */
201
+ status: PaymentStatusEnumSchema.default("pending"),
202
+ /** Primary method for single payments, or 'split' when multiple methods */
203
+ method: z.string().min(1, "Payment method is required"),
204
+ /** Reference/transaction ID for single payment */
205
+ reference: z.string().optional(),
206
+ /** Array of individual payments for split payment scenarios */
207
+ payments: z.array(PaymentEntrySchema).optional(),
208
+ /** Verification timestamp */
209
+ verifiedAt: z.date().optional(),
210
+ /** User ID who verified the payment */
211
+ verifiedBy: z.string().optional()
212
+ }).refine(
213
+ (data) => {
214
+ if (data.payments && data.payments.length > 0) {
215
+ const paymentsTotal = data.payments.reduce((sum, p) => sum + p.amount, 0);
216
+ return paymentsTotal === data.amount;
217
+ }
218
+ return true;
219
+ },
220
+ { message: "Split payments total must equal the transaction amount" }
221
+ );
179
222
  var HoldStatusSchema = z.enum([
180
223
  "none",
181
224
  "held",
@@ -243,7 +286,17 @@ function safeValidate(schema, data) {
243
286
  function formatZodError(error) {
244
287
  return error.issues.map((issue) => `${issue.path.join(".")}: ${issue.message}`).join(", ");
245
288
  }
289
+ function validateSplitPayments(currentPayment) {
290
+ if (!currentPayment.payments?.length) {
291
+ return true;
292
+ }
293
+ const paymentsTotal = currentPayment.payments.reduce(
294
+ (sum, p) => sum + p.amount,
295
+ 0
296
+ );
297
+ return paymentsTotal === currentPayment.amount;
298
+ }
246
299
 
247
- export { CancelSubscriptionSchema, CommissionConfigSchema, CreateHoldSchema, CreateMonetizationSchema, CreatePaymentSchema, CreateSubscriptionSchema, CurrencySchema, EmailSchema, HoldStatusSchema, IdempotencyKeySchema, IntervalSchema, MetadataSchema, MonetizationTypeSchema, MoneyAmountSchema, MoneySchema, ObjectIdSchema, ProviderConfigSchema, RefundSchema, ReleaseHoldSchema, RetryConfigSchema, RevenueConfigSchema, SplitRecipientSchema, SubscriptionStatusSchema, VerifyPaymentSchema, formatZodError, safeValidate, validate };
300
+ export { CancelSubscriptionSchema, CommissionConfigSchema, CreateHoldSchema, CreateMonetizationSchema, CreatePaymentSchema, CreateSubscriptionSchema, CurrencySchema, CurrentPaymentInputSchema, EmailSchema, HoldStatusSchema, IdempotencyKeySchema, IntervalSchema, MetadataSchema, MonetizationTypeSchema, MoneyAmountSchema, MoneySchema, ObjectIdSchema, PaymentEntrySchema, PaymentStatusEnumSchema, ProviderConfigSchema, RefundSchema, ReleaseHoldSchema, RetryConfigSchema, RevenueConfigSchema, SplitRecipientSchema, SubscriptionStatusSchema, VerifyPaymentSchema, formatZodError, safeValidate, validate, validateSplitPayments };
248
301
  //# sourceMappingURL=validation.js.map
249
302
  //# sourceMappingURL=validation.js.map
@@ -1 +1 @@
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"]}
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// ============ CURRENT PAYMENT SCHEMAS ============\n\n/**\n * Payment status enum\n */\nexport const PaymentStatusEnumSchema = z.enum([\n 'pending',\n 'verified',\n 'failed',\n 'refunded',\n 'cancelled',\n]);\n\nexport type PaymentStatusEnum = z.infer<typeof PaymentStatusEnumSchema>;\n\n/**\n * Individual payment entry for split/multi-payment scenarios\n * e.g., cash + bank transfer + mobile wallet\n */\nexport const PaymentEntrySchema = z.object({\n /** Payment method (e.g., 'cash', 'bank_transfer', 'bkash') */\n method: z.string().min(1, 'Payment method is required'),\n /** Amount in smallest currency unit */\n amount: MoneyAmountSchema,\n /** Reference/transaction ID for this payment */\n reference: z.string().optional(),\n /** Method-specific details (walletNumber, bankName, trxId, etc.) */\n details: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport type PaymentEntryInput = z.infer<typeof PaymentEntrySchema>;\n\n/**\n * Current payment schema with split payment support\n * Backward compatible - single payments work without the payments array\n */\nexport const CurrentPaymentInputSchema = z.object({\n /** Transaction ID reference */\n transactionId: z.string().optional(),\n /** Total amount (sum of all payments for split payments) */\n amount: MoneyAmountSchema,\n /** Payment status */\n status: PaymentStatusEnumSchema.default('pending'),\n /** Primary method for single payments, or 'split' when multiple methods */\n method: z.string().min(1, 'Payment method is required'),\n /** Reference/transaction ID for single payment */\n reference: z.string().optional(),\n /** Array of individual payments for split payment scenarios */\n payments: z.array(PaymentEntrySchema).optional(),\n /** Verification timestamp */\n verifiedAt: z.date().optional(),\n /** User ID who verified the payment */\n verifiedBy: z.string().optional(),\n}).refine(\n (data) => {\n // If payments array exists and has items, validate totals match\n if (data.payments && data.payments.length > 0) {\n const paymentsTotal = data.payments.reduce((sum, p) => sum + p.amount, 0);\n return paymentsTotal === data.amount;\n }\n return true;\n },\n { message: 'Split payments total must equal the transaction amount' }\n);\n\nexport type CurrentPaymentInput = z.infer<typeof CurrentPaymentInputSchema>;\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\n// ============ SPLIT PAYMENT HELPERS ============\n\n/**\n * Validates that split payment totals match the transaction amount\n * Returns true for single payments (no payments array)\n *\n * @param currentPayment - The current payment object to validate\n * @returns true if valid, false if split totals don't match\n *\n * @example\n * // Single payment - always valid\n * validateSplitPayments({ amount: 50000, method: 'cash', status: 'verified' }) // true\n *\n * // Split payment - totals must match\n * validateSplitPayments({\n * amount: 50000,\n * method: 'split',\n * status: 'verified',\n * payments: [\n * { method: 'cash', amount: 10000 },\n * { method: 'bkash', amount: 40000 },\n * ]\n * }) // true (10000 + 40000 = 50000)\n */\nexport function validateSplitPayments(currentPayment: {\n amount: number;\n payments?: Array<{ amount: number }>;\n}): boolean {\n if (!currentPayment.payments?.length) {\n return true; // Single payment, no validation needed\n }\n\n const paymentsTotal = currentPayment.payments.reduce(\n (sum, p) => sum + p.amount,\n 0\n );\n\n return paymentsTotal === currentPayment.amount;\n}\n"]}
@@ -1,3 +1,3 @@
1
- export { E as EscrowService, M as MonetizationService, P as PaymentService, T as TransactionService } from '../index-BnJWVXuw.js';
2
- import '../index-ChVD3P9k.js';
1
+ export { E as EscrowService, M as MonetizationService, P as PaymentService, T as TransactionService } from '../index-BnEXsnLJ.js';
2
+ import '../index-C5SsOrV0.js';
3
3
  import 'mongoose';
@@ -204,14 +204,37 @@ var TRANSACTION_TYPE = {
204
204
  INCOME: "income",
205
205
  EXPENSE: "expense"
206
206
  };
207
+ var TRANSACTION_TYPE_VALUES = Object.values(
208
+ TRANSACTION_TYPE
209
+ );
207
210
  var TRANSACTION_STATUS = {
211
+ PENDING: "pending",
212
+ PAYMENT_INITIATED: "payment_initiated",
213
+ PROCESSING: "processing",
214
+ REQUIRES_ACTION: "requires_action",
208
215
  VERIFIED: "verified",
209
216
  COMPLETED: "completed",
210
- CANCELLED: "cancelled"};
217
+ FAILED: "failed",
218
+ CANCELLED: "cancelled",
219
+ EXPIRED: "expired",
220
+ REFUNDED: "refunded",
221
+ PARTIALLY_REFUNDED: "partially_refunded"
222
+ };
223
+ var TRANSACTION_STATUS_VALUES = Object.values(
224
+ TRANSACTION_STATUS
225
+ );
211
226
  var LIBRARY_CATEGORIES = {
212
227
  SUBSCRIPTION: "subscription",
213
228
  PURCHASE: "purchase"
214
229
  };
230
+ var LIBRARY_CATEGORY_VALUES = Object.values(
231
+ LIBRARY_CATEGORIES
232
+ );
233
+ new Set(TRANSACTION_TYPE_VALUES);
234
+ new Set(
235
+ TRANSACTION_STATUS_VALUES
236
+ );
237
+ new Set(LIBRARY_CATEGORY_VALUES);
215
238
 
216
239
  // src/utils/category-resolver.ts
217
240
  function resolveCategory(entity, monetizationType, categoryMappings = {}) {
@@ -281,6 +304,10 @@ var MONETIZATION_TYPES = {
281
304
  PURCHASE: "purchase",
282
305
  SUBSCRIPTION: "subscription"
283
306
  };
307
+ var MONETIZATION_TYPE_VALUES = Object.values(
308
+ MONETIZATION_TYPES
309
+ );
310
+ new Set(MONETIZATION_TYPE_VALUES);
284
311
 
285
312
  // src/services/monetization.service.ts
286
313
  var MonetizationService = class {
@@ -1280,23 +1307,66 @@ var TransactionService = class {
1280
1307
 
1281
1308
  // src/enums/escrow.enums.ts
1282
1309
  var HOLD_STATUS = {
1310
+ PENDING: "pending",
1283
1311
  HELD: "held",
1284
1312
  RELEASED: "released",
1285
1313
  CANCELLED: "cancelled",
1314
+ EXPIRED: "expired",
1286
1315
  PARTIALLY_RELEASED: "partially_released"
1287
1316
  };
1317
+ var HOLD_STATUS_VALUES = Object.values(HOLD_STATUS);
1288
1318
  var RELEASE_REASON = {
1289
- PAYMENT_VERIFIED: "payment_verified"};
1319
+ PAYMENT_VERIFIED: "payment_verified",
1320
+ MANUAL_RELEASE: "manual_release",
1321
+ AUTO_RELEASE: "auto_release",
1322
+ DISPUTE_RESOLVED: "dispute_resolved"
1323
+ };
1324
+ var RELEASE_REASON_VALUES = Object.values(
1325
+ RELEASE_REASON
1326
+ );
1290
1327
  var HOLD_REASON = {
1291
- PAYMENT_VERIFICATION: "payment_verification"};
1328
+ PAYMENT_VERIFICATION: "payment_verification",
1329
+ FRAUD_CHECK: "fraud_check",
1330
+ MANUAL_REVIEW: "manual_review",
1331
+ DISPUTE: "dispute",
1332
+ COMPLIANCE: "compliance"
1333
+ };
1334
+ var HOLD_REASON_VALUES = Object.values(HOLD_REASON);
1335
+ new Set(HOLD_STATUS_VALUES);
1336
+ new Set(RELEASE_REASON_VALUES);
1337
+ new Set(HOLD_REASON_VALUES);
1292
1338
 
1293
1339
  // src/enums/split.enums.ts
1294
1340
  var SPLIT_TYPE = {
1341
+ PLATFORM_COMMISSION: "platform_commission",
1342
+ AFFILIATE_COMMISSION: "affiliate_commission",
1343
+ REFERRAL_COMMISSION: "referral_commission",
1344
+ PARTNER_COMMISSION: "partner_commission",
1295
1345
  CUSTOM: "custom"
1296
1346
  };
1347
+ var SPLIT_TYPE_VALUES = Object.values(SPLIT_TYPE);
1297
1348
  var SPLIT_STATUS = {
1298
1349
  PENDING: "pending",
1299
- PAID: "paid"};
1350
+ DUE: "due",
1351
+ PAID: "paid",
1352
+ WAIVED: "waived",
1353
+ CANCELLED: "cancelled"
1354
+ };
1355
+ var SPLIT_STATUS_VALUES = Object.values(
1356
+ SPLIT_STATUS
1357
+ );
1358
+ var PAYOUT_METHOD = {
1359
+ BANK_TRANSFER: "bank_transfer",
1360
+ MOBILE_WALLET: "mobile_wallet",
1361
+ PLATFORM_BALANCE: "platform_balance",
1362
+ CRYPTO: "crypto",
1363
+ CHECK: "check",
1364
+ MANUAL: "manual"
1365
+ };
1366
+ var PAYOUT_METHOD_VALUES = Object.values(PAYOUT_METHOD);
1367
+ new Set(SPLIT_TYPE_VALUES);
1368
+ new Set(SPLIT_STATUS_VALUES);
1369
+ new Set(PAYOUT_METHOD_VALUES);
1300
1370
 
1301
1371
  // src/utils/commission-split.ts
1302
1372
  function calculateSplits(amount, splitRules = [], gatewayFeeRate = 0) {