@plyaz/config 1.9.0 → 1.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chains/supportedChains.d.ts +28 -0
- package/dist/chains/supportedChains.d.ts.map +1 -1
- package/dist/index.cjs +3 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +4 -4
- package/dist/index.mjs.map +1 -1
- package/dist/payments/index.cjs +2 -2
- package/dist/payments/index.cjs.map +1 -1
- package/dist/payments/index.mjs +3 -3
- package/dist/payments/index.mjs.map +1 -1
- package/dist/payments/providers/stripe/capabilities.d.ts +16 -0
- package/dist/payments/providers/stripe/capabilities.d.ts.map +1 -0
- package/dist/payments/providers/stripe/config.d.ts.map +1 -1
- package/dist/payments/providers/stripe/index.d.ts +1 -0
- package/dist/payments/providers/stripe/index.d.ts.map +1 -1
- package/dist/utils/mapping/paymentMapping.d.ts +4 -0
- package/dist/utils/mapping/paymentMapping.d.ts.map +1 -0
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/payments/error-messages.ts","../../src/payments/events.ts","../../src/payments/gateway.ts","../../src/payments/providers/stripe/constant.ts","../../src/locale/currencies.ts","../../src/locale/countries.ts","../../src/time/constants.ts","../../src/payments/providers/stripe/config.ts","../../src/payments/validators.ts","../../src/payments/routing/methods/ab-testing/ab-testing.ts","../../src/db/constants.ts","../../src/payments/routing/methods/failover/strategies/priority-order.config.ts","../../src/payments/routing/methods/failover/strategies/next-available.config.ts","../../src/payments/routing/methods/failover/strategies/performance-based.config.ts","../../src/payments/routing/methods/failover/strategies/load-balanced.config.ts","../../src/payments/routing/methods/failover/strategies/geographic.config.ts","../../src/payments/routing/methods/failover/failover-registry.ts","../../src/payments/routing/methods/geographic/geographic.ts","../../src/payments/routing/methods/performance/performance.ts","../../src/payments/routing/methods/load-balancing/strategies/weighted.config.ts","../../src/payments/routing/methods/load-balancing/strategies/round-robin.config.ts","../../src/payments/routing/methods/load-balancing/strategies/least-connections.config.ts","../../src/payments/routing/methods/load-balancing/strategies/performance-based.config.ts","../../src/payments/routing/methods/load-balancing/strategies/custom.config.ts","../../src/payments/routing/methods/load-balancing/load-balancing-registry.ts","../../src/payments/routing/methods/cost-optimization/strategies/aggressive.config.ts","../../src/payments/routing/methods/cost-optimization/strategies/balanced.config.ts","../../src/payments/routing/methods/cost-optimization/strategies/conservative.config.ts","../../src/payments/routing/methods/cost-optimization/strategies/targeted.config.ts","../../src/payments/routing/methods/cost-optimization/cost-optimization-registry.ts","../../src/payments/routing/provider-selection/amount-based-selection.ts","../../src/payments/routing/provider-selection/currency-specific-providers.ts","../../src/payments/routing/provider-selection/custom-rules.ts","../../src/payments/routing/provider-selection/default-providers.ts","../../src/payments/routing/provider-selection/method-specific-providers.ts","../../src/payments/routing/provider-selection/region-specific-providers.ts","../../src/payments/routing/provider-selection/time-based-selection.ts","../../src/payments/routing/provider-selection/user-type-providers.ts"],"names":["DEFAULT_HMAC_ALGORITHM","DEFAULT_ENVIRONMENT","THRESHOLDS","SENSITIVE_KEYS","RISK_SCORE","LOG_LEVELS","REDACTED","PAYMENT_ERROR_MESSAGES","PAYMENT_ALERT_SEVERITY","ERROR_SEVERITY","PROCESSING_ERROR_MESSAGES","WEBHOOK_CONSTANTS","RECOVERY_STEPS","REFUND_ERROR_MESSAGES","DEFAULT_REFUND_LEVELS","FACTORY_MESSAGES","PAYLOAD_KEYS","STRIPE_ERROR_TYPES","PROVIDER_ERROR_MESSAGES","SECURITY_ERROR_MESSAGES","DEFAULT_PAYEMNT_PRIORITY","DEFAULT_URGENT","DEFAULT_MAX_LISTENERS","DEFAULT_HANDLER_TIMEOUT_MS","DEFAULT_EVENT_COUNT","DEFAULT_SUCCESS_THRESHOLD","DEFAULT_PARTIAL_SUCCESS_THRESHOLD","EVENT_DEFAULTS","EVENT_COMPONENT","EVENT_ERROR_CODE","EVENT_ERROR_MESSAGE","EVENT_ENVIRONMENT","PHASE_NONE","PHASE_CAPTURING","PHASE_AT_TARGET","PHASE_BUBBLING","EVENT_PHASE","EVENT_META_KEY","EVENT_SOURCE_FIELD","EVENT_RESULT_STATUS","EmptyArray","__name","CurrentTimestamp","SETTLED_PROMISE_STATUS","EVENT_NORMALIZER_MESSAGES","field","DEFAULT_RETRY_DELAY_MS","MAX_CIRCUIT_OPEN_MS","DEFAULT_CIRCUIT_BREAKER_FAILURE_THRESHOLD","FALLBACK_REASON","FALLBACK_NEXT_STEPS","RISK_LEVEL","SECURITY_FLAGS","CUSTOM_RULE_OPERATER","PAYMENT_GATEWAY_ERROR_MESSAGE","STRIPE_API_VERSION","STRIPE_MAPPING_VERSION","ZERO_AMOUNT","DEFAULT_PROCESSING_RATE","DEFAULT_PLATFORM_RATE","DEFAULT_CROSS_BORDER_RATE","DEFAULT_PRIORITY","FIXED_FEES","NEXT_STEP_EXPECTED_UPDATE_IN","STRIPE_CONFIDENCE_HIGH","STRIPE_PRIORITY_HIGH","STRIPE_CONFIDENCE_MEDIUM","STRIPE_PRIORITY_MEDIUM","AMOUNT_DECIMALS","AMOUNT_DIVISOR","UNIX_TIMESTAMP_MULTIPLIER","TIMESTAMP_FALLBACK","NEXT_STEP_USER_ACTION","NEXT_STEP_SYSTEM_ACTION","STRIPE_EVENT_TYPE","STRIPE_PAYMENT_INTENT_STATUS","DEFAULT_PROCESSING_TIME","DEFAULT_SETTLEMENT_TIME","STRIPE_DATA_PATHS","PAYMENT_OPERATION","STRIPE_MESSAGES","CURRENCY_CODES","COUNTRY_CODES","DAYS_IN_WEEK","EARLY_MORNING_HOURS","TIME_CONSTANTS","COUNTRY_TIMEZONES","ALL_COUNTRY_TIMEZONES","DAYS_OF_WEEK","_","i","HOURS_OF_DAY","stripeConfig","PAYMENT_PROVIDER_TYPE","PAYMENT_METHOD","HTTP_STATUS","SUPPORTED_CURRENCIES","VALIDATION_MESSAGES","VALIDATOR_NAMES","CORE_FIELDS","VALID_BILLING_CYCLES","VALID_RISK_LEVELS","VALID_RECURRENCE_FREQUENCIES","MIN_POSITIVE_AMOUNT","CURRENCY_CODE_LENGTH","ABTesting","ROUTING_STRATEGY","COST_OPTIMIZATION_STRATEGY","NUMERIX","FAILOVER_PRIORITY_ORDER","FAIL_OVER_STRATEGY","FAILOVER_NEXT_AVAILABLE","FAILOVER_PERFORMANCE_BASED","FAILOVER_LOAD_BALANCED","FAILOVER_GEOGRAPHIC","FAILOVER_REGISTRY","Geographic","REGULATORY_FRAMEWORK","TRANSACTION_TYPE","Performance","PERFORMANCE_METRIC_TYPE","WeightedLoadBalancing","LOAD_BALANCING_STRATEGY","RoundRobinLoadBalancing","LeastConnectionsLoadBalancing","PerformanceBasedLoadBalancing","CustomLoadBalancing","LoadBalancingRegistry","COST_OPTIMIZATION_AGGRESSIVE","COST_OPTIMIZATION_BALANCED","COST_OPTIMIZATION_CONSERVATIVE","COST_OPTIMIZATION_TARGETED","COST_OPTIMIZATION","AMOUNT_BASED_SELECTION","CurrencySpecificProviders","CUSTOM_RULES","DEFAULT_PROVIDERS","MethodSpecificProviders","regionSpecificProviders","TIME_BASED_SELECTION","UserTypeSelection","USER_TYPE"],"mappings":";AAAA,IAAA,EAAA,CAAA,MAAA,CAAA,cAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,EAAA,CAAA,CAAA,CAAA,MAAA,CAAA,CAAA,KAAA,CAAA,CAAA,CAAA,YAAA,CAAA,IAAA,CAAA,CAAA,CAEO,IAAMA,EAAAA,CAAyB,SACzBC,EAAAA,CAAsB,SAAA,CAEtBC,EAAAA,CAAa,CACxB,sBAAuB,EAAA,CACvB,uBAAA,CAAyB,EAC3B,CAAA,CAEaC,GAAiB,CAAC,OAAA,CAAS,QAAA,CAAU,WAAW,EAEhDC,EAAAA,CAAa,CACxB,SAAA,CAAW,GACb,EAGaC,EAAAA,CAAa,CACxB,QAAA,CAAU,UAAA,CACV,MAAO,OAAA,CACP,IAAA,CAAM,MACR,CAAA,CAGaC,EAAAA,CAAW,CACtB,QAAA,CAAU,qBAAA,CACV,SAAA,CAAW,YACb,EAEaC,EAAAA,CAAyB,CACpC,oBAAA,CAAsB,wDAAA,CACtB,2BAA4B,0DAAA,CAC5B,iBAAA,CAAmB,kCAAA,CACnB,MAAA,CAAQ,kEACR,UAAA,CAAY,kEAAA,CACZ,eAAgB,gDAAA,CAChB,aAAA,CAAe,yDACf,QAAA,CAAU,6DAAA,CACV,OAAA,CAAS,wCAAA,CACT,MAAO,uDAAA,CACP,MAAA,CAAQ,wDAAA,CACR,OAAA,CAAS,qDACT,UAAA,CAAY,6DAAA,CACZ,UAAA,CAAY,qEAAA,CACZ,OAAQ,6CAAA,CACR,aAAA,CAAe,kEACf,OAAA,CAAS,6DAAA,CACT,cAAe,wBAAA,CACf,gBAAA,CAAkB,yBAAA,CAClB,kBAAA,CAAoB,qBACpB,oBAAA,CAAsB,6BAAA,CACtB,iBAAA,CAAmB,0BAAA,CACnB,eAAgB,8DAClB,CAAA,CAEaC,EAAAA,CAGT,CACF,CAACC,cAAAA,CAAe,GAAG,EAAG,IAAA,CACtB,CAACA,eAAe,MAAM,EAAG,KAAA,CACzB,CAACA,eAAe,IAAI,EAAG,IAAA,CACvB,CAACA,eAAe,QAAQ,EAAG,IAC7B,CAAA,CAEaC,GAA4B,CACvC,OAAA,CAAS,gEACT,oBAAA,CAAsB,8BACxB,EAEaC,EAAAA,CAAoB,CAC/B,eAAA,CAAiB,iDAAA,CACjB,qBAAsB,+CACxB,CAAA,CAEaC,EAAAA,CAAiB,CAC5B,MAAO,gCAAA,CACP,WAAA,CAAa,6CAAA,CACb,QAAA,CAAU,8BACZ,CAAA,CAEaC,EAAAA,CAAwB,CACnC,WAAA,CAAa,oBAAA,CACb,cAAe,6BAAA,CACf,UAAA,CAAY,0BAAA,CACZ,mBAAA,CAAqB,+CACrB,oBAAA,CAAsB,qEACxB,CAAA,CAEaC,EAAAA,CAAwB,CACnC,QAAA,CAAU,SAAA,CACV,OAAA,CAAS,MACX,EAEaC,EAAAA,CAAmB,CAC9B,sBAAuB,2BAAA,CACvB,cAAA,CAAgB,gEAChB,qBAAA,CAAuB,oCAAA,CACvB,mBAAA,CAAqB,mCAAA,CACrB,eAAgB,4BAClB,CAAA,CAEaC,EAAAA,CAAe,CAC1B,SAAU,UAAA,CACV,KAAA,CAAO,OACT,CAAA,CAEaC,GAAqB,CAChC,cAAA,CAAgB,uBAChB,UAAA,CAAY,kBAAA,CACZ,gBAAiB,uBAAA,CACjB,UAAA,CAAY,YAAA,CACZ,cAAA,CAAgB,uBAChB,aAAA,CAAe,eACjB,CAAA,CAEaC,EAAAA,CAA0B,CACrC,mBAAA,CAAqB,8CAAA,CACrB,oBAAA,CAAsB,4DACxB,EAEaC,EAAAA,CAA0B,CACrC,oBAAqB,yDAAA,CACrB,oBAAA,CAAsB,0EAEtB,cAAA,CAAgB,CACd,IAAA,CAAM,gBAAA,CACN,kBAAmB,gBAAA,CACnB,YAAA,CAAc,iFAAA,CACd,eAAA,CAAiB,CACf,IAAA,CAAM,EAAA,CACN,QAAA,CAAU,EACZ,CACF,CACF,MChIaC,EAAAA,CAA2B,CAAA,CAC3BC,GAAiB,CAAA,CACjBC,EAAAA,CAAwB,EAAA,CACxBC,EAAAA,CAA6B,IAC7BC,EAAAA,CAAsB,CAAA,CAGtBC,EAAAA,CAA4B,CAAA,CAC5BC,GAAoC,EAAA,CAGpCC,EAAAA,CAAiB,CAC5B,QAAA,CAAU,EACV,MAAA,CAAQ,CAAA,CACR,cAAe,EAAA,CACf,kBAAA,CAAoB,IACpB,iBAAA,CAAmB,CAAA,CACnB,yBAAA,CAA2B,EAAA,CAC3B,YAAa,CACf,CAAA,CAGaC,EAAAA,CAAkB,CAC7B,QAAS,eAAA,CACT,eAAA,CAAiB,iBAAA,CACjB,oBAAA,CAAsB,uBACtB,gBAAA,CAAkB,kBACpB,EAGaC,EAAAA,CAAmB,CAC9B,eAAgB,gBAAA,CAChB,eAAA,CAAiB,iBAAA,CACjB,eAAA,CAAiB,iBACnB,CAAA,CAGaC,EAAAA,CAAsB,CACjC,cAAA,CAAgB,2BAChB,eAAA,CAAiB,6BACnB,CAAA,CAGaC,EAAAA,CAAoB,CAC/B,WAAA,CAAa,aAAA,CACb,WAAY,YAAA,CACZ,IAAA,CAAM,MACR,CAAA,CAGaC,EAAAA,CAAa,CAAA,CACbC,EAAAA,CAAkB,EAClBC,EAAAA,CAAkB,CAAA,CAClBC,EAAAA,CAAiB,CAAA,CAEjBC,GAAc,CACzB,IAAA,CAAMJ,EAAAA,CACN,eAAA,CAAiBC,GACjB,SAAA,CAAWC,EAAAA,CACX,eAAgBC,EAClB,CAAA,CAGaE,GAAiB,CAC5B,QAAA,CAAU,UAAA,CACV,MAAA,CAAQ,SACR,QAAA,CAAU,UAAA,CACV,IAAA,CAAM,MAAA,CACN,OAAQ,QACV,CAAA,CAGaC,EAAAA,CAAqB,CAChC,UAAW,WAAA,CACX,WAAA,CAAa,aACf,CAAA,CAGaC,EAAAA,CAAsB,CACjC,KAAA,CAAO,OAAA,CACP,IAAA,CAAM,MAAA,CACN,QAAS,SAAA,CACT,QAAA,CAAU,UACZ,CAAA,CAGaC,GAAaC,CAAAA,CAAA,IAAwB,EAAC,CAAzB,cACbC,EAAAA,CAAmBD,CAAAA,CAAA,IAAc,IAAA,CAAK,GAAA,GAAnB,kBAAA,CAAA,CAKnBE,EAAAA,CAAyB,CACpC,SAAA,CAAW,YACX,QAAA,CAAU,UACZ,CAAA,CAEaC,EAAAA,CAA4B,CACvC,oBAAA,CAAsB,6BAAA,CACtB,eAAA,CAAiB,8CAAA,CACjB,wBAAyB,sCAAA,CACzB,4BAAA,CAA8B,2CAC9B,0BAAA,CAA4B,gCAAA,CAC5B,0BAA2B,4BAAA,CAC3B,qBAAA,CAAuB,wBAAA,CACvB,yBAAA,CAA2B,6BAC3B,mBAAA,CAAqBH,CAAAA,CAACI,CAAAA,EAA0B,CAAA,gBAAA,EAAmBA,CAAK,CAAA,aAAA,CAAA,CAAnD,qBAAA,CACvB,ECjHO,IAAMC,GAAyB,GAAA,CACzBC,EAAAA,CAAsB,IACtBC,EAAAA,CAA4C,CAAA,CAE5CC,GAAkB,CAC7B,WAAA,CAAa,sBAAA,CACb,gBAAA,CAAkB,mBAClB,YAAA,CAAc,cAAA,CACd,aAAA,CAAe,eACjB,EAEaC,EAAAA,CAAsB,CACjC,WAAA,CAAa,iBAAA,CACb,cAAe,eACjB,CAAA,CAGaC,GAAa,CACxB,GAAA,CAAK,MACL,MAAA,CAAQ,QAAA,CACR,IAAA,CAAM,MACR,EAGaC,EAAAA,CAAiB,CAC5B,aAAA,CAAe,eACjB,EAGYC,EAAAA,CAAAA,CAAAA,CAAAA,GACVA,CAAAA,CAAA,UAAA,CAAa,YAAA,CACbA,EAAA,OAAA,CAAU,SAAA,CACVA,EAAA,UAAA,CAAa,YAAA,CACbA,EAAA,UAAA,CAAa,YAAA,CACbA,CAAAA,CAAA,WAAA,CAAc,cACdA,CAAAA,CAAA,WAAA,CAAc,aAAA,CANJA,CAAAA,CAAAA,EAAAA,EAAAA,EAAA,IASCC,EAAAA,CAAgC,CAE3C,uBAAA,CAAyB,0BAAA,CACzB,yBAA0B,2BAAA,CAC1B,4BAAA,CAA8B,gCAC9B,iBAAA,CAAmB,iCAAA,CACnB,iBAAkB,kCAAA,CAClB,mBAAA,CAAqB,qDAAA,CACrB,gBAAA,CAAkB,sCAClB,aAAA,CAAe,sDAAA,CAGf,6BAAA,CAA+B,6DAAA,CAC/B,6BAA8B,uDAAA,CAG9B,sBAAA,CAAwB,kDAAA,CACxB,uBAAA,CAAyB,mCACzB,8BAAA,CAAgC,4CAAA,CAGhC,uBAAwB,mCAAA,CACxB,qBAAA,CAAuB,mCACvB,qBAAA,CAAuB,0BAAA,CACvB,wBAAA,CAA0B,mCAAA,CAC1B,0BAA2B,oCAAA,CAC3B,sBAAA,CAAwB,yCAAA,CACxB,2BAAA,CAA6B,kDAC7B,+BAAA,CAAiC,qDAAA,CACjC,iCAAA,CAAmC,uDAAA,CACnC,qCAAsC,0DAAA,CACtC,+BAAA,CAAiC,sDACjC,+BAAA,CAAiC,qDAAA,CACjC,2BAA4B,wCAAA,CAC5B,mCAAA,CAAqC,qDAAA,CAGrC,uBAAA,CAAyB,oEACzB,sBAAA,CAAwB,sDAAA,CACxB,wBAAA,CAA0B,2CAC5B,EC9EO,IAAMC,EAAAA,CAAqB,YAAA,CACrBC,EAAAA,CAAyB,SACzBC,EAAAA,CAAc,CAAA,CACdC,GAA0B,IAAA,CAC1BC,EAAAA,CAAwB,EACxBC,EAAAA,CAA4B,GAAA,CAC5BC,EAAAA,CAAmB,GAAA,CAEnBC,GAAa,CACxB,WAAA,CAAa,EAAA,CACb,aAAA,CAAe,IACf,eAAA,CAAiB,GAAA,CACjB,iBAAA,CAAmB,EAAA,CACnB,WAAY,EACd,CAAA,CAEaC,GAA+B,CAC1C,QAAA,CAAU,EACZ,CAAA,CAGaC,EAAAA,CAAyB,CAAA,CACzBC,EAAAA,CAAuB,IACvBC,EAAAA,CAA2B,EAAA,CAC3BC,EAAAA,CAAyB,EAAA,CAGzBC,GAAkB,CAAA,CAClBC,EAAAA,CAAiB,GAAA,CAGjBC,EAAAA,CAA4B,IAG5BC,EAAAA,CAAqB,CAAA,CAGrBC,GAAwB,CACnC,QAAA,CAAU,WACV,IAAA,CAAM,MAAA,CACN,KAAA,CAAO,OAAA,CACP,gBAAiB,iBACnB,CAAA,CAGaC,EAAAA,CAA0B,CACrC,gBAAiB,iBAAA,CACjB,aAAA,CAAe,eAAA,CACf,UAAA,CAAY,YACd,CAAA,CAGaC,EAAAA,CAAoB,CAE/B,qBAAA,CAAuB,uBAAA,CACvB,eAAgB,gBAAA,CAChB,uBAAA,CAAyB,yBAAA,CACzB,oBAAA,CAAsB,uBACtB,sBAAA,CAAwB,wBAAA,CAGxB,sBAAA,CAAwB,wBAAA,CACxB,uBAAwB,wBAAA,CACxB,qBAAA,CAAuB,uBAAA,CACvB,mBAAA,CAAqB,sBACrB,oBAAA,CAAsB,sBAAA,CACtB,mBAAoB,oBAAA,CACpB,mBAAA,CAAqB,sBAGrB,uBAAA,CAAyB,yBAAA,CACzB,sBAAA,CAAwB,wBAAA,CACxB,wBAAyB,yBAAA,CACzB,sBAAA,CAAwB,wBAAA,CAGxB,oBAAA,CAAsB,gCACtB,oBAAA,CAAsB,+BAAA,CACtB,oBAAA,CAAsB,+BAAA,CACtB,qBAAsB,+BAAA,CACtB,mBAAA,CAAqB,+BACrB,0BAAA,CAA4B,qCAAA,CAC5B,yBAA0B,mCAAA,CAG1B,yBAAA,CAA2B,2BAAA,CAC3B,sBAAA,CAAwB,yBACxB,0BAAA,CAA4B,4BAAA,CAC5B,wBAAA,CAA0B,0BAAA,CAC1B,0BAA2B,2BAAA,CAG3B,eAAA,CAAiB,iBAAA,CACjB,eAAA,CAAiB,kBACjB,eAAA,CAAiB,iBAAA,CACjB,cAAe,eAAA,CACf,aAAA,CAAe,gBACf,aAAA,CAAe,eAAA,CAGf,yBAAA,CAA2B,2BAAA,CAC3B,2BAA4B,4BAAA,CAC5B,mBAAA,CAAqB,qBAAA,CACrB,sBAAA,CAAwB,yBACxB,mBAAA,CAAqB,qBACvB,CAAA,CAEaC,EAAAA,CAA+B,CAC1C,SAAA,CAAW,WAAA,CACX,WAAY,YAAA,CACZ,eAAA,CAAiB,kBACjB,qBAAA,CAAuB,uBAAA,CACvB,uBAAA,CAAyB,yBAAA,CACzB,SAAU,UAAA,CACV,MAAA,CAAQ,QAAA,CACR,QAAA,CAAU,WACV,OAAA,CAAS,SAAA,CACT,UAAA,CAAY,YAAA,CACZ,SAAU,UAAA,CACV,IAAA,CAAM,MAAA,CACN,QAAA,CAAU,WACV,kBAAA,CAAoB,oBAAA,CACpB,QAAA,CAAU,UAAA,CACV,WAAY,YAAA,CACZ,mBAAA,CAAqB,qBACvB,CAAA,CAGaC,GAA0B,CACrC,cAAA,CAAgB,CAAA,CAChB,cAAA,CAAgB,IAChB,cAAA,CAAgB,EAAA,CAChB,QAAS,CAAC,kBAAkB,CAC9B,CAAA,CAGaC,EAAAA,CAA0B,CACrC,WAAA,CAAa,EACb,WAAA,CAAa,CAAA,CACb,WAAA,CAAa,CAAA,CACb,mBAAoB,IACtB,CAAA,CAEaC,EAAAA,CAAoB,CAC/B,eAAgB,gBAAA,CAChB,MAAA,CAAQ,qBACR,QAAA,CAAU,sBAAA,CACV,OAAQ,oBAAA,CACR,cAAA,CAAgB,4BAAA,CAChB,QAAA,CAAU,sBACZ,CAAA,CAEaC,EAAAA,CAAoB,CAC/B,UAAA,CAAY,aACZ,cAAA,CAAgB,eAAA,CAChB,eAAA,CAAiB,gBAAA,CACjB,eAAgB,eAAA,CAChB,cAAA,CAAgB,gBAChB,iBAAA,CAAmB,iBAAA,CACnB,mBAAoB,kBAAA,CACpB,eAAA,CAAiB,gBAAA,CACjB,wBAAA,CAA0B,yBAC1B,cAAA,CAAgB,eAAA,CAChB,iBAAA,CAAmB,iBAAA,CACnB,gBAAiB,gBAAA,CACjB,eAAA,CAAiB,gBACnB,CAAA,CAEaC,GAAkB,CAC7B,eAAA,CAAiB,yBACjB,aAAA,CAAe,SAAA,CACf,cAAe,SAAA,CACf,WAAA,CAAa,kCAAA,CACb,qBAAA,CAAuB,kCACvB,sBAAA,CAAwB,2BAAA,CACxB,qBAAA,CAAuB,0BAAA,CACvB,cAAe,0BAAA,CACf,oBAAA,CAAsB,kCAAA,CACtB,yBAAA,CAA2B,oCAC3B,sBAAA,CAAwB,2BAAA,CACxB,sBAAuB,oCAAA,CACvB,qBAAA,CAAuB,2BACvB,wBAAA,CAA0B,6BAAA,CAC1B,sBAAA,CAAwB,wCAC1B,EC7KO,IAAMC,CAAAA,CAAiB,CAE5B,IAAK,KAAA,CACL,GAAA,CAAK,MACL,GAAA,CAAK,KAAA,CACL,IAAK,KAAA,CACL,GAAA,CAAK,KAAA,CACL,GAAA,CAAK,MACL,GAAA,CAAK,KAAA,CACL,GAAA,CAAK,KAAA,CAGL,IAAK,KAAA,CACL,GAAA,CAAK,KAAA,CACL,GAAA,CAAK,MACL,GAAA,CAAK,KAAA,CACL,IAAK,KAAA,CACL,GAAA,CAAK,MACL,GAAA,CAAK,KAAA,CACL,GAAA,CAAK,KAAA,CACL,IAAK,KAAA,CACL,GAAA,CAAK,KAAA,CACL,GAAA,CAAK,MACL,GAAA,CAAK,KAAA,CACL,GAAA,CAAK,KAAA,CAGL,IAAK,KAAA,CACL,GAAA,CAAK,MACL,GAAA,CAAK,KAAA,CACL,IAAK,KAAA,CACL,GAAA,CAAK,KAAA,CACL,GAAA,CAAK,MACL,GAAA,CAAK,KAAA,CACL,GAAA,CAAK,KAAA,CACL,IAAK,KAAA,CACL,GAAA,CAAK,KAAA,CACL,GAAA,CAAK,MAGL,GAAA,CAAK,KAAA,CACL,IAAK,KAAA,CACL,GAAA,CAAK,MACL,GAAA,CAAK,KAAA,CACL,GAAA,CAAK,KAAA,CACL,IAAK,KAAA,CACL,GAAA,CAAK,KAAA,CACL,GAAA,CAAK,MACL,GAAA,CAAK,KAAA,CACL,GAAA,CAAK,KAAA,CACL,IAAK,KAAA,CACL,GAAA,CAAK,MACL,GAAA,CAAK,KAAA,CACL,IAAK,KAAA,CACL,GAAA,CAAK,KAAA,CACL,GAAA,CAAK,MACL,GAAA,CAAK,KAAA,CACL,GAAA,CAAK,KAAA,CACL,IAAK,KAAA,CAGL,GAAA,CAAK,KAAA,CACL,GAAA,CAAK,MACL,GAAA,CAAK,KAAA,CACL,IAAK,KAAA,CACL,GAAA,CAAK,MACL,GAAA,CAAK,KAAA,CACL,GAAA,CAAK,KAAA,CACL,IAAK,KAAA,CACL,GAAA,CAAK,KAAA,CACL,GAAA,CAAK,MACL,GAAA,CAAK,KAAA,CACL,GAAA,CAAK,KAAA,CACL,IAAK,KAAA,CAGL,GAAA,CAAK,MACL,GAAA,CAAK,KAAA,CACL,IAAK,KAAA,CACL,GAAA,CAAK,KAAA,CACL,GAAA,CAAK,MACL,GAAA,CAAK,KAAA,CACL,GAAA,CAAK,KAAA,CACL,IAAK,KAAA,CACL,GAAA,CAAK,KAAA,CACL,GAAA,CAAK,MACL,GAAA,CAAK,KAAA,CACL,IAAK,KAAA,CACL,GAAA,CAAK,MACL,GAAA,CAAK,KAAA,CAGL,GAAA,CAAK,KAAA,CACL,IAAK,KAAA,CACL,GAAA,CAAK,KAAA,CAGL,GAAA,CAAK,MACL,GAAA,CAAK,KAAA,CACL,GAAA,CAAK,KAAA,CACL,IAAK,KAAA,CACL,GAAA,CAAK,MACL,GAAA,CAAK,KAAA,CACL,IAAK,KAAA,CACL,GAAA,CAAK,KAAA,CAGL,GAAA,CAAK,MACL,GAAA,CAAK,KAAA,CACL,IAAA,CAAM,MAAA,CACN,KAAM,MACR,CAAA,CC/GO,IAAMC,CAAAA,CAAgB,CAE3B,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CA8BJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CAEJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CAEJ,GAAI,IAAA,CAGJ,GAAI,IAAA,CAaJ,GAAI,IAAA,CAEJ,EAAA,CAAI,KAUJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CAGJ,EAAA,CAAI,KAEJ,GAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CAMJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CAiBJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,KAOJ,GAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,KAEJ,GAAI,IAAA,CAGJ,EAAA,CAAI,KAIJ,EAAA,CAAI,IAAA,CAWJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CAIJ,GAAI,IAAA,CAOJ,EAAA,CAAI,IAAA,CAUJ,GAAI,IAAA,CAGJ,EAAA,CAAI,IAAA,CAOJ,EAAA,CAAI,KAWJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CAuBJ,EAAA,CAAI,IACN,EClOO,IAAMC,EAAAA,CAAe,EACfC,EAAAA,CAAsB,CAAA,CAItBC,EAAiB,CAU5B,MAAA,CAAQ,IAUR,IAAA,CAAM,IAAA,CA4FN,aAAA,CAAe,GAAA,CAKf,YAAA,CAAc,IAKd,WAAA,CAAa,GAAA,CAeb,YAAA,CAAc,GA4MhB,EAMaC,EAAAA,CAA8C,CAEzD,CAACJ,CAAAA,CAAc,EAAE,EAAG,CAClB,mBACA,iBAAA,CACA,gBAAA,CACA,sBACA,mBAAA,CACA,kBACF,CAAA,CACA,CAACA,EAAc,EAAE,EAAG,CAClB,iBAAA,CACA,oBACA,kBAAA,CACA,iBAAA,CACA,kBACF,CAAA,CACA,CAACA,CAAAA,CAAc,EAAE,EAAG,CAAC,qBAAA,CAAuB,oBAAqB,iBAAiB,CAAA,CAClF,CAACA,CAAAA,CAAc,EAAE,EAAG,CAAC,mBAAA,CAAqB,gBAAA,CAAkB,mBAAmB,CAAA,CAC/E,CAACA,CAAAA,CAAc,EAAE,EAAG,CAAC,gCAAgC,EACrD,CAACA,CAAAA,CAAc,EAAE,EAAG,CAAC,kBAAkB,CAAA,CACvC,CAACA,CAAAA,CAAc,EAAE,EAAG,CAAC,gBAAgB,CAAA,CACrC,CAACA,CAAAA,CAAc,EAAE,EAAG,CAAC,cAAc,EACnC,CAACA,CAAAA,CAAc,EAAE,EAAG,CAAC,iBAAiB,CAAA,CAGtC,CAACA,CAAAA,CAAc,EAAE,EAAG,CAAC,eAAe,CAAA,CACpC,CAACA,CAAAA,CAAc,EAAE,EAAG,CAAC,cAAc,EACnC,CAACA,CAAAA,CAAc,EAAE,EAAG,CAAC,eAAe,CAAA,CACpC,CAACA,CAAAA,CAAc,EAAE,EAAG,CAAC,aAAa,CAAA,CAClC,CAACA,CAAAA,CAAc,EAAE,EAAG,CAAC,eAAe,EACpC,CAACA,CAAAA,CAAc,EAAE,EAAG,CAAC,eAAe,CAAA,CACpC,CAACA,CAAAA,CAAc,EAAE,EAAG,CAAC,kBAAkB,CAAA,CACvC,CAACA,CAAAA,CAAc,EAAE,EAAG,CAAC,kBAAkB,EACvC,CAACA,CAAAA,CAAc,EAAE,EAAG,CAAC,eAAe,CAAA,CACpC,CAACA,CAAAA,CAAc,EAAE,EAAG,CAAC,iBAAiB,CAAA,CACtC,CAACA,CAAAA,CAAc,EAAE,EAAG,CAAC,aAAa,EAClC,CAACA,CAAAA,CAAc,EAAE,EAAG,CAAC,eAAe,CAAA,CACpC,CAACA,CAAAA,CAAc,EAAE,EAAG,CAAC,gBAAiB,oBAAA,CAAsB,cAAA,CAAgB,kBAAkB,CAAA,CAC9F,CAACA,CAAAA,CAAc,EAAE,EAAG,CAAC,aAAa,EAClC,CAACA,CAAAA,CAAc,EAAE,EAAG,CAAC,eAAe,CAAA,CACpC,CAACA,CAAAA,CAAc,EAAE,EAAG,CAAC,iBAAiB,CAAA,CAGtC,CAACA,CAAAA,CAAc,EAAE,EAAG,CAAC,eAAA,CAAiB,aAAa,CAAA,CACnD,CAACA,CAAAA,CAAc,EAAE,EAAG,CAAC,YAAY,CAAA,CACjC,CAACA,EAAc,EAAE,EAAG,CAAC,YAAY,EACjC,CAACA,CAAAA,CAAc,EAAE,EAAG,CAAC,cAAc,CAAA,CACnC,CAACA,CAAAA,CAAc,EAAE,EAAG,CAAC,cAAc,CAAA,CACnC,CAACA,EAAc,EAAE,EAAG,CAAC,YAAY,EACjC,CAACA,CAAAA,CAAc,EAAE,EAAG,CAAC,cAAc,CAAA,CACnC,CAACA,CAAAA,CAAc,EAAE,EAAG,CAAC,kBAAkB,CAAA,CACvC,CAACA,EAAc,EAAE,EAAG,CAAC,mBAAmB,EACxC,CAACA,CAAAA,CAAc,EAAE,EAAG,CAAC,gBAAgB,CAAA,CACrC,CAACA,CAAAA,CAAc,EAAE,EAAG,CAClB,cAAA,CACA,eAAA,CACA,eACF,EACA,CAACA,CAAAA,CAAc,EAAE,EAAG,CAAC,aAAa,CAAA,CAClC,CAACA,CAAAA,CAAc,EAAE,EAAG,CAAC,YAAY,CAAA,CACjC,CAACA,EAAc,EAAE,EAAG,CAAC,aAAa,EAClC,CAACA,CAAAA,CAAc,EAAE,EAAG,CAAC,aAAa,CAAA,CAClC,CAACA,CAAAA,CAAc,EAAE,EAAG,CAAC,cAAc,CAAA,CACnC,CAACA,EAAc,EAAE,EAAG,CAAC,gBAAgB,EACrC,CAACA,CAAAA,CAAc,EAAE,EAAG,CAAC,YAAY,CAAA,CACjC,CAACA,CAAAA,CAAc,EAAE,EAAG,CAAC,aAAa,CAAA,CAGlC,CAACA,EAAc,EAAE,EAAG,CAAC,cAAc,EACnC,CAACA,CAAAA,CAAc,EAAE,EAAG,CAAC,cAAc,CAAA,CACnC,CAACA,CAAAA,CAAc,EAAE,EAAG,CAAC,qBAAqB,CAAA,CAC1C,CAACA,EAAc,EAAE,EAAG,CAAC,gBAAgB,EACrC,CAACA,CAAAA,CAAc,EAAE,EAAG,CAAC,mBAAmB,CAAA,CACxC,CAACA,CAAAA,CAAc,EAAE,EAAG,CAAC,cAAc,CAAA,CACnC,CAACA,EAAc,EAAE,EAAG,CAAC,oBAAoB,EACzC,CAACA,CAAAA,CAAc,EAAE,EAAG,CAAC,sBAAsB,CAAA,CAC3C,CAACA,CAAAA,CAAc,EAAE,EAAG,CAAC,cAAc,CAAA,CAGnC,CAACA,EAAc,EAAE,EAAG,CAClB,kBAAA,CACA,sBACA,iBAAA,CACA,oBACF,CAAA,CACA,CAACA,EAAc,EAAE,EAAG,CAAC,kBAAkB,CAAA,CACvC,CAACA,CAAAA,CAAc,EAAE,EAAG,CAAC,cAAc,CAAA,CACnC,CAACA,CAAAA,CAAc,EAAE,EAAG,CAAC,sBAAsB,CAAA,CAG3C,CAACA,EAAc,EAAE,EAAG,CAAC,oBAAA,CAAsB,mBAAA,CAAqB,kBAAkB,CACpF,CAAA,CAEaK,CAAAA,CAAkC,KAAA,CAAM,KACnD,IAAI,GAAA,CAAI,MAAA,CAAO,MAAA,CAAOD,EAAiB,CAAA,CAAE,IAAA,EAAM,CACjD,EAoBaE,CAAAA,CAAe,KAAA,CAAM,KAAK,CAAE,MAAA,CAAQL,EAAa,CAAA,CAAG,CAACM,CAAAA,CAAGC,CAAAA,GAAMA,CAAC,CAAA,CAC/DC,CAAAA,CAAe,KAAA,CAAM,IAAA,CAAK,CAAE,MAAA,CAAQP,EAAoB,CAAA,CAAG,CAACK,EAAGC,CAAAA,GAAMA,CAAC,CAAA,CC3d5E,IAAME,EAAAA,CAAmC,CAC9C,QAAA,CAAUC,qBAAAA,CAAsB,MAAA,CAChC,WAAA,CAAaA,sBAAsB,MAAA,CACnC,OAAA,CAAS,IAAA,CACT,WAAA,CAAa,CACX,OAAA,CAAS,SAAA,CACT,QAAS,CACP,OAAA,CAAS,yBACT,OAAA,CAAS,wBAAA,CACT,UAAA,CAAY,wBACd,EACA,oBAAA,CAAsB,CACpB,OAAA,CAAS,CACP,SAAU,CACR,OAAA,CAAS,IAAA,CACT,aAAA,CAAe,KACf,gBAAA,CAAkB,IAAA,CAClB,aAAc,IAAA,CACd,OAAA,CAAS,IACX,CACF,CACF,CAAA,CACA,KAAA,CAAO,CACL,OAAA,CAAS,IAAA,CACT,QAAA,CAAU,OAAA,CACV,YAAa,IAAA,CACb,YAAA,CAAc,IAChB,CACF,EAEA,WAAA,CAAa,CACX,OAAQ,UAAA,CAAW,OAAA,CAAQ,IAAI,cAAA,EAAkB,EAAA,CACjD,SAAA,CAAW,UAAA,CAAW,QAAQ,GAAA,CAAI,iBAAA,EAAqB,EAAA,CACvD,qBAAA,CAAuB,CACrB,aAAA,CAAe,UAAA,CAAW,OAAA,CAAQ,GAAA,CAAI,uBAAyB,EAAA,CAC/D,UAAA,CAAY,WAAW,OAAA,CAAQ,GAAA,CAAI,oBAAsB,EAC3D,CAAA,CACA,QAAA,CAAU,CACR,QAAS,KAAA,CACT,YAAA,CAAc,EAAA,CACd,WAAA,CAAa,EACf,CAAA,CACA,UAAA,CAAY,CACV,SAAA,CAAW,KACb,CACF,CAAA,CAEA,SAAU,CACR,OAAA,CAAS,KACT,SAAA,CAAW,CACT,OAAA,CAAS,4CACX,EACA,QAAA,CAAU,CACR,eAAA,CAAiB,aAAA,CACjB,gBAAiB,kBAAA,CACjB,MAAA,CAAQ,UAAA,CAAW,OAAA,CAAQ,IAAI,qBAAA,EAAyB,EAAA,CACxD,mBAAoB,GACtB,CAAA,CACA,OAAQ,CACN,UAAA,CAAY,CACV,0BAAA,CACA,gCACA,iBAAA,CACA,+BAAA,CACA,+BACF,CACF,EACA,WAAA,CAAa,CACX,YAAA,CAAc,IAAA,CACd,WAAY,CAAA,CACZ,WAAA,CAAa,CACXR,CAAAA,CAAe,MAAA,CACfA,EAAe,aAAA,CACfA,CAAAA,CAAe,YAAA,CACfA,CAAAA,CAAe,WACjB,CAAA,CACA,OAAA,CAAS,GAAA,CACT,eAAA,CAAiB,CACf,OAAA,CAAS,IAAA,CACT,aAAA,CAAe,CACjB,CACF,CACF,CAAA,CACA,SAAU,CACR,QAAA,CAAU,CACR,OAAA,CAAS,IAAA,CACT,aAAA,CAAe,IAAA,CACf,iBAAkB,IAAA,CAClB,YAAA,CAAc,IAAA,CACd,OAAA,CAAS,IACX,CAAA,CACA,OAAA,CAAS,CACP,OAAA,CAAS,KACT,OAAA,CAAS,IAAA,CACT,QAAS,IAAA,CACT,SAAA,CAAW,KACb,CAAA,CACA,QAAA,CAAU,CACR,OAAA,CAAS,KACT,cAAA,CAAgB,IAAA,CAChB,gBAAA,CAAkB,IAAA,CAClB,aAAc,IAChB,CAAA,CACA,SAAA,CAAW,CACT,SAAU,IAAA,CACV,YAAA,CAAc,KACd,cAAA,CAAgB,IAClB,EACA,WAAA,CAAa,CACX,OAAA,CAAS,IAAA,CACT,cAAe,IAAA,CACf,iBAAA,CAAmB,IAAA,CACnB,cAAA,CAAgB,IAClB,CAAA,CACA,QAAA,CAAU,CACR,aAAA,CAAe,KACf,kBAAA,CAAoB,IAAA,CACpB,aAAc,IAAA,CACd,gBAAA,CAAkB,KAClB,SAAA,CAAW,IACb,CACF,CAAA,CAGA,KAAM,CACJ,QAAA,CAAU,CACR,UAAA,CAAY,IACZ,KAAA,CAAO,EAAA,CACP,QAAA,CAAUJ,CAAAA,CAAe,GAC3B,CAAA,CACA,UAAA,CAAY,CACV,CAACa,cAAAA,CAAe,UAAU,EAAG,CAAE,UAAA,CAAY,GAAA,CAAK,MAAO,EAAA,CAAI,QAAA,CAAUb,CAAAA,CAAe,GAAI,EACxF,CAACa,cAAAA,CAAe,SAAS,EAAG,CAAE,UAAA,CAAY,GAAA,CAAK,MAAO,EAAA,CAAI,QAAA,CAAUb,EAAe,GAAI,CAAA,CACvF,CAACa,cAAAA,CAAe,YAAY,EAAG,CAAE,UAAA,CAAY,EAAA,CAAK,MAAO,CAAA,CAAG,QAAA,CAAUb,CAAAA,CAAe,GAAI,EACzF,CAACa,cAAAA,CAAe,aAAa,EAAG,CAAE,WAAY,GAAA,CAAK,KAAA,CAAO,EAAA,CAAI,QAAA,CAAUb,EAAe,GAAI,CAAA,CAC3F,CAACa,cAAAA,CAAe,aAAa,EAAG,CAAE,UAAA,CAAY,CAAA,CAAK,MAAO,CAAA,CAAG,QAAA,CAAUb,EAAe,GAAI,CAAA,CAC1F,CAACa,cAAAA,CAAe,cAAc,EAAG,CAAE,WAAY,CAAA,CAAK,KAAA,CAAO,CAAA,CAAG,QAAA,CAAUb,EAAe,GAAI,CAAA,CAC3F,CAACa,cAAAA,CAAe,aAAa,EAAG,CAAE,WAAY,CAAA,CAAK,KAAA,CAAO,EAAG,QAAA,CAAUb,CAAAA,CAAe,GAAI,CAAA,CAC1F,CAACa,cAAAA,CAAe,cAAc,EAAG,CAAE,WAAY,CAAA,CAAK,KAAA,CAAO,CAAA,CAAG,QAAA,CAAUb,EAAe,GAAI,CAAA,CAC3F,CAACa,cAAAA,CAAe,UAAU,EAAG,CAAE,UAAA,CAAY,CAAA,CAAK,KAAA,CAAO,EAAG,QAAA,CAAUb,CAAAA,CAAe,GAAI,CAAA,CACvF,CAACa,cAAAA,CAAe,UAAU,EAAG,CAAE,WAAY,CAAA,CAAK,KAAA,CAAO,EAAG,QAAA,CAAUb,CAAAA,CAAe,GAAI,CAAA,CACvF,CAACa,cAAAA,CAAe,iBAAiB,EAAG,CAClC,UAAA,CAAY,CAAA,CACZ,KAAA,CAAO,EACP,QAAA,CAAUb,CAAAA,CAAe,GAC3B,CAAA,CACA,CAACa,cAAAA,CAAe,UAAU,EAAG,CAAE,UAAA,CAAY,EAAK,KAAA,CAAO,CAAA,CAAG,QAAA,CAAUb,CAAAA,CAAe,GAAI,CAAA,CACvF,CAACa,cAAAA,CAAe,cAAc,EAAG,CAAE,UAAA,CAAY,CAAA,CAAK,KAAA,CAAO,EAAG,QAAA,CAAUb,CAAAA,CAAe,GAAI,CAAA,CAC3F,CAACa,eAAe,eAAe,EAAG,CAAE,UAAA,CAAY,EAAK,KAAA,CAAO,CAAA,CAAG,QAAA,CAAUb,CAAAA,CAAe,GAAI,CAAA,CAC5F,CAACa,cAAAA,CAAe,SAAS,EAAG,CAAE,UAAA,CAAY,EAAK,KAAA,CAAO,CAAA,CAAG,SAAUb,CAAAA,CAAe,GAAI,CAAA,CACtF,CAACa,eAAe,aAAa,EAAG,CAAE,UAAA,CAAY,EAAK,KAAA,CAAO,CAAA,CAAG,QAAA,CAAUb,CAAAA,CAAe,GAAI,CAAA,CAC1F,CAACa,eAAe,aAAa,EAAG,CAAE,UAAA,CAAY,CAAA,CAAK,KAAA,CAAO,CAAA,CAAG,SAAUb,CAAAA,CAAe,GAAI,CAAA,CAC1F,CAACa,eAAe,gBAAgB,EAAG,CACjC,UAAA,CAAY,EACZ,KAAA,CAAO,CAAA,CACP,SAAUb,CAAAA,CAAe,GAC3B,EACA,CAACa,cAAAA,CAAe,QAAQ,EAAG,CAAE,UAAA,CAAY,GAAA,CAAK,KAAA,CAAO,EAAA,CAAI,SAAUb,CAAAA,CAAe,GAAI,CAAA,CACtF,CAACa,eAAe,SAAS,EAAG,CAAE,UAAA,CAAY,GAAA,CAAK,MAAO,EAAA,CAAI,QAAA,CAAUb,CAAAA,CAAe,GAAI,EACvF,CAACa,cAAAA,CAAe,UAAU,EAAG,CAAE,UAAA,CAAY,GAAA,CAAK,KAAA,CAAO,EAAA,CAAI,SAAUb,CAAAA,CAAe,GAAI,CAC1F,CAAA,CACA,WAAA,CAAa,CACX,CACE,IAAA,CAAM,QAAA,CACN,aAAA,CAAe,CAAE,MAAA,CAAQ,CAAA,CAAG,QAAA,CAAUA,CAAAA,CAAe,GAAI,CAAA,CACzD,QAAA,CAAU,CAAE,UAAA,CAAY,IAAK,KAAA,CAAO,EAAA,CAAI,SAAUA,CAAAA,CAAe,GAAI,CACvE,CAAA,CACA,CACE,IAAA,CAAM,QAAA,CACN,cAAe,CAAE,MAAA,CAAQ,GAAA,CAAS,QAAA,CAAUA,EAAe,GAAI,CAAA,CAC/D,QAAA,CAAU,CAAE,WAAY,GAAA,CAAK,KAAA,CAAO,GAAI,QAAA,CAAUA,CAAAA,CAAe,GAAI,CACvE,CACF,CAAA,CACA,YAAA,CAAc,CACZ,EAAA,CAAI,CAAE,UAAA,CAAY,GAAA,CAAK,MAAO,EAAA,CAAI,QAAA,CAAUA,CAAAA,CAAe,GAAI,EAC/D,EAAA,CAAI,CAAE,WAAY,CAAA,CAAK,KAAA,CAAO,GAAI,QAAA,CAAUA,CAAAA,CAAe,GAAI,CAAA,CAC/D,GAAI,CAAE,UAAA,CAAY,GAAA,CAAK,KAAA,CAAO,GAAI,QAAA,CAAUA,CAAAA,CAAe,GAAI,CAAA,CAC/D,GAAI,CAAE,UAAA,CAAY,IAAK,KAAA,CAAO,EAAA,CAAI,SAAUA,CAAAA,CAAe,GAAI,CAAA,CAC/D,EAAA,CAAI,CAAE,UAAA,CAAY,GAAA,CAAK,KAAA,CAAO,EAAA,CAAI,SAAUA,CAAAA,CAAe,GAAI,CAAA,CAC/D,EAAA,CAAI,CAAE,UAAA,CAAY,CAAA,CAAK,MAAO,EAAA,CAAI,QAAA,CAAUA,EAAe,GAAI,CAAA,CAC/D,EAAA,CAAI,CAAE,WAAY,GAAA,CAAK,KAAA,CAAO,EAAA,CAAI,QAAA,CAAUA,EAAe,GAAI,CAAA,CAC/D,EAAA,CAAI,CAAE,WAAY,CAAA,CAAK,KAAA,CAAO,IAAK,QAAA,CAAUA,CAAAA,CAAe,GAAI,CAAA,CAChE,EAAA,CAAI,CAAE,UAAA,CAAY,IAAK,KAAA,CAAO,EAAA,CAAI,QAAA,CAAUA,CAAAA,CAAe,GAAI,CAAA,CAC/D,EAAA,CAAI,CAAE,UAAA,CAAY,EAAK,KAAA,CAAO,EAAA,CAAI,QAAA,CAAUA,CAAAA,CAAe,GAAI,CAAA,CAC/D,EAAA,CAAI,CAAE,UAAA,CAAY,IAAK,KAAA,CAAO,EAAA,CAAI,QAAA,CAAUA,CAAAA,CAAe,GAAI,CAAA,CAC/D,EAAA,CAAI,CAAE,UAAA,CAAY,IAAK,KAAA,CAAO,EAAA,CAAI,SAAUA,CAAAA,CAAe,GAAI,EAC/D,EAAA,CAAI,CAAE,UAAA,CAAY,CAAA,CAAK,MAAO,EAAA,CAAI,QAAA,CAAUA,CAAAA,CAAe,GAAI,EAC/D,EAAA,CAAI,CAAE,UAAA,CAAY,CAAA,CAAK,MAAO,EAAA,CAAI,QAAA,CAAUA,EAAe,GAAI,CAAA,CAC/D,GAAI,CAAE,UAAA,CAAY,CAAA,CAAK,KAAA,CAAO,GAAI,QAAA,CAAUA,CAAAA,CAAe,GAAI,CACjE,EACA,cAAA,CAAgB,CACd,WAAA,CAAa,CAAE,WAAY,CAAI,CAAA,CAC/B,mBAAoB,CAAE,UAAA,CAAY,EAAK,UAAA,CAAY,EAAG,CAAA,CACtD,UAAA,CAAY,CAAE,MAAA,CAAQ,IAAA,CAAM,QAAA,CAAUA,CAAAA,CAAe,GAAI,CAAA,CACzD,MAAA,CAAQ,CAAE,UAAA,CAAY,IAAK,KAAA,CAAO,EAAG,CACvC,CAAA,CACA,WAAA,CAAa,CACX,QAAA,CAAU,SAAA,CACV,UAAA,CAAY,CAAE,OAAQ,EAAA,CAAI,QAAA,CAAUA,CAAAA,CAAe,GAAI,CACzD,CACF,CAAA,CACA,MAAA,CAAQ,CACN,QAAS,CACP,OAAA,CAAS,CACP,CAACa,cAAAA,CAAe,UAAU,EAAG,CAAE,MAAA,CAAQ,EAAA,CAAI,SAAUb,CAAAA,CAAe,GAAI,CAAA,CACxE,CAACa,eAAe,SAAS,EAAG,CAAE,MAAA,CAAQ,GAAI,QAAA,CAAUb,CAAAA,CAAe,GAAI,CAAA,CACvE,CAACa,eAAe,YAAY,EAAG,CAAE,MAAA,CAAQ,GAAI,QAAA,CAAUb,CAAAA,CAAe,GAAI,CAAA,CAC1E,CAACa,cAAAA,CAAe,aAAa,EAAG,CAAE,OAAQ,EAAA,CAAI,QAAA,CAAUb,EAAe,GAAI,CAAA,CAC3E,CAACa,cAAAA,CAAe,aAAa,EAAG,CAAE,OAAQ,EAAA,CAAI,QAAA,CAAUb,CAAAA,CAAe,GAAI,EAC3E,CAACa,cAAAA,CAAe,cAAc,EAAG,CAAE,MAAA,CAAQ,EAAA,CAAI,SAAUb,CAAAA,CAAe,GAAI,EAC5E,CAACa,cAAAA,CAAe,aAAa,EAAG,CAAE,MAAA,CAAQ,EAAA,CAAI,QAAA,CAAUb,CAAAA,CAAe,GAAI,CAAA,CAC3E,CAACa,cAAAA,CAAe,cAAc,EAAG,CAAE,MAAA,CAAQ,GAAI,QAAA,CAAUb,CAAAA,CAAe,GAAI,CAAA,CAC5E,CAACa,cAAAA,CAAe,UAAU,EAAG,CAAE,MAAA,CAAQ,EAAA,CAAI,QAAA,CAAUb,EAAe,GAAI,CAAA,CACxE,CAACa,cAAAA,CAAe,UAAU,EAAG,CAAE,OAAQ,EAAA,CAAI,QAAA,CAAUb,EAAe,GAAI,CAAA,CACxE,CAACa,cAAAA,CAAe,iBAAiB,EAAG,CAAE,MAAA,CAAQ,EAAA,CAAI,SAAUb,CAAAA,CAAe,GAAI,CAAA,CAC/E,CAACa,eAAe,UAAU,EAAG,CAAE,MAAA,CAAQ,EAAA,CAAI,SAAUb,CAAAA,CAAe,GAAI,CAAA,CACxE,CAACa,eAAe,cAAc,EAAG,CAAE,MAAA,CAAQ,GAAI,QAAA,CAAUb,CAAAA,CAAe,GAAI,CAAA,CAC5E,CAACa,cAAAA,CAAe,eAAe,EAAG,CAAE,MAAA,CAAQ,GAAI,QAAA,CAAUb,CAAAA,CAAe,GAAI,CAAA,CAC7E,CAACa,cAAAA,CAAe,SAAS,EAAG,CAAE,OAAQ,EAAA,CAAI,QAAA,CAAUb,CAAAA,CAAe,GAAI,EACvE,CAACa,cAAAA,CAAe,aAAa,EAAG,CAAE,OAAQ,EAAA,CAAI,QAAA,CAAUb,CAAAA,CAAe,GAAI,EAC3E,CAACa,cAAAA,CAAe,aAAa,EAAG,CAAE,MAAA,CAAQ,EAAA,CAAI,QAAA,CAAUb,CAAAA,CAAe,GAAI,CAAA,CAC3E,CAACa,eAAe,gBAAgB,EAAG,CAAE,MAAA,CAAQ,EAAA,CAAI,QAAA,CAAUb,CAAAA,CAAe,GAAI,CAAA,CAC9E,CAACa,cAAAA,CAAe,QAAQ,EAAG,CAAE,MAAA,CAAQ,EAAA,CAAI,QAAA,CAAUb,EAAe,GAAI,CAAA,CACtE,CAACa,cAAAA,CAAe,SAAS,EAAG,CAAE,MAAA,CAAQ,EAAA,CAAI,QAAA,CAAUb,EAAe,GAAI,CAAA,CACvE,CAACa,cAAAA,CAAe,UAAU,EAAG,CAAE,MAAA,CAAQ,EAAA,CAAI,SAAUb,CAAAA,CAAe,GAAI,CAC1E,CAAA,CACA,OAAA,CAAS,CACP,CAACa,cAAAA,CAAe,UAAU,EAAG,CAAE,MAAA,CAAQ,GAAA,CAAO,QAAA,CAAUb,CAAAA,CAAe,GAAI,CAAA,CAC3E,CAACa,cAAAA,CAAe,SAAS,EAAG,CAAE,MAAA,CAAQ,IAAO,QAAA,CAAUb,CAAAA,CAAe,GAAI,CAAA,CAC1E,CAACa,cAAAA,CAAe,YAAY,EAAG,CAAE,MAAA,CAAQ,GAAA,CAAQ,QAAA,CAAUb,EAAe,GAAI,CAAA,CAC9E,CAACa,cAAAA,CAAe,aAAa,EAAG,CAAE,OAAQ,GAAA,CAAQ,QAAA,CAAUb,EAAe,GAAI,CAAA,CAC/E,CAACa,cAAAA,CAAe,aAAa,EAAG,CAAE,MAAA,CAAQ,GAAA,CAAQ,SAAUb,CAAAA,CAAe,GAAI,CAAA,CAC/E,CAACa,eAAe,cAAc,EAAG,CAAE,MAAA,CAAQ,GAAA,CAAQ,SAAUb,CAAAA,CAAe,GAAI,CAAA,CAChF,CAACa,eAAe,aAAa,EAAG,CAAE,MAAA,CAAQ,IAAQ,QAAA,CAAUb,CAAAA,CAAe,GAAI,CAAA,CAC/E,CAACa,cAAAA,CAAe,cAAc,EAAG,CAAE,MAAA,CAAQ,IAAQ,QAAA,CAAUb,CAAAA,CAAe,GAAI,CAAA,CAChF,CAACa,cAAAA,CAAe,UAAU,EAAG,CAAE,OAAQ,GAAA,CAAQ,QAAA,CAAUb,CAAAA,CAAe,GAAI,EAC5E,CAACa,cAAAA,CAAe,UAAU,EAAG,CAAE,OAAQ,GAAA,CAAQ,QAAA,CAAUb,CAAAA,CAAe,GAAI,EAC5E,CAACa,cAAAA,CAAe,iBAAiB,EAAG,CAAE,MAAA,CAAQ,GAAA,CAAQ,QAAA,CAAUb,CAAAA,CAAe,GAAI,CAAA,CACnF,CAACa,eAAe,UAAU,EAAG,CAAE,MAAA,CAAQ,GAAA,CAAO,QAAA,CAAUb,CAAAA,CAAe,GAAI,CAAA,CAC3E,CAACa,cAAAA,CAAe,cAAc,EAAG,CAAE,MAAA,CAAQ,GAAA,CAAO,QAAA,CAAUb,EAAe,GAAI,CAAA,CAC/E,CAACa,cAAAA,CAAe,eAAe,EAAG,CAAE,MAAA,CAAQ,GAAA,CAAQ,QAAA,CAAUb,EAAe,GAAI,CAAA,CACjF,CAACa,cAAAA,CAAe,SAAS,EAAG,CAAE,MAAA,CAAQ,GAAA,CAAQ,SAAUb,CAAAA,CAAe,GAAI,EAC3E,CAACa,cAAAA,CAAe,aAAa,EAAG,CAAE,MAAA,CAAQ,GAAA,CAAO,SAAUb,CAAAA,CAAe,GAAI,CAAA,CAC9E,CAACa,eAAe,aAAa,EAAG,CAAE,MAAA,CAAQ,IAAO,QAAA,CAAUb,CAAAA,CAAe,GAAI,CAAA,CAC9E,CAACa,eAAe,gBAAgB,EAAG,CAAE,MAAA,CAAQ,IAAO,QAAA,CAAUb,CAAAA,CAAe,GAAI,CAAA,CACjF,CAACa,cAAAA,CAAe,QAAQ,EAAG,CAAE,OAAQ,GAAA,CAAO,QAAA,CAAUb,EAAe,GAAI,CAAA,CACzE,CAACa,cAAAA,CAAe,SAAS,EAAG,CAAE,OAAQ,GAAA,CAAO,QAAA,CAAUb,CAAAA,CAAe,GAAI,EAC1E,CAACa,cAAAA,CAAe,UAAU,EAAG,CAAE,MAAA,CAAQ,GAAA,CAAO,SAAUb,CAAAA,CAAe,GAAI,CAC7E,CACF,CAAA,CACA,QAAA,CAAU,CACR,MAAO,CACL,eAAA,CAAiB,GAAA,CACjB,SAAA,CAAW,CAAE,MAAA,CAAQ,GAAA,CAAS,QAAA,CAAUA,CAAAA,CAAe,GAAI,CAC7D,CAAA,CACA,QAAS,CACP,eAAA,CAAiB,IACjB,SAAA,CAAW,CAAE,MAAA,CAAQ,GAAA,CAAW,SAAUA,CAAAA,CAAe,GAAI,CAC/D,CACF,EACA,SAAA,CAAW,CACT,iBAAA,CAAmB,GAAA,CACnB,kBAAmB,GAAA,CACnB,eAAA,CAAiB,IACnB,CAAA,CACA,gBAAA,CAAkB,EACpB,CAAA,CAEA,WAAA,CAAa,CACX,SAAU,CACR,UAAA,CAAY,GAAA,CACZ,OAAA,CAAS,KACT,KAAA,CAAO,GACT,CAAA,CACA,OAAA,CAAS,CACP,OAAA,CAAS,IAAA,CACT,YAAa,CAAA,CACb,QAAA,CAAU,cACV,SAAA,CAAW,GAAA,CACX,QAAA,CAAU,GAAA,CACV,OAAQ,IAAA,CACR,oBAAA,CAAsB,CACpBc,WAAAA,CAAY,gBACZA,WAAAA,CAAY,iBAAA,CACZA,WAAAA,CAAY,qBAAA,CACZA,YAAY,WAAA,CACZA,WAAAA,CAAY,oBACZA,WAAAA,CAAY,eACd,CACF,CAAA,CACA,cAAA,CAAgB,CACd,OAAA,CAAS,KACT,gBAAA,CAAkB,CAAA,CAClB,UAAA,CAAY,GAAA,CACZ,QAAS,GAAA,CACT,eAAA,CAAiB,EACnB,CAAA,CACA,eAAgB,CACd,cAAA,CAAgB,EAAA,CAChB,cAAA,CAAgB,EAChB,WAAA,CAAa,GAAA,CACb,kBAAA,CAAoB,GACtB,EACA,OAAA,CAAS,CACP,OAAA,CAAS,IAAA,CACT,IAAK,CACH,gBAAA,CAAkB,EAAA,CAClB,cAAA,CAAgB,EAClB,CAAA,CACA,OAAA,CAAS,IACT,gBAAA,CAAkB,KACpB,CACF,CAAA,CACA,cAAA,CAAgB,CACd,WAAA,CAAa,KACb,cAAA,CAAgB,IAClB,CACF,MChUaC,CAAAA,CAAuB,MAAA,CAAO,MAAA,CAAOf,CAAc,EAGnDgB,EAAAA,CAAsB,CACjC,OAAQ,8DAAA,CACR,WAAA,CACE,iGACF,QAAA,CAAU,uCAAA,CACV,QAAA,CAAU,iEAAA,CACV,gBAAiB,iDAAA,CACjB,UAAA,CAAY,mCAAA,CACZ,qBAAA,CAAuB,8BACvB,eAAA,CAAiB,uBAAA,CACjB,aAAA,CAAe,iCACjB,EAGaC,EAAAA,CAAkB,CAC7B,OAAQ,iBAAA,CACR,WAAA,CAAa,qBACb,QAAA,CAAU,mBAAA,CACV,QAAA,CAAU,mBAAA,CACV,gBAAiB,yBAAA,CACjB,UAAA,CAAY,qBACd,CAAA,CAGaC,GAAc,CACzB,QAAA,CACA,eAAA,CACA,QAAA,CACA,WACA,WAAA,CACA,aACF,EAGaC,EAAAA,CAAuB,CAAC,UAAW,WAAA,CAAa,QAAQ,CAAA,CAGxDC,EAAAA,CAAoB,CAAC,KAAA,CAAO,QAAA,CAAU,MAAM,CAAA,CAG5CC,GAA+B,CAC1C,OAAA,CACA,QAAA,CACA,SAAA,CACA,YACA,QACF,CAAA,CAGaC,GAAsB,CAAA,CACtBC,EAAAA,CAAuB,ECjC7B,IAAMC,EAAAA,CAA6B,CACxC,OAAA,CAAS,KAMT,mBAAA,CAAqB,wBAAA,CAMrB,YAAa,CACX,CACE,GAAI,wBAAA,CACJ,WAAA,CACE,oIAAA,CAOF,UAAA,CAAY,CACV,OAAA,CAAS,EAAA,CACT,OAAA,CAAS,EACX,EAMA,SAAA,CAAW,CACT,QAAA,CAAUC,gBAAAA,CAAiB,cAC3B,kBAAA,CAAoB,CAACb,sBAAsB,OAAO,CAAA,CAClD,iBAAkB,CAChB,OAAA,CAAS,IAAA,CACT,QAAA,CAAUc,2BAA2B,UAGvC,CACF,CAAA,CAKA,SAAA,CAAW,CACT,OAAA,CAAS,CAEPzB,CAAAA,CAAc,EAAA,CACdA,EAAc,EAAA,CACdA,CAAAA,CAAc,GAGdA,CAAAA,CAAc,EAAA,CACdA,EAAc,EAAA,CACdA,CAAAA,CAAc,EAAA,CACdA,CAAAA,CAAc,GACdA,CAAAA,CAAc,EAAA,CACdA,CAAAA,CAAc,EAAA,CACdA,EAAc,EAAA,CACdA,CAAAA,CAAc,EAAA,CACdA,CAAAA,CAAc,GACdA,CAAAA,CAAc,EAAA,CACdA,EAAc,EAAA,CACdA,CAAAA,CAAc,GAGdA,CAAAA,CAAc,EAAA,CACdA,CAAAA,CAAc,EAAA,CACdA,EAAc,EAAA,CACdA,CAAAA,CAAc,EAAA,CACdA,CAAAA,CAAc,GACdA,CAAAA,CAAc,EAAA,CACdA,CAAAA,CAAc,EAAA,CACdA,EAAc,EAAA,CACdA,CAAAA,CAAc,GACdA,CAAAA,CAAc,EAAA,CACdA,EAAc,EAAA,CACdA,CAAAA,CAAc,EAAA,CACdA,CAAAA,CAAc,GACdA,CAAAA,CAAc,EAAA,CACdA,CAAAA,CAAc,EAAA,CACdA,EAAc,EAAA,CACdA,CAAAA,CAAc,EAAA,CACdA,CAAAA,CAAc,GACdA,CAAAA,CAAc,EAAA,CACdA,EAAc,EAChB,CAAA,CAEA,eAAgB,CAACY,cAAAA,CAAe,UAAU,CAC5C,EAMA,QAAA,CAAU,CACR,KAAA,CAAO,IAAI,KACX,GAAA,CAAK,MACP,CAAA,CAGA,MAAA,CAAQ,IACV,CACF,CAAA,CAKA,SAAU,CACR,mBAAA,CAAqB,KACrB,SAAA,CAAW,IACb,CACF,ECpGO,IAAMc,CAAAA,CAAU,CAOrB,KAAA,CAAO,GACP,KAAA,CAAO,EAAA,CAGP,YAAA,CAAc,IAEd,SAAU,GAAA,CACV,YAAA,CAAc,GAAA,CACd,cAAA,CAAgB,IAChB,aAAA,CAAe,GAAA,CAKf,eAAA,CAAiB,GAAA,CACjB,gBAAiB,GAAA,CACjB,mBAAA,CAAqB,KACrB,cAAA,CAAgB,GAAA,CAChB,cAAA,CAAgB,GAClB,ECzDO,IAAMC,CAAAA,CAAiD,CAC5D,OAAA,CAAS,KACT,QAAA,CAAUC,kBAAAA,CAAmB,aAAA,CAC7B,aAAA,CAAe,CAACjB,qBAAAA,CAAsB,MAAA,CAAQA,sBAAsB,OAAO,CAAA,CAC3E,iBAAkB,CAChB,2BAAA,CAA6B,CAAA,CAC7B,kBAAA,CAAoB,GACpB,qBAAA,CAAuBe,CAAAA,CAAQ,aAAA,CAC/B,mBAAA,CAAqB,EACvB,CAAA,CACA,KAAA,CAAO,CACL,OAAA,CAAS,KACT,WAAA,CAAa,CAAA,CACb,OAAQ,CAACA,CAAAA,CAAQ,SAAUA,CAAAA,CAAQ,YAAY,CAAA,CAC/C,kBAAA,CAAoB,KACtB,CAAA,CACA,QAAA,CAAU,CACR,YAAA,CAAc,MACd,gBAAA,CAAkB,GAAA,CAClB,iBAAA,CAAmB,EAAA,CACnB,mBAAoB,KACtB,CAAA,CACA,eAAgB,CACd,OAAA,CAAS,KACT,gBAAA,CAAkB,CAAA,CAClB,gBAAA,CAAkB,CAAA,CAClB,QAASA,CAAAA,CAAQ,cACnB,CACF,EC5BO,IAAMG,CAAAA,CAAiD,CAC5D,OAAA,CAAS,IAAA,CACT,SAAUD,kBAAAA,CAAmB,aAAA,CAC7B,aAAA,CAAe,CAACjB,sBAAsB,MAAA,CAAQA,qBAAAA,CAAsB,OAAO,CAAA,CAC3E,iBAAkB,CAChB,2BAAA,CAA6B,CAAA,CAC7B,kBAAA,CAAoB,EACpB,qBAAA,CAAuBe,CAAAA,CAAQ,eAC/B,mBAAA,CAAqB,EACvB,EACA,KAAA,CAAO,CACL,OAAA,CAAS,IAAA,CACT,YAAa,CAAA,CACb,MAAA,CAAQ,CAACA,CAAAA,CAAQ,aAAcA,CAAAA,CAAQ,QAAA,CAAUA,CAAAA,CAAQ,YAAY,EACrE,kBAAA,CAAoB,IACtB,EACA,QAAA,CAAU,CACR,aAAc,IAAA,CACd,gBAAA,CAAkB,EAAA,CAClB,iBAAA,CAAmB,EACnB,kBAAA,CAAoB,IACtB,CAAA,CACA,cAAA,CAAgB,CACd,OAAA,CAAS,IAAA,CACT,gBAAA,CAAkB,CAAA,CAClB,iBAAkB,CAAA,CAClB,OAAA,CAASA,EAAQ,eACnB,CACF,EC5BO,IAAMI,CAAAA,CAAoD,CAC/D,QAAS,IAAA,CACT,QAAA,CAAUF,kBAAAA,CAAmB,gBAAA,CAC7B,cAAe,CAACjB,qBAAAA,CAAsB,OAAQA,qBAAAA,CAAsB,OAAO,EAC3E,gBAAA,CAAkB,CAChB,2BAAA,CAA6B,CAAA,CAC7B,mBAAoB,CAAA,CACpB,qBAAA,CAAuBe,CAAAA,CAAQ,YAAA,CAC/B,oBAAqB,EACvB,CAAA,CACA,KAAA,CAAO,CACL,QAAS,IAAA,CACT,WAAA,CAAa,EACb,MAAA,CAAQ,CAACA,EAAQ,YAAA,CAAcA,CAAAA,CAAQ,QAAQ,CAAA,CAC/C,mBAAoB,IACtB,CAAA,CACA,QAAA,CAAU,CACR,aAAc,IAAA,CACd,gBAAA,CAAkB,EAAA,CAClB,iBAAA,CAAmB,EACnB,kBAAA,CAAoB,IACtB,EACA,cAAA,CAAgB,CACd,QAAS,IAAA,CACT,gBAAA,CAAkB,CAAA,CAClB,gBAAA,CAAkB,EAClB,OAAA,CAASA,CAAAA,CAAQ,eACnB,CACF,EC5BO,IAAMK,EAAgD,CAC3D,OAAA,CAAS,KACT,QAAA,CAAUH,kBAAAA,CAAmB,YAAA,CAC7B,aAAA,CAAe,CAACjB,qBAAAA,CAAsB,MAAA,CAAQA,qBAAAA,CAAsB,OAAO,EAC3E,gBAAA,CAAkB,CAChB,2BAAA,CAA6B,CAAA,CAC7B,mBAAoB,CAAA,CACpB,qBAAA,CAAuBe,EAAQ,cAAA,CAC/B,mBAAA,CAAqB,EACvB,CAAA,CACA,KAAA,CAAO,CACL,OAAA,CAAS,KACT,WAAA,CAAa,CAAA,CACb,MAAA,CAAQ,CAACA,EAAQ,YAAA,CAAcA,CAAAA,CAAQ,QAAA,CAAUA,CAAAA,CAAQ,YAAY,CAAA,CACrE,kBAAA,CAAoB,IACtB,CAAA,CACA,QAAA,CAAU,CACR,YAAA,CAAc,IAAA,CACd,gBAAA,CAAkB,EAAA,CAClB,kBAAmB,CAAA,CACnB,kBAAA,CAAoB,IACtB,CAAA,CACA,eAAgB,CACd,OAAA,CAAS,IAAA,CACT,gBAAA,CAAkB,EAClB,gBAAA,CAAkB,CAAA,CAClB,QAASA,CAAAA,CAAQ,mBACnB,CACF,EC5BO,IAAMM,CAAAA,CAA6C,CACxD,OAAA,CAAS,IAAA,CACT,QAAA,CAAUJ,kBAAAA,CAAmB,WAC7B,aAAA,CAAe,CAACjB,sBAAsB,OAAA,CAASA,qBAAAA,CAAsB,MAAM,CAAA,CAC3E,gBAAA,CAAkB,CAChB,2BAAA,CAA6B,EAC7B,kBAAA,CAAoB,CAAA,CACpB,qBAAA,CAAuBe,CAAAA,CAAQ,eAC/B,mBAAA,CAAqB,EACvB,CAAA,CACA,KAAA,CAAO,CACL,OAAA,CAAS,IAAA,CACT,YAAa,CAAA,CACb,MAAA,CAAQ,CAACA,CAAAA,CAAQ,QAAA,CAAUA,CAAAA,CAAQ,YAAY,EAC/C,kBAAA,CAAoB,IACtB,CAAA,CACA,QAAA,CAAU,CACR,YAAA,CAAc,IAAA,CACd,gBAAA,CAAkB,EAAA,CAClB,kBAAmB,CAAA,CACnB,kBAAA,CAAoB,IACtB,CAAA,CACA,eAAgB,CACd,OAAA,CAAS,IAAA,CACT,gBAAA,CAAkB,EAClB,gBAAA,CAAkB,CAAA,CAClB,OAAA,CAASA,CAAAA,CAAQ,cACnB,CACF,EC5BO,IAAMO,EAAAA,CAAuE,CAClF,CAACL,kBAAAA,CAAmB,aAAa,EAAGD,CAAAA,CACpC,CAACC,kBAAAA,CAAmB,aAAa,EAAGC,CAAAA,CACpC,CAACD,kBAAAA,CAAmB,gBAAgB,EAAGE,CAAAA,CACvC,CAACF,kBAAAA,CAAmB,YAAY,EAAGG,CAAAA,CACnC,CAACH,kBAAAA,CAAmB,UAAU,EAAGI,CACnC,MCEaE,EAAAA,CAAsC,CACjD,OAAA,CAAS,IAAA,CAGT,kBAAmB,CAEjB,EAAA,CAAI,CACF,QAAA,CAAU,IAAA,CACV,mBAAoB,CAClB,CACE,QAAA,CAAUvB,qBAAAA,CAAsB,QAChC,MAAA,CAAQ,EAAA,CACR,iBAAA,CAAmB,GAAA,CACnB,WAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,eAAgB,EAAA,CAAI,eAAA,CAAiB,KAAM,aAAA,CAAe,EAAG,CACrF,CACF,CAAA,CACA,mBAAA,CAAqB,CAACC,eAAe,YAAA,CAAcA,cAAAA,CAAe,iBAAiB,CAAA,CACnF,YAAa,CACX,WAAA,CAAa,IAAA,CACb,iBAAA,CAAmB,CACjB,KAAA,CAAO,CAAE,OAAQ,GAAA,CAAO,QAAA,CAAU,KAAM,CAAA,CACxC,OAAA,CAAS,CAAE,MAAA,CAAQ,IAAS,QAAA,CAAU,KAAM,CAC9C,CAAA,CACA,iBAAkB,EACpB,CAAA,CACA,aAAA,CAAe,CACb,oBAAA,CAAsB,CAAC,aAAa,CAAA,CACpC,YAAA,CAAc,CAAC,kBAAkB,CAAA,CACjC,eAAA,CAAiB,UACnB,CACF,CAAA,CAGA,EAAA,CAAI,CACF,QAAA,CAAU,KACV,kBAAA,CAAoB,CAClB,CACE,QAAA,CAAUD,sBAAsB,MAAA,CAChC,MAAA,CAAQ,GACR,iBAAA,CAAmB,GAAA,CACnB,WAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,eAAgB,EAAA,CAAI,eAAA,CAAiB,IAAA,CAAM,aAAA,CAAe,CAAE,CACpF,CACF,CAAA,CACA,mBAAA,CAAqB,CAACC,cAAAA,CAAe,YAAY,EACjD,WAAA,CAAa,CACX,YAAa,IAAA,CACb,iBAAA,CAAmB,CACjB,KAAA,CAAO,CAAE,MAAA,CAAQ,GAAA,CAAQ,QAAA,CAAU,KAAM,EACzC,OAAA,CAAS,CAAE,MAAA,CAAQ,GAAA,CAAS,SAAU,KAAM,CAC9C,EACA,gBAAA,CAAkB,CAAC,KAAK,CAC1B,CAAA,CACA,aAAA,CAAe,CACb,qBAAsB,CAAC,aAAa,CAAA,CACpC,YAAA,CAAc,CAAC,kBAAkB,CAAA,CACjC,eAAA,CAAiB,UACnB,CACF,CAAA,CAGA,EAAA,CAAI,CACF,QAAA,CAAU,IAAA,CACV,mBAAoB,CAClB,CACE,QAAA,CAAUD,qBAAAA,CAAsB,QAChC,MAAA,CAAQ,EAAA,CACR,iBAAA,CAAmB,GAAA,CACnB,WAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,eAAgB,EAAA,CAAI,eAAA,CAAiB,KAAM,aAAA,CAAe,EAAG,CACrF,CACF,CAAA,CACA,mBAAA,CAAqB,CAACC,eAAe,YAAA,CAAcA,cAAAA,CAAe,UAAU,CAAA,CAC5E,YAAa,CACX,WAAA,CAAa,IAAA,CACb,iBAAA,CAAmB,CACjB,KAAA,CAAO,CAAE,OAAQ,GAAA,CAAO,QAAA,CAAU,KAAM,CAAA,CACxC,OAAA,CAAS,CAAE,MAAA,CAAQ,IAAS,QAAA,CAAU,KAAM,CAC9C,CAAA,CACA,iBAAkB,CAAC,OAAO,CAC5B,CAAA,CACA,cAAe,CACb,oBAAA,CAAsB,CAAC,aAAa,CAAA,CACpC,aAAc,CAAC,kBAAkB,CAAA,CACjC,eAAA,CAAiB,UACnB,CACF,CAAA,CAGA,EAAA,CAAI,CACF,SAAU,IAAA,CACV,kBAAA,CAAoB,CAClB,CACE,SAAUD,qBAAAA,CAAsB,OAAA,CAChC,OAAQ,EAAA,CACR,iBAAA,CAAmB,IACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,eAAA,CAAiB,IAAA,CAAM,cAAe,CAAE,CACpF,CACF,CAAA,CACA,oBAAqB,CAACC,cAAAA,CAAe,aAAcA,cAAAA,CAAe,iBAAiB,EACnF,WAAA,CAAa,CACX,WAAA,CAAa,IAAA,CACb,kBAAmB,CACjB,KAAA,CAAO,CAAE,MAAA,CAAQ,IAAO,QAAA,CAAU,KAAM,CAAA,CACxC,OAAA,CAAS,CAAE,MAAA,CAAQ,IAAA,CAAS,SAAU,KAAM,CAC9C,EACA,gBAAA,CAAkB,CAAC,KAAK,CAC1B,EACA,aAAA,CAAe,CACb,oBAAA,CAAsB,CAAC,iBAAiB,CAAA,CACxC,YAAA,CAAc,CAAC,kBAAkB,EACjC,eAAA,CAAiB,UACnB,CACF,CAAA,CAGA,EAAA,CAAI,CACF,QAAA,CAAU,IAAA,CACV,kBAAA,CAAoB,CAClB,CACE,QAAA,CAAUD,qBAAAA,CAAsB,MAAA,CAChC,MAAA,CAAQ,GACR,iBAAA,CAAmB,GAAA,CACnB,UAAA,CAAY,GACZ,kBAAA,CAAoB,CAAE,eAAgB,EAAA,CAAI,eAAA,CAAiB,KAAM,aAAA,CAAe,CAAE,CACpF,CACF,EACA,mBAAA,CAAqB,CAACC,cAAAA,CAAe,UAAA,CAAYA,eAAe,YAAY,CAAA,CAC5E,WAAA,CAAa,CACX,YAAa,IAAA,CACb,iBAAA,CAAmB,CACjB,KAAA,CAAO,CAAE,OAAQ,GAAA,CAAS,QAAA,CAAU,KAAM,CAAA,CAC1C,QAAS,CAAE,MAAA,CAAQ,GAAA,CAAU,QAAA,CAAU,KAAM,CAC/C,CAAA,CACA,gBAAA,CAAkB,CAAC,KAAK,CAC1B,CAAA,CACA,cAAe,CACb,oBAAA,CAAsB,CAAC,iBAAiB,CAAA,CACxC,YAAA,CAAc,CAAC,kBAAkB,CAAA,CACjC,eAAA,CAAiB,YACnB,CACF,EAGA,EAAA,CAAI,CACF,QAAA,CAAU,IAAA,CACV,mBAAoB,CAClB,CACE,SAAUD,qBAAAA,CAAsB,MAAA,CAChC,OAAQ,EAAA,CACR,iBAAA,CAAmB,GAAA,CACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,cAAA,CAAgB,GAAI,eAAA,CAAiB,GAAA,CAAM,aAAA,CAAe,CAAE,CACpF,CACF,CAAA,CACA,oBAAqB,CAACC,cAAAA,CAAe,WAAYA,cAAAA,CAAe,YAAY,CAAA,CAC5E,WAAA,CAAa,CACX,WAAA,CAAa,IAAA,CACb,iBAAA,CAAmB,CACjB,MAAO,CAAE,MAAA,CAAQ,GAAA,CAAQ,QAAA,CAAU,KAAM,CAAA,CACzC,OAAA,CAAS,CAAE,MAAA,CAAQ,GAAA,CAAS,SAAU,KAAM,CAC9C,CAAA,CACA,gBAAA,CAAkB,CAAC,SAAA,CAAW,KAAK,CACrC,CAAA,CACA,cAAe,CACb,oBAAA,CAAsB,CAAC,aAAa,EACpC,YAAA,CAAc,CAAC,kBAAkB,CAAA,CACjC,eAAA,CAAiB,YACnB,CACF,CAAA,CAGA,EAAA,CAAI,CACF,SAAU,IAAA,CACV,kBAAA,CAAoB,CAClB,CACE,SAAUD,qBAAAA,CAAsB,MAAA,CAChC,MAAA,CAAQ,EAAA,CACR,kBAAmB,GAAA,CACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,eAAA,CAAiB,IAAA,CAAM,cAAe,CAAE,CACpF,CACF,CAAA,CACA,oBAAqB,CAACC,cAAAA,CAAe,UAAA,CAAYA,cAAAA,CAAe,YAAY,CAAA,CAC5E,WAAA,CAAa,CACX,WAAA,CAAa,IAAA,CACb,kBAAmB,CACjB,KAAA,CAAO,CAAE,MAAA,CAAQ,IAAQ,QAAA,CAAU,KAAM,CAAA,CACzC,OAAA,CAAS,CAAE,MAAA,CAAQ,IAAA,CAAS,QAAA,CAAU,KAAM,CAC9C,CAAA,CACA,gBAAA,CAAkB,CAAC,SAAS,CAC9B,EACA,aAAA,CAAe,CACb,oBAAA,CAAsB,CAAC,yBAAyB,CAAA,CAChD,YAAA,CAAc,CAAC,kBAAkB,EACjC,eAAA,CAAiB,UACnB,CACF,CAAA,CAGA,GAAI,CACF,QAAA,CAAU,KACV,kBAAA,CAAoB,CAClB,CACE,QAAA,CAAUD,qBAAAA,CAAsB,MAAA,CAChC,MAAA,CAAQ,GACR,iBAAA,CAAmB,GAAA,CACnB,UAAA,CAAY,GACZ,kBAAA,CAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,gBAAiB,IAAA,CAAM,aAAA,CAAe,CAAE,CACpF,CACF,EACA,mBAAA,CAAqB,CAACC,cAAAA,CAAe,UAAU,EAC/C,WAAA,CAAa,CACX,WAAA,CAAa,IAAA,CACb,kBAAmB,CACjB,KAAA,CAAO,CAAE,MAAA,CAAQ,IAAO,QAAA,CAAU,KAAM,EACxC,OAAA,CAAS,CAAE,OAAQ,IAAA,CAAS,QAAA,CAAU,KAAM,CAC9C,EACA,gBAAA,CAAkB,CAAC,MAAM,CAC3B,EACA,aAAA,CAAe,CACb,oBAAA,CAAsB,CAAC,cAAc,CAAA,CACrC,YAAA,CAAc,CAAC,kBAAkB,CAAA,CACjC,gBAAiB,UACnB,CACF,CAAA,CAGA,EAAA,CAAI,CACF,QAAA,CAAU,IAAA,CACV,kBAAA,CAAoB,CAClB,CACE,QAAA,CAAUD,qBAAAA,CAAsB,MAAA,CAChC,MAAA,CAAQ,GACR,iBAAA,CAAmB,GAAA,CACnB,UAAA,CAAY,GACZ,kBAAA,CAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,gBAAiB,IAAA,CAAM,aAAA,CAAe,CAAE,CACpF,CACF,CAAA,CACA,mBAAA,CAAqB,CAACC,cAAAA,CAAe,WAAYA,cAAAA,CAAe,YAAY,EAC5E,WAAA,CAAa,CACX,YAAa,IAAA,CACb,iBAAA,CAAmB,CACjB,KAAA,CAAO,CAAE,MAAA,CAAQ,GAAA,CAAO,QAAA,CAAU,KAAM,EACxC,OAAA,CAAS,CAAE,MAAA,CAAQ,IAAA,CAAS,SAAU,KAAM,CAC9C,EACA,gBAAA,CAAkB,CAAC,KAAK,CAC1B,CAAA,CACA,aAAA,CAAe,CACb,qBAAsB,CAAC,cAAc,CAAA,CACrC,YAAA,CAAc,CAAC,kBAAkB,CAAA,CACjC,eAAA,CAAiB,UACnB,CACF,CAAA,CAGA,EAAA,CAAI,CACF,QAAA,CAAU,IAAA,CACV,mBAAoB,CAClB,CACE,QAAA,CAAUD,qBAAAA,CAAsB,OAChC,MAAA,CAAQ,EAAA,CACR,iBAAA,CAAmB,GAAA,CACnB,WAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,eAAgB,EAAA,CAAI,eAAA,CAAiB,KAAM,aAAA,CAAe,CAAE,CACpF,CACF,CAAA,CACA,mBAAA,CAAqB,CAACC,eAAe,YAAA,CAAcA,cAAAA,CAAe,UAAU,CAAA,CAC5E,YAAa,CACX,WAAA,CAAa,IAAA,CACb,iBAAA,CAAmB,CACjB,KAAA,CAAO,CAAE,OAAQ,GAAA,CAAQ,QAAA,CAAU,KAAM,CAAA,CACzC,OAAA,CAAS,CAAE,MAAA,CAAQ,IAAS,QAAA,CAAU,KAAM,CAC9C,CAAA,CACA,iBAAkB,CAAC,SAAS,CAC9B,CAAA,CACA,cAAe,CACb,oBAAA,CAAsB,CAAC,sBAAsB,CAAA,CAC7C,aAAc,CAAC,kBAAkB,CAAA,CACjC,eAAA,CAAiB,UACnB,CACF,CACF,CAAA,CAGA,WAAA,CAAa,CACX,OAAA,CAAS,IAAA,CACT,kBAAA,CAAoB,CAACD,sBAAsB,MAAA,CAAQA,qBAAAA,CAAsB,OAAO,CAAA,CAChF,cAAA,CAAgB,CAAE,UAAA,CAAY,GAAI,CACpC,CAAA,CAGA,WAAY,CACV,OAAA,CAAS,IAAA,CACT,KAAA,CAAO,CACL,MAAA,CAAQ,CACN,CACE,MAAA,CAAQ,qBACR,WAAA,CAAa,kDAAA,CACb,UAAWwB,oBAAAA,CAAqB,GAAA,CAChC,WAAY,CACV,gBAAA,CAAkB,CAChBC,gBAAAA,CAAiB,QACjBA,gBAAAA,CAAiB,MAAA,CACjBA,gBAAAA,CAAiB,YACnB,EACA,gBAAA,CAAkB,CAAE,GAAA,CAAK,CAAE,OAAQ,GAAA,CAAM,QAAA,CAAU,KAAM,CAAE,CAC7D,EACA,OAAA,CAAS,CAAE,YAAA,CAAc,CAAC,mBAAmB,CAAA,CAAG,SAAA,CAAW,IAAA,CAAM,QAAA,CAAU,IAAK,CAAA,CAChF,WAAA,CAAa,WACf,CACF,CACF,CACF,CAAA,CAGA,cAAe,CACb,OAAA,CAAS,KACT,KAAA,CAAO,CACL,IAAA,CAAM,CACJ,WAAYtB,CAAAA,CACZ,kBAAA,CAAoB,CAACH,qBAAAA,CAAsB,MAAM,CACnD,CAAA,CACA,MAAA,CAAQ,CACN,WAAY,CAAC,KAAA,CAAO,MAAO,MAAM,CAAA,CACjC,mBAAoB,CAACA,qBAAAA,CAAsB,OAAO,CACpD,CACF,CACF,CACF,EChVO,IAAM0B,EAAAA,CAA2C,CAEtD,OAAA,CAAS,IAAA,CAGT,QAAS,CACPC,uBAAAA,CAAwB,KACxBA,uBAAAA,CAAwB,WAAA,CACxBA,uBAAAA,CAAwB,OAAA,CACxBA,wBAAwB,SAAA,CACxBA,uBAAAA,CAAwB,UAC1B,CAAA,CAGA,gBAAiB,IAAA,CAGjB,YAAA,CAAc,EAAA,CAGd,QAAA,CAAU,CACR,OAAA,CAAS,IAAA,CAGT,mBAAoB,CAAA,CAGpB,gBAAA,CAAkB,KAGlB,oBAAA,CAAsB,EAAA,CAGtB,aAAA,CAAe,GACjB,EAGA,YAAA,CAAc,CACZ,WAAA,CAAa,YAAA,CACb,QAAS,UACX,CACF,EC3CO,IAAMC,CAAAA,CAA6C,CACxD,OAAA,CAAS,IAAA,CACT,QAAA,CAAUC,uBAAAA,CAAwB,SAClC,eAAA,CAAiB,CACf,CAAC7B,qBAAAA,CAAsB,MAAM,EAAG,EAAA,CAChC,CAACA,qBAAAA,CAAsB,OAAO,EAAG,EAAA,CACjC,CAACA,qBAAAA,CAAsB,MAAM,EAAG,CAAA,CAChC,CAACA,qBAAAA,CAAsB,WAAW,EAAG,CAAA,CACrC,CAACA,qBAAAA,CAAsB,KAAK,EAAG,CAAA,CAC/B,CAACA,sBAAsB,gBAAgB,EAAG,EAC1C,CAACA,qBAAAA,CAAsB,gBAAgB,EAAG,EAC1C,CAACA,qBAAAA,CAAsB,GAAG,EAAG,EAC7B,CAACA,qBAAAA,CAAsB,MAAM,EAAG,EAChC,CAACA,qBAAAA,CAAsB,IAAI,EAAG,CAAA,CAC9B,CAACA,qBAAAA,CAAsB,KAAK,EAAG,CAAA,CAC/B,CAACA,qBAAAA,CAAsB,MAAM,EAAG,CAAA,CAChC,CAACA,qBAAAA,CAAsB,MAAM,EAAG,CAAA,CAChC,CAACA,qBAAAA,CAAsB,SAAS,EAAG,CAAA,CACnC,CAACA,sBAAsB,YAAY,EAAG,CACxC,CAAA,CACA,eAAgB,CACd,CAACA,qBAAAA,CAAsB,MAAM,EAAGe,CAAAA,CAAQ,QAAA,CACxC,CAACf,qBAAAA,CAAsB,OAAO,EAAGe,CAAAA,CAAQ,aACzC,CAACf,qBAAAA,CAAsB,MAAM,EAAG,CAAA,CAChC,CAACA,qBAAAA,CAAsB,WAAW,EAAG,CAAA,CACrC,CAACA,qBAAAA,CAAsB,KAAK,EAAG,CAAA,CAC/B,CAACA,qBAAAA,CAAsB,gBAAgB,EAAG,CAAA,CAC1C,CAACA,qBAAAA,CAAsB,gBAAgB,EAAG,CAAA,CAC1C,CAACA,qBAAAA,CAAsB,GAAG,EAAG,CAAA,CAC7B,CAACA,qBAAAA,CAAsB,MAAM,EAAG,CAAA,CAChC,CAACA,qBAAAA,CAAsB,IAAI,EAAG,CAAA,CAC9B,CAACA,sBAAsB,KAAK,EAAG,EAC/B,CAACA,qBAAAA,CAAsB,MAAM,EAAG,EAChC,CAACA,qBAAAA,CAAsB,MAAM,EAAG,EAChC,CAACA,qBAAAA,CAAsB,SAAS,EAAG,EACnC,CAACA,qBAAAA,CAAsB,YAAY,EAAG,CACxC,EACA,UAAA,CAAY,CACV,OAAA,CAAS,IAAA,CACT,SAAUR,CAAAA,CAAe,IAAA,CACzB,GAAA,CAAK,MACP,EACA,aAAA,CAAe,CACb,OAAA,CAAS,IAAA,CACT,SAAUA,CAAAA,CAAe,YAAA,CACzB,QAAS,MACX,CACF,ECjDO,IAAMsC,CAAAA,CAA+C,CAC1D,QAAS,IAAA,CACT,QAAA,CAAUD,uBAAAA,CAAwB,UAAA,CAClC,gBAAiB,CACf,CAAC7B,sBAAsB,MAAM,EAAG,EAChC,CAACA,qBAAAA,CAAsB,OAAO,EAAG,EACjC,CAACA,qBAAAA,CAAsB,MAAM,EAAG,EAChC,CAACA,qBAAAA,CAAsB,WAAW,EAAG,EACrC,CAACA,qBAAAA,CAAsB,KAAK,EAAG,CAAA,CAC/B,CAACA,qBAAAA,CAAsB,gBAAgB,EAAG,CAAA,CAC1C,CAACA,qBAAAA,CAAsB,gBAAgB,EAAG,CAAA,CAC1C,CAACA,qBAAAA,CAAsB,GAAG,EAAG,CAAA,CAC7B,CAACA,qBAAAA,CAAsB,MAAM,EAAG,CAAA,CAChC,CAACA,sBAAsB,IAAI,EAAG,CAAA,CAC9B,CAACA,sBAAsB,KAAK,EAAG,CAAA,CAC/B,CAACA,sBAAsB,MAAM,EAAG,CAAA,CAChC,CAACA,sBAAsB,MAAM,EAAG,EAChC,CAACA,qBAAAA,CAAsB,SAAS,EAAG,CAAA,CACnC,CAACA,qBAAAA,CAAsB,YAAY,EAAG,CACxC,CAAA,CACA,UAAA,CAAY,CAAE,OAAA,CAAS,KAAA,CAAO,QAAA,CAAU,CAAA,CAAG,IAAK,MAAO,CAAA,CACvD,cAAe,CAAE,OAAA,CAAS,MAAO,QAAA,CAAU,CAAA,CAAG,OAAA,CAAS,OAAQ,CACjE,ECrBO,IAAM+B,CAAAA,CAAqD,CAChE,OAAA,CAAS,IAAA,CACT,SAAUF,uBAAAA,CAAwB,gBAAA,CAClC,gBAAiB,CACf,CAAC7B,qBAAAA,CAAsB,MAAM,EAAG,CAAA,CAChC,CAACA,qBAAAA,CAAsB,OAAO,EAAG,CAAA,CACjC,CAACA,qBAAAA,CAAsB,MAAM,EAAG,CAAA,CAChC,CAACA,sBAAsB,WAAW,EAAG,EACrC,CAACA,qBAAAA,CAAsB,KAAK,EAAG,EAC/B,CAACA,qBAAAA,CAAsB,gBAAgB,EAAG,EAC1C,CAACA,qBAAAA,CAAsB,gBAAgB,EAAG,EAC1C,CAACA,qBAAAA,CAAsB,GAAG,EAAG,CAAA,CAC7B,CAACA,qBAAAA,CAAsB,MAAM,EAAG,CAAA,CAChC,CAACA,qBAAAA,CAAsB,IAAI,EAAG,CAAA,CAC9B,CAACA,qBAAAA,CAAsB,KAAK,EAAG,CAAA,CAC/B,CAACA,qBAAAA,CAAsB,MAAM,EAAG,CAAA,CAChC,CAACA,qBAAAA,CAAsB,MAAM,EAAG,CAAA,CAChC,CAACA,qBAAAA,CAAsB,SAAS,EAAG,CAAA,CACnC,CAACA,qBAAAA,CAAsB,YAAY,EAAG,CACxC,EACA,cAAA,CAAgB,CACd,CAACA,qBAAAA,CAAsB,MAAM,EAAGe,CAAAA,CAAQ,QAAA,CACxC,CAACf,qBAAAA,CAAsB,OAAO,EAAGe,CAAAA,CAAQ,YAAA,CACzC,CAACf,sBAAsB,MAAM,EAAG,CAAA,CAChC,CAACA,sBAAsB,WAAW,EAAG,EACrC,CAACA,qBAAAA,CAAsB,KAAK,EAAG,CAAA,CAC/B,CAACA,qBAAAA,CAAsB,gBAAgB,EAAG,CAAA,CAC1C,CAACA,qBAAAA,CAAsB,gBAAgB,EAAG,CAAA,CAC1C,CAACA,qBAAAA,CAAsB,GAAG,EAAG,CAAA,CAC7B,CAACA,qBAAAA,CAAsB,MAAM,EAAG,CAAA,CAChC,CAACA,qBAAAA,CAAsB,IAAI,EAAG,CAAA,CAC9B,CAACA,qBAAAA,CAAsB,KAAK,EAAG,CAAA,CAC/B,CAACA,qBAAAA,CAAsB,MAAM,EAAG,CAAA,CAChC,CAACA,sBAAsB,MAAM,EAAG,EAChC,CAACA,qBAAAA,CAAsB,SAAS,EAAG,EACnC,CAACA,qBAAAA,CAAsB,YAAY,EAAG,CACxC,CAAA,CACA,UAAA,CAAY,CAAE,OAAA,CAAS,MAAO,QAAA,CAAU,CAAA,CAAG,IAAK,MAAO,CAAA,CACvD,cAAe,CAAE,OAAA,CAAS,KAAA,CAAO,QAAA,CAAU,EAAG,OAAA,CAAS,OAAQ,CACjE,ECvCO,IAAMgC,CAAAA,CAAqD,CAChE,OAAA,CAAS,IAAA,CACT,SAAUH,uBAAAA,CAAwB,gBAAA,CAClC,eAAA,CAAiB,CACf,CAAC7B,qBAAAA,CAAsB,MAAM,EAAG,EAAA,CAChC,CAACA,qBAAAA,CAAsB,OAAO,EAAG,EAAA,CACjC,CAACA,qBAAAA,CAAsB,MAAM,EAAG,CAAA,CAChC,CAACA,sBAAsB,WAAW,EAAG,CAAA,CACrC,CAACA,sBAAsB,KAAK,EAAG,CAAA,CAC/B,CAACA,sBAAsB,gBAAgB,EAAG,CAAA,CAC1C,CAACA,sBAAsB,gBAAgB,EAAG,EAC1C,CAACA,qBAAAA,CAAsB,GAAG,EAAG,CAAA,CAC7B,CAACA,qBAAAA,CAAsB,MAAM,EAAG,CAAA,CAChC,CAACA,qBAAAA,CAAsB,IAAI,EAAG,CAAA,CAC9B,CAACA,qBAAAA,CAAsB,KAAK,EAAG,CAAA,CAC/B,CAACA,qBAAAA,CAAsB,MAAM,EAAG,CAAA,CAChC,CAACA,qBAAAA,CAAsB,MAAM,EAAG,CAAA,CAChC,CAACA,qBAAAA,CAAsB,SAAS,EAAG,CAAA,CACnC,CAACA,qBAAAA,CAAsB,YAAY,EAAG,CACxC,CAAA,CACA,cAAe,CACb,OAAA,CAAS,KACT,QAAA,CAAUe,CAAAA,CAAQ,KAAA,CAClB,OAAA,CAAS,SACX,CAAA,CACA,UAAA,CAAY,CAAE,OAAA,CAAS,MAAO,QAAA,CAAU,CAAA,CAAG,GAAA,CAAK,MAAO,CACzD,EC3BO,IAAMkB,CAAAA,CAA2C,CACtD,QAAS,IAAA,CACT,QAAA,CAAUJ,uBAAAA,CAAwB,MAAA,CAClC,gBAAiB,CACf,CAAC7B,qBAAAA,CAAsB,MAAM,EAAG,EAAA,CAChC,CAACA,sBAAsB,OAAO,EAAG,GACjC,CAACA,qBAAAA,CAAsB,MAAM,EAAG,EAChC,CAACA,qBAAAA,CAAsB,WAAW,EAAG,EACrC,CAACA,qBAAAA,CAAsB,KAAK,EAAG,EAC/B,CAACA,qBAAAA,CAAsB,gBAAgB,EAAG,CAAA,CAC1C,CAACA,qBAAAA,CAAsB,gBAAgB,EAAG,CAAA,CAC1C,CAACA,qBAAAA,CAAsB,GAAG,EAAG,CAAA,CAC7B,CAACA,qBAAAA,CAAsB,MAAM,EAAG,CAAA,CAChC,CAACA,qBAAAA,CAAsB,IAAI,EAAG,CAAA,CAC9B,CAACA,sBAAsB,KAAK,EAAG,CAAA,CAC/B,CAACA,sBAAsB,MAAM,EAAG,CAAA,CAChC,CAACA,sBAAsB,MAAM,EAAG,CAAA,CAChC,CAACA,sBAAsB,SAAS,EAAG,EACnC,CAACA,qBAAAA,CAAsB,YAAY,EAAG,CACxC,CAAA,CACA,UAAA,CAAY,CAAE,OAAA,CAAS,KAAA,CAAO,QAAA,CAAU,CAAA,CAAG,IAAK,MAAO,CAAA,CACvD,aAAA,CAAe,CAAE,QAAS,KAAA,CAAO,QAAA,CAAU,EAAG,OAAA,CAAS,OAAQ,CACjE,ECrBO,IAAMkC,EAAAA,CAA8E,CACzF,CAACL,uBAAAA,CAAwB,QAAQ,EAAGD,CAAAA,CACpC,CAACC,uBAAAA,CAAwB,UAAU,EAAGC,CAAAA,CACtC,CAACD,uBAAAA,CAAwB,gBAAgB,EAAGE,CAAAA,CAC5C,CAACF,wBAAwB,gBAAgB,EAAGG,CAAAA,CAC5C,CAACH,wBAAwB,MAAM,EAAGI,CACpC,ECPO,IAAME,GAAuD,CAClE,OAAA,CAAS,IAAA,CACT,QAAA,CAAUrB,2BAA2B,UAAA,CACrC,WAAA,CAAa,CACX,kBAAA,CAAoB,KACpB,cAAA,CAAgB,IAAA,CAChB,uBAAA,CAAyB,KAAA,CACzB,gBAAiB,EACnB,CAAA,CACA,eAAgB,CACd,cAAA,CAAgB,eAChB,gBAAA,CAAkB,EAAA,CAClB,WAAA,CAAa,EACf,EACA,kBAAA,CAAoB,CAClB,OAAA,CAAS,IAAA,CACT,eAAgB,EAAA,CAChB,WAAA,CAAa,CACX,CACE,KAAM,QAAA,CACN,aAAA,CAAe,CAAE,MAAA,CAAQ,CAAA,CAAG,SAAU1B,cAAAA,CAAe,GAAI,CAAA,CACzD,QAAA,CAAU,CAAE,UAAA,CAAY,GAAA,CAAK,KAAA,CAAO,EAAA,CAAK,SAAUA,cAAAA,CAAe,GAAI,CACxE,CAAA,CACA,CACE,IAAA,CAAM,QAAA,CACN,cAAe,CAAE,MAAA,CAAQ,IAAO,QAAA,CAAUA,cAAAA,CAAe,GAAI,CAAA,CAC7D,SAAU,CAAE,UAAA,CAAY,GAAA,CAAK,KAAA,CAAO,IAAM,QAAA,CAAUA,cAAAA,CAAe,GAAI,CAAA,CACvE,SAAU,CAAC,yBAAyB,CACtC,CACF,CACF,EACA,oBAAA,CAAsB,CACpB,OAAA,CAAS,IAAA,CACT,cAAe,CAAC,aAAA,CAAe,mBAAmB,CAAA,CAClD,gBAAiB,EAAA,CACjB,eAAA,CAAiB,GACnB,CACF,ECrCO,IAAMgD,EAAAA,CAAqD,CAChE,OAAA,CAAS,KACT,QAAA,CAAUtB,0BAAAA,CAA2B,QAAA,CACrC,WAAA,CAAa,CACX,kBAAA,CAAoB,IAAA,CACpB,cAAA,CAAgB,IAAA,CAChB,wBAAyB,IAAA,CACzB,eAAA,CAAiB,EACnB,CAAA,CACA,cAAA,CAAgB,CACd,cAAA,CAAgB,QAAA,CAChB,gBAAA,CAAkB,EAAA,CAClB,YAAa,EACf,CAAA,CACA,kBAAA,CAAoB,CAClB,QAAS,IAAA,CACT,cAAA,CAAgB,EAAA,CAChB,WAAA,CAAa,CACX,CACE,IAAA,CAAM,YACN,aAAA,CAAe,CAAE,OAAQ,CAAA,CAAG,QAAA,CAAU1B,cAAAA,CAAe,GAAI,EACzD,QAAA,CAAU,CAAE,UAAA,CAAY,GAAA,CAAK,MAAO,EAAA,CAAK,QAAA,CAAUA,cAAAA,CAAe,GAAI,CACxE,CAAA,CACA,CACE,KAAM,aAAA,CACN,aAAA,CAAe,CAAE,MAAA,CAAQ,GAAA,CAAO,QAAA,CAAUA,cAAAA,CAAe,GAAI,CAAA,CAC7D,QAAA,CAAU,CAAE,UAAA,CAAY,IAAK,KAAA,CAAO,GAAA,CAAM,QAAA,CAAUA,cAAAA,CAAe,GAAI,CAAA,CACvE,QAAA,CAAU,CAAC,kBAAA,CAAoB,eAAe,CAChD,CACF,CACF,CAAA,CACA,oBAAA,CAAsB,CACpB,OAAA,CAAS,IAAA,CACT,aAAA,CAAe,CAAC,cAAe,IAAA,CAAM,SAAS,CAAA,CAC9C,eAAA,CAAiB,IACjB,eAAA,CAAiB,IACnB,CACF,ECzCO,IAAMiD,EAAAA,CAAyD,CACpE,OAAA,CAAS,IAAA,CACT,QAAA,CAAUvB,0BAAAA,CAA2B,aACrC,WAAA,CAAa,CACX,kBAAA,CAAoB,IAAA,CACpB,eAAgB,KAAA,CAChB,uBAAA,CAAyB,KACzB,eAAA,CAAiB,EACnB,EACA,cAAA,CAAgB,CACd,cAAA,CAAgB,OAAA,CAChB,iBAAkB,EAAA,CAClB,WAAA,CAAa,EACf,CAAA,CACA,mBAAoB,CAClB,OAAA,CAAS,KAAA,CACT,cAAA,CAAgB,GAChB,WAAA,CAAa,EACf,CAAA,CACA,oBAAA,CAAsB,CACpB,OAAA,CAAS,KAAA,CACT,aAAA,CAAe,GACf,eAAA,CAAiB,CAAA,CACjB,eAAA,CAAiB,CACnB,CACF,MCrBawB,EAAAA,CAAqD,CAChE,QAAS,IAAA,CACT,QAAA,CAAUxB,0BAAAA,CAA2B,QAAA,CACrC,YAAa,CACX,kBAAA,CAAoB,IAAA,CACpB,cAAA,CAAgB,KAChB,uBAAA,CAAyB,IAAA,CACzB,eAAA,CAAiB,EACnB,EACA,cAAA,CAAgB,CACd,cAAA,CAAgB,YAAA,CAChB,iBAAkB,EAAA,CAClB,WAAA,CAAa,EACf,CAAA,CACA,mBAAoB,CAClB,OAAA,CAAS,IAAA,CACT,cAAA,CAAgB,GAChB,WAAA,CAAa,CACX,CACE,IAAA,CAAM,gBACN,aAAA,CAAe,CAAE,OAAQ,CAAA,CAAG,QAAA,CAAU1B,eAAe,GAAI,CAAA,CACzD,QAAA,CAAU,CAAE,WAAY,GAAA,CAAK,KAAA,CAAO,GAAA,CAAM,QAAA,CAAUA,eAAe,GAAI,CACzE,CAAA,CACA,CACE,KAAM,eAAA,CACN,aAAA,CAAe,CAAE,MAAA,CAAQ,IAAA,CAAO,SAAUA,cAAAA,CAAe,GAAI,CAAA,CAC7D,QAAA,CAAU,CAAE,UAAA,CAAY,GAAA,CAAK,KAAA,CAAO,EAAA,CAAK,SAAUA,cAAAA,CAAe,GAAI,CAAA,CACtE,QAAA,CAAU,CAAC,mBAAA,CAAqB,yBAAyB,CAC3D,CACF,CACF,EACA,oBAAA,CAAsB,CACpB,OAAA,CAAS,IAAA,CACT,cAAe,CAAC,mBAAA,CAAqB,eAAe,CAAA,CACpD,gBAAiB,EAAA,CACjB,eAAA,CAAiB,IACnB,CACF,ECrCO,IAAMmD,EAAAA,CAAgF,CAC3F,CAACzB,0BAAAA,CAA2B,UAAU,EAAGqB,EAAAA,CACzC,CAACrB,0BAAAA,CAA2B,QAAQ,EAAGsB,EAAAA,CACvC,CAACtB,0BAAAA,CAA2B,YAAY,EAAGuB,EAAAA,CAC3C,CAACvB,0BAAAA,CAA2B,QAAQ,EAAGwB,EACzC,ECTO,IAAME,EAAAA,CAA4C,CAEvD,CACE,IAAA,CAAM,KAAA,CACN,WAAA,CAAa,CACX,IAAK,CAAE,MAAA,CAAQ,GAAA,CAAM,QAAA,CAAU,KAAM,CAAA,CACrC,GAAA,CAAK,CAAE,MAAA,CAAQ,GAAA,CAAS,SAAU,KAAM,CAC1C,CAAA,CACA,kBAAA,CAAoB,CAClB,CACE,QAAA,CAAUxC,qBAAAA,CAAsB,MAAA,CAChC,OAAQ,GAAA,CACR,iBAAA,CAAmB,EAAA,CACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,gBAAiB,GAAA,CAAK,aAAA,CAAe,CAAE,CACnF,EACA,CACE,QAAA,CAAUA,qBAAAA,CAAsB,MAAA,CAChC,OAAQ,EAAA,CACR,iBAAA,CAAmB,EAAA,CACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,gBAAiB,GAAA,CAAK,aAAA,CAAe,CAAE,CACnF,CACF,CAAA,CACA,eAAA,CAAiB,CAAE,mBAAA,CAAqB,KAAM,gBAAA,CAAkB,IAAA,CAAM,YAAA,CAAc,KAAM,CAC5F,CAAA,CAGA,CACE,KAAM,KAAA,CACN,WAAA,CAAa,CACX,GAAA,CAAK,CAAE,MAAA,CAAQ,GAAA,CAAK,SAAU,KAAM,CAAA,CACpC,GAAA,CAAK,CAAE,OAAQ,GAAA,CAAS,QAAA,CAAU,KAAM,CAC1C,EACA,kBAAA,CAAoB,CAClB,CACE,QAAA,CAAUA,qBAAAA,CAAsB,OAChC,MAAA,CAAQ,GAAA,CACR,iBAAA,CAAmB,EAAA,CACnB,WAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,eAAgB,EAAA,CAAI,eAAA,CAAiB,GAAA,CAAK,aAAA,CAAe,CAAE,CACnF,CAAA,CACA,CACE,QAAA,CAAUA,qBAAAA,CAAsB,QAChC,MAAA,CAAQ,EAAA,CACR,iBAAA,CAAmB,EAAA,CACnB,WAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,eAAgB,EAAA,CAAI,eAAA,CAAiB,GAAA,CAAK,aAAA,CAAe,CAAE,CACnF,CACF,EACA,eAAA,CAAiB,CAAE,oBAAqB,IAAA,CAAM,gBAAA,CAAkB,IAAA,CAAM,YAAA,CAAc,KAAM,CAC5F,CAAA,CAGA,CACE,IAAA,CAAM,MACN,WAAA,CAAa,CACX,GAAA,CAAK,CAAE,OAAQ,GAAA,CAAO,QAAA,CAAU,KAAM,CAAA,CACtC,GAAA,CAAK,CAAE,MAAA,CAAQ,GAAA,CAAS,QAAA,CAAU,KAAM,CAC1C,CAAA,CACA,kBAAA,CAAoB,CAClB,CACE,SAAUA,qBAAAA,CAAsB,GAAA,CAChC,MAAA,CAAQ,GAAA,CACR,kBAAmB,EAAA,CACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,eAAA,CAAiB,GAAA,CAAK,cAAe,CAAE,CACnF,CAAA,CACA,CACE,SAAUA,qBAAAA,CAAsB,MAAA,CAChC,MAAA,CAAQ,EAAA,CACR,kBAAmB,EAAA,CACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,eAAA,CAAiB,GAAA,CAAK,cAAe,CAAE,CACnF,CAAA,CACA,CACE,SAAUA,qBAAAA,CAAsB,OAAA,CAChC,MAAA,CAAQ,EAAA,CACR,kBAAmB,EAAA,CACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,eAAA,CAAiB,GAAA,CAAK,cAAe,CAAE,CACnF,CACF,CAAA,CACA,gBAAiB,CAAE,mBAAA,CAAqB,IAAA,CAAM,gBAAA,CAAkB,KAAM,YAAA,CAAc,KAAM,CAC5F,CAAA,CAGA,CACE,KAAM,KAAA,CACN,WAAA,CAAa,CACX,GAAA,CAAK,CAAE,MAAA,CAAQ,GAAA,CAAM,QAAA,CAAU,KAAM,EACrC,GAAA,CAAK,CAAE,MAAA,CAAQ,GAAA,CAAS,SAAU,KAAM,CAC1C,EACA,kBAAA,CAAoB,CAClB,CACE,QAAA,CAAUA,qBAAAA,CAAsB,MAAA,CAChC,MAAA,CAAQ,IACR,iBAAA,CAAmB,EAAA,CACnB,UAAA,CAAY,GACZ,kBAAA,CAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,gBAAiB,GAAA,CAAK,aAAA,CAAe,CAAE,CACnF,CAAA,CACA,CACE,QAAA,CAAUA,qBAAAA,CAAsB,SAAA,CAChC,MAAA,CAAQ,GACR,iBAAA,CAAmB,EAAA,CACnB,UAAA,CAAY,GACZ,kBAAA,CAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,gBAAiB,GAAA,CAAK,aAAA,CAAe,CAAE,CACnF,CACF,EACA,eAAA,CAAiB,CAAE,mBAAA,CAAqB,IAAA,CAAM,iBAAkB,IAAA,CAAM,YAAA,CAAc,KAAM,CAC5F,EAGA,CACE,IAAA,CAAM,KAAA,CACN,WAAA,CAAa,CACX,GAAA,CAAK,CAAE,OAAQ,IAAA,CAAM,QAAA,CAAU,KAAM,CAAA,CACrC,GAAA,CAAK,CAAE,MAAA,CAAQ,IAAS,QAAA,CAAU,KAAM,CAC1C,CAAA,CACA,mBAAoB,CAClB,CACE,QAAA,CAAUA,qBAAAA,CAAsB,OAChC,MAAA,CAAQ,GAAA,CACR,kBAAmB,EAAA,CACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,cAAA,CAAgB,GAAI,eAAA,CAAiB,GAAA,CAAK,aAAA,CAAe,CAAE,CACnF,CAAA,CACA,CACE,QAAA,CAAUA,qBAAAA,CAAsB,QAChC,MAAA,CAAQ,EAAA,CACR,kBAAmB,EAAA,CACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,cAAA,CAAgB,GAAI,eAAA,CAAiB,GAAA,CAAK,aAAA,CAAe,CAAE,CACnF,CACF,CAAA,CACA,eAAA,CAAiB,CAAE,oBAAqB,IAAA,CAAM,gBAAA,CAAkB,KAAM,YAAA,CAAc,KAAM,CAC5F,CAAA,CAGA,CACE,IAAA,CAAM,KAAA,CACN,YAAa,CACX,GAAA,CAAK,CAAE,MAAA,CAAQ,KAAM,QAAA,CAAU,KAAM,CAAA,CACrC,GAAA,CAAK,CAAE,MAAA,CAAQ,GAAA,CAAS,SAAU,KAAM,CAC1C,EACA,kBAAA,CAAoB,CAClB,CACE,QAAA,CAAUA,sBAAsB,MAAA,CAChC,MAAA,CAAQ,GAAA,CACR,iBAAA,CAAmB,GACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,gBAAiB,GAAA,CAAK,aAAA,CAAe,CAAE,CACnF,CAAA,CACA,CACE,QAAA,CAAUA,sBAAsB,OAAA,CAChC,MAAA,CAAQ,EAAA,CACR,iBAAA,CAAmB,GACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,gBAAiB,GAAA,CAAK,aAAA,CAAe,CAAE,CACnF,CACF,CAAA,CACA,eAAA,CAAiB,CAAE,mBAAA,CAAqB,IAAA,CAAM,gBAAA,CAAkB,IAAA,CAAM,aAAc,KAAM,CAC5F,CAAA,CAGA,CACE,KAAM,KAAA,CACN,WAAA,CAAa,CACX,GAAA,CAAK,CAAE,OAAQ,IAAA,CAAO,QAAA,CAAU,KAAM,CAAA,CACtC,IAAK,CAAE,MAAA,CAAQ,GAAA,CAAW,QAAA,CAAU,KAAM,CAC5C,CAAA,CACA,kBAAA,CAAoB,CAClB,CACE,QAAA,CAAUA,qBAAAA,CAAsB,OAChC,MAAA,CAAQ,GAAA,CACR,kBAAmB,EAAA,CACnB,UAAA,CAAY,EAAC,CACb,mBAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,eAAA,CAAiB,IAAK,aAAA,CAAe,CAAE,CACnF,CAAA,CACA,CACE,QAAA,CAAUA,qBAAAA,CAAsB,QAChC,MAAA,CAAQ,EAAA,CACR,kBAAmB,EAAA,CACnB,UAAA,CAAY,EAAC,CACb,mBAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,eAAA,CAAiB,IAAK,aAAA,CAAe,CAAE,CACnF,CACF,EACA,eAAA,CAAiB,CAAE,oBAAqB,IAAA,CAAM,gBAAA,CAAkB,KAAM,YAAA,CAAc,KAAM,CAC5F,CAAA,CAGA,CACE,IAAA,CAAM,MAAA,CACN,WAAA,CAAa,CACX,IAAK,CAAE,MAAA,CAAQ,GAAA,CAAM,QAAA,CAAU,KAAM,CAAA,CACrC,GAAA,CAAK,CAAE,MAAA,CAAQ,IAAS,QAAA,CAAU,KAAM,CAC1C,CAAA,CACA,mBAAoB,CAClB,CACE,QAAA,CAAUA,qBAAAA,CAAsB,OAChC,MAAA,CAAQ,GAAA,CACR,iBAAA,CAAmB,EAAA,CACnB,WAAY,EAAC,CACb,mBAAoB,CAAE,cAAA,CAAgB,GAAI,eAAA,CAAiB,GAAA,CAAK,aAAA,CAAe,CAAE,CACnF,CAAA,CACA,CACE,QAAA,CAAUA,qBAAAA,CAAsB,QAChC,MAAA,CAAQ,EAAA,CACR,iBAAA,CAAmB,EAAA,CACnB,WAAY,EAAC,CACb,mBAAoB,CAAE,cAAA,CAAgB,GAAI,eAAA,CAAiB,GAAA,CAAK,aAAA,CAAe,CAAE,CACnF,CACF,CAAA,CACA,eAAA,CAAiB,CAAE,oBAAqB,IAAA,CAAM,gBAAA,CAAkB,IAAA,CAAM,YAAA,CAAc,KAAM,CAC5F,CACF,ECvNO,IAAMyC,EAAAA,CAAwE,CAEnF,IAAK,CACH,CACE,QAAA,CAAUzC,qBAAAA,CAAsB,QAChC,MAAA,CAAQ,EAAA,CACR,iBAAA,CAAmB,EAAA,CACnB,WAAY,EAAC,CACb,mBAAoB,CAAE,cAAA,CAAgB,GAAI,eAAA,CAAiB,IAAA,CAAM,aAAA,CAAe,CAAE,CACpF,CACF,CAAA,CACA,GAAA,CAAK,CACH,CACE,QAAA,CAAUA,qBAAAA,CAAsB,MAAA,CAChC,MAAA,CAAQ,IACR,iBAAA,CAAmB,EAAA,CACnB,WAAY,EAAC,CACb,mBAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,eAAA,CAAiB,IAAK,aAAA,CAAe,CAAE,CACnF,CACF,EACA,GAAA,CAAK,CACH,CACE,QAAA,CAAUA,sBAAsB,MAAA,CAChC,MAAA,CAAQ,GACR,iBAAA,CAAmB,EAAA,CACnB,WAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,eAAgB,EAAA,CAAI,eAAA,CAAiB,GAAA,CAAK,aAAA,CAAe,CAAE,CACnF,CACF,CAAA,CACA,GAAA,CAAK,CACH,CACE,QAAA,CAAUA,sBAAsB,OAAA,CAChC,MAAA,CAAQ,GACR,iBAAA,CAAmB,EAAA,CACnB,UAAA,CAAY,GACZ,kBAAA,CAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,gBAAiB,IAAA,CAAM,aAAA,CAAe,CAAE,CACpF,CACF,CAAA,CACA,GAAA,CAAK,CACH,CACE,QAAA,CAAUA,sBAAsB,MAAA,CAChC,MAAA,CAAQ,EAAA,CACR,iBAAA,CAAmB,GACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,eAAA,CAAiB,GAAA,CAAK,cAAe,CAAE,CACnF,CACF,CAAA,CACA,GAAA,CAAK,CACH,CACE,QAAA,CAAUA,qBAAAA,CAAsB,MAAA,CAChC,OAAQ,EAAA,CACR,iBAAA,CAAmB,EAAA,CACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,cAAA,CAAgB,GAAI,eAAA,CAAiB,GAAA,CAAK,cAAe,CAAE,CACnF,CACF,CAAA,CACA,GAAA,CAAK,CACH,CACE,SAAUA,qBAAAA,CAAsB,OAAA,CAChC,MAAA,CAAQ,EAAA,CACR,kBAAmB,EAAA,CACnB,UAAA,CAAY,EAAC,CACb,mBAAoB,CAAE,cAAA,CAAgB,GAAI,eAAA,CAAiB,IAAA,CAAM,cAAe,CAAE,CACpF,CACF,CAAA,CACA,IAAK,CACH,CACE,QAAA,CAAUA,qBAAAA,CAAsB,QAChC,MAAA,CAAQ,EAAA,CACR,iBAAA,CAAmB,EAAA,CACnB,WAAY,EAAC,CACb,mBAAoB,CAAE,cAAA,CAAgB,GAAI,eAAA,CAAiB,IAAA,CAAM,aAAA,CAAe,CAAE,CACpF,CACF,CAAA,CAGA,GAAA,CAAK,CACH,CACE,QAAA,CAAUA,qBAAAA,CAAsB,OAAA,CAChC,MAAA,CAAQ,GACR,iBAAA,CAAmB,GAAA,CACnB,WAAY,EAAC,CACb,mBAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,eAAA,CAAiB,KAAM,aAAA,CAAe,CAAE,CACpF,CACF,EACA,GAAA,CAAK,CACH,CACE,QAAA,CAAUA,sBAAsB,OAAA,CAChC,MAAA,CAAQ,GACR,iBAAA,CAAmB,EAAA,CACnB,WAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,eAAgB,EAAA,CAAI,eAAA,CAAiB,IAAA,CAAM,aAAA,CAAe,CAAE,CACpF,CACF,CAAA,CACA,GAAA,CAAK,CACH,CACE,QAAA,CAAUA,sBAAsB,MAAA,CAChC,MAAA,CAAQ,GACR,iBAAA,CAAmB,EAAA,CACnB,UAAA,CAAY,GACZ,kBAAA,CAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,gBAAiB,GAAA,CAAK,aAAA,CAAe,CAAE,CACnF,CACF,CAAA,CACA,GAAA,CAAK,CACH,CACE,QAAA,CAAUA,sBAAsB,MAAA,CAChC,MAAA,CAAQ,EAAA,CACR,iBAAA,CAAmB,GACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,eAAA,CAAiB,GAAA,CAAK,cAAe,CAAE,CACnF,CACF,CAAA,CACA,GAAA,CAAK,CACH,CACE,QAAA,CAAUA,qBAAAA,CAAsB,OAAA,CAChC,OAAQ,EAAA,CACR,iBAAA,CAAmB,EAAA,CACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,cAAA,CAAgB,GAAI,eAAA,CAAiB,IAAA,CAAM,cAAe,CAAE,CACpF,CACF,CAAA,CACA,GAAA,CAAK,CACH,CACE,SAAUA,qBAAAA,CAAsB,OAAA,CAChC,MAAA,CAAQ,EAAA,CACR,kBAAmB,GAAA,CACnB,UAAA,CAAY,EAAC,CACb,mBAAoB,CAAE,cAAA,CAAgB,GAAI,eAAA,CAAiB,IAAA,CAAM,cAAe,EAAG,CACrF,CACF,CAAA,CACA,IAAK,CACH,CACE,QAAA,CAAUA,qBAAAA,CAAsB,QAChC,MAAA,CAAQ,EAAA,CACR,iBAAA,CAAmB,GAAA,CACnB,WAAY,EAAC,CACb,mBAAoB,CAAE,cAAA,CAAgB,GAAI,eAAA,CAAiB,IAAA,CAAM,aAAA,CAAe,EAAG,CACrF,CACF,CAAA,CACA,GAAA,CAAK,CACH,CACE,QAAA,CAAUA,qBAAAA,CAAsB,OAAA,CAChC,MAAA,CAAQ,GACR,iBAAA,CAAmB,GAAA,CACnB,WAAY,EAAC,CACb,mBAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,eAAA,CAAiB,KAAM,aAAA,CAAe,EAAG,CACrF,CACF,EACA,GAAA,CAAK,CACH,CACE,QAAA,CAAUA,sBAAsB,OAAA,CAChC,MAAA,CAAQ,GACR,iBAAA,CAAmB,GAAA,CACnB,WAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,eAAgB,EAAA,CAAI,eAAA,CAAiB,IAAA,CAAM,aAAA,CAAe,EAAG,CACrF,CACF,CAAA,CACA,GAAA,CAAK,CACH,CACE,QAAA,CAAUA,sBAAsB,OAAA,CAChC,MAAA,CAAQ,GACR,iBAAA,CAAmB,GAAA,CACnB,UAAA,CAAY,GACZ,kBAAA,CAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,gBAAiB,IAAA,CAAM,aAAA,CAAe,EAAG,CACrF,CACF,CAAA,CACA,GAAA,CAAK,CACH,CACE,QAAA,CAAUA,sBAAsB,OAAA,CAChC,MAAA,CAAQ,EAAA,CACR,iBAAA,CAAmB,IACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,eAAA,CAAiB,IAAA,CAAM,cAAe,EAAG,CACrF,CACF,CAAA,CACA,GAAA,CAAK,CACH,CACE,QAAA,CAAUA,qBAAAA,CAAsB,OAAA,CAChC,OAAQ,EAAA,CACR,iBAAA,CAAmB,GAAA,CACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,cAAA,CAAgB,GAAI,eAAA,CAAiB,IAAA,CAAM,cAAe,EAAG,CACrF,CACF,CAAA,CACA,GAAA,CAAK,CACH,CACE,SAAUA,qBAAAA,CAAsB,OAAA,CAChC,MAAA,CAAQ,EAAA,CACR,kBAAmB,GAAA,CACnB,UAAA,CAAY,EAAC,CACb,mBAAoB,CAAE,cAAA,CAAgB,GAAI,eAAA,CAAiB,IAAA,CAAM,cAAe,EAAG,CACrF,CACF,CAAA,CAGA,IAAK,CACH,CACE,QAAA,CAAUA,qBAAAA,CAAsB,OAChC,MAAA,CAAQ,EAAA,CACR,iBAAA,CAAmB,EAAA,CACnB,WAAY,EAAC,CACb,mBAAoB,CAAE,cAAA,CAAgB,GAAI,eAAA,CAAiB,GAAA,CAAK,aAAA,CAAe,CAAE,CACnF,CACF,CAAA,CACA,GAAA,CAAK,CACH,CACE,QAAA,CAAUA,qBAAAA,CAAsB,MAAA,CAChC,MAAA,CAAQ,GACR,iBAAA,CAAmB,EAAA,CACnB,WAAY,EAAC,CACb,mBAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,eAAA,CAAiB,IAAK,aAAA,CAAe,CAAE,CACnF,CACF,EACA,GAAA,CAAK,CACH,CACE,QAAA,CAAUA,sBAAsB,MAAA,CAChC,MAAA,CAAQ,GACR,iBAAA,CAAmB,EAAA,CACnB,WAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,eAAgB,EAAA,CAAI,eAAA,CAAiB,GAAA,CAAK,aAAA,CAAe,CAAE,CACnF,CACF,CAAA,CACA,GAAA,CAAK,CACH,CACE,QAAA,CAAUA,sBAAsB,OAAA,CAChC,MAAA,CAAQ,GACR,iBAAA,CAAmB,EAAA,CACnB,UAAA,CAAY,GACZ,kBAAA,CAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,gBAAiB,IAAA,CAAM,aAAA,CAAe,CAAE,CACpF,CACF,CAAA,CACA,GAAA,CAAK,CACH,CACE,SAAUA,qBAAAA,CAAsB,OAAA,CAChC,MAAA,CAAQ,EAAA,CACR,kBAAmB,EAAA,CACnB,UAAA,CAAY,EAAC,CACb,mBAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,eAAA,CAAiB,KAAM,aAAA,CAAe,CAAE,CACpF,CACF,CAAA,CACA,IAAK,CACH,CACE,QAAA,CAAUA,qBAAAA,CAAsB,QAChC,MAAA,CAAQ,EAAA,CACR,iBAAA,CAAmB,EAAA,CACnB,WAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,eAAgB,EAAA,CAAI,eAAA,CAAiB,KAAM,aAAA,CAAe,CAAE,CACpF,CACF,CAAA,CACA,GAAA,CAAK,CACH,CACE,QAAA,CAAUA,qBAAAA,CAAsB,OAAA,CAChC,MAAA,CAAQ,GACR,iBAAA,CAAmB,EAAA,CACnB,UAAA,CAAY,GACZ,kBAAA,CAAoB,CAAE,eAAgB,EAAA,CAAI,eAAA,CAAiB,KAAM,aAAA,CAAe,CAAE,CACpF,CACF,EACA,GAAA,CAAK,CACH,CACE,QAAA,CAAUA,sBAAsB,OAAA,CAChC,MAAA,CAAQ,EAAA,CACR,iBAAA,CAAmB,GACnB,UAAA,CAAY,GACZ,kBAAA,CAAoB,CAAE,eAAgB,EAAA,CAAI,eAAA,CAAiB,IAAA,CAAM,aAAA,CAAe,CAAE,CACpF,CACF,CAAA,CACA,GAAA,CAAK,CACH,CACE,QAAA,CAAUA,qBAAAA,CAAsB,OAAA,CAChC,OAAQ,EAAA,CACR,iBAAA,CAAmB,GACnB,UAAA,CAAY,GACZ,kBAAA,CAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,gBAAiB,IAAA,CAAM,aAAA,CAAe,CAAE,CACpF,CACF,CAAA,CACA,GAAA,CAAK,CACH,CACE,SAAUA,qBAAAA,CAAsB,OAAA,CAChC,OAAQ,EAAA,CACR,iBAAA,CAAmB,GACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,eAAA,CAAiB,IAAA,CAAM,cAAe,CAAE,CACpF,CACF,CAAA,CACA,IAAK,CACH,CACE,SAAUA,qBAAAA,CAAsB,MAAA,CAChC,OAAQ,EAAA,CACR,iBAAA,CAAmB,EAAA,CACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,cAAA,CAAgB,GAAI,eAAA,CAAiB,GAAA,CAAK,aAAA,CAAe,CAAE,CACnF,CACF,CAAA,CAGA,IAAK,CACH,CACE,SAAUA,qBAAAA,CAAsB,OAAA,CAChC,MAAA,CAAQ,EAAA,CACR,kBAAmB,GAAA,CACnB,UAAA,CAAY,EAAC,CACb,mBAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,eAAA,CAAiB,KAAM,aAAA,CAAe,CAAE,CACpF,CACF,CAAA,CACA,IAAK,CACH,CACE,QAAA,CAAUA,qBAAAA,CAAsB,QAChC,MAAA,CAAQ,EAAA,CACR,iBAAA,CAAmB,GAAA,CACnB,WAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,eAAgB,EAAA,CAAI,eAAA,CAAiB,KAAM,aAAA,CAAe,CAAE,CACpF,CACF,CAAA,CACA,GAAA,CAAK,CACH,CACE,QAAA,CAAUA,qBAAAA,CAAsB,OAAA,CAChC,MAAA,CAAQ,GACR,iBAAA,CAAmB,GAAA,CACnB,UAAA,CAAY,GACZ,kBAAA,CAAoB,CAAE,eAAgB,EAAA,CAAI,eAAA,CAAiB,KAAM,aAAA,CAAe,EAAG,CACrF,CACF,EACA,GAAA,CAAK,CACH,CACE,QAAA,CAAUA,sBAAsB,OAAA,CAChC,MAAA,CAAQ,EAAA,CACR,iBAAA,CAAmB,IACnB,UAAA,CAAY,GACZ,kBAAA,CAAoB,CAAE,eAAgB,EAAA,CAAI,eAAA,CAAiB,IAAA,CAAM,aAAA,CAAe,EAAG,CACrF,CACF,CAAA,CACA,GAAA,CAAK,CACH,CACE,QAAA,CAAUA,qBAAAA,CAAsB,OAAA,CAChC,OAAQ,EAAA,CACR,iBAAA,CAAmB,IACnB,UAAA,CAAY,GACZ,kBAAA,CAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,gBAAiB,IAAA,CAAM,aAAA,CAAe,EAAG,CACrF,CACF,CAAA,CACA,GAAA,CAAK,CACH,CACE,SAAUA,qBAAAA,CAAsB,OAAA,CAChC,OAAQ,EAAA,CACR,iBAAA,CAAmB,IACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,eAAA,CAAiB,IAAA,CAAM,cAAe,EAAG,CACrF,CACF,CAAA,CACA,IAAK,CACH,CACE,SAAUA,qBAAAA,CAAsB,OAAA,CAChC,OAAQ,EAAA,CACR,iBAAA,CAAmB,GAAA,CACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,cAAA,CAAgB,GAAI,eAAA,CAAiB,IAAA,CAAM,aAAA,CAAe,EAAG,CACrF,CACF,CAAA,CACA,IAAK,CACH,CACE,SAAUA,qBAAAA,CAAsB,OAAA,CAChC,MAAA,CAAQ,EAAA,CACR,kBAAmB,GAAA,CACnB,UAAA,CAAY,EAAC,CACb,mBAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,eAAA,CAAiB,KAAM,aAAA,CAAe,EAAG,CACrF,CACF,CAAA,CACA,IAAK,CACH,CACE,QAAA,CAAUA,qBAAAA,CAAsB,QAChC,MAAA,CAAQ,EAAA,CACR,iBAAA,CAAmB,GAAA,CACnB,WAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,eAAgB,EAAA,CAAI,eAAA,CAAiB,KAAM,aAAA,CAAe,EAAG,CACrF,CACF,CAAA,CACA,GAAA,CAAK,CACH,CACE,QAAA,CAAUA,qBAAAA,CAAsB,OAAA,CAChC,MAAA,CAAQ,GACR,iBAAA,CAAmB,GAAA,CACnB,UAAA,CAAY,GACZ,kBAAA,CAAoB,CAAE,eAAgB,EAAA,CAAI,eAAA,CAAiB,KAAM,aAAA,CAAe,EAAG,CACrF,CACF,EACA,GAAA,CAAK,CACH,CACE,QAAA,CAAUA,sBAAsB,OAAA,CAChC,MAAA,CAAQ,EAAA,CACR,iBAAA,CAAmB,IACnB,UAAA,CAAY,GACZ,kBAAA,CAAoB,CAAE,eAAgB,EAAA,CAAI,eAAA,CAAiB,IAAA,CAAM,aAAA,CAAe,EAAG,CACrF,CACF,CAAA,CACA,GAAA,CAAK,CACH,CACE,QAAA,CAAUA,qBAAAA,CAAsB,OAAA,CAChC,OAAQ,EAAA,CACR,iBAAA,CAAmB,IACnB,UAAA,CAAY,GACZ,kBAAA,CAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,gBAAiB,IAAA,CAAM,aAAA,CAAe,EAAG,CACrF,CACF,CAAA,CACA,GAAA,CAAK,CACH,CACE,SAAUA,qBAAAA,CAAsB,OAAA,CAChC,OAAQ,EAAA,CACR,iBAAA,CAAmB,IACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,eAAA,CAAiB,IAAA,CAAM,cAAe,EAAG,CACrF,CACF,CAAA,CACA,IAAK,CACH,CACE,SAAUA,qBAAAA,CAAsB,OAAA,CAChC,OAAQ,EAAA,CACR,iBAAA,CAAmB,GAAA,CACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,cAAA,CAAgB,GAAI,eAAA,CAAiB,IAAA,CAAM,aAAA,CAAe,EAAG,CACrF,CACF,CAAA,CAGA,IAAK,CACH,CACE,SAAUA,qBAAAA,CAAsB,MAAA,CAChC,MAAA,CAAQ,EAAA,CACR,kBAAmB,EAAA,CACnB,UAAA,CAAY,EAAC,CACb,mBAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,eAAA,CAAiB,IAAK,aAAA,CAAe,CAAE,CACnF,CACF,CAAA,CACA,IAAK,CACH,CACE,QAAA,CAAUA,qBAAAA,CAAsB,OAChC,MAAA,CAAQ,EAAA,CACR,iBAAA,CAAmB,EAAA,CACnB,WAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,eAAgB,EAAA,CAAI,eAAA,CAAiB,IAAK,aAAA,CAAe,CAAE,CACnF,CACF,CAAA,CACA,GAAA,CAAK,CACH,CACE,QAAA,CAAUA,qBAAAA,CAAsB,MAAA,CAChC,MAAA,CAAQ,GACR,iBAAA,CAAmB,EAAA,CACnB,UAAA,CAAY,GACZ,kBAAA,CAAoB,CAAE,eAAgB,EAAA,CAAI,eAAA,CAAiB,IAAK,aAAA,CAAe,CAAE,CACnF,CACF,EACA,GAAA,CAAK,CACH,CACE,QAAA,CAAUA,sBAAsB,MAAA,CAChC,MAAA,CAAQ,EAAA,CACR,iBAAA,CAAmB,GACnB,UAAA,CAAY,GACZ,kBAAA,CAAoB,CAAE,eAAgB,EAAA,CAAI,eAAA,CAAiB,GAAA,CAAK,aAAA,CAAe,CAAE,CACnF,CACF,CAAA,CACA,GAAA,CAAK,CACH,CACE,QAAA,CAAUA,qBAAAA,CAAsB,MAAA,CAChC,OAAQ,EAAA,CACR,iBAAA,CAAmB,GACnB,UAAA,CAAY,GACZ,kBAAA,CAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,gBAAiB,GAAA,CAAK,aAAA,CAAe,CAAE,CACnF,CACF,CAAA,CACA,GAAA,CAAK,CACH,CACE,SAAUA,qBAAAA,CAAsB,MAAA,CAChC,OAAQ,EAAA,CACR,iBAAA,CAAmB,GACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,eAAA,CAAiB,GAAA,CAAK,cAAe,CAAE,CACnF,CACF,CAAA,CACA,IAAK,CACH,CACE,SAAUA,qBAAAA,CAAsB,MAAA,CAChC,OAAQ,EAAA,CACR,iBAAA,CAAmB,EAAA,CACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,cAAA,CAAgB,GAAI,eAAA,CAAiB,GAAA,CAAK,aAAA,CAAe,CAAE,CACnF,CACF,CAAA,CACA,GAAA,CAAK,CACH,CACE,QAAA,CAAUA,qBAAAA,CAAsB,MAAA,CAChC,MAAA,CAAQ,GACR,iBAAA,CAAmB,EAAA,CACnB,UAAA,CAAY,GACZ,kBAAA,CAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,gBAAiB,GAAA,CAAK,aAAA,CAAe,CAAE,CACnF,CACF,EACA,GAAA,CAAK,CACH,CACE,QAAA,CAAUA,sBAAsB,OAAA,CAChC,MAAA,CAAQ,EAAA,CACR,iBAAA,CAAmB,IACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,gBAAiB,IAAA,CAAM,aAAA,CAAe,EAAG,CACrF,CACF,CAAA,CACA,GAAA,CAAK,CACH,CACE,QAAA,CAAUA,qBAAAA,CAAsB,OAAA,CAChC,OAAQ,EAAA,CACR,iBAAA,CAAmB,GAAA,CACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,gBAAiB,IAAA,CAAM,aAAA,CAAe,CAAE,CACpF,CACF,CAAA,CACA,GAAA,CAAK,CACH,CACE,SAAUA,qBAAAA,CAAsB,OAAA,CAChC,MAAA,CAAQ,EAAA,CACR,kBAAmB,GAAA,CACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,eAAA,CAAiB,IAAA,CAAM,cAAe,CAAE,CACpF,CACF,CAAA,CACA,IAAK,CACH,CACE,QAAA,CAAUA,qBAAAA,CAAsB,QAChC,MAAA,CAAQ,EAAA,CACR,kBAAmB,GAAA,CACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,cAAA,CAAgB,GAAI,eAAA,CAAiB,IAAA,CAAM,aAAA,CAAe,EAAG,CACrF,CACF,CAAA,CACA,GAAA,CAAK,CACH,CACE,QAAA,CAAUA,qBAAAA,CAAsB,QAChC,MAAA,CAAQ,EAAA,CACR,kBAAmB,GAAA,CACnB,UAAA,CAAY,EAAC,CACb,mBAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,eAAA,CAAiB,KAAM,aAAA,CAAe,EAAG,CACrF,CACF,EACA,GAAA,CAAK,CACH,CACE,QAAA,CAAUA,qBAAAA,CAAsB,QAChC,MAAA,CAAQ,EAAA,CACR,iBAAA,CAAmB,GAAA,CACnB,WAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,eAAgB,EAAA,CAAI,eAAA,CAAiB,IAAA,CAAM,aAAA,CAAe,EAAG,CACrF,CACF,EACA,GAAA,CAAK,CACH,CACE,QAAA,CAAUA,qBAAAA,CAAsB,OAAA,CAChC,MAAA,CAAQ,GACR,iBAAA,CAAmB,EAAA,CACnB,UAAA,CAAY,GACZ,kBAAA,CAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,gBAAiB,IAAA,CAAM,aAAA,CAAe,CAAE,CACpF,CACF,EACA,GAAA,CAAK,CACH,CACE,QAAA,CAAUA,sBAAsB,OAAA,CAChC,MAAA,CAAQ,EAAA,CACR,iBAAA,CAAmB,GACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,gBAAiB,IAAA,CAAM,aAAA,CAAe,CAAE,CACpF,CACF,CAAA,CACA,GAAA,CAAK,CACH,CACE,QAAA,CAAUA,qBAAAA,CAAsB,OAAA,CAChC,OAAQ,EAAA,CACR,iBAAA,CAAmB,EAAA,CACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,gBAAiB,IAAA,CAAM,aAAA,CAAe,CAAE,CACpF,CACF,CAAA,CAGA,GAAA,CAAK,CACH,CACE,SAAUA,qBAAAA,CAAsB,OAAA,CAChC,MAAA,CAAQ,GAAA,CACR,kBAAmB,GAAA,CACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,eAAA,CAAiB,IAAA,CAAM,cAAe,EAAG,CACrF,CACF,CAAA,CACA,IAAK,CACH,CACE,QAAA,CAAUA,qBAAAA,CAAsB,QAChC,MAAA,CAAQ,GAAA,CACR,kBAAmB,GAAA,CACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,cAAA,CAAgB,GAAI,eAAA,CAAiB,IAAA,CAAM,aAAA,CAAe,EAAG,CACrF,CACF,CAAA,CACA,IAAA,CAAM,CACJ,CACE,QAAA,CAAUA,qBAAAA,CAAsB,QAChC,MAAA,CAAQ,GAAA,CACR,kBAAmB,GAAA,CACnB,UAAA,CAAY,EAAC,CACb,mBAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,eAAA,CAAiB,KAAM,aAAA,CAAe,EAAG,CACrF,CACF,EACA,IAAA,CAAM,CACJ,CACE,QAAA,CAAUA,qBAAAA,CAAsB,QAChC,MAAA,CAAQ,GAAA,CACR,iBAAA,CAAmB,GAAA,CACnB,WAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,eAAgB,EAAA,CAAI,eAAA,CAAiB,IAAA,CAAM,aAAA,CAAe,EAAG,CACrF,CACF,EAGA,GAAA,CAAK,CACH,CACE,QAAA,CAAUA,qBAAAA,CAAsB,OAAA,CAChC,MAAA,CAAQ,GACR,iBAAA,CAAmB,GAAA,CACnB,UAAA,CAAY,GACZ,kBAAA,CAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,gBAAiB,IAAA,CAAM,aAAA,CAAe,EAAG,CACrF,CACF,EACA,GAAA,CAAK,CACH,CACE,QAAA,CAAUA,sBAAsB,OAAA,CAChC,MAAA,CAAQ,EAAA,CACR,iBAAA,CAAmB,IACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,gBAAiB,IAAA,CAAM,aAAA,CAAe,EAAG,CACrF,CACF,CAAA,CACA,GAAA,CAAK,CACH,CACE,QAAA,CAAUA,qBAAAA,CAAsB,OAAA,CAChC,OAAQ,EAAA,CACR,iBAAA,CAAmB,GAAA,CACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,gBAAiB,IAAA,CAAM,aAAA,CAAe,EAAG,CACrF,CACF,CAAA,CACA,GAAA,CAAK,CACH,CACE,SAAUA,qBAAAA,CAAsB,MAAA,CAChC,MAAA,CAAQ,EAAA,CACR,kBAAmB,EAAA,CACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,eAAA,CAAiB,GAAA,CAAM,cAAe,CAAE,CACpF,CACF,CAAA,CACA,IAAK,CACH,CACE,QAAA,CAAUA,qBAAAA,CAAsB,QAChC,MAAA,CAAQ,EAAA,CACR,kBAAmB,EAAA,CACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,cAAA,CAAgB,GAAI,eAAA,CAAiB,IAAA,CAAM,aAAA,CAAe,CAAE,CACpF,CACF,CAAA,CAGA,GAAA,CAAK,CACH,CACE,QAAA,CAAUA,qBAAAA,CAAsB,QAChC,MAAA,CAAQ,EAAA,CACR,kBAAmB,EAAA,CACnB,UAAA,CAAY,EAAC,CACb,mBAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,eAAA,CAAiB,KAAM,aAAA,CAAe,CAAE,CACpF,CACF,EACA,GAAA,CAAK,CACH,CACE,QAAA,CAAUA,qBAAAA,CAAsB,QAChC,MAAA,CAAQ,EAAA,CACR,iBAAA,CAAmB,GAAA,CACnB,WAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,eAAgB,EAAA,CAAI,eAAA,CAAiB,IAAA,CAAM,aAAA,CAAe,EAAG,CACrF,CACF,EACA,GAAA,CAAK,CACH,CACE,QAAA,CAAUA,qBAAAA,CAAsB,OAAA,CAChC,MAAA,CAAQ,GACR,iBAAA,CAAmB,GAAA,CACnB,UAAA,CAAY,GACZ,kBAAA,CAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,gBAAiB,IAAA,CAAM,aAAA,CAAe,EAAG,CACrF,CACF,EACA,GAAA,CAAK,CACH,CACE,QAAA,CAAUA,sBAAsB,OAAA,CAChC,MAAA,CAAQ,EAAA,CACR,iBAAA,CAAmB,IACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,gBAAiB,IAAA,CAAM,aAAA,CAAe,EAAG,CACrF,CACF,CAAA,CAGA,GAAA,CAAK,CACH,CACE,QAAA,CAAUA,qBAAAA,CAAsB,OAAA,CAChC,OAAQ,EAAA,CACR,iBAAA,CAAmB,EAAA,CACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,gBAAiB,IAAA,CAAM,aAAA,CAAe,CAAE,CACpF,CACF,CAAA,CACA,GAAA,CAAK,CACH,CACE,SAAUA,qBAAAA,CAAsB,OAAA,CAChC,MAAA,CAAQ,EAAA,CACR,kBAAmB,EAAA,CACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,eAAA,CAAiB,IAAA,CAAM,cAAe,CAAE,CACpF,CACF,CAAA,CACA,IAAK,CACH,CACE,QAAA,CAAUA,qBAAAA,CAAsB,QAChC,MAAA,CAAQ,EAAA,CACR,kBAAmB,EAAA,CACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,cAAA,CAAgB,GAAI,eAAA,CAAiB,IAAA,CAAM,aAAA,CAAe,CAAE,CACpF,CACF,CAAA,CACA,GAAA,CAAK,CACH,CACE,QAAA,CAAUA,qBAAAA,CAAsB,QAChC,MAAA,CAAQ,EAAA,CACR,kBAAmB,EAAA,CACnB,UAAA,CAAY,EAAC,CACb,mBAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,eAAA,CAAiB,KAAM,aAAA,CAAe,CAAE,CACpF,CACF,EACA,GAAA,CAAK,CACH,CACE,QAAA,CAAUA,qBAAAA,CAAsB,QAChC,MAAA,CAAQ,EAAA,CACR,iBAAA,CAAmB,EAAA,CACnB,WAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,eAAgB,EAAA,CAAI,eAAA,CAAiB,IAAA,CAAM,aAAA,CAAe,CAAE,CACpF,CACF,CAAA,CACA,GAAA,CAAK,CACH,CACE,QAAA,CAAUA,qBAAAA,CAAsB,OAAA,CAChC,OAAQ,EAAA,CACR,iBAAA,CAAmB,EAAA,CACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,cAAA,CAAgB,GAAI,eAAA,CAAiB,IAAA,CAAM,cAAe,CAAE,CACpF,CACF,CAAA,CAGA,GAAA,CAAK,CACH,CACE,SAAUA,qBAAAA,CAAsB,MAAA,CAChC,MAAA,CAAQ,EAAA,CACR,kBAAmB,EAAA,CACnB,UAAA,CAAY,EAAC,CACb,mBAAoB,CAAE,cAAA,CAAgB,GAAI,eAAA,CAAiB,GAAA,CAAM,cAAe,CAAE,CACpF,CACF,CAAA,CACA,IAAK,CACH,CACE,QAAA,CAAUA,qBAAAA,CAAsB,QAChC,MAAA,CAAQ,EAAA,CACR,iBAAA,CAAmB,EAAA,CACnB,WAAY,EAAC,CACb,mBAAoB,CAAE,cAAA,CAAgB,GAAI,eAAA,CAAiB,IAAA,CAAM,aAAA,CAAe,CAAE,CACpF,CACF,CAAA,CACA,GAAA,CAAK,CACH,CACE,QAAA,CAAUA,qBAAAA,CAAsB,OAAA,CAChC,MAAA,CAAQ,GACR,iBAAA,CAAmB,EAAA,CACnB,WAAY,EAAC,CACb,mBAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,eAAA,CAAiB,KAAM,aAAA,CAAe,CAAE,CACpF,CACF,EAGA,GAAA,CAAK,CACH,CACE,QAAA,CAAUA,sBAAsB,OAAA,CAChC,MAAA,CAAQ,GACR,iBAAA,CAAmB,EAAA,CACnB,WAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,eAAgB,EAAA,CAAI,eAAA,CAAiB,IAAA,CAAM,aAAA,CAAe,CAAE,CACpF,CACF,CAAA,CACA,GAAA,CAAK,CACH,CACE,QAAA,CAAUA,sBAAsB,OAAA,CAChC,MAAA,CAAQ,GACR,iBAAA,CAAmB,EAAA,CACnB,UAAA,CAAY,GACZ,kBAAA,CAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,gBAAiB,IAAA,CAAM,aAAA,CAAe,CAAE,CACpF,CACF,CAAA,CACA,GAAA,CAAK,CACH,CACE,QAAA,CAAUA,sBAAsB,OAAA,CAChC,MAAA,CAAQ,EAAA,CACR,iBAAA,CAAmB,GACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,eAAA,CAAiB,IAAA,CAAM,cAAe,CAAE,CACpF,CACF,CAAA,CACA,GAAA,CAAK,CACH,CACE,QAAA,CAAUA,qBAAAA,CAAsB,OAAA,CAChC,OAAQ,EAAA,CACR,iBAAA,CAAmB,EAAA,CACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,cAAA,CAAgB,GAAI,eAAA,CAAiB,IAAA,CAAM,cAAe,CAAE,CACpF,CACF,CAAA,CACA,GAAA,CAAK,CACH,CACE,SAAUA,qBAAAA,CAAsB,OAAA,CAChC,MAAA,CAAQ,EAAA,CACR,kBAAmB,EAAA,CACnB,UAAA,CAAY,EAAC,CACb,mBAAoB,CAAE,cAAA,CAAgB,GAAI,eAAA,CAAiB,IAAA,CAAM,cAAe,CAAE,CACpF,CACF,CAAA,CACA,IAAK,CACH,CACE,QAAA,CAAUA,qBAAAA,CAAsB,QAChC,MAAA,CAAQ,EAAA,CACR,iBAAA,CAAmB,EAAA,CACnB,WAAY,EAAC,CACb,mBAAoB,CAAE,cAAA,CAAgB,GAAI,eAAA,CAAiB,IAAA,CAAM,aAAA,CAAe,CAAE,CACpF,CACF,CAAA,CACA,GAAA,CAAK,CACH,CACE,QAAA,CAAUA,qBAAAA,CAAsB,OAAA,CAChC,MAAA,CAAQ,GACR,iBAAA,CAAmB,EAAA,CACnB,WAAY,EAAC,CACb,mBAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,eAAA,CAAiB,KAAM,aAAA,CAAe,CAAE,CACpF,CACF,EACA,GAAA,CAAK,CACH,CACE,QAAA,CAAUA,sBAAsB,OAAA,CAChC,MAAA,CAAQ,GACR,iBAAA,CAAmB,EAAA,CACnB,WAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,eAAgB,EAAA,CAAI,eAAA,CAAiB,IAAA,CAAM,aAAA,CAAe,CAAE,CACpF,CACF,CACF,EC31BO,IAAM0C,EAAAA,CAAsC,CACjD,CACE,MAAA,CAAQ,eAAA,CACR,IAAA,CAAM,wBACN,WAAA,CAAa,oDAAA,CACb,UAAA,CAAY,CACV,WACE,qGAAA,CACF,eAAA,CAAiB,CAAC,eAAe,CACnC,CAAA,CACA,iBAAA,CAAmB,CACjB,SAAA,CAAW,CAAC1C,sBAAsB,OAAO,CAAA,CACzC,QAAA,CAAU,CAACA,sBAAsB,MAAM,CAAA,CACvC,iBAAA,CAAmB,CACjB,CAACA,qBAAAA,CAAsB,MAAM,EAAG,GAAA,CAChC,CAACA,qBAAAA,CAAsB,MAAM,EAAG,CAAA,CAChC,CAACA,sBAAsB,WAAW,EAAG,CAAA,CACrC,CAACA,sBAAsB,KAAK,EAAG,CAAA,CAC/B,CAACA,sBAAsB,OAAO,EAAG,EAAA,CACjC,CAACA,sBAAsB,gBAAgB,EAAG,EAC1C,CAACA,qBAAAA,CAAsB,gBAAgB,EAAG,CAAA,CAC1C,CAACA,qBAAAA,CAAsB,GAAG,EAAG,CAAA,CAC7B,CAACA,qBAAAA,CAAsB,MAAM,EAAG,CAAA,CAChC,CAACA,qBAAAA,CAAsB,IAAI,EAAG,CAAA,CAC9B,CAACA,qBAAAA,CAAsB,KAAK,EAAG,CAAA,CAC/B,CAACA,qBAAAA,CAAsB,MAAM,EAAG,CAAA,CAChC,CAACA,qBAAAA,CAAsB,MAAM,EAAG,CAAA,CAChC,CAACA,qBAAAA,CAAsB,SAAS,EAAG,CAAA,CACnC,CAACA,sBAAsB,YAAY,EAAG,CACxC,CACF,CAAA,CACA,QAAA,CAAU,GAAA,CACV,QAAS,IACX,CACF,EC3BO,IAAM2C,EAAAA,CAA0C,CACrD,CAEE,QAAA,CAAU3C,sBAAsB,MAAA,CAChC,MAAA,CAAQ,IACR,iBAAA,CAAmB,EAAA,CACnB,UAAA,CAAY,GACZ,SAAA,CAAW,CAAE,MAAA,CAAQ,CAAA,CAAG,SAAUZ,CAAAA,CAAe,GAAI,CAAA,CACrD,SAAA,CAAW,CAAE,MAAA,CAAQ,GAAA,CAAO,SAAUA,CAAAA,CAAe,GAAI,EACzD,kBAAA,CAAoB,CAClB,cAAA,CAAgB,EAAA,CAChB,gBAAiB,GAAA,CACjB,aAAA,CAAe,CACjB,CACF,EACA,CAEE,QAAA,CAAUY,qBAAAA,CAAsB,OAAA,CAChC,OAAQ,EAAA,CACR,iBAAA,CAAmB,GACnB,UAAA,CAAY,CACV,CACE,IAAA,CAAM,UAAA,CACN,QAAA,CAAU,IAAA,CACV,MAAOG,CAAAA,CAAqB,KAAA,CAAM,CAAA,CAAGY,CAAAA,CAAQ,KAAK,CAAA,CAClD,QAAA,CAAU,KACZ,CACF,EACA,SAAA,CAAW,CAAE,OAAQ,CAAA,CAAG,QAAA,CAAU3B,EAAe,GAAI,CAAA,CACrD,SAAA,CAAW,CAAE,OAAQ,GAAA,CAAO,QAAA,CAAUA,CAAAA,CAAe,GAAI,EACzD,kBAAA,CAAoB,CAClB,cAAA,CAAgB,EAAA,CAChB,gBAAiB,IAAA,CACjB,aAAA,CAAe,CACjB,CACF,CACF,EC3CO,IAAMwD,EAAAA,CAAwE,CAEnF,CAAC3C,cAAAA,CAAe,UAAU,EAAG,CAC3B,CACE,QAAA,CAAUD,qBAAAA,CAAsB,OAChC,MAAA,CAAQ,GAAA,CACR,kBAAmB,EAAA,CACnB,UAAA,CAAY,EAAC,CACb,mBAAoB,CAClB,cAAA,CAAgB,EAAA,CAChB,eAAA,CAAiB,IACjB,aAAA,CAAe,CACjB,CACF,CAAA,CACA,CACE,QAAA,CAAUA,qBAAAA,CAAsB,MAChC,MAAA,CAAQ,EAAA,CACR,kBAAmB,EAAA,CACnB,UAAA,CAAY,EAAC,CACb,mBAAoB,CAClB,cAAA,CAAgB,EAAA,CAChB,eAAA,CAAiB,IACjB,aAAA,CAAe,CACjB,CACF,CAAA,CACA,CACE,QAAA,CAAUA,qBAAAA,CAAsB,QAChC,MAAA,CAAQ,EAAA,CACR,kBAAmB,EAAA,CACnB,UAAA,CAAY,EAAC,CACb,mBAAoB,CAClB,cAAA,CAAgB,EAAA,CAChB,eAAA,CAAiB,KACjB,aAAA,CAAe,CACjB,CACF,CACF,EAEA,CAACC,cAAAA,CAAe,SAAS,EAAG,CAC1B,CACE,QAAA,CAAUD,qBAAAA,CAAsB,MAAA,CAChC,MAAA,CAAQ,IACR,iBAAA,CAAmB,EAAA,CACnB,UAAA,CAAY,GACZ,kBAAA,CAAoB,CAClB,cAAA,CAAgB,EAAA,CAChB,gBAAiB,GAAA,CACjB,aAAA,CAAe,CACjB,CACF,CAAA,CACA,CACE,QAAA,CAAUA,qBAAAA,CAAsB,WAAA,CAChC,MAAA,CAAQ,GACR,iBAAA,CAAmB,EAAA,CACnB,UAAA,CAAY,GACZ,kBAAA,CAAoB,CAClB,cAAA,CAAgB,EAAA,CAChB,gBAAiB,GAAA,CACjB,aAAA,CAAe,CACjB,CACF,CACF,EAEA,CAACC,cAAAA,CAAe,YAAY,EAAG,CAC7B,CACE,QAAA,CAAUD,qBAAAA,CAAsB,KAAA,CAChC,OAAQ,GAAA,CACR,iBAAA,CAAmB,EAAA,CACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAClB,cAAA,CAAgB,EAAA,CAChB,gBAAiB,GAAA,CACjB,aAAA,CAAe,CACjB,CACF,EACA,CACE,QAAA,CAAUA,qBAAAA,CAAsB,MAAA,CAChC,OAAQ,EAAA,CACR,iBAAA,CAAmB,EAAA,CACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAClB,cAAA,CAAgB,GAChB,eAAA,CAAiB,GAAA,CACjB,aAAA,CAAe,CACjB,CACF,CACF,CAAA,CAEA,CAACC,cAAAA,CAAe,aAAa,EAAG,CAC9B,CACE,QAAA,CAAUD,sBAAsB,MAAA,CAChC,MAAA,CAAQ,IACR,iBAAA,CAAmB,GAAA,CACnB,WAAY,EAAC,CACb,kBAAA,CAAoB,CAClB,eAAgB,EAAA,CAChB,eAAA,CAAiB,GAAA,CACjB,aAAA,CAAe,CACjB,CACF,CACF,CAAA,CAGA,CAACC,eAAe,aAAa,EAAG,CAC9B,CACE,QAAA,CAAUD,sBAAsB,OAAA,CAChC,MAAA,CAAQ,GAAA,CACR,iBAAA,CAAmB,GACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAClB,cAAA,CAAgB,EAAA,CAChB,eAAA,CAAiB,IAAA,CACjB,cAAe,EACjB,CACF,EACA,CACE,QAAA,CAAUA,sBAAsB,gBAAA,CAChC,MAAA,CAAQ,GAAA,CACR,iBAAA,CAAmB,GACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAClB,cAAA,CAAgB,EAAA,CAChB,eAAA,CAAiB,IAAA,CACjB,cAAe,CACjB,CACF,CACF,CAAA,CAEA,CAACC,eAAe,cAAc,EAAG,CAC/B,CACE,SAAUD,qBAAAA,CAAsB,OAAA,CAChC,MAAA,CAAQ,GAAA,CACR,kBAAmB,EAAA,CACnB,UAAA,CAAY,EAAC,CACb,mBAAoB,CAClB,cAAA,CAAgB,GAChB,eAAA,CAAiB,IAAA,CACjB,cAAe,EACjB,CACF,CAAA,CACA,CACE,SAAUA,qBAAAA,CAAsB,gBAAA,CAChC,MAAA,CAAQ,GAAA,CACR,kBAAmB,EAAA,CACnB,UAAA,CAAY,EAAC,CACb,mBAAoB,CAClB,cAAA,CAAgB,GAChB,eAAA,CAAiB,IAAA,CACjB,cAAe,CACjB,CACF,CACF,CAAA,CAEA,CAACC,cAAAA,CAAe,aAAa,EAAG,CAC9B,CACE,QAAA,CAAUD,qBAAAA,CAAsB,OAAA,CAChC,MAAA,CAAQ,IACR,iBAAA,CAAmB,GAAA,CACnB,WAAY,EAAC,CACb,mBAAoB,CAClB,cAAA,CAAgB,EAAA,CAChB,eAAA,CAAiB,KACjB,aAAA,CAAe,EACjB,CACF,CACF,EAEA,CAACC,cAAAA,CAAe,cAAc,EAAG,CAC/B,CACE,QAAA,CAAUD,sBAAsB,OAAA,CAChC,MAAA,CAAQ,IACR,iBAAA,CAAmB,GAAA,CACnB,UAAA,CAAY,GACZ,kBAAA,CAAoB,CAClB,cAAA,CAAgB,EAAA,CAChB,gBAAiB,IAAA,CACjB,aAAA,CAAe,EACjB,CACF,CACF,CAAA,CAEA,CAACC,eAAe,UAAU,EAAG,CAC3B,CACE,QAAA,CAAUD,qBAAAA,CAAsB,OAAA,CAChC,OAAQ,GAAA,CACR,iBAAA,CAAmB,EAAA,CACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAClB,cAAA,CAAgB,GAChB,eAAA,CAAiB,IAAA,CACjB,cAAe,CACjB,CACF,EACA,CACE,QAAA,CAAUA,qBAAAA,CAAsB,gBAAA,CAChC,OAAQ,EAAA,CACR,iBAAA,CAAmB,EAAA,CACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAClB,cAAA,CAAgB,GAChB,eAAA,CAAiB,IAAA,CACjB,cAAe,CACjB,CACF,CACF,CAAA,CAEA,CAACC,cAAAA,CAAe,UAAU,EAAG,CAC3B,CACE,QAAA,CAAUD,qBAAAA,CAAsB,QAChC,MAAA,CAAQ,GAAA,CACR,iBAAA,CAAmB,GAAA,CACnB,WAAY,EAAC,CACb,mBAAoB,CAClB,cAAA,CAAgB,GAChB,eAAA,CAAiB,IAAA,CACjB,aAAA,CAAe,CACjB,CACF,CACF,CAAA,CAEA,CAACC,cAAAA,CAAe,iBAAiB,EAAG,CAClC,CACE,QAAA,CAAUD,sBAAsB,gBAAA,CAChC,MAAA,CAAQ,IACR,iBAAA,CAAmB,GAAA,CACnB,WAAY,EAAC,CACb,kBAAA,CAAoB,CAClB,eAAgB,EAAA,CAChB,eAAA,CAAiB,IAAA,CACjB,aAAA,CAAe,EACjB,CACF,CACF,CAAA,CAGA,CAACC,eAAe,UAAU,EAAG,CAC3B,CACE,QAAA,CAAUD,sBAAsB,GAAA,CAChC,MAAA,CAAQ,GAAA,CACR,iBAAA,CAAmB,IACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAClB,cAAA,CAAgB,EAAA,CAChB,eAAA,CAAiB,GAAA,CACjB,cAAe,CACjB,CACF,CACF,CAAA,CAEA,CAACC,eAAe,cAAc,EAAG,CAC/B,CACE,SAAUD,qBAAAA,CAAsB,MAAA,CAChC,MAAA,CAAQ,GAAA,CACR,kBAAmB,GAAA,CACnB,UAAA,CAAY,EAAC,CACb,mBAAoB,CAClB,cAAA,CAAgB,GAChB,eAAA,CAAiB,GAAA,CACjB,cAAe,CACjB,CACF,CACF,CAAA,CAEA,CAACC,cAAAA,CAAe,eAAe,EAAG,CAChC,CACE,QAAA,CAAUD,qBAAAA,CAAsB,IAAA,CAChC,MAAA,CAAQ,IACR,iBAAA,CAAmB,GAAA,CACnB,WAAY,EAAC,CACb,mBAAoB,CAClB,cAAA,CAAgB,EAAA,CAChB,eAAA,CAAiB,IACjB,aAAA,CAAe,CACjB,CACF,CACF,EAEA,CAACC,cAAAA,CAAe,SAAS,EAAG,CAC1B,CACE,QAAA,CAAUD,sBAAsB,KAAA,CAChC,MAAA,CAAQ,IACR,iBAAA,CAAmB,GAAA,CACnB,UAAA,CAAY,GACZ,kBAAA,CAAoB,CAClB,cAAA,CAAgB,EAAA,CAChB,gBAAiB,GAAA,CACjB,aAAA,CAAe,CACjB,CACF,CACF,CAAA,CAEA,CAACC,eAAe,aAAa,EAAG,CAC9B,CACE,QAAA,CAAUD,qBAAAA,CAAsB,MAAA,CAChC,OAAQ,GAAA,CACR,iBAAA,CAAmB,GAAA,CACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAClB,cAAA,CAAgB,GAChB,eAAA,CAAiB,GAAA,CACjB,cAAe,CACjB,CACF,CACF,CAAA,CAEA,CAACC,cAAAA,CAAe,aAAa,EAAG,CAC9B,CACE,QAAA,CAAUD,qBAAAA,CAAsB,OAChC,MAAA,CAAQ,GAAA,CACR,iBAAA,CAAmB,GAAA,CACnB,WAAY,EAAC,CACb,mBAAoB,CAClB,cAAA,CAAgB,GAChB,eAAA,CAAiB,GAAA,CACjB,aAAA,CAAe,CACjB,CACF,CACF,CAAA,CAEA,CAACC,cAAAA,CAAe,gBAAgB,EAAG,CACjC,CACE,QAAA,CAAUD,sBAAsB,SAAA,CAChC,MAAA,CAAQ,IACR,iBAAA,CAAmB,GAAA,CACnB,WAAY,EAAC,CACb,kBAAA,CAAoB,CAClB,eAAgB,EAAA,CAChB,eAAA,CAAiB,GAAA,CACjB,aAAA,CAAe,CACjB,CACF,CACF,CAAA,CAGA,CAACC,eAAe,QAAQ,EAAG,CACzB,CACE,QAAA,CAAUD,sBAAsB,MAAA,CAChC,MAAA,CAAQ,GAAA,CACR,iBAAA,CAAmB,GACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAClB,cAAA,CAAgB,EAAA,CAChB,eAAA,CAAiB,GAAA,CACjB,cAAe,CACjB,CACF,EACA,CACE,QAAA,CAAUA,sBAAsB,KAAA,CAChC,MAAA,CAAQ,GAAA,CACR,iBAAA,CAAmB,GACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAClB,cAAA,CAAgB,EAAA,CAChB,eAAA,CAAiB,GAAA,CACjB,cAAe,CACjB,CACF,CACF,CAAA,CAEA,CAACC,eAAe,SAAS,EAAG,CAC1B,CACE,SAAUD,qBAAAA,CAAsB,MAAA,CAChC,MAAA,CAAQ,GAAA,CACR,kBAAmB,EAAA,CACnB,UAAA,CAAY,EAAC,CACb,mBAAoB,CAClB,cAAA,CAAgB,GAChB,eAAA,CAAiB,GAAA,CACjB,cAAe,CACjB,CACF,CAAA,CACA,CACE,SAAUA,qBAAAA,CAAsB,KAAA,CAChC,MAAA,CAAQ,GAAA,CACR,kBAAmB,EAAA,CACnB,UAAA,CAAY,EAAC,CACb,mBAAoB,CAClB,cAAA,CAAgB,GAChB,eAAA,CAAiB,GAAA,CACjB,cAAe,CACjB,CACF,CACF,CAAA,CAEA,CAACC,cAAAA,CAAe,UAAU,EAAG,CAC3B,CACE,QAAA,CAAUD,qBAAAA,CAAsB,MAAA,CAChC,MAAA,CAAQ,IACR,iBAAA,CAAmB,GAAA,CACnB,WAAY,EAAC,CACb,mBAAoB,CAClB,cAAA,CAAgB,EAAA,CAChB,eAAA,CAAiB,IACjB,aAAA,CAAe,CACjB,CACF,CACF,CACF,EC7YO,IAAM6C,EAAAA,CAAgE,CAE3E,EAAA,CAAI,CACF,CACE,QAAA,CAAU7C,qBAAAA,CAAsB,MAAA,CAChC,MAAA,CAAQ,IACR,iBAAA,CAAmB,EAAA,CACnB,UAAA,CAAY,GACZ,kBAAA,CAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,gBAAiB,GAAA,CAAK,aAAA,CAAe,CAAE,CACnF,CAAA,CACA,CACE,QAAA,CAAUA,qBAAAA,CAAsB,OAAA,CAChC,MAAA,CAAQ,GACR,iBAAA,CAAmB,EAAA,CACnB,UAAA,CAAY,GACZ,kBAAA,CAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,gBAAiB,GAAA,CAAK,aAAA,CAAe,CAAE,CACnF,CACF,EAGA,EAAA,CAAI,CACF,CACE,QAAA,CAAUA,sBAAsB,MAAA,CAChC,MAAA,CAAQ,GAAA,CACR,iBAAA,CAAmB,GACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,eAAA,CAAiB,GAAA,CAAK,cAAe,CAAE,CACnF,CAAA,CACA,CACE,SAAUA,qBAAAA,CAAsB,OAAA,CAChC,MAAA,CAAQ,EAAA,CACR,kBAAmB,EAAA,CACnB,UAAA,CAAY,EAAC,CACb,mBAAoB,CAAE,cAAA,CAAgB,GAAI,eAAA,CAAiB,GAAA,CAAK,cAAe,CAAE,CACnF,CACF,CAAA,CAGA,GAAI,CACF,CACE,QAAA,CAAUA,qBAAAA,CAAsB,IAChC,MAAA,CAAQ,GAAA,CACR,iBAAA,CAAmB,EAAA,CACnB,WAAY,EAAC,CACb,mBAAoB,CAAE,cAAA,CAAgB,GAAI,eAAA,CAAiB,GAAA,CAAK,aAAA,CAAe,CAAE,CACnF,CAAA,CACA,CACE,QAAA,CAAUA,qBAAAA,CAAsB,OAChC,MAAA,CAAQ,EAAA,CACR,iBAAA,CAAmB,EAAA,CACnB,WAAY,EAAC,CACb,mBAAoB,CAAE,cAAA,CAAgB,GAAI,eAAA,CAAiB,GAAA,CAAK,aAAA,CAAe,CAAE,CACnF,CAAA,CACA,CACE,QAAA,CAAUA,qBAAAA,CAAsB,QAChC,MAAA,CAAQ,EAAA,CACR,iBAAA,CAAmB,EAAA,CACnB,WAAY,EAAC,CACb,mBAAoB,CAAE,cAAA,CAAgB,GAAI,eAAA,CAAiB,GAAA,CAAK,aAAA,CAAe,CAAE,CACnF,CACF,CAAA,CAGA,EAAA,CAAI,CACF,CACE,QAAA,CAAUA,qBAAAA,CAAsB,MAAA,CAChC,MAAA,CAAQ,IACR,iBAAA,CAAmB,EAAA,CACnB,WAAY,EAAC,CACb,mBAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,eAAA,CAAiB,IAAK,aAAA,CAAe,CAAE,CACnF,CAAA,CACA,CACE,QAAA,CAAUA,qBAAAA,CAAsB,SAAA,CAChC,MAAA,CAAQ,GACR,iBAAA,CAAmB,EAAA,CACnB,WAAY,EAAC,CACb,mBAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,eAAA,CAAiB,IAAK,aAAA,CAAe,CAAE,CACnF,CACF,EAGA,EAAA,CAAI,CACF,CACE,QAAA,CAAUA,sBAAsB,MAAA,CAChC,MAAA,CAAQ,IACR,iBAAA,CAAmB,EAAA,CACnB,WAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,eAAgB,EAAA,CAAI,eAAA,CAAiB,GAAA,CAAK,aAAA,CAAe,CAAE,CACnF,CAAA,CACA,CACE,QAAA,CAAUA,sBAAsB,OAAA,CAChC,MAAA,CAAQ,GACR,iBAAA,CAAmB,EAAA,CACnB,WAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,eAAgB,EAAA,CAAI,eAAA,CAAiB,GAAA,CAAK,aAAA,CAAe,CAAE,CACnF,CACF,CAAA,CAGA,EAAA,CAAI,CACF,CACE,QAAA,CAAUA,sBAAsB,MAAA,CAChC,MAAA,CAAQ,IACR,iBAAA,CAAmB,EAAA,CACnB,UAAA,CAAY,GACZ,kBAAA,CAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,gBAAiB,GAAA,CAAK,aAAA,CAAe,CAAE,CACnF,EACA,CACE,QAAA,CAAUA,sBAAsB,OAAA,CAChC,MAAA,CAAQ,GACR,iBAAA,CAAmB,EAAA,CACnB,UAAA,CAAY,GACZ,kBAAA,CAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,gBAAiB,GAAA,CAAK,aAAA,CAAe,CAAE,CACnF,CACF,CAAA,CAGA,EAAA,CAAI,CACF,CACE,QAAA,CAAUA,sBAAsB,MAAA,CAChC,MAAA,CAAQ,GAAA,CACR,iBAAA,CAAmB,GACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,eAAA,CAAiB,GAAA,CAAK,cAAe,CAAE,CACnF,EACA,CACE,QAAA,CAAUA,sBAAsB,OAAA,CAChC,MAAA,CAAQ,EAAA,CACR,iBAAA,CAAmB,GACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,eAAA,CAAiB,GAAA,CAAK,cAAe,CAAE,CACnF,CACF,CAAA,CAGA,EAAA,CAAI,CACF,CACE,QAAA,CAAUA,qBAAAA,CAAsB,MAAA,CAChC,OAAQ,GAAA,CACR,iBAAA,CAAmB,EAAA,CACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,cAAA,CAAgB,GAAI,eAAA,CAAiB,GAAA,CAAK,cAAe,CAAE,CACnF,EACA,CACE,QAAA,CAAUA,qBAAAA,CAAsB,OAAA,CAChC,OAAQ,EAAA,CACR,iBAAA,CAAmB,EAAA,CACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,cAAA,CAAgB,GAAI,eAAA,CAAiB,GAAA,CAAK,cAAe,CAAE,CACnF,CACF,CAAA,CAGA,EAAA,CAAI,CACF,CACE,SAAUA,qBAAAA,CAAsB,MAAA,CAChC,MAAA,CAAQ,GAAA,CACR,kBAAmB,EAAA,CACnB,UAAA,CAAY,EAAC,CACb,mBAAoB,CAAE,cAAA,CAAgB,GAAI,eAAA,CAAiB,GAAA,CAAK,cAAe,CAAE,CACnF,CAAA,CACA,CACE,SAAUA,qBAAAA,CAAsB,OAAA,CAChC,MAAA,CAAQ,EAAA,CACR,kBAAmB,EAAA,CACnB,UAAA,CAAY,EAAC,CACb,mBAAoB,CAAE,cAAA,CAAgB,GAAI,eAAA,CAAiB,GAAA,CAAK,cAAe,CAAE,CACnF,CACF,CAAA,CAGA,GAAI,CACF,CACE,QAAA,CAAUA,qBAAAA,CAAsB,OAChC,MAAA,CAAQ,GAAA,CACR,iBAAA,CAAmB,EAAA,CACnB,WAAY,EAAC,CACb,mBAAoB,CAAE,cAAA,CAAgB,GAAI,eAAA,CAAiB,GAAA,CAAK,aAAA,CAAe,CAAE,CACnF,CAAA,CACA,CACE,QAAA,CAAUA,qBAAAA,CAAsB,QAChC,MAAA,CAAQ,EAAA,CACR,iBAAA,CAAmB,EAAA,CACnB,WAAY,EAAC,CACb,mBAAoB,CAAE,cAAA,CAAgB,GAAI,eAAA,CAAiB,GAAA,CAAK,aAAA,CAAe,CAAE,CACnF,CACF,CACF,EC1LO,IAAM8C,EAAAA,CAAwC,CACnD,CACE,IAAA,CAAM,gCACN,cAAA,CAAgB,CACd,WAAYnD,CAAAA,CACZ,UAAA,CAAYG,CAAAA,CACZ,SAAA,CAAWJ,CACb,CAAA,CACA,mBAAA,CAAqB,CACnB,CACE,SAAUM,qBAAAA,CAAsB,OAAA,CAChC,MAAA,CAAQ,GAAA,CACR,kBAAmB,EAAA,CACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,eAAA,CAAiB,IAAA,CAAM,cAAe,EAAG,CACrF,CACF,CAAA,CACA,OAAQ,iEACV,CACF,ECpBO,IAAM+C,GAA6D,CACxE,CAACC,SAAAA,CAAU,GAAG,EAAG,CACf,CACE,QAAA,CAAUhD,qBAAAA,CAAsB,QAChC,MAAA,CAAQ,EAAA,CACR,iBAAA,CAAmB,EAAA,CACnB,WAAY,EAAC,CACb,mBAAoB,CAAE,cAAA,CAAgB,GAAI,eAAA,CAAiB,IAAA,CAAM,aAAA,CAAe,CAAE,CACpF,CACF,CAAA,CACA,CAACgD,SAAAA,CAAU,OAAO,EAAG,CACnB,CACE,QAAA,CAAUhD,sBAAsB,MAAA,CAChC,MAAA,CAAQ,IACR,iBAAA,CAAmB,EAAA,CACnB,WAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,eAAgB,EAAA,CAAI,eAAA,CAAiB,GAAA,CAAK,aAAA,CAAe,CAAE,CACnF,CACF,CAAA,CACA,CAACgD,UAAU,IAAI,EAAG,CAChB,CACE,QAAA,CAAUhD,sBAAsB,MAAA,CAChC,MAAA,CAAQ,GAAA,CACR,iBAAA,CAAmB,IACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,eAAA,CAAiB,GAAA,CAAK,cAAe,CAAE,CACnF,CACF,CAAA,CACA,CAACgD,UAAU,KAAK,EAAG,CACjB,CACE,SAAUhD,qBAAAA,CAAsB,OAAA,CAChC,MAAA,CAAQ,EAAA,CACR,kBAAmB,EAAA,CACnB,UAAA,CAAY,EAAC,CACb,mBAAoB,CAAE,cAAA,CAAgB,GAAI,eAAA,CAAiB,IAAA,CAAM,cAAe,CAAE,CACpF,CACF,CAAA,CACA,CAACgD,SAAAA,CAAU,KAAK,EAAG,CACjB,CACE,QAAA,CAAUhD,qBAAAA,CAAsB,OAAA,CAChC,MAAA,CAAQ,GACR,iBAAA,CAAmB,EAAA,CACnB,WAAY,EAAC,CACb,mBAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,eAAA,CAAiB,KAAM,aAAA,CAAe,CAAE,CACpF,CACF,EACA,CAACgD,SAAAA,CAAU,KAAK,EAAG,CACjB,CACE,QAAA,CAAUhD,sBAAsB,MAAA,CAChC,MAAA,CAAQ,IACR,iBAAA,CAAmB,GAAA,CACnB,UAAA,CAAY,GACZ,kBAAA,CAAoB,CAAE,cAAA,CAAgB,EAAA,CAAI,gBAAiB,GAAA,CAAK,aAAA,CAAe,CAAE,CACnF,CACF,CAAA,CACA,CAACgD,UAAU,MAAM,EAAG,CAClB,CACE,QAAA,CAAUhD,qBAAAA,CAAsB,MAAA,CAChC,OAAQ,GAAA,CACR,iBAAA,CAAmB,GAAA,CACnB,UAAA,CAAY,EAAC,CACb,kBAAA,CAAoB,CAAE,cAAA,CAAgB,GAAI,eAAA,CAAiB,GAAA,CAAK,cAAe,CAAE,CACnF,CACF,CACF","file":"index.mjs","sourcesContent":["import { ERROR_SEVERITY } from '@plyaz/types';\n\nexport const DEFAULT_HMAC_ALGORITHM = 'sha256';\nexport const DEFAULT_ENVIRONMENT = 'unknown';\n\nexport const THRESHOLDS = {\n RETRYABLE_ERROR_RATIO: 0.5,\n USER_FACING_ERROR_RATIO: 0.3,\n};\n\nexport const SENSITIVE_KEYS = ['token', 'secret', 'signature'];\n\nexport const RISK_SCORE = {\n MIN_SCORE: 100,\n} as const;\n\n// Log levels\nexport const LOG_LEVELS = {\n CRITICAL: 'critical',\n ERROR: 'error',\n WARN: 'warn',\n} as const;\n\n// Webhook redacted placeholders\nexport const REDACTED = {\n RAW_BODY: '[REDACTED_RAW_BODY]',\n SENSITIVE: '[REDACTED]',\n};\n\nexport const PAYMENT_ERROR_MESSAGES = {\n GENERIC_SYSTEM_ERROR: 'An unexpected error occurred while processing payment.',\n USER_FRIENDLY_SYSTEM_ERROR: 'A payment system error occurred. Please try again later.',\n USER_FRIENDLY_ALT: 'Payment error. Please try again.',\n SYSTEM: 'An internal payment error occurred. Our team has been notified.',\n VALIDATION: 'Some payment information is invalid. Please review your details.',\n AUTHENTICATION: 'Your session has expired. Please log in again.',\n AUTHORIZATION: 'You are not authorized to perform this payment action.',\n PROVIDER: 'There was an issue communicating with the payment provider.',\n NETWORK: 'Network error. Please try again later.',\n FRAUD: 'Suspicious activity detected. Please contact support.',\n REFUND: 'Refund could not be processed. Please try again later.',\n WEBHOOK: 'Payment notification failed. We are investigating.',\n PROCESSING: 'Payment is currently being processed. Please wait a moment.',\n COMPLIANCE: 'This transaction violates compliance rules. Please contact support.',\n LIMITS: 'The payment exceeds your transaction limit.',\n CONFIGURATION: 'Payment configuration error. Please contact your administrator.',\n DEFAULT: 'An unexpected error occurred while processing your payment.',\n INVALID_VALUE: 'Invalid value provided',\n PROVIDER_GENERIC: 'Provider error occurred',\n REFUND_NOT_ALLOWED: 'Refund not allowed',\n REFUND_AUTHORIZATION: 'Refund authorization failed',\n REFUND_PROCESSING: 'Refund processing failed',\n STRIPE_GENERIC: 'An unexpected error occurred while communicating with Stripe',\n};\n\nexport const PAYMENT_ALERT_SEVERITY: Record<\n (typeof ERROR_SEVERITY)[keyof typeof ERROR_SEVERITY],\n boolean\n> = {\n [ERROR_SEVERITY.Low]: true,\n [ERROR_SEVERITY.Medium]: false,\n [ERROR_SEVERITY.High]: true,\n [ERROR_SEVERITY.Critical]: true,\n};\n\nexport const PROCESSING_ERROR_MESSAGES = {\n GENERIC: 'There was an error processing your payment. Please try again.',\n API_RESPONSE_GENERIC: 'A processing error occurred.',\n};\n\nexport const WEBHOOK_CONSTANTS = {\n DEFAULT_MESSAGE: 'An error occurred while processing the webhook.',\n DEFAULT_USER_MESSAGE: 'An error occurred while handling the webhook.',\n};\n\nexport const RECOVERY_STEPS = {\n RETRY: 'Retry transaction after delay.',\n NOTIFY_USER: 'Notify user and suggest contacting support.',\n LOG_ONLY: 'Log and continue monitoring.',\n};\n\nexport const REFUND_ERROR_MESSAGES = {\n NOT_ALLOWED: 'Refund not allowed',\n AUTHORIZATION: 'Refund authorization failed',\n PROCESSING: 'Refund processing failed',\n DEFAULT_API_MESSAGE: 'An error occurred during the refund process.',\n DEFAULT_USER_MESSAGE: 'Refund could not be processed. Please try again or contact support.',\n};\n\nexport const DEFAULT_REFUND_LEVELS = {\n REQUIRED: 'manager',\n CURRENT: 'user',\n};\n\nexport const FACTORY_MESSAGES = {\n PROVIDER_ERROR_PREFIX: 'Provider {provider} error',\n STRIPE_GENERIC: 'An unexpected error occurred while communicating with Stripe.',\n WEBHOOK_SANITIZE_FAIL: 'Failed to sanitize webhook payload',\n UNKNOWN_REFUND_TYPE: 'Unknown refund error type: {type}',\n REDACTION_FAIL: 'Failed to sanitize object.',\n};\n\nexport const PAYLOAD_KEYS = {\n PROVIDER: 'provider',\n EVENT: 'event',\n};\n\nexport const STRIPE_ERROR_TYPES = {\n API_CONNECTION: 'api_connection_error',\n RATE_LIMIT: 'rate_limit_error',\n INVALID_REQUEST: 'invalid_request_error',\n CARD_ERROR: 'card_error',\n AUTHENTICATION: 'authentication_error',\n CARD_DECLINED: 'card_declined',\n} as const;\n\nexport const PROVIDER_ERROR_MESSAGES = {\n DEFAULT_API_MESSAGE: 'An error occurred with the payment provider.',\n DEFAULT_USER_MESSAGE: 'A payment provider error occurred. Please try again later.',\n};\n\nexport const SECURITY_ERROR_MESSAGES = {\n DEFAULT_API_MESSAGE: 'A security error occurred while processing the payment.',\n DEFAULT_USER_MESSAGE: 'A security issue was detected with the payment. Please contact support.',\n\n FRAUD_DETECTED: {\n CODE: 'FRAUD_DETECTED',\n DEFAULT_COMPONENT: 'fraud-detector',\n USER_MESSAGE: 'This transaction appears to be suspicious and has been blocked for your safety.',\n RISK_THRESHOLDS: {\n HIGH: 70,\n CRITICAL: 90,\n },\n },\n};\n","/**\n * Event System Constants\n * Centralized constants for event emitter, handlers, and system-level configurations.\n */\n\n// Numeric Constants\nexport const DEFAULT_PAYEMNT_PRIORITY = 1;\nexport const DEFAULT_URGENT = 0;\nexport const DEFAULT_MAX_LISTENERS = 10;\nexport const DEFAULT_HANDLER_TIMEOUT_MS = 10000;\nexport const DEFAULT_EVENT_COUNT = 0;\n\n// Success Thresholds\nexport const DEFAULT_SUCCESS_THRESHOLD = 1.0; // 100% handlers succeeded\nexport const DEFAULT_PARTIAL_SUCCESS_THRESHOLD = 0.9; // 90% handlers succeeded\n\n// Default Values\nexport const EVENT_DEFAULTS = {\n PRIORITY: DEFAULT_PAYEMNT_PRIORITY,\n URGENT: DEFAULT_URGENT,\n MAX_LISTENERS: DEFAULT_MAX_LISTENERS,\n HANDLER_TIMEOUT_MS: DEFAULT_HANDLER_TIMEOUT_MS,\n SUCCESS_THRESHOLD: DEFAULT_SUCCESS_THRESHOLD,\n PARTIAL_SUCCESS_THRESHOLD: DEFAULT_PARTIAL_SUCCESS_THRESHOLD,\n EVENT_COUNT: DEFAULT_EVENT_COUNT,\n};\n\n// Component Names\nexport const EVENT_COMPONENT = {\n EMITTER: 'event-emitter',\n PAYMENT_GATEWAY: 'payment-gateway',\n SUBSCRIPTION_MANAGER: 'subscription-manager',\n PROVIDER_ADAPTER: 'provider-adapter',\n} as const;\n\n// Error Codes\nexport const EVENT_ERROR_CODE = {\n HANDLER_FAILED: 'HANDLER_FAILED',\n HANDLER_CRASHED: 'HANDLER_CRASHED',\n HANDLER_TIMEOUT: 'HANDLER_TIMEOUT',\n} as const;\n\n// Error Messages\nexport const EVENT_ERROR_MESSAGE = {\n HANDLER_FAILED: 'Handler execution failed',\n HANDLER_TIMEOUT: 'Handler execution timed out',\n};\n\n// Environment\nexport const EVENT_ENVIRONMENT = {\n DEVELOPMENT: 'development',\n PRODUCTION: 'production',\n TEST: 'test',\n} as const;\n\n//Event Phases\nexport const PHASE_NONE = 0;\nexport const PHASE_CAPTURING = 1;\nexport const PHASE_AT_TARGET = 2;\nexport const PHASE_BUBBLING = 3;\n\nexport const EVENT_PHASE = {\n NONE: PHASE_NONE,\n CAPTURING_PHASE: PHASE_CAPTURING,\n AT_TARGET: PHASE_AT_TARGET,\n BUBBLING_PHASE: PHASE_BUBBLING,\n} as const;\n\n// Event Meta Keys\nexport const EVENT_META_KEY = {\n PRIORITY: 'priority',\n URGENT: 'urgent',\n CATEGORY: 'category',\n TAGS: 'tags',\n SOURCE: 'source',\n} as const;\n\n// Event Source Fields\nexport const EVENT_SOURCE_FIELD = {\n COMPONENT: 'component',\n ENVIRONMENT: 'environment',\n} as const;\n\n// Event Result Status\nexport const EVENT_RESULT_STATUS = {\n ERROR: 'error',\n INFO: 'info',\n WARNING: 'warning',\n CRITICAL: 'critical',\n} as const;\n\n// Utils\nexport const EmptyArray = <T = unknown>(): T[] => [];\nexport const CurrentTimestamp = (): number => Date.now();\n\n/**\n * Enum representing the state of a Promise.\n */\nexport const SETTLED_PROMISE_STATUS = {\n FULFILLED: 'fulfilled',\n REJECTED: 'rejected',\n} as const;\n\nexport const EVENT_NORMALIZER_MESSAGES = {\n NORMALIZATION_FAILED: 'Event normalization failed.',\n MAPPING_MISSING: 'No mapping configuration found for provider.',\n MAPPING_RETRIEVE_FAILED: 'Failed to retrieve provider mapping.',\n BUILD_NORMALIZED_DATA_FAILED: 'Failed to build normalized payment data.',\n BUILD_UNIFIED_EVENT_FAILED: 'Failed to build unified event.',\n EVENT_TYPE_MAPPING_FAILED: 'Event type mapping failed.',\n STATUS_MAPPING_FAILED: 'Status mapping failed.',\n PAYLOAD_EXTRACTION_FAILED: 'Payload extraction failed.',\n requiredFileMissing: (field: string): string => `Required field \"${field}\" is missing.`,\n} as const;\n","export const DEFAULT_RETRY_DELAY_MS = 1000;\nexport const MAX_CIRCUIT_OPEN_MS = 60_000;\nexport const DEFAULT_CIRCUIT_BREAKER_FAILURE_THRESHOLD = 3;\n\nexport const FALLBACK_REASON = {\n NO_PROVIDER: 'NO_PROVIDER_SELECTED',\n PROVIDER_FAILURE: 'PROVIDER_FAILURE',\n CIRCUIT_OPEN: 'CIRCUIT_OPEN',\n UNKNOWN_ERROR: 'UNKNOWN_ERROR',\n};\n\nexport const FALLBACK_NEXT_STEPS = {\n USER_ACTION: 'contact_support',\n SYSTEM_ACTION: 'manual_review',\n} as const;\n\n/** Risk levels */\nexport const RISK_LEVEL = {\n LOW: 'low',\n MEDIUM: 'medium',\n HIGH: 'high',\n} as const;\n\n/** Security flags */\nexport const SECURITY_FLAGS = {\n FALLBACK_USED: 'fallback_used',\n} as const;\n\n/** Allowed operators for custom rules */\nexport enum CUSTOM_RULE_OPERATER {\n ASSIGNMENT = 'assignment',\n LOGICAL = 'logical',\n COMPARISON = 'comparison',\n ARITHMETIC = 'arithmetic',\n CONDITIONAL = 'conditional',\n CONCATENATE = 'concatenate',\n}\n\nexport const PAYMENT_GATEWAY_ERROR_MESSAGE = {\n // General\n INITIAL_PAYMENT_ATTEMPT: 'Initial payment attempt.',\n PAYMENT_OPERATION_FAILED: 'Payment operation failed.',\n NON_PAYMENT_OPERATION_FAILED: 'Non-payment operation failed.',\n ADAPTER_NOT_FOUND: 'Adapter not found for provider:',\n NO_VALID_ADAPTER: 'No valid provider adapter found.',\n UNSUPPORTED_FEATURE: 'Requested feature is not supported by the provider.',\n UNKNOWN_PROVIDER: 'Unknown payment provider specified.',\n UNKNOWN_ERROR: 'An unknown error occurred during payment processing.',\n\n // Idempotency / concurrency\n DUPLICATE_PAYMENT_IN_PROGRESS: 'A payment with this idempotency key is already in progress.',\n DUPLICATE_REFUND_IN_PROGRESS: 'A refund for this transaction is already in progress.',\n\n // Validation\n MISSING_TRANSACTION_ID: 'Transaction ID is required for refund operation.',\n INVALID_PAYMENT_REQUEST: 'Invalid payment request payload.',\n INVALID_PROVIDER_CONFIGURATION: 'Invalid or missing provider configuration.',\n\n // Operations\n CAPTURE_PAYMENT_FAILED: 'Capture payment operation failed.',\n CANCEL_PAYMENT_FAILED: 'Cancel payment operation failed.',\n PROCESS_REFUND_FAILED: 'Refund operation failed.',\n GET_REFUND_STATUS_FAILED: 'Failed to retrieve refund status.',\n GET_PAYMENT_STATUS_FAILED: 'Failed to retrieve payment status.',\n GET_TRANSACTION_FAILED: 'Failed to retrieve transaction details.',\n CREATE_CUSTOMER_UNSUPPORTED: 'Create customer not supported by this provider.',\n SAVE_PAYMENT_METHOD_UNSUPPORTED: 'Save payment method not supported by this provider.',\n DELETE_PAYMENT_METHOD_UNSUPPORTED: 'Delete payment method not supported by this provider.',\n GET_USER_PAYMENT_METHODS_UNSUPPORTED: 'Get user payment methods not supported by this provider.',\n CREATE_SUBSCRIPTION_UNSUPPORTED: 'Create subscription not supported by this provider.',\n CANCEL_SUBSCRIPTION_UNSUPPORTED: 'Cancel subscription not supported by this provider.',\n PROCESS_PAYOUT_UNSUPPORTED: 'Payout not supported by this provider.',\n GET_TRANSACTION_HISTORY_UNSUPPORTED: 'Transaction history not supported by this provider.',\n\n // Gateway internal\n IDEMPOTENCY_LOCK_FAILED: 'Another operation with the same key is currently being processed.',\n FALLBACK_HANDLER_ERROR: 'An error occurred while executing fallback handling.',\n ROUTER_RESOLUTION_FAILED: 'Failed to resolve provider adapter route.',\n} as const;\n","export const STRIPE_API_VERSION = '2022-11-15';\nexport const STRIPE_MAPPING_VERSION = 'v1.0.0';\nexport const ZERO_AMOUNT = 0;\nexport const DEFAULT_PROCESSING_RATE = 0.029;\nexport const DEFAULT_PLATFORM_RATE = 0;\nexport const DEFAULT_CROSS_BORDER_RATE = 0.01;\nexport const DEFAULT_PRIORITY = 100;\n\nexport const FIXED_FEES = {\n CREDIT_CARD: 30,\n BANK_TRANSFER: 500,\n BOLETO_BANCARIO: 200,\n SEPA_DIRECT_DEBIT: 50,\n IDEAL_BANK: 50,\n} as const;\n\nexport const NEXT_STEP_EXPECTED_UPDATE_IN = {\n REDIRECT: 10,\n} as const;\n\n// Stripe mapping priorities & confidence\nexport const STRIPE_CONFIDENCE_HIGH = 1;\nexport const STRIPE_PRIORITY_HIGH = 100;\nexport const STRIPE_CONFIDENCE_MEDIUM = 0.9;\nexport const STRIPE_PRIORITY_MEDIUM = 80;\n\n// Display formatting\nexport const AMOUNT_DECIMALS = 2;\nexport const AMOUNT_DIVISOR = 100;\n\n// Timestamp conversion\nexport const UNIX_TIMESTAMP_MULTIPLIER = 1000;\n\n// Timestamps & limits\nexport const TIMESTAMP_FALLBACK = 0;\n\n/** Actions a user should take next in the payment flow */\nexport const NEXT_STEP_USER_ACTION = {\n REDIRECT: 'redirect',\n WAIT: 'wait',\n RETRY: 'retry',\n CONTACT_SUPPORT: 'contact_support',\n} as const;\n\n/** Actions the system should take next in the payment flow */\nexport const NEXT_STEP_SYSTEM_ACTION = {\n WEBHOOK_PENDING: 'webhook_pending',\n MANUAL_REVIEW: 'manual_review',\n AUTO_RETRY: 'auto_retry',\n} as const;\n\n/** Stripe provider event types for mapping */\nexport const STRIPE_EVENT_TYPE = {\n // Refunds\n CHARGE_REFUND_CREATED: 'charge.refund.created',\n REFUND_UPDATED: 'refund.updated',\n CHARGE_REFUND_SUCCEEDED: 'charge.refund.succeeded',\n CHARGE_REFUND_FAILED: 'charge.refund.failed',\n CHARGE_REFUND_CANCELED: 'charge.refund.canceled',\n\n // Disputes / Chargebacks\n CHARGE_DISPUTE_CREATED: 'charge.dispute.created',\n CHARGE_DISPUTE_UPDATED: 'charge.dispute.updated',\n CHARGE_DISPUTE_CLOSED: 'charge.dispute.closed',\n CHARGEBACK_RECEIVED: 'chargeback.received',\n CHARGEBACK_RESPONDED: 'chargeback.responded',\n CHARGE_DISPUTE_WON: 'charge.dispute.won',\n CHARGE_DISPUTE_LOST: 'charge.dispute.lost',\n\n // Payment methods\n PAYMENT_METHOD_ATTACHED: 'payment_method.attached',\n PAYMENT_METHOD_UPDATED: 'payment_method.updated',\n PAYMENT_METHOD_DETACHED: 'payment_method.detached',\n PAYMENT_METHOD_EXPIRED: 'payment_method.expired',\n\n // Subscriptions\n SUBSCRIPTION_CREATED: 'customer.subscription.created',\n SUBSCRIPTION_UPDATED: 'customer.subscription.updated',\n SUBSCRIPTION_DELETED: 'customer.subscription.deleted',\n SUBSCRIPTION_RENEWED: 'customer.subscription.renewed',\n SUBSCRIPTION_FAILED: 'customer.subscription.failed',\n SUBSCRIPTION_TRIAL_STARTED: 'customer.subscription.trial_started',\n SUBSCRIPTION_TRIAL_ENDED: 'customer.subscription.trial_ended',\n\n // Invoice / Checkout (Payment Links)\n INVOICE_PAYMENT_SUCCEEDED: 'invoice.payment_succeeded',\n INVOICE_PAYMENT_FAILED: 'invoice.payment_failed',\n CHECKOUT_SESSION_COMPLETED: 'checkout.session.completed',\n CHECKOUT_SESSION_EXPIRED: 'checkout.session.expired',\n CHECKOUT_SESSION_CANCELED: 'checkout.session.canceled',\n\n // Products & Pricing\n PRODUCT_CREATED: 'product.created',\n PRODUCT_UPDATED: 'product.updated',\n PRODUCT_DELETED: 'product.deleted',\n PRICE_CREATED: 'price.created',\n PRICE_UPDATED: 'price.updated',\n PRICE_DELETED: 'price.deleted',\n\n // Provider / System events\n PROVIDER_WEBHOOK_RECEIVED: 'provider.webhook.received',\n PROVIDER_WEBHOOK_PROCESSED: 'provider.webhook.processed',\n PROVIDER_API_CALLED: 'provider.api.called',\n PROVIDER_API_SUCCEEDED: 'provider.api.succeeded',\n PROVIDER_API_FAILED: 'provider.api.failed',\n} as const;\n\nexport const STRIPE_PAYMENT_INTENT_STATUS = {\n SUCCEEDED: 'succeeded',\n PROCESSING: 'processing',\n REQUIRES_ACTION: 'requires_action',\n REQUIRES_CONFIRMATION: 'requires_confirmation',\n REQUIRES_PAYMENT_METHOD: 'requires_payment_method',\n CANCELED: 'canceled',\n FAILED: 'failed',\n DECLINED: 'declined',\n EXPIRED: 'expired',\n AUTHORIZED: 'authorized',\n CAPTURED: 'captured',\n HELD: 'held',\n REFUNDED: 'refunded',\n PARTIALLY_REFUNDED: 'partially_refunded',\n DISPUTED: 'disputed',\n CHARGEBACK: 'chargeback',\n CHARGEBACK_RESOLVED: 'chargeback_resolved',\n} as const;\n\n/** Default processing time estimate */\nexport const DEFAULT_PROCESSING_TIME = {\n minimumMinutes: 5,\n maximumMinutes: 120,\n typicalMinutes: 30,\n factors: ['default estimate'],\n};\n\n/** Default settlement time estimate */\nexport const DEFAULT_SETTLEMENT_TIME = {\n minimumDays: 1,\n maximumDays: 5,\n typicalDays: 3,\n affectedByHolidays: true,\n};\n\nexport const STRIPE_DATA_PATHS = {\n TRANSACTION_ID: 'data.object.id',\n AMOUNT: 'data.object.amount',\n CURRENCY: 'data.object.currency',\n STATUS: 'data.object.status',\n PAYMENT_METHOD: 'data.object.payment_method',\n METADATA: 'data.object.metadata',\n};\n\nexport const PAYMENT_OPERATION = {\n INITIALIZE: 'initialize',\n CREATE_PAYMENT: 'createPayment',\n CAPTURE_PAYMENT: 'capturePayment',\n CANCEL_PAYMENT: 'cancelPayment',\n PROCESS_REFUND: 'processRefund',\n GET_REFUND_STATUS: 'getRefundStatus',\n GET_PAYMENT_STATUS: 'getPaymentStatus',\n PROCESS_WEBHOOK: 'processWebhook',\n VERIFY_WEBHOOK_SIGNATURE: 'verifyWebhookSignature',\n CALCULATE_FEES: 'calculateFees',\n GET_FEE_STRUCTURE: 'getFeeStructure',\n GET_TRANSACTION: 'getTransaction',\n WEBHOOK_PROCESS: 'webhookProcess',\n} as const;\n\nexport const STRIPE_MESSAGES = {\n MISSING_API_KEY: 'Missing Stripe API key',\n UNKNOWN_EVENT: 'unknown',\n MISSING_EVENT: 'missing',\n INIT_FAILED: 'Stripe SDK initialization failed',\n CREATE_PAYMENT_FAILED: 'Failed to create payment intent',\n CAPTURE_PAYMENT_FAILED: 'Failed to capture payment',\n CANCEL_PAYMENT_FAILED: 'Failed to cancel payment',\n REFUND_FAILED: 'Failed to process refund',\n REFUND_STATUS_FAILED: 'Failed to retrieve refund status',\n GET_PAYMENT_STATUS_FAILED: 'Failed to retrieve payment status',\n PROCESS_WEBHOOK_FAILED: 'Failed to process webhook',\n VERIFY_WEBHOOK_FAILED: 'Failed to verify webhook signature',\n CALCULATE_FEES_FAILED: 'Failed to calculate fees',\n GET_FEE_STRUCTURE_FAILED: 'Failed to get fee structure',\n GET_TRANSACTION_FAILED: 'Failed to retrieve transaction details',\n} as const;\n","/**\n * Currency Code Constants\n *\n * ISO 4217 currency codes for international currencies.\n *\n * @module locale/currencies\n */\n\n/**\n * Common currency codes (ISO 4217)\n */\nexport const CURRENCY_CODES = {\n // Major currencies\n USD: 'USD', // US Dollar\n EUR: 'EUR', // Euro\n GBP: 'GBP', // British Pound Sterling\n JPY: 'JPY', // Japanese Yen\n CHF: 'CHF', // Swiss Franc\n CAD: 'CAD', // Canadian Dollar\n AUD: 'AUD', // Australian Dollar\n CNY: 'CNY', // Chinese Yuan Renminbi\n\n // Asian currencies\n INR: 'INR', // Indian Rupee\n KRW: 'KRW', // South Korean Won\n SGD: 'SGD', // Singapore Dollar\n HKD: 'HKD', // Hong Kong Dollar\n TWD: 'TWD', // Taiwan New Dollar\n THB: 'THB', // Thai Baht\n IDR: 'IDR', // Indonesian Rupiah\n MYR: 'MYR', // Malaysian Ringgit\n PHP: 'PHP', // Philippine Peso\n VND: 'VND', // Vietnamese Dong\n BDT: 'BDT', // Bangladeshi Taka\n PKR: 'PKR', // Pakistani Rupee\n LKR: 'LKR', // Sri Lankan Rupee\n\n // European currencies\n SEK: 'SEK', // Swedish Krona\n NOK: 'NOK', // Norwegian Krone\n DKK: 'DKK', // Danish Krone\n PLN: 'PLN', // Polish Zloty\n CZK: 'CZK', // Czech Koruna\n HUF: 'HUF', // Hungarian Forint\n RON: 'RON', // Romanian Leu\n BGN: 'BGN', // Bulgarian Lev\n HRK: 'HRK', // Croatian Kuna\n RSD: 'RSD', // Serbian Dinar\n ISK: 'ISK', // Icelandic Króna\n\n // Americas currencies\n BRL: 'BRL', // Brazilian Real\n MXN: 'MXN', // Mexican Peso\n ARS: 'ARS', // Argentine Peso\n CLP: 'CLP', // Chilean Peso\n COP: 'COP', // Colombian Peso\n PEN: 'PEN', // Peruvian Sol\n UYU: 'UYU', // Uruguayan Peso\n VES: 'VES', // Venezuelan Bolívar\n BOB: 'BOB', // Bolivian Boliviano\n PYG: 'PYG', // Paraguayan Guarani\n CRC: 'CRC', // Costa Rican Colón\n GTQ: 'GTQ', // Guatemalan Quetzal\n HNL: 'HNL', // Honduran Lempira\n NIO: 'NIO', // Nicaraguan Córdoba\n PAB: 'PAB', // Panamanian Balboa\n DOP: 'DOP', // Dominican Peso\n JMD: 'JMD', // Jamaican Dollar\n TTD: 'TTD', // Trinidad and Tobago Dollar\n BBD: 'BBD', // Barbadian Dollar\n\n // Middle Eastern currencies\n AED: 'AED', // UAE Dirham\n SAR: 'SAR', // Saudi Riyal\n QAR: 'QAR', // Qatari Riyal\n KWD: 'KWD', // Kuwaiti Dinar\n BHD: 'BHD', // Bahraini Dinar\n OMR: 'OMR', // Omani Rial\n JOD: 'JOD', // Jordanian Dinar\n ILS: 'ILS', // Israeli New Shekel\n TRY: 'TRY', // Turkish Lira\n IQD: 'IQD', // Iraqi Dinar\n IRR: 'IRR', // Iranian Rial\n LBP: 'LBP', // Lebanese Pound\n SYP: 'SYP', // Syrian Pound\n\n // African currencies\n ZAR: 'ZAR', // South African Rand\n NGN: 'NGN', // Nigerian Naira\n EGP: 'EGP', // Egyptian Pound\n KES: 'KES', // Kenyan Shilling\n GHS: 'GHS', // Ghanaian Cedi\n MAD: 'MAD', // Moroccan Dirham\n TND: 'TND', // Tunisian Dinar\n DZD: 'DZD', // Algerian Dinar\n ETB: 'ETB', // Ethiopian Birr\n TZS: 'TZS', // Tanzanian Shilling\n UGX: 'UGX', // Ugandan Shilling\n ZMW: 'ZMW', // Zambian Kwacha\n BWP: 'BWP', // Botswana Pula\n MUR: 'MUR', // Mauritian Rupee\n\n // Pacific currencies\n NZD: 'NZD', // New Zealand Dollar\n FJD: 'FJD', // Fijian Dollar\n PGK: 'PGK', // Papua New Guinean Kina\n\n // Former Soviet Union currencies\n RUB: 'RUB', // Russian Ruble\n UAH: 'UAH', // Ukrainian Hryvnia\n BYN: 'BYN', // Belarusian Ruble\n KZT: 'KZT', // Kazakhstani Tenge\n UZS: 'UZS', // Uzbekistani Som\n AZN: 'AZN', // Azerbaijani Manat\n GEL: 'GEL', // Georgian Lari\n AMD: 'AMD', // Armenian Dram\n\n // Cryptocurrency representations (unofficial)\n BTC: 'BTC', // Bitcoin\n ETH: 'ETH', // Ethereum\n USDT: 'USDT', // Tether\n USDC: 'USDC', // USD Coin\n} as const;\n\n/**\n * Currency metadata\n */\nexport const CURRENCY_INFO = {\n /**\n * Currencies with no decimal places\n */\n NO_DECIMAL_CURRENCIES: ['JPY', 'KRW', 'VND', 'IDR', 'CLP', 'ISK', 'TWD'],\n\n /**\n * Currencies with 3 decimal places\n */\n THREE_DECIMAL_CURRENCIES: ['BHD', 'IQD', 'JOD', 'KWD', 'OMR', 'TND'],\n\n /**\n * Major reserve currencies\n */\n RESERVE_CURRENCIES: ['USD', 'EUR', 'GBP', 'JPY', 'CNY'],\n\n /**\n * G7 currencies\n */\n G7_CURRENCIES: ['USD', 'EUR', 'GBP', 'JPY', 'CAD'],\n\n /**\n * Default decimal places for most currencies\n */\n DEFAULT_DECIMAL_PLACES: 2,\n} as const;\n\n/**\n * Type exports\n */\nexport type CurrencyCode = (typeof CURRENCY_CODES)[keyof typeof CURRENCY_CODES];\nexport type CurrencyInfo = (typeof CURRENCY_INFO)[keyof typeof CURRENCY_INFO];\n","/**\n * Country Constants\n *\n * ISO 3166-1 country codes and related data.\n *\n * @module locale/countries\n */\n\n/**\n * Common country codes (ISO 3166-1 alpha-2)\n */\nexport const COUNTRY_CODES = {\n // Americas\n US: 'US', // United States\n CA: 'CA', // Canada\n MX: 'MX', // Mexico\n BR: 'BR', // Brazil\n AR: 'AR', // Argentina\n CL: 'CL', // Chile\n CO: 'CO', // Colombia\n PE: 'PE', // Peru\n VE: 'VE', // Venezuela\n EC: 'EC', // Ecuador\n BO: 'BO', // Bolivia\n PY: 'PY', // Paraguay\n UY: 'UY', // Uruguay\n GY: 'GY', // Guyana\n SR: 'SR', // Suriname\n GF: 'GF', // French Guiana\n FK: 'FK', // Falkland Islands\n\n // Caribbean\n CU: 'CU', // Cuba\n DO: 'DO', // Dominican Republic\n HT: 'HT', // Haiti\n JM: 'JM', // Jamaica\n TT: 'TT', // Trinidad and Tobago\n BB: 'BB', // Barbados\n BS: 'BS', // Bahamas\n PR: 'PR', // Puerto Rico\n\n // Central America\n GT: 'GT', // Guatemala\n HN: 'HN', // Honduras\n SV: 'SV', // El Salvador\n NI: 'NI', // Nicaragua\n CR: 'CR', // Costa Rica\n PA: 'PA', // Panama\n BZ: 'BZ', // Belize\n\n // Europe\n GB: 'GB', // United Kingdom\n FR: 'FR', // France\n DE: 'DE', // Germany\n IT: 'IT', // Italy\n ES: 'ES', // Spain\n PT: 'PT', // Portugal\n NL: 'NL', // Netherlands\n BE: 'BE', // Belgium\n LU: 'LU', // Luxembourg\n CH: 'CH', // Switzerland\n AT: 'AT', // Austria\n IE: 'IE', // Ireland\n DK: 'DK', // Denmark\n SE: 'SE', // Sweden\n NO: 'NO', // Norway\n FI: 'FI', // Finland\n IS: 'IS', // Iceland\n PL: 'PL', // Poland\n CZ: 'CZ', // Czech Republic\n SK: 'SK', // Slovakia\n HU: 'HU', // Hungary\n RO: 'RO', // Romania\n BG: 'BG', // Bulgaria\n GR: 'GR', // Greece\n HR: 'HR', // Croatia\n SI: 'SI', // Slovenia\n RS: 'RS', // Serbia\n BA: 'BA', // Bosnia and Herzegovina\n ME: 'ME', // Montenegro\n MK: 'MK', // North Macedonia\n AL: 'AL', // Albania\n XK: 'XK', // Kosovo\n EE: 'EE', // Estonia\n LV: 'LV', // Latvia\n LT: 'LT', // Lithuania\n BY: 'BY', // Belarus\n UA: 'UA', // Ukraine\n MD: 'MD', // Moldova\n RU: 'RU', // Russia\n CY: 'CY', // Cyprus\n MT: 'MT', // Malta\n AD: 'AD', // Andorra\n MC: 'MC', // Monaco\n SM: 'SM', // San Marino\n VA: 'VA', // Vatican City\n LI: 'LI', // Liechtenstein\n\n // Asia\n CN: 'CN', // China\n JP: 'JP', // Japan\n KR: 'KR', // South Korea\n KP: 'KP', // North Korea\n TW: 'TW', // Taiwan\n HK: 'HK', // Hong Kong\n MO: 'MO', // Macao\n IN: 'IN', // India\n PK: 'PK', // Pakistan\n BD: 'BD', // Bangladesh\n LK: 'LK', // Sri Lanka\n NP: 'NP', // Nepal\n BT: 'BT', // Bhutan\n MV: 'MV', // Maldives\n AF: 'AF', // Afghanistan\n TH: 'TH', // Thailand\n VN: 'VN', // Vietnam\n MY: 'MY', // Malaysia\n SG: 'SG', // Singapore\n ID: 'ID', // Indonesia\n PH: 'PH', // Philippines\n BN: 'BN', // Brunei\n KH: 'KH', // Cambodia\n LA: 'LA', // Laos\n MM: 'MM', // Myanmar\n TL: 'TL', // Timor-Leste\n MN: 'MN', // Mongolia\n KZ: 'KZ', // Kazakhstan\n UZ: 'UZ', // Uzbekistan\n TJ: 'TJ', // Tajikistan\n KG: 'KG', // Kyrgyzstan\n TM: 'TM', // Turkmenistan\n AZ: 'AZ', // Azerbaijan\n GE: 'GE', // Georgia\n AM: 'AM', // Armenia\n\n // Middle East\n SA: 'SA', // Saudi Arabia\n AE: 'AE', // United Arab Emirates\n QA: 'QA', // Qatar\n KW: 'KW', // Kuwait\n BH: 'BH', // Bahrain\n OM: 'OM', // Oman\n YE: 'YE', // Yemen\n JO: 'JO', // Jordan\n LB: 'LB', // Lebanon\n SY: 'SY', // Syria\n IQ: 'IQ', // Iraq\n IR: 'IR', // Iran\n IL: 'IL', // Israel\n PS: 'PS', // Palestine\n TR: 'TR', // Turkey\n\n // Africa\n EG: 'EG', // Egypt\n LY: 'LY', // Libya\n TN: 'TN', // Tunisia\n DZ: 'DZ', // Algeria\n MA: 'MA', // Morocco\n EH: 'EH', // Western Sahara\n MR: 'MR', // Mauritania\n ML: 'ML', // Mali\n NE: 'NE', // Niger\n TD: 'TD', // Chad\n SD: 'SD', // Sudan\n SS: 'SS', // South Sudan\n ER: 'ER', // Eritrea\n DJ: 'DJ', // Djibouti\n SO: 'SO', // Somalia\n ET: 'ET', // Ethiopia\n KE: 'KE', // Kenya\n UG: 'UG', // Uganda\n RW: 'RW', // Rwanda\n BI: 'BI', // Burundi\n TZ: 'TZ', // Tanzania\n MZ: 'MZ', // Mozambique\n MW: 'MW', // Malawi\n ZM: 'ZM', // Zambia\n ZW: 'ZW', // Zimbabwe\n BW: 'BW', // Botswana\n NA: 'NA', // Namibia\n ZA: 'ZA', // South Africa\n LS: 'LS', // Lesotho\n SZ: 'SZ', // Eswatini\n AO: 'AO', // Angola\n CD: 'CD', // Democratic Republic of the Congo\n CG: 'CG', // Republic of the Congo\n GA: 'GA', // Gabon\n GQ: 'GQ', // Equatorial Guinea\n CM: 'CM', // Cameroon\n CF: 'CF', // Central African Republic\n NG: 'NG', // Nigeria\n BJ: 'BJ', // Benin\n TG: 'TG', // Togo\n GH: 'GH', // Ghana\n BF: 'BF', // Burkina Faso\n CI: 'CI', // Côte d'Ivoire\n LR: 'LR', // Liberia\n SL: 'SL', // Sierra Leone\n GN: 'GN', // Guinea\n GW: 'GW', // Guinea-Bissau\n SN: 'SN', // Senegal\n GM: 'GM', // Gambia\n CV: 'CV', // Cape Verde\n ST: 'ST', // São Tomé and Príncipe\n MG: 'MG', // Madagascar\n MU: 'MU', // Mauritius\n SC: 'SC', // Seychelles\n KM: 'KM', // Comoros\n RE: 'RE', // Réunion\n\n // Oceania\n AU: 'AU', // Australia\n NZ: 'NZ', // New Zealand\n PG: 'PG', // Papua New Guinea\n FJ: 'FJ', // Fiji\n SB: 'SB', // Solomon Islands\n VU: 'VU', // Vanuatu\n NC: 'NC', // New Caledonia\n PF: 'PF', // French Polynesia\n WS: 'WS', // Samoa\n TO: 'TO', // Tonga\n TV: 'TV', // Tuvalu\n NR: 'NR', // Nauru\n KI: 'KI', // Kiribati\n PW: 'PW', // Palau\n MH: 'MH', // Marshall Islands\n FM: 'FM', // Micronesia\n GU: 'GU', // Guam\n MP: 'MP', // Northern Mariana Islands\n AS: 'AS', // American Samoa\n CK: 'CK', // Cook Islands\n NU: 'NU', // Niue\n TK: 'TK', // Tokelau\n WF: 'WF', // Wallis and Futuna\n PN: 'PN', // Pitcairn Islands\n\n // Antarctica\n AQ: 'AQ', // Antarctica\n} as const;\n\n/**\n * MVP DEFINED SCOPE: Only include Europe (EU) and Brazil (BR).\n */\nexport const COUNTRY_CODES_SCOPED = {\n // Brazil\n BR: 'BR',\n // Europe\n GB: 'GB',\n FR: 'FR',\n DE: 'DE',\n IT: 'IT',\n ES: 'ES',\n PT: 'PT',\n NL: 'NL',\n BE: 'BE',\n LU: 'LU',\n CH: 'CH',\n AT: 'AT',\n IE: 'IE',\n DK: 'DK',\n SE: 'SE',\n NO: 'NO',\n FI: 'FI',\n IS: 'IS',\n PL: 'PL',\n CZ: 'CZ',\n SK: 'SK',\n HU: 'HU',\n RO: 'RO',\n BG: 'BG',\n GR: 'GR',\n HR: 'HR',\n SI: 'SI',\n RS: 'RS',\n BA: 'BA',\n ME: 'ME',\n MK: 'MK',\n AL: 'AL',\n XK: 'XK',\n EE: 'EE',\n LV: 'LV',\n LT: 'LT',\n BY: 'BY',\n UA: 'UA',\n MD: 'MD',\n RU: 'RU',\n CY: 'CY',\n MT: 'MT',\n AD: 'AD',\n MC: 'MC',\n SM: 'SM',\n VA: 'VA',\n LI: 'LI',\n} as const;\n\n/**\n * MVP scoped country names\n */\nexport const COUNTRY_NAMES: { [key: string]: string } = {\n // Brazil (BR)\n BR: 'Brazil',\n\n // European Union (EU) Member States\n AT: 'Austria',\n BE: 'Belgium',\n BG: 'Bulgaria',\n HR: 'Croatia',\n CY: 'Cyprus',\n CZ: 'Czechia', // Using the modern short name\n DK: 'Denmark',\n EE: 'Estonia',\n FI: 'Finland',\n FR: 'France',\n DE: 'Germany',\n GR: 'Greece',\n HU: 'Hungary',\n IE: 'Ireland',\n IT: 'Italy',\n LV: 'Latvia',\n LT: 'Lithuania',\n LU: 'Luxembourg',\n MT: 'Malta',\n NL: 'Netherlands',\n PL: 'Poland',\n PT: 'Portugal',\n RO: 'Romania',\n SK: 'Slovakia',\n SI: 'Slovenia',\n ES: 'Spain',\n SE: 'Sweden',\n};\n\n/**\n * Country calling codes\n */\nexport const COUNTRY_CALLING_CODES = {\n /**\n * United States and Canada\n */\n '+1': ['US', 'CA'],\n /**\n * Egypt\n */\n '+20': ['EG'],\n /**\n * South Africa\n */\n '+27': ['ZA'],\n /**\n * Greece\n */\n '+30': ['GR'],\n /**\n * Netherlands\n */\n '+31': ['NL'],\n /**\n * Belgium\n */\n '+32': ['BE'],\n /**\n * France\n */\n '+33': ['FR'],\n /**\n * Spain\n */\n '+34': ['ES'],\n /**\n * Hungary\n */\n '+36': ['HU'],\n /**\n * Italy\n */\n '+39': ['IT'],\n /**\n * Romania\n */\n '+40': ['RO'],\n /**\n * Switzerland\n */\n '+41': ['CH'],\n /**\n * Austria\n */\n '+43': ['AT'],\n /**\n * United Kingdom\n */\n '+44': ['GB'],\n /**\n * Denmark\n */\n '+45': ['DK'],\n /**\n * Sweden\n */\n '+46': ['SE'],\n /**\n * Norway\n */\n '+47': ['NO'],\n /**\n * Poland\n */\n '+48': ['PL'],\n /**\n * Germany\n */\n '+49': ['DE'],\n /**\n * Peru\n */\n '+51': ['PE'],\n /**\n * Mexico\n */\n '+52': ['MX'],\n /**\n * Cuba\n */\n '+53': ['CU'],\n /**\n * Argentina\n */\n '+54': ['AR'],\n /**\n * Brazil\n */\n '+55': ['BR'],\n /**\n * Chile\n */\n '+56': ['CL'],\n /**\n * Colombia\n */\n '+57': ['CO'],\n /**\n * Venezuela\n */\n '+58': ['VE'],\n /**\n * Malaysia\n */\n '+60': ['MY'],\n /**\n * Australia\n */\n '+61': ['AU'],\n /**\n * Indonesia\n */\n '+62': ['ID'],\n /**\n * Philippines\n */\n '+63': ['PH'],\n /**\n * New Zealand\n */\n '+64': ['NZ'],\n /**\n * Singapore\n */\n '+65': ['SG'],\n /**\n * Thailand\n */\n '+66': ['TH'],\n /**\n * Russia and Kazakhstan\n */\n '+7': ['RU', 'KZ'],\n /**\n * Japan\n */\n '+81': ['JP'],\n /**\n * South Korea\n */\n '+82': ['KR'],\n /**\n * Vietnam\n */\n '+84': ['VN'],\n /**\n * China\n */\n '+86': ['CN'],\n /**\n * Turkey\n */\n '+90': ['TR'],\n /**\n * India\n */\n '+91': ['IN'],\n /**\n * Pakistan\n */\n '+92': ['PK'],\n /**\n * Afghanistan\n */\n '+93': ['AF'],\n /**\n * Sri Lanka\n */\n '+94': ['LK'],\n /**\n * Myanmar\n */\n '+95': ['MM'],\n /**\n * Iran\n */\n '+98': ['IR'],\n /**\n * Morocco\n */\n '+212': ['MA'],\n /**\n * Algeria\n */\n '+213': ['DZ'],\n /**\n * Tunisia\n */\n '+216': ['TN'],\n /**\n * Libya\n */\n '+218': ['LY'],\n /**\n * Gambia\n */\n '+220': ['GM'],\n /**\n * Senegal\n */\n '+221': ['SN'],\n /**\n * Mali\n */\n '+223': ['ML'],\n /**\n * Guinea\n */\n '+224': ['GN'],\n /**\n * Côte d'Ivoire\n */\n '+225': ['CI'],\n /**\n * Burkina Faso\n */\n '+226': ['BF'],\n /**\n * Niger\n */\n '+227': ['NE'],\n /**\n * Togo\n */\n '+228': ['TG'],\n /**\n * Benin\n */\n '+229': ['BJ'],\n /**\n * Mauritius\n */\n '+230': ['MU'],\n /**\n * Liberia\n */\n '+231': ['LR'],\n /**\n * Sierra Leone\n */\n '+232': ['SL'],\n /**\n * Ghana\n */\n '+233': ['GH'],\n /**\n * Nigeria\n */\n '+234': ['NG'],\n /**\n * Chad\n */\n '+235': ['TD'],\n /**\n * Central African Republic\n */\n '+236': ['CF'],\n /**\n * Cameroon\n */\n '+237': ['CM'],\n /**\n * Cape Verde\n */\n '+238': ['CV'],\n /**\n * São Tomé and Príncipe\n */\n '+239': ['ST'],\n /**\n * Equatorial Guinea\n */\n '+240': ['GQ'],\n /**\n * Gabon\n */\n '+241': ['GA'],\n /**\n * Congo\n */\n '+242': ['CG'],\n /**\n * Democratic Republic of the Congo\n */\n '+243': ['CD'],\n /**\n * Angola\n */\n '+244': ['AO'],\n /**\n * Guinea-Bissau\n */\n '+245': ['GW'],\n /**\n * Kenya\n */\n '+254': ['KE'],\n /**\n * Tanzania\n */\n '+255': ['TZ'],\n /**\n * Uganda\n */\n '+256': ['UG'],\n /**\n * Burundi\n */\n '+257': ['BI'],\n /**\n * Mozambique\n */\n '+258': ['MZ'],\n /**\n * Zambia\n */\n '+260': ['ZM'],\n /**\n * Madagascar\n */\n '+261': ['MG'],\n /**\n * Zimbabwe\n */\n '+263': ['ZW'],\n /**\n * Namibia\n */\n '+264': ['NA'],\n /**\n * Malawi\n */\n '+265': ['MW'],\n /**\n * Lesotho\n */\n '+266': ['LS'],\n /**\n * Botswana\n */\n '+267': ['BW'],\n /**\n * Eswatini\n */\n '+268': ['SZ'],\n /**\n * Seychelles\n */\n '+248': ['SC'],\n /**\n * Rwanda\n */\n '+250': ['RW'],\n /**\n * Ethiopia\n */\n '+251': ['ET'],\n /**\n * Somalia\n */\n '+252': ['SO'],\n /**\n * Djibouti\n */\n '+253': ['DJ'],\n /**\n * Hong Kong\n */\n '+852': ['HK'],\n /**\n * Macao\n */\n '+853': ['MO'],\n /**\n * Bangladesh\n */\n '+880': ['BD'],\n /**\n * Taiwan\n */\n '+886': ['TW'],\n /**\n * Maldives\n */\n '+960': ['MV'],\n /**\n * Lebanon\n */\n '+961': ['LB'],\n /**\n * Jordan\n */\n '+962': ['JO'],\n /**\n * Syria\n */\n '+963': ['SY'],\n /**\n * Iraq\n */\n '+964': ['IQ'],\n /**\n * Kuwait\n */\n '+965': ['KW'],\n /**\n * Saudi Arabia\n */\n '+966': ['SA'],\n /**\n * Yemen\n */\n '+967': ['YE'],\n /**\n * Oman\n */\n '+968': ['OM'],\n /**\n * Palestine\n */\n '+970': ['PS'],\n /**\n * United Arab Emirates\n */\n '+971': ['AE'],\n /**\n * Israel\n */\n '+972': ['IL'],\n /**\n * Bahrain\n */\n '+973': ['BH'],\n /**\n * Qatar\n */\n '+974': ['QA'],\n /**\n * Bhutan\n */\n '+975': ['BT'],\n /**\n * Mongolia\n */\n '+976': ['MN'],\n /**\n * Nepal\n */\n '+977': ['NP'],\n /**\n * Tajikistan\n */\n '+992': ['TJ'],\n /**\n * Turkmenistan\n */\n '+993': ['TM'],\n /**\n * Azerbaijan\n */\n '+994': ['AZ'],\n /**\n * Georgia\n */\n '+995': ['GE'],\n /**\n * Kyrgyzstan\n */\n '+996': ['KG'],\n /**\n * Uzbekistan\n */\n '+998': ['UZ'],\n} as const;\n\n/**\n * Regional groupings\n */\nexport const COUNTRY_REGIONS = {\n /**\n * European Union member states\n */\n EU: [\n 'AT',\n 'BE',\n 'BG',\n 'HR',\n 'CY',\n 'CZ',\n 'DK',\n 'EE',\n 'FI',\n 'FR',\n 'DE',\n 'GR',\n 'HU',\n 'IE',\n 'IT',\n 'LV',\n 'LT',\n 'LU',\n 'MT',\n 'NL',\n 'PL',\n 'PT',\n 'RO',\n 'SK',\n 'SI',\n 'ES',\n 'SE',\n ],\n\n /**\n * North American countries\n */\n NORTH_AMERICA: ['US', 'CA', 'MX'],\n\n /**\n * South American countries\n */\n SOUTH_AMERICA: ['AR', 'BO', 'BR', 'CL', 'CO', 'EC', 'GF', 'GY', 'PY', 'PE', 'SR', 'UY', 'VE'],\n\n /**\n * G7 countries\n */\n G7: ['US', 'CA', 'GB', 'FR', 'DE', 'IT', 'JP'],\n\n /**\n * G20 countries\n */\n G20: [\n 'AR',\n 'AU',\n 'BR',\n 'CA',\n 'CN',\n 'FR',\n 'DE',\n 'IN',\n 'ID',\n 'IT',\n 'JP',\n 'KR',\n 'MX',\n 'RU',\n 'SA',\n 'ZA',\n 'TR',\n 'GB',\n 'US',\n ],\n\n /**\n * ASEAN countries\n */\n ASEAN: ['BN', 'KH', 'ID', 'LA', 'MY', 'MM', 'PH', 'SG', 'TH', 'VN'],\n\n /**\n * BRICS countries\n */\n BRICS: ['BR', 'RU', 'IN', 'CN', 'ZA'],\n\n /**\n * OECD countries\n */\n OECD: [\n 'AU',\n 'AT',\n 'BE',\n 'CA',\n 'CL',\n 'CO',\n 'CR',\n 'CZ',\n 'DK',\n 'EE',\n 'FI',\n 'FR',\n 'DE',\n 'GR',\n 'HU',\n 'IS',\n 'IE',\n 'IL',\n 'IT',\n 'JP',\n 'KR',\n 'LV',\n 'LT',\n 'LU',\n 'MX',\n 'NL',\n 'NZ',\n 'NO',\n 'PL',\n 'PT',\n 'SK',\n 'SI',\n 'ES',\n 'SE',\n 'CH',\n 'TR',\n 'GB',\n 'US',\n ],\n\n /**\n * Commonwealth countries\n */\n COMMONWEALTH: [\n 'AG',\n 'AU',\n 'BS',\n 'BD',\n 'BB',\n 'BZ',\n 'BW',\n 'BN',\n 'CM',\n 'CA',\n 'CY',\n 'DM',\n 'FJ',\n 'GM',\n 'GH',\n 'GD',\n 'GY',\n 'IN',\n 'JM',\n 'KE',\n 'KI',\n 'LS',\n 'MW',\n 'MY',\n 'MV',\n 'MT',\n 'MU',\n 'MZ',\n 'NA',\n 'NR',\n 'NZ',\n 'NG',\n 'PK',\n 'PG',\n 'RW',\n 'KN',\n 'LC',\n 'VC',\n 'WS',\n 'SC',\n 'SL',\n 'SG',\n 'SB',\n 'ZA',\n 'LK',\n 'SZ',\n 'TZ',\n 'TO',\n 'TT',\n 'TV',\n 'UG',\n 'GB',\n 'VU',\n 'ZM',\n ],\n} as const;\n\n/**\n * Country code to region mapping for CDN headers\n */\nexport const COUNTRY_REGIONS_DETAILED: Record<string, { region: string; state?: string }> = {\n // EU countries\n DE: { region: 'eu' },\n FR: { region: 'eu' },\n IT: { region: 'eu' },\n ES: { region: 'eu' },\n NL: { region: 'eu' },\n BE: { region: 'eu' },\n AT: { region: 'eu' },\n SE: { region: 'eu' },\n DK: { region: 'eu' },\n FI: { region: 'eu' },\n NO: { region: 'eu' },\n PL: { region: 'eu' },\n CZ: { region: 'eu' },\n HU: { region: 'eu' },\n SK: { region: 'eu' },\n SI: { region: 'eu' },\n HR: { region: 'eu' },\n BG: { region: 'eu' },\n RO: { region: 'eu' },\n GR: { region: 'eu' },\n PT: { region: 'eu' },\n IE: { region: 'eu' },\n LU: { region: 'eu' },\n MT: { region: 'eu' },\n CY: { region: 'eu' },\n EE: { region: 'eu' },\n LV: { region: 'eu' },\n LT: { region: 'eu' },\n GB: { region: 'eu' },\n IS: { region: 'eu' },\n LI: { region: 'eu' },\n CH: { region: 'eu' },\n\n // US and states (would need more sophisticated detection for states)\n US: { region: 'us' },\n CA: { region: 'ca' }, // Canada as separate region\n\n // China\n CN: { region: 'cn' },\n HK: { region: 'cn' },\n MO: { region: 'cn' },\n\n // Japan\n JP: { region: 'jp' },\n\n // Other Asian countries\n KR: { region: 'global' }, // South Korea\n TW: { region: 'global' }, // Taiwan\n SG: { region: 'global' }, // Singapore\n MY: { region: 'global' }, // Malaysia\n TH: { region: 'global' }, // Thailand\n IN: { region: 'global' }, // India\n ID: { region: 'global' }, // Indonesia\n PH: { region: 'global' }, // Philippines\n VN: { region: 'global' }, // Vietnam\n\n // Oceania\n AU: { region: 'global' }, // Australia\n NZ: { region: 'global' }, // New Zealand\n\n // Americas (other than US/CA)\n MX: { region: 'global' }, // Mexico\n BR: { region: 'global' }, // Brazil\n AR: { region: 'global' }, // Argentina\n CL: { region: 'global' }, // Chile\n CO: { region: 'global' }, // Colombia\n\n // Middle East\n AE: { region: 'global' }, // UAE\n SA: { region: 'global' }, // Saudi Arabia\n IL: { region: 'global' }, // Israel\n TR: { region: 'global' }, // Turkey\n\n // Africa\n ZA: { region: 'global' }, // South Africa\n EG: { region: 'global' }, // Egypt\n NG: { region: 'global' }, // Nigeria\n KE: { region: 'global' }, // Kenya\n\n // Russia\n RU: { region: 'global' }, // Russia\n\n // Other countries default to global\n};\n\n/**\n * Type exports\n */\nexport type CountryCode = (typeof COUNTRY_CODES)[keyof typeof COUNTRY_CODES];\nexport type CountryCallingCode = keyof typeof COUNTRY_CALLING_CODES;\nexport type CountryRegion = keyof typeof COUNTRY_REGIONS;\nexport type CountryRegionDetailed =\n (typeof COUNTRY_REGIONS_DETAILED)[keyof typeof COUNTRY_REGIONS_DETAILED];\n","/**\n * Time-related Constants\n *\n * Common time values and durations used throughout the application\n * for timeouts, delays, caching, and other time-based operations.\n *\n * @module time/constants\n */\n\nimport { type CountryCode } from '@plyaz/types';\nimport { COUNTRY_CODES } from '../locale';\n\nexport const DAYS_IN_WEEK = 7;\nexport const EARLY_MORNING_HOURS = 6;\n/**\n * Time conversion and duration constants\n */\nexport const TIME_CONSTANTS = {\n // Time unit conversions (in milliseconds)\n /**\n * One millisecond in milliseconds\n */\n MILLISECOND: 1,\n\n /**\n * One second in milliseconds\n */\n SECOND: 1000,\n\n /**\n * One minute in milliseconds\n */\n MINUTE: 60000,\n\n /**\n * One hour in milliseconds\n */\n HOUR: 3600000,\n\n /**\n * One day in milliseconds\n */\n DAY: 86400000,\n\n /**\n * One week in milliseconds\n */\n WEEK: 604800000,\n\n /**\n * One month in milliseconds (30 days average)\n */\n MONTH: 2592000000,\n\n /**\n * One year in milliseconds (365 days)\n */\n YEAR: 31536000000,\n\n // Time unit ratios\n /**\n * Number of milliseconds in one second\n */\n MILLISECONDS_PER_SECOND: 1000,\n\n /**\n * Number of seconds in one minute\n */\n SECONDS_PER_MINUTE: 60,\n\n /**\n * Number of minutes in one hour\n */\n MINUTES_PER_HOUR: 60,\n\n /**\n * Number of hours in one day\n */\n HOURS_PER_DAY: 24,\n\n /**\n * Number of days in one week\n */\n DAYS_PER_WEEK: 7,\n\n /**\n * Number of days in one month (average)\n */\n DAYS_PER_MONTH: 30,\n\n /**\n * Number of days in one year\n */\n DAYS_PER_YEAR: 365,\n\n /**\n * Number of weeks in one year\n */\n WEEKS_PER_YEAR: 52,\n\n /**\n * Number of months in one year\n */\n MONTHS_PER_YEAR: 12,\n\n // Common durations in milliseconds\n /**\n * 100 milliseconds\n */\n HUNDRED_MS: 100,\n\n /**\n * 250 milliseconds\n */\n QUARTER_SECOND: 250,\n\n /**\n * 500 milliseconds (half second)\n */\n HALF_SECOND: 500,\n\n /**\n * 2 seconds in milliseconds\n */\n TWO_SECONDS: 2000,\n\n /**\n * 3 seconds in milliseconds\n */\n THREE_SECONDS: 3000,\n\n /**\n * 5 seconds in milliseconds\n */\n FIVE_SECONDS: 5000,\n\n /**\n * 10 seconds in milliseconds\n */\n TEN_SECONDS: 10000,\n\n /**\n * 30 seconds in milliseconds\n */\n THIRTY_SECONDS: 30000,\n\n /**\n * 2 minutes in milliseconds\n */\n TWO_MINUTES: 120000,\n\n /**\n * 5 minutes in milliseconds\n */\n FIVE_MINUTES: 300000,\n\n /**\n * 10 minutes in milliseconds\n */\n TEN_MINUTES: 600000,\n\n /**\n * 15 minutes in milliseconds\n */\n FIFTEEN_MINUTES: 900000,\n\n /**\n * 30 minutes in milliseconds\n */\n THIRTY_MINUTES: 1800000,\n\n /**\n * 1 hour in milliseconds\n */\n ONE_HOUR: 3600000,\n\n /**\n * 2 hours in milliseconds\n */\n TWO_HOURS: 7200000,\n\n /**\n * 6 hours in milliseconds\n */\n SIX_HOURS: 21600000,\n\n /**\n * 12 hours in milliseconds\n */\n TWELVE_HOURS: 43200000,\n\n // Default values\n /**\n * Default timeout duration in milliseconds (5 seconds)\n */\n DEFAULT_TIMEOUT: 5000,\n\n /**\n * Default short timeout in milliseconds (1 second)\n */\n DEFAULT_SHORT_TIMEOUT: 1000,\n\n /**\n * Default long timeout in milliseconds (30 seconds)\n */\n DEFAULT_LONG_TIMEOUT: 30000,\n\n /**\n * Default retry delay in milliseconds (100ms)\n */\n DEFAULT_RETRY_DELAY: 100,\n\n /**\n * Default exponential backoff base delay in milliseconds (1 second)\n */\n DEFAULT_BACKOFF_BASE: 1000,\n\n /**\n * Default maximum backoff delay in milliseconds (30 seconds)\n */\n DEFAULT_MAX_BACKOFF: 30000,\n\n /**\n * Default number of retry attempts\n */\n DEFAULT_RETRY_ATTEMPTS: 3,\n\n /**\n * Default debounce delay in milliseconds (50ms)\n */\n DEFAULT_DEBOUNCE_DELAY: 50,\n\n /**\n * Default throttle delay in milliseconds (100ms)\n */\n DEFAULT_THROTTLE_DELAY: 100,\n\n /**\n * Default animation frame duration in milliseconds (~60fps)\n */\n DEFAULT_ANIMATION_FRAME: 16.67,\n\n /**\n * Default transition duration in milliseconds (300ms)\n */\n DEFAULT_TRANSITION_DURATION: 300,\n\n /**\n * Default cache time-to-live in seconds (5 minutes)\n */\n DEFAULT_CACHE_TTL: 300,\n\n /**\n * Default short cache TTL in seconds (1 minute)\n */\n DEFAULT_SHORT_CACHE_TTL: 60,\n\n /**\n * Default long cache TTL in seconds (1 hour)\n */\n DEFAULT_LONG_CACHE_TTL: 3600,\n\n /**\n * Default session timeout in milliseconds (30 minutes)\n */\n DEFAULT_SESSION_TIMEOUT: 1800000,\n\n /**\n * Default idle timeout in milliseconds (15 minutes)\n */\n DEFAULT_IDLE_TIMEOUT: 900000,\n\n /**\n * Default poll interval in milliseconds (5 seconds)\n */\n DEFAULT_POLL_INTERVAL: 5000,\n\n /**\n * Default heartbeat interval in milliseconds (30 seconds)\n */\n DEFAULT_HEARTBEAT_INTERVAL: 30000,\n\n // Network and ports\n /**\n * Default port number for servers\n */\n DEFAULT_PORT: 3000,\n\n /**\n * Default HTTP port\n */\n HTTP_PORT: 80,\n\n /**\n * Default HTTPS port\n */\n HTTPS_PORT: 443,\n\n /**\n * Default WebSocket port\n */\n WEBSOCKET_PORT: 8080,\n\n /**\n * Default database port (PostgreSQL)\n */\n DATABASE_PORT: 5432,\n\n /**\n * Default Redis port\n */\n REDIS_PORT: 6379,\n\n // WebSocket specific\n /**\n * WebSocket normal closure code\n */\n WEBSOCKET_CLOSE_NORMAL: 1000,\n\n /**\n * WebSocket going away code\n */\n WEBSOCKET_CLOSE_GOING_AWAY: 1001,\n\n /**\n * WebSocket protocol error code\n */\n WEBSOCKET_CLOSE_PROTOCOL_ERROR: 1002,\n\n /**\n * WebSocket unsupported data code\n */\n WEBSOCKET_CLOSE_UNSUPPORTED: 1003,\n\n /**\n * WebSocket abnormal closure code\n */\n WEBSOCKET_CLOSE_ABNORMAL: 1006,\n\n /**\n * WebSocket retry delay in milliseconds (500ms)\n */\n WEBSOCKET_RETRY_DELAY: 500,\n\n /**\n * WebSocket ping interval in milliseconds (30 seconds)\n */\n WEBSOCKET_PING_INTERVAL: 30000,\n\n /**\n * WebSocket reconnect delay in milliseconds (1 second)\n */\n WEBSOCKET_RECONNECT_DELAY: 1000,\n\n /**\n * WebSocket max reconnect delay in milliseconds (30 seconds)\n */\n WEBSOCKET_MAX_RECONNECT_DELAY: 30000,\n} as const;\n\n/**\n * Country → Time Zone Mapping\n * Based on IANA time zone database (https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)\n */\nexport const COUNTRY_TIMEZONES: Record<string, string[]> = {\n // --- AMERICAS ---\n [COUNTRY_CODES.US]: [\n 'America/New_York',\n 'America/Chicago',\n 'America/Denver',\n 'America/Los_Angeles',\n 'America/Anchorage',\n 'Pacific/Honolulu',\n ],\n [COUNTRY_CODES.CA]: [\n 'America/Toronto',\n 'America/Vancouver',\n 'America/Edmonton',\n 'America/Halifax',\n 'America/St_Johns',\n ],\n [COUNTRY_CODES.MX]: ['America/Mexico_City', 'America/Monterrey', 'America/Tijuana'],\n [COUNTRY_CODES.BR]: ['America/Sao_Paulo', 'America/Manaus', 'America/Fortaleza'],\n [COUNTRY_CODES.AR]: ['America/Argentina/Buenos_Aires'],\n [COUNTRY_CODES.CL]: ['America/Santiago'],\n [COUNTRY_CODES.CO]: ['America/Bogota'],\n [COUNTRY_CODES.PE]: ['America/Lima'],\n [COUNTRY_CODES.VE]: ['America/Caracas'],\n\n // --- EUROPE ---\n [COUNTRY_CODES.GB]: ['Europe/London'],\n [COUNTRY_CODES.FR]: ['Europe/Paris'],\n [COUNTRY_CODES.DE]: ['Europe/Berlin'],\n [COUNTRY_CODES.IT]: ['Europe/Rome'],\n [COUNTRY_CODES.ES]: ['Europe/Madrid'],\n [COUNTRY_CODES.PT]: ['Europe/Lisbon'],\n [COUNTRY_CODES.NL]: ['Europe/Amsterdam'],\n [COUNTRY_CODES.SE]: ['Europe/Stockholm'],\n [COUNTRY_CODES.PL]: ['Europe/Warsaw'],\n [COUNTRY_CODES.FI]: ['Europe/Helsinki'],\n [COUNTRY_CODES.NO]: ['Europe/Oslo'],\n [COUNTRY_CODES.CH]: ['Europe/Zurich'],\n [COUNTRY_CODES.RU]: ['Europe/Moscow', 'Asia/Yekaterinburg', 'Asia/Irkutsk', 'Asia/Vladivostok'],\n [COUNTRY_CODES.UA]: ['Europe/Kyiv'],\n [COUNTRY_CODES.GR]: ['Europe/Athens'],\n [COUNTRY_CODES.TR]: ['Europe/Istanbul'],\n\n // --- ASIA ---\n [COUNTRY_CODES.CN]: ['Asia/Shanghai', 'Asia/Urumqi'],\n [COUNTRY_CODES.JP]: ['Asia/Tokyo'],\n [COUNTRY_CODES.KR]: ['Asia/Seoul'],\n [COUNTRY_CODES.IN]: ['Asia/Kolkata'],\n [COUNTRY_CODES.PK]: ['Asia/Karachi'],\n [COUNTRY_CODES.BD]: ['Asia/Dhaka'],\n [COUNTRY_CODES.TH]: ['Asia/Bangkok'],\n [COUNTRY_CODES.VN]: ['Asia/Ho_Chi_Minh'],\n [COUNTRY_CODES.MY]: ['Asia/Kuala_Lumpur'],\n [COUNTRY_CODES.SG]: ['Asia/Singapore'],\n [COUNTRY_CODES.ID]: [\n 'Asia/Jakarta',\n 'Asia/Makassar',\n 'Asia/Jayapura', // Indonesia has 3 time zones\n ],\n [COUNTRY_CODES.PH]: ['Asia/Manila'],\n [COUNTRY_CODES.AE]: ['Asia/Dubai'],\n [COUNTRY_CODES.SA]: ['Asia/Riyadh'],\n [COUNTRY_CODES.IR]: ['Asia/Tehran'],\n [COUNTRY_CODES.IQ]: ['Asia/Baghdad'],\n [COUNTRY_CODES.IL]: ['Asia/Jerusalem'],\n [COUNTRY_CODES.QA]: ['Asia/Qatar'],\n [COUNTRY_CODES.KW]: ['Asia/Kuwait'],\n\n // --- AFRICA ---\n [COUNTRY_CODES.EG]: ['Africa/Cairo'],\n [COUNTRY_CODES.NG]: ['Africa/Lagos'],\n [COUNTRY_CODES.ZA]: ['Africa/Johannesburg'],\n [COUNTRY_CODES.KE]: ['Africa/Nairobi'],\n [COUNTRY_CODES.MA]: ['Africa/Casablanca'],\n [COUNTRY_CODES.GH]: ['Africa/Accra'],\n [COUNTRY_CODES.ET]: ['Africa/Addis_Ababa'],\n [COUNTRY_CODES.TZ]: ['Africa/Dar_es_Salaam'],\n [COUNTRY_CODES.SN]: ['Africa/Dakar'],\n\n // --- OCEANIA ---\n [COUNTRY_CODES.AU]: [\n 'Australia/Sydney',\n 'Australia/Melbourne',\n 'Australia/Perth',\n 'Australia/Brisbane',\n ],\n [COUNTRY_CODES.NZ]: ['Pacific/Auckland'],\n [COUNTRY_CODES.FJ]: ['Pacific/Fiji'],\n [COUNTRY_CODES.PG]: ['Pacific/Port_Moresby'],\n\n // --- ANTARCTICA ---\n [COUNTRY_CODES.AQ]: ['Antarctica/McMurdo', 'Antarctica/Palmer', 'Antarctica/Casey'],\n};\n\nexport const ALL_COUNTRY_TIMEZONES: string[] = Array.from(\n new Set(Object.values(COUNTRY_TIMEZONES).flat())\n);\n\n/**\n * A single record describing the available time zones for a given country.\n */\nexport interface CountryTimezoneEntry {\n countryCode: CountryCode;\n timeZones: string[];\n}\n\n/**\n * Full mapping of all countries → time zones.\n */\nexport type CountryTimezones = Record<CountryCode, string[]>;\n\n/**\n * A flattened list of all unique IANA time zones supported globally.\n */\nexport type AllTimezones = string[];\n\nexport const DAYS_OF_WEEK = Array.from({ length: DAYS_IN_WEEK }, (_, i) => i);\nexport const HOURS_OF_DAY = Array.from({ length: EARLY_MORNING_HOURS }, (_, i) => i);\n\n/**\n * Type for time constant values\n */\nexport type TimeConstant = (typeof TIME_CONSTANTS)[keyof typeof TIME_CONSTANTS];\n","import type { BaseProviderConfig } from '@plyaz/types';\nimport { PAYMENT_METHOD, PAYMENT_PROVIDER_TYPE } from '@plyaz/types';\nimport { CURRENCY_CODES } from '../../../locale';\nimport { TIME_CONSTANTS } from '../../../time';\nimport { HTTP_STATUS } from '../../../http';\n\nexport const stripeConfig: BaseProviderConfig = {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n displayName: PAYMENT_PROVIDER_TYPE.Stripe,\n enabled: true,\n environment: {\n current: 'sandbox',\n apiUrls: {\n sandbox: 'https://api.stripe.com',\n staging: 'https://api.stripe.com',\n production: 'https://api.stripe.com',\n },\n environmentOverrides: {\n sandbox: {\n payments: {\n enabled: true,\n subscriptions: true,\n preauthorization: true,\n cancellation: true,\n updates: true,\n },\n },\n },\n debug: {\n enabled: true,\n logLevel: 'debug',\n logRequests: true,\n logResponses: true,\n },\n },\n\n credentials: {\n apiKey: globalThis.process.env.STRIPE_API_KEY ?? '',\n secretKey: globalThis.process.env.STRIPE_SECRET_KEY ?? '',\n additionalCredentials: {\n webhookSecret: globalThis.process.env.STRIPE_WEBHOOK_SECRET ?? '',\n merchantId: globalThis.process.env.STRIPE_MERCHANT_ID ?? '',\n },\n rotation: {\n enabled: false,\n intervalDays: 90,\n warningDays: 10,\n },\n encryption: {\n encrypted: false,\n },\n },\n\n webhooks: {\n enabled: true,\n endpoints: {\n primary: 'https://yourdomain.com/api/webhooks/stripe',\n },\n security: {\n signatureMethod: 'hmac_sha256',\n signatureHeader: 'Stripe-Signature',\n secret: globalThis.process.env.STRIPE_WEBHOOK_SECRET ?? '',\n timestampTolerance: 300,\n },\n events: {\n subscribed: [\n 'payment_intent.succeeded',\n 'payment_intent.payment_failed',\n 'charge.refunded',\n 'customer.subscription.created',\n 'customer.subscription.deleted',\n ],\n },\n reliability: {\n retryEnabled: true,\n maxRetries: 5,\n retryDelays: [\n TIME_CONSTANTS.SECOND,\n TIME_CONSTANTS.THREE_SECONDS,\n TIME_CONSTANTS.FIVE_SECONDS,\n TIME_CONSTANTS.TEN_SECONDS,\n ],\n timeout: 10000,\n deadLetterQueue: {\n enabled: true,\n retentionDays: 7,\n },\n },\n },\n features: {\n payments: {\n enabled: true,\n subscriptions: true,\n preauthorization: true,\n cancellation: true,\n updates: true,\n },\n refunds: {\n enabled: true,\n partial: true,\n instant: true,\n scheduled: false,\n },\n security: {\n threeDS: true,\n fraudDetection: true,\n velocityChecking: true,\n tokenization: true,\n },\n customers: {\n profiles: true,\n savedMethods: true,\n authentication: true,\n },\n marketplace: {\n enabled: true,\n splitPayments: true,\n connectedAccounts: true,\n instantPayouts: true,\n },\n advanced: {\n multiCurrency: true,\n currencyConversion: true,\n smartRouting: true,\n costOptimization: true,\n abTesting: true,\n },\n },\n\n /** Fees */\n fees: {\n baseFees: {\n percentage: 2.9,\n fixed: 30,\n currency: CURRENCY_CODES.USD,\n },\n methodFees: {\n [PAYMENT_METHOD.CreditCard]: { percentage: 2.9, fixed: 30, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.DebitCard]: { percentage: 2.9, fixed: 30, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.BankTransfer]: { percentage: 0.8, fixed: 0, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.PaypalAccount]: { percentage: 3.5, fixed: 30, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.CryptoBitcoin]: { percentage: 1.0, fixed: 0, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.CryptoEthereum]: { percentage: 1.0, fixed: 0, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.CryptoPolygon]: { percentage: 1.0, fixed: 0, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.CryptoOptimism]: { percentage: 1.0, fixed: 0, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.CryptoUsdc]: { percentage: 1.0, fixed: 0, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.CryptoUsdt]: { percentage: 1.0, fixed: 0, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.CryptoNativeToken]: {\n percentage: 1.0,\n fixed: 0,\n currency: CURRENCY_CODES.USD,\n },\n [PAYMENT_METHOD.PixInstant]: { percentage: 1.0, fixed: 0, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.BoletoBancario]: { percentage: 1.0, fixed: 0, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.SepaDirectDebit]: { percentage: 1.0, fixed: 0, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.IdealBank]: { percentage: 1.0, fixed: 0, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.SofortBanking]: { percentage: 1.0, fixed: 0, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.AlipayDigital]: { percentage: 1.0, fixed: 0, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.WechatPayDigital]: {\n percentage: 1.0,\n fixed: 0,\n currency: CURRENCY_CODES.USD,\n },\n [PAYMENT_METHOD.ApplePay]: { percentage: 2.9, fixed: 30, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.GooglePay]: { percentage: 2.9, fixed: 30, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.SamsungPay]: { percentage: 2.9, fixed: 30, currency: CURRENCY_CODES.USD },\n },\n volumeTiers: [\n {\n name: 'Tier 1',\n minimumVolume: { amount: 0, currency: CURRENCY_CODES.USD },\n feeRates: { percentage: 2.9, fixed: 30, currency: CURRENCY_CODES.USD },\n },\n {\n name: 'Tier 2',\n minimumVolume: { amount: 1000000, currency: CURRENCY_CODES.USD },\n feeRates: { percentage: 2.5, fixed: 25, currency: CURRENCY_CODES.USD },\n },\n ],\n regionalFees: {\n EU: { percentage: 2.5, fixed: 30, currency: CURRENCY_CODES.EUR },\n PK: { percentage: 3.0, fixed: 50, currency: CURRENCY_CODES.PKR },\n US: { percentage: 2.9, fixed: 30, currency: CURRENCY_CODES.USD },\n CA: { percentage: 2.9, fixed: 40, currency: CURRENCY_CODES.CAD },\n GB: { percentage: 2.8, fixed: 25, currency: CURRENCY_CODES.GBP },\n AU: { percentage: 3.0, fixed: 35, currency: CURRENCY_CODES.AUD },\n IN: { percentage: 3.5, fixed: 40, currency: CURRENCY_CODES.INR },\n JP: { percentage: 3.0, fixed: 300, currency: CURRENCY_CODES.JPY },\n CN: { percentage: 3.5, fixed: 20, currency: CURRENCY_CODES.CNY },\n SG: { percentage: 3.0, fixed: 30, currency: CURRENCY_CODES.SGD },\n BR: { percentage: 3.8, fixed: 50, currency: CURRENCY_CODES.BRL },\n MX: { percentage: 3.5, fixed: 40, currency: CURRENCY_CODES.MXN },\n ZA: { percentage: 3.0, fixed: 50, currency: CURRENCY_CODES.ZAR },\n AE: { percentage: 3.0, fixed: 25, currency: CURRENCY_CODES.AED },\n NZ: { percentage: 3.0, fixed: 35, currency: CURRENCY_CODES.NZD },\n },\n additionalFees: {\n crossBorder: { percentage: 1.0 },\n currencyConversion: { percentage: 1.0, minimumFee: 50 },\n chargeback: { amount: 1500, currency: CURRENCY_CODES.USD },\n refund: { percentage: 2.9, fixed: 30 },\n },\n calculation: {\n rounding: 'nearest',\n minimumFee: { amount: 50, currency: CURRENCY_CODES.USD },\n },\n },\n limits: {\n amounts: {\n minimum: {\n [PAYMENT_METHOD.CreditCard]: { amount: 10, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.DebitCard]: { amount: 10, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.BankTransfer]: { amount: 10, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.PaypalAccount]: { amount: 10, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.CryptoBitcoin]: { amount: 10, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.CryptoEthereum]: { amount: 10, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.CryptoPolygon]: { amount: 10, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.CryptoOptimism]: { amount: 10, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.CryptoUsdc]: { amount: 10, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.CryptoUsdt]: { amount: 10, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.CryptoNativeToken]: { amount: 10, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.PixInstant]: { amount: 10, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.BoletoBancario]: { amount: 10, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.SepaDirectDebit]: { amount: 10, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.IdealBank]: { amount: 10, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.SofortBanking]: { amount: 10, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.AlipayDigital]: { amount: 10, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.WechatPayDigital]: { amount: 10, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.ApplePay]: { amount: 10, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.GooglePay]: { amount: 10, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.SamsungPay]: { amount: 10, currency: CURRENCY_CODES.USD },\n },\n maximum: {\n [PAYMENT_METHOD.CreditCard]: { amount: 10000, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.DebitCard]: { amount: 10000, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.BankTransfer]: { amount: 100000, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.PaypalAccount]: { amount: 100000, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.CryptoBitcoin]: { amount: 100000, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.CryptoEthereum]: { amount: 100000, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.CryptoPolygon]: { amount: 100000, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.CryptoOptimism]: { amount: 100000, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.CryptoUsdc]: { amount: 100000, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.CryptoUsdt]: { amount: 100000, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.CryptoNativeToken]: { amount: 100000, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.PixInstant]: { amount: 10000, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.BoletoBancario]: { amount: 10000, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.SepaDirectDebit]: { amount: 100000, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.IdealBank]: { amount: 100000, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.SofortBanking]: { amount: 10000, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.AlipayDigital]: { amount: 10000, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.WechatPayDigital]: { amount: 10000, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.ApplePay]: { amount: 10000, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.GooglePay]: { amount: 10000, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.SamsungPay]: { amount: 10000, currency: CURRENCY_CODES.USD },\n },\n },\n velocity: {\n daily: {\n maxTransactions: 5000,\n maxAmount: { amount: 5000000, currency: CURRENCY_CODES.USD },\n },\n monthly: {\n maxTransactions: 100000,\n maxAmount: { amount: 100000000, currency: CURRENCY_CODES.USD },\n },\n },\n apiLimits: {\n requestsPerSecond: 100,\n requestsPerMinute: 6000,\n requestsPerHour: 360000,\n },\n providerSpecific: {},\n },\n\n performance: {\n timeouts: {\n connection: 5000,\n request: 15000,\n total: 20000,\n },\n retries: {\n enabled: true,\n maxAttempts: 0,\n strategy: 'exponential',\n baseDelay: 1000,\n maxDelay: 10000,\n jitter: true,\n retryableStatusCodes: [\n HTTP_STATUS.REQUEST_TIMEOUT,\n HTTP_STATUS.TOO_MANY_REQUESTS,\n HTTP_STATUS.INTERNAL_SERVER_ERROR,\n HTTP_STATUS.BAD_GATEWAY,\n HTTP_STATUS.SERVICE_UNAVAILABLE,\n HTTP_STATUS.GATEWAY_TIMEOUT,\n ],\n },\n circuitBreaker: {\n enabled: true,\n failureThreshold: 5,\n windowSize: 60_000,\n timeout: 30_000,\n minimumRequests: 10,\n },\n connectionPool: {\n maxConnections: 50,\n minConnections: 5,\n idleTimeout: 30000,\n validationInterval: 60000,\n },\n caching: {\n enabled: true,\n ttl: {\n getPaymentStatus: 60,\n getTransaction: 60,\n },\n maxSize: 1000,\n evictionStrategy: 'lru',\n },\n },\n customSettings: {\n enableRadar: true,\n enableApplePay: true,\n },\n};\n","import { CURRENCY_CODES } from '../locale';\n\n// Convert enum to array for inclusion checks\nexport const SUPPORTED_CURRENCIES = Object.values(CURRENCY_CODES);\n\n// Validation Messages\nexport const VALIDATION_MESSAGES = {\n AMOUNT: 'Amount must be a positive number with valid currency format.',\n CORE_FIELDS:\n 'Missing required core fields: amount, paymentMethod, userId, userType, productId, productType.',\n CURRENCY: 'Unsupported or missing currency code.',\n METADATA: 'Invalid metadata structure or missing required metadata fields.',\n RISK_ASSESSMENT: 'Invalid or inconsistent risk assessment fields.',\n SCHEDULING: 'Invalid scheduling configuration.',\n REFUND_TRANSACTION_ID: 'Transaction ID is required.',\n REFUND_PROVIDER: 'Provider is required.',\n REFUND_AMOUNT: 'Refund amount must be positive.',\n};\n\n// Validator Names\nexport const VALIDATOR_NAMES = {\n AMOUNT: 'AmountValidator',\n CORE_FIELDS: 'CoreFieldValidator',\n CURRENCY: 'CurrencyValidator',\n METADATA: 'MetadataValidator',\n RISK_ASSESSMENT: 'RiskAssessmentValidator',\n SCHEDULING: 'SchedulingValidator',\n};\n\n// Core Fields\nexport const CORE_FIELDS = [\n 'amount',\n 'paymentMethod',\n 'userId',\n 'userType',\n 'productId',\n 'productType',\n] as const;\n\n// Billing Cycles\nexport const VALID_BILLING_CYCLES = ['monthly', 'quarterly', 'yearly'] as const;\n\n// Risk Levels\nexport const VALID_RISK_LEVELS = ['low', 'medium', 'high'] as const;\n\n// Recurrence Frequencies\nexport const VALID_RECURRENCE_FREQUENCIES = [\n 'daily',\n 'weekly',\n 'monthly',\n 'quarterly',\n 'yearly',\n] as const;\n\n// Numeric and Length Constants\nexport const MIN_POSITIVE_AMOUNT = 0;\nexport const CURRENCY_CODE_LENGTH = 3;\n","/**\n * @file ABTestingConfig.ts\n * @description\n * Production-ready A/B testing configuration for routing experiments.\n * Currently supports Cost Optimization strategy, with future extensibility\n * for reliability, performance, and hybrid routing.\n */\n\nimport {\n type ABTestingConfig,\n COST_OPTIMIZATION_STRATEGY,\n PAYMENT_METHOD,\n PAYMENT_PROVIDER_TYPE,\n ROUTING_STRATEGY,\n} from '@plyaz/types';\nimport { COUNTRY_CODES } from '../../../../locale';\n\n/**\n * Global A/B Testing Configuration\n *\n * Used by the routing engine to control experiment behavior, traffic allocation,\n * and dynamic routing strategy selection.\n */\nexport const ABTesting: ABTestingConfig = {\n enabled: true,\n\n /**\n * Default experiment ID used when no specific test is matched\n * or when experiment assignment fails.\n */\n defaultExperimentId: 'cost_vs_reliability_v1',\n\n /**\n * Registered A/B test experiments.\n * Each experiment defines targeting, traffic allocation, and routing overrides.\n */\n experiments: [\n {\n id: 'cost_vs_reliability_v1',\n description:\n 'Compare cost-optimized Moonpay routing vs. control group (Stripe reliability) for USD credit card payments in NA and APAC regions.',\n\n /**\n * Traffic allocation (in percentage).\n * Control: Default routing logic (e.g., reliability-first / baseline).\n * Variant: Modified routing logic (e.g., cost-optimized Moonpay).\n */\n allocation: {\n control: 70,\n variant: 30,\n },\n\n /**\n * Experiment-specific overrides for variant users.\n * These are merged with the default routing configuration.\n */\n overrides: {\n strategy: ROUTING_STRATEGY.CostOptimized,\n preferredProviders: [PAYMENT_PROVIDER_TYPE.Moonpay],\n costOptimization: {\n enabled: true,\n strategy: COST_OPTIMIZATION_STRATEGY.Aggressive,\n // Additional configuration fields can be extended here when full cost optimization\n // support is implemented.\n },\n },\n\n /**\n * Targeting criteria for experiment eligibility.\n */\n targeting: {\n regions: [\n // North America\n COUNTRY_CODES.US,\n COUNTRY_CODES.CA,\n COUNTRY_CODES.MX,\n\n // APAC\n COUNTRY_CODES.SG,\n COUNTRY_CODES.HK,\n COUNTRY_CODES.JP,\n COUNTRY_CODES.KR,\n COUNTRY_CODES.AU,\n COUNTRY_CODES.NZ,\n COUNTRY_CODES.IN,\n COUNTRY_CODES.MY,\n COUNTRY_CODES.TH,\n COUNTRY_CODES.ID,\n COUNTRY_CODES.PH,\n COUNTRY_CODES.VN,\n\n // Europe + UK\n COUNTRY_CODES.GB, // United Kingdom\n COUNTRY_CODES.IE, // Ireland\n COUNTRY_CODES.FR, // France\n COUNTRY_CODES.DE, // Germany\n COUNTRY_CODES.IT, // Italy\n COUNTRY_CODES.ES, // Spain\n COUNTRY_CODES.PT, // Portugal\n COUNTRY_CODES.NL, // Netherlands\n COUNTRY_CODES.BE, // Belgium\n COUNTRY_CODES.LU, // Luxembourg\n COUNTRY_CODES.CH, // Switzerland\n COUNTRY_CODES.AT, // Austria\n COUNTRY_CODES.SE, // Sweden\n COUNTRY_CODES.NO, // Norway\n COUNTRY_CODES.DK, // Denmark\n COUNTRY_CODES.FI, // Finland\n COUNTRY_CODES.PL, // Poland\n COUNTRY_CODES.CZ, // Czech Republic\n COUNTRY_CODES.HU, // Hungary\n COUNTRY_CODES.GR, // Greece\n ],\n\n paymentMethods: [PAYMENT_METHOD.CreditCard],\n },\n\n /**\n * Scheduling controls.\n * Start immediately; no predefined end date.\n */\n schedule: {\n start: new Date(),\n end: undefined,\n },\n\n /** Experiment activation flag. */\n active: true,\n },\n ],\n\n /**\n * Fallback behavior when experiment assignment or execution fails.\n */\n fallback: {\n useControlOnFailure: true,\n logErrors: true,\n },\n};\n","/**\n * A centralized collection of numeric constants used to avoid magic numbers across the codebase.\n *\n * Purpose:\n * - Provide named aliases for common numeric values so intent is clearer and maintenance is easier.\n * - Keep commonly used numeric literals (counts, thresholds, time durations, limits) in one place.\n *\n * Typical uses:\n * - Time and duration calculations (e.g., seconds/minutes/hours, TTLs, timeouts).\n * - Pagination, limit and capacity defaults.\n * - Validation thresholds, scaling factors and numeric formatting.\n * - Bit/byte or base arithmetic where small numeric constants improve readability.\n *\n * Properties (brief intent and common usage):\n * - TWO (2) — small counts, boolean-like numeric operations, pair-related logic.\n * - FIVE (5) — small retry counts or UI/validation limits.\n * - NINE (9) — index/format boundaries or small-range checks.\n * - TEN (10) — decimal/base operations, digit limits, common loop bounds.\n * - SIXTEEN (16) — bit/hex operations, buffer sizes or base-16 related math.\n * - TWENTY_FOUR (24) — hours-in-day, daily calculations.\n * - THIRTY_SIX (36) — base-36 or domain-specific scaling factors.\n * - SIXTY (60) — seconds/minutes conversions.\n * - NINETY (90) — percentage/angle thresholds or large-range caps.\n * - HUNDERD (100) — percentage base or general scaling (note: name preserved for backward compatibility).\n * - THOUSAND (1000) — millisecond/rounding bases or thousand-scale thresholds.\n * - FIVE_THOUSAND (5000) — medium-duration timeouts or capacity hints (e.g., ms).\n * - THREE_HUNDERD (300) — short timeouts or conventional numeric boundaries (name preserved).\n * - THIRTY_SIX_HUNDERD (3600) — seconds-per-hour; common default TTL/cache durations (3600 seconds).\n * - THIRTY_THOUSAND (30000) — longer timeouts/polling intervals in milliseconds.\n *\n * Remarks:\n * - Using these constants improves readability and makes it easier to change a value in one place.\n * - Several keys contain spelling inconsistencies (e.g., \"HUNDERD\", \"THREE_HUNDERD\", \"THIRTY_SIX_HUNDERD\") — keep names stable to avoid breaking callers; consider normalizing names in a planned refactor.\n *\n * Example:\n * - const timeoutMs = digits.FIVE_THOUSAND; // use 5000 ms timeout\n * - const hourlySeconds = digits.THIRTY_SIX_HUNDERD; // use 3600 seconds for TTL\n */\nexport const NUMERIX = {\n TWO: 2,\n FIVE: 5,\n NINE: 9,\n TEN: 10,\n TWENTY_FOUR: 24,\n THIRTY_SIX: 36,\n FIFTY: 50,\n SIXTY: 60,\n NINETY: 90,\n HUNDERD: 100,\n FIVE_HUNDERD: 500,\n ONE_THOUSAND_AND_FIVE_HUNDERD: 1500,\n THOUSAND: 1000,\n TWO_THOUSAND: 2000,\n THREE_THOUSAND: 3000,\n FOUR_THOUSAND: 4000,\n FIVE_THOUSAND: 5000,\n THIRTY_SIX_HUNDERD: 3600,\n THREE_HUNDERD: 300,\n SIXTEEN: 16,\n TWENTY_THOUSAND: 20000,\n THIRTY_THOUSAND: 30000,\n FORTY_FIVE_THOUSAND: 45000,\n FIFTY_THOUSAND: 50000,\n SIXTY_THOUSAND: 60000,\n};\n","import {\n FAIL_OVER_STRATEGY,\n type FailoverConfiguration,\n PAYMENT_PROVIDER_TYPE,\n} from '@plyaz/types';\nimport { NUMERIX } from '../../../../../db';\n\nexport const FAILOVER_PRIORITY_ORDER: FailoverConfiguration = {\n enabled: true,\n strategy: FAIL_OVER_STRATEGY.PriorityOrder,\n providerOrder: [PAYMENT_PROVIDER_TYPE.Stripe, PAYMENT_PROVIDER_TYPE.Moonpay],\n failureDetection: {\n consecutiveFailureThreshold: 5,\n errorRateThreshold: 10,\n responseTimeThreshold: NUMERIX.FOUR_THOUSAND,\n healthCheckInterval: 30,\n },\n retry: {\n enabled: true,\n maxAttempts: 1,\n delays: [NUMERIX.THOUSAND, NUMERIX.TWO_THOUSAND],\n exponentialBackoff: false,\n },\n recovery: {\n autoRecovery: false,\n recoveryInterval: 120,\n recoveryThreshold: 10,\n gradualRestoration: false,\n },\n circuitBreaker: {\n enabled: true,\n failureThreshold: 8,\n successThreshold: 5,\n timeout: NUMERIX.SIXTY_THOUSAND,\n },\n};\n","import {\n FAIL_OVER_STRATEGY,\n type FailoverConfiguration,\n PAYMENT_PROVIDER_TYPE,\n} from '@plyaz/types';\nimport { NUMERIX } from '../../../../../db';\n\nexport const FAILOVER_NEXT_AVAILABLE: FailoverConfiguration = {\n enabled: true,\n strategy: FAIL_OVER_STRATEGY.NextAvailable,\n providerOrder: [PAYMENT_PROVIDER_TYPE.Stripe, PAYMENT_PROVIDER_TYPE.Moonpay],\n failureDetection: {\n consecutiveFailureThreshold: 3,\n errorRateThreshold: 5, // %\n responseTimeThreshold: NUMERIX.THREE_THOUSAND, // 3s\n healthCheckInterval: 15, // sec\n },\n retry: {\n enabled: true,\n maxAttempts: 1,\n delays: [NUMERIX.FIVE_HUNDERD, NUMERIX.THOUSAND, NUMERIX.TWO_THOUSAND],\n exponentialBackoff: true,\n },\n recovery: {\n autoRecovery: true,\n recoveryInterval: 60, // sec\n recoveryThreshold: 5, // success events\n gradualRestoration: true,\n },\n circuitBreaker: {\n enabled: true,\n failureThreshold: 5,\n successThreshold: 3,\n timeout: NUMERIX.THIRTY_THOUSAND, // ms\n },\n};\n","import {\n FAIL_OVER_STRATEGY,\n type FailoverConfiguration,\n PAYMENT_PROVIDER_TYPE,\n} from '@plyaz/types';\nimport { NUMERIX } from '../../../../../db';\n\nexport const FAILOVER_PERFORMANCE_BASED: FailoverConfiguration = {\n enabled: true,\n strategy: FAIL_OVER_STRATEGY.PerformanceBased,\n providerOrder: [PAYMENT_PROVIDER_TYPE.Stripe, PAYMENT_PROVIDER_TYPE.Moonpay],\n failureDetection: {\n consecutiveFailureThreshold: 2,\n errorRateThreshold: 3,\n responseTimeThreshold: NUMERIX.TWO_THOUSAND,\n healthCheckInterval: 10,\n },\n retry: {\n enabled: true,\n maxAttempts: 1,\n delays: [NUMERIX.FIVE_HUNDERD, NUMERIX.THOUSAND],\n exponentialBackoff: true,\n },\n recovery: {\n autoRecovery: true,\n recoveryInterval: 30,\n recoveryThreshold: 3,\n gradualRestoration: true,\n },\n circuitBreaker: {\n enabled: true,\n failureThreshold: 4,\n successThreshold: 2,\n timeout: NUMERIX.TWENTY_THOUSAND,\n },\n};\n","import {\n FAIL_OVER_STRATEGY,\n type FailoverConfiguration,\n PAYMENT_PROVIDER_TYPE,\n} from '@plyaz/types';\nimport { NUMERIX } from '../../../../../db';\n\nexport const FAILOVER_LOAD_BALANCED: FailoverConfiguration = {\n enabled: true,\n strategy: FAIL_OVER_STRATEGY.LoadBalanced,\n providerOrder: [PAYMENT_PROVIDER_TYPE.Stripe, PAYMENT_PROVIDER_TYPE.Moonpay],\n failureDetection: {\n consecutiveFailureThreshold: 3,\n errorRateThreshold: 5,\n responseTimeThreshold: NUMERIX.THREE_THOUSAND,\n healthCheckInterval: 20,\n },\n retry: {\n enabled: true,\n maxAttempts: 1,\n delays: [NUMERIX.FIVE_HUNDERD, NUMERIX.THOUSAND, NUMERIX.TWO_THOUSAND],\n exponentialBackoff: true,\n },\n recovery: {\n autoRecovery: true,\n recoveryInterval: 45,\n recoveryThreshold: 4,\n gradualRestoration: true,\n },\n circuitBreaker: {\n enabled: true,\n failureThreshold: 6,\n successThreshold: 3,\n timeout: NUMERIX.FORTY_FIVE_THOUSAND,\n },\n};\n","import {\n FAIL_OVER_STRATEGY,\n type FailoverConfiguration,\n PAYMENT_PROVIDER_TYPE,\n} from '@plyaz/types';\nimport { NUMERIX } from '../../../../../db';\n\nexport const FAILOVER_GEOGRAPHIC: FailoverConfiguration = {\n enabled: true,\n strategy: FAIL_OVER_STRATEGY.Geographic,\n providerOrder: [PAYMENT_PROVIDER_TYPE.Moonpay, PAYMENT_PROVIDER_TYPE.Stripe],\n failureDetection: {\n consecutiveFailureThreshold: 3,\n errorRateThreshold: 6,\n responseTimeThreshold: NUMERIX.THREE_THOUSAND,\n healthCheckInterval: 25,\n },\n retry: {\n enabled: true,\n maxAttempts: 1,\n delays: [NUMERIX.THOUSAND, NUMERIX.TWO_THOUSAND],\n exponentialBackoff: true,\n },\n recovery: {\n autoRecovery: true,\n recoveryInterval: 90,\n recoveryThreshold: 7,\n gradualRestoration: true,\n },\n circuitBreaker: {\n enabled: true,\n failureThreshold: 5,\n successThreshold: 4,\n timeout: NUMERIX.FIFTY_THOUSAND,\n },\n};\n","import { FAIL_OVER_STRATEGY, type FailoverConfiguration } from '@plyaz/types';\nimport { FAILOVER_PRIORITY_ORDER } from './strategies/priority-order.config';\nimport { FAILOVER_NEXT_AVAILABLE } from './strategies/next-available.config';\nimport { FAILOVER_PERFORMANCE_BASED } from './strategies/performance-based.config';\nimport { FAILOVER_LOAD_BALANCED } from './strategies/load-balanced.config';\nimport { FAILOVER_GEOGRAPHIC } from './strategies/geographic.config';\n\nexport const FAILOVER_REGISTRY: Record<FAIL_OVER_STRATEGY, FailoverConfiguration> = {\n [FAIL_OVER_STRATEGY.PriorityOrder]: FAILOVER_PRIORITY_ORDER,\n [FAIL_OVER_STRATEGY.NextAvailable]: FAILOVER_NEXT_AVAILABLE,\n [FAIL_OVER_STRATEGY.PerformanceBased]: FAILOVER_PERFORMANCE_BASED,\n [FAIL_OVER_STRATEGY.LoadBalanced]: FAILOVER_LOAD_BALANCED,\n [FAIL_OVER_STRATEGY.Geographic]: FAILOVER_GEOGRAPHIC,\n};\n","import {\n type GeographicRoutingConfig,\n PAYMENT_METHOD,\n PAYMENT_PROVIDER_TYPE,\n REGULATORY_FRAMEWORK,\n TRANSACTION_TYPE,\n} from '@plyaz/types';\nimport { SUPPORTED_CURRENCIES } from '../../../validators';\n\n/**\n * Global geographic routing configuration\n *\n * Defines provider routing, regulations, and optimizations\n * per geographic region and currency zone.\n */\nexport const Geographic: GeographicRoutingConfig = {\n enabled: true,\n\n /** Region-based preferences */\n regionPreferences: {\n /** Pakistan */\n PK: {\n regionId: 'PK',\n preferredProviders: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 95,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 92, maxResponseTime: 1800, checkInterval: 10 },\n },\n ],\n localPaymentMethods: [PAYMENT_METHOD.BankTransfer, PAYMENT_METHOD.CryptoNativeToken],\n regulations: {\n kycRequired: true,\n transactionLimits: {\n daily: { amount: 50000, currency: 'PKR' },\n monthly: { amount: 1000000, currency: 'PKR' },\n },\n requiredLicenses: [],\n },\n optimizations: {\n preferredDataCenters: ['asia-south1'],\n cdnEndpoints: ['cdn-pk.plyaz.com'],\n cachingStrategy: 'standard',\n },\n },\n\n /** India */\n IN: {\n regionId: 'IN',\n preferredProviders: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 85,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 95, maxResponseTime: 1600, checkInterval: 8 },\n },\n ],\n localPaymentMethods: [PAYMENT_METHOD.BankTransfer],\n regulations: {\n kycRequired: true,\n transactionLimits: {\n daily: { amount: 100000, currency: 'INR' },\n monthly: { amount: 2000000, currency: 'INR' },\n },\n requiredLicenses: ['RBI'],\n },\n optimizations: {\n preferredDataCenters: ['asia-south2'],\n cdnEndpoints: ['cdn-in.plyaz.com'],\n cachingStrategy: 'standard',\n },\n },\n\n /** United Arab Emirates */\n AE: {\n regionId: 'AE',\n preferredProviders: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 90,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 94, maxResponseTime: 1700, checkInterval: 10 },\n },\n ],\n localPaymentMethods: [PAYMENT_METHOD.BankTransfer, PAYMENT_METHOD.CreditCard],\n regulations: {\n kycRequired: true,\n transactionLimits: {\n daily: { amount: 50000, currency: 'AED' },\n monthly: { amount: 1000000, currency: 'AED' },\n },\n requiredLicenses: ['CBUAE'],\n },\n optimizations: {\n preferredDataCenters: ['me-central1'],\n cdnEndpoints: ['cdn-ae.plyaz.com'],\n cachingStrategy: 'standard',\n },\n },\n\n /** Singapore */\n SG: {\n regionId: 'SG',\n preferredProviders: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 95, maxResponseTime: 1500, checkInterval: 8 },\n },\n ],\n localPaymentMethods: [PAYMENT_METHOD.BankTransfer, PAYMENT_METHOD.CryptoNativeToken],\n regulations: {\n kycRequired: true,\n transactionLimits: {\n daily: { amount: 60000, currency: 'SGD' },\n monthly: { amount: 1200000, currency: 'SGD' },\n },\n requiredLicenses: ['MAS'],\n },\n optimizations: {\n preferredDataCenters: ['asia-southeast1'],\n cdnEndpoints: ['cdn-sg.plyaz.com'],\n cachingStrategy: 'standard',\n },\n },\n\n /** Japan */\n JP: {\n regionId: 'JP',\n preferredProviders: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 90,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 97, maxResponseTime: 1200, checkInterval: 6 },\n },\n ],\n localPaymentMethods: [PAYMENT_METHOD.CreditCard, PAYMENT_METHOD.BankTransfer],\n regulations: {\n kycRequired: true,\n transactionLimits: {\n daily: { amount: 8000000, currency: 'JPY' },\n monthly: { amount: 20000000, currency: 'JPY' },\n },\n requiredLicenses: ['FSA'],\n },\n optimizations: {\n preferredDataCenters: ['asia-northeast1'],\n cdnEndpoints: ['cdn-jp.plyaz.com'],\n cachingStrategy: 'aggressive',\n },\n },\n\n /** United States */\n US: {\n regionId: 'US',\n preferredProviders: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 95,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 98, maxResponseTime: 1000, checkInterval: 5 },\n },\n ],\n localPaymentMethods: [PAYMENT_METHOD.CreditCard, PAYMENT_METHOD.BankTransfer],\n regulations: {\n kycRequired: true,\n transactionLimits: {\n daily: { amount: 100000, currency: 'USD' },\n monthly: { amount: 2000000, currency: 'USD' },\n },\n requiredLicenses: ['FINTRAC', 'MSB'],\n },\n optimizations: {\n preferredDataCenters: ['us-central1'],\n cdnEndpoints: ['cdn-us.plyaz.com'],\n cachingStrategy: 'aggressive',\n },\n },\n\n /**Canada */\n CA: {\n regionId: 'CA',\n preferredProviders: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 85,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 96, maxResponseTime: 1300, checkInterval: 6 },\n },\n ],\n localPaymentMethods: [PAYMENT_METHOD.CreditCard, PAYMENT_METHOD.BankTransfer],\n regulations: {\n kycRequired: true,\n transactionLimits: {\n daily: { amount: 100000, currency: 'CAD' },\n monthly: { amount: 1500000, currency: 'CAD' },\n },\n requiredLicenses: ['FINTRAC'],\n },\n optimizations: {\n preferredDataCenters: ['northamerica-northeast1'],\n cdnEndpoints: ['cdn-ca.plyaz.com'],\n cachingStrategy: 'standard',\n },\n },\n\n /** European Union */\n EU: {\n regionId: 'EU',\n preferredProviders: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 90,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 96, maxResponseTime: 1300, checkInterval: 5 },\n },\n ],\n localPaymentMethods: [PAYMENT_METHOD.CreditCard],\n regulations: {\n kycRequired: true,\n transactionLimits: {\n daily: { amount: 80000, currency: 'EUR' },\n monthly: { amount: 1500000, currency: 'EUR' },\n },\n requiredLicenses: ['PSD2'],\n },\n optimizations: {\n preferredDataCenters: ['europe-west1'],\n cdnEndpoints: ['cdn-eu.plyaz.com'],\n cachingStrategy: 'standard',\n },\n },\n\n /**United Kingdom */\n UK: {\n regionId: 'UK',\n preferredProviders: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 90,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 96, maxResponseTime: 1400, checkInterval: 6 },\n },\n ],\n localPaymentMethods: [PAYMENT_METHOD.CreditCard, PAYMENT_METHOD.BankTransfer],\n regulations: {\n kycRequired: true,\n transactionLimits: {\n daily: { amount: 70000, currency: 'GBP' },\n monthly: { amount: 1400000, currency: 'GBP' },\n },\n requiredLicenses: ['FCA'],\n },\n optimizations: {\n preferredDataCenters: ['europe-west2'],\n cdnEndpoints: ['cdn-uk.plyaz.com'],\n cachingStrategy: 'standard',\n },\n },\n\n /** Australia */\n AU: {\n regionId: 'AU',\n preferredProviders: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 85,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 95, maxResponseTime: 1500, checkInterval: 8 },\n },\n ],\n localPaymentMethods: [PAYMENT_METHOD.BankTransfer, PAYMENT_METHOD.CreditCard],\n regulations: {\n kycRequired: true,\n transactionLimits: {\n daily: { amount: 100000, currency: 'AUD' },\n monthly: { amount: 2000000, currency: 'AUD' },\n },\n requiredLicenses: ['AUSTRAC'],\n },\n optimizations: {\n preferredDataCenters: ['australia-southeast1'],\n cdnEndpoints: ['cdn-au.plyaz.com'],\n cachingStrategy: 'standard',\n },\n },\n },\n\n /** Cross-border routing setup */\n crossBorder: {\n enabled: true,\n preferredProviders: [PAYMENT_PROVIDER_TYPE.Stripe, PAYMENT_PROVIDER_TYPE.Moonpay],\n additionalFees: { percentage: 2.5 },\n },\n\n /** Global AML/KYC compliance rules */\n compliance: {\n enabled: true,\n rules: {\n GLOBAL: [\n {\n ruleId: 'aml_kyc_high_value',\n description: 'High-value transactions require KYC & AML checks',\n framework: REGULATORY_FRAMEWORK.Aml,\n conditions: {\n transactionTypes: [\n TRANSACTION_TYPE.Payment,\n TRANSACTION_TYPE.Refund,\n TRANSACTION_TYPE.Subscription,\n ],\n amountThresholds: { min: { amount: 1000, currency: 'USD' } },\n },\n actions: { verification: ['identity_document'], reporting: true, approval: true },\n enforcement: 'mandatory',\n },\n ],\n },\n },\n\n /** Currency zones configuration */\n currencyZones: {\n enabled: true,\n zones: {\n Fiat: {\n currencies: SUPPORTED_CURRENCIES,\n preferredProviders: [PAYMENT_PROVIDER_TYPE.Stripe],\n },\n Crypto: {\n currencies: ['BTC', 'ETH', 'USDT'],\n preferredProviders: [PAYMENT_PROVIDER_TYPE.Moonpay],\n },\n },\n },\n};\n","import { PERFORMANCE_METRIC_TYPE, type PerformanceMonitoringConfig } from '@plyaz/types';\n\n/**\n * Performance monitoring configuration\n *\n * Defines which metrics to collect, how often, and alert thresholds.\n * Tuned for high-availability payment routing with moderate sampling.\n *\n * @see PerformanceMonitoringConfig\n */\nexport const Performance: PerformanceMonitoringConfig = {\n /** Enable or disable performance monitoring globally */\n enabled: true,\n\n /** Metrics to collect and report */\n metrics: [\n PERFORMANCE_METRIC_TYPE.Cost,\n PERFORMANCE_METRIC_TYPE.SuccessRate,\n PERFORMANCE_METRIC_TYPE.Latency,\n PERFORMANCE_METRIC_TYPE.ErrorRate,\n PERFORMANCE_METRIC_TYPE.Throughput,\n ],\n\n /** Data retention period in minutes (1440 = 24 hours) */\n retentionPeriod: 1440,\n\n /** Sampling rate (0–1): 0.5 means 50% of events are sampled */\n samplingRate: 0.5,\n\n /** Alerting thresholds and sensitivity configuration */\n alerting: {\n enabled: true,\n\n /** Trigger alert if error rate exceeds 2% */\n errorRateThreshold: 2,\n\n /** Trigger alert if latency exceeds 1500ms */\n latencyThreshold: 1500,\n\n /** Trigger alert if success rate drops below 98% */\n successRateThreshold: 98,\n\n /** Minimum number of samples required before evaluating alert conditions */\n minSampleSize: 100,\n },\n\n /** Integration endpoints for metrics and logs */\n integrations: {\n metricsSink: 'prometheus',\n logSink: 'logstash',\n },\n};\n","import {\n type LoadBalancingConfig,\n LOAD_BALANCING_STRATEGY,\n PAYMENT_PROVIDER_TYPE,\n} from '@plyaz/types';\nimport { NUMERIX } from '../../../../../db';\nimport { TIME_CONSTANTS } from '../../../../../time';\n\nexport const WeightedLoadBalancing: LoadBalancingConfig = {\n enabled: true,\n strategy: LOAD_BALANCING_STRATEGY.Weighted,\n providerWeights: {\n [PAYMENT_PROVIDER_TYPE.Stripe]: 40,\n [PAYMENT_PROVIDER_TYPE.Moonpay]: 60,\n [PAYMENT_PROVIDER_TYPE.Paypal]: 0,\n [PAYMENT_PROVIDER_TYPE.CheckoutCom]: 0,\n [PAYMENT_PROVIDER_TYPE.Adyen]: 0,\n [PAYMENT_PROVIDER_TYPE.CoinbaseCommerce]: 0,\n [PAYMENT_PROVIDER_TYPE.BlockchainBridge]: 0,\n [PAYMENT_PROVIDER_TYPE.Pix]: 0,\n [PAYMENT_PROVIDER_TYPE.Boleto]: 0,\n [PAYMENT_PROVIDER_TYPE.Sepa]: 0,\n [PAYMENT_PROVIDER_TYPE.Ideal]: 0,\n [PAYMENT_PROVIDER_TYPE.Sofort]: 0,\n [PAYMENT_PROVIDER_TYPE.Alipay]: 0,\n [PAYMENT_PROVIDER_TYPE.WechatPay]: 0,\n [PAYMENT_PROVIDER_TYPE.MockProvider]: 0,\n },\n maxConnections: {\n [PAYMENT_PROVIDER_TYPE.Stripe]: NUMERIX.THOUSAND,\n [PAYMENT_PROVIDER_TYPE.Moonpay]: NUMERIX.FIVE_HUNDERD,\n [PAYMENT_PROVIDER_TYPE.Paypal]: 0,\n [PAYMENT_PROVIDER_TYPE.CheckoutCom]: 0,\n [PAYMENT_PROVIDER_TYPE.Adyen]: 0,\n [PAYMENT_PROVIDER_TYPE.CoinbaseCommerce]: 0,\n [PAYMENT_PROVIDER_TYPE.BlockchainBridge]: 0,\n [PAYMENT_PROVIDER_TYPE.Pix]: 0,\n [PAYMENT_PROVIDER_TYPE.Boleto]: 0,\n [PAYMENT_PROVIDER_TYPE.Sepa]: 0,\n [PAYMENT_PROVIDER_TYPE.Ideal]: 0,\n [PAYMENT_PROVIDER_TYPE.Sofort]: 0,\n [PAYMENT_PROVIDER_TYPE.Alipay]: 0,\n [PAYMENT_PROVIDER_TYPE.WechatPay]: 0,\n [PAYMENT_PROVIDER_TYPE.MockProvider]: 0,\n },\n stickiness: {\n enabled: true,\n duration: TIME_CONSTANTS.HOUR, // 1 hour\n key: 'user',\n },\n autoRebalance: {\n enabled: true,\n interval: TIME_CONSTANTS.FIVE_MINUTES, // every 5 minutes\n basedOn: 'cost',\n },\n};\n","import {\n type LoadBalancingConfig,\n LOAD_BALANCING_STRATEGY,\n PAYMENT_PROVIDER_TYPE,\n} from '@plyaz/types';\n\nexport const RoundRobinLoadBalancing: LoadBalancingConfig = {\n enabled: true,\n strategy: LOAD_BALANCING_STRATEGY.RoundRobin,\n providerWeights: {\n [PAYMENT_PROVIDER_TYPE.Stripe]: 1,\n [PAYMENT_PROVIDER_TYPE.Moonpay]: 1,\n [PAYMENT_PROVIDER_TYPE.Paypal]: 0,\n [PAYMENT_PROVIDER_TYPE.CheckoutCom]: 0,\n [PAYMENT_PROVIDER_TYPE.Adyen]: 0,\n [PAYMENT_PROVIDER_TYPE.CoinbaseCommerce]: 0,\n [PAYMENT_PROVIDER_TYPE.BlockchainBridge]: 0,\n [PAYMENT_PROVIDER_TYPE.Pix]: 0,\n [PAYMENT_PROVIDER_TYPE.Boleto]: 0,\n [PAYMENT_PROVIDER_TYPE.Sepa]: 0,\n [PAYMENT_PROVIDER_TYPE.Ideal]: 0,\n [PAYMENT_PROVIDER_TYPE.Sofort]: 0,\n [PAYMENT_PROVIDER_TYPE.Alipay]: 0,\n [PAYMENT_PROVIDER_TYPE.WechatPay]: 0,\n [PAYMENT_PROVIDER_TYPE.MockProvider]: 0,\n },\n stickiness: { enabled: false, duration: 0, key: 'user' },\n autoRebalance: { enabled: false, interval: 0, basedOn: 'mixed' },\n};\n","import {\n type LoadBalancingConfig,\n LOAD_BALANCING_STRATEGY,\n PAYMENT_PROVIDER_TYPE,\n} from '@plyaz/types';\nimport { NUMERIX } from '../../../../../db';\n\nexport const LeastConnectionsLoadBalancing: LoadBalancingConfig = {\n enabled: true,\n strategy: LOAD_BALANCING_STRATEGY.LeastConnections,\n providerWeights: {\n [PAYMENT_PROVIDER_TYPE.Stripe]: 1,\n [PAYMENT_PROVIDER_TYPE.Moonpay]: 1,\n [PAYMENT_PROVIDER_TYPE.Paypal]: 0,\n [PAYMENT_PROVIDER_TYPE.CheckoutCom]: 0,\n [PAYMENT_PROVIDER_TYPE.Adyen]: 0,\n [PAYMENT_PROVIDER_TYPE.CoinbaseCommerce]: 0,\n [PAYMENT_PROVIDER_TYPE.BlockchainBridge]: 0,\n [PAYMENT_PROVIDER_TYPE.Pix]: 0,\n [PAYMENT_PROVIDER_TYPE.Boleto]: 0,\n [PAYMENT_PROVIDER_TYPE.Sepa]: 0,\n [PAYMENT_PROVIDER_TYPE.Ideal]: 0,\n [PAYMENT_PROVIDER_TYPE.Sofort]: 0,\n [PAYMENT_PROVIDER_TYPE.Alipay]: 0,\n [PAYMENT_PROVIDER_TYPE.WechatPay]: 0,\n [PAYMENT_PROVIDER_TYPE.MockProvider]: 0,\n },\n maxConnections: {\n [PAYMENT_PROVIDER_TYPE.Stripe]: NUMERIX.THOUSAND,\n [PAYMENT_PROVIDER_TYPE.Moonpay]: NUMERIX.FIVE_HUNDERD,\n [PAYMENT_PROVIDER_TYPE.Paypal]: 0,\n [PAYMENT_PROVIDER_TYPE.CheckoutCom]: 0,\n [PAYMENT_PROVIDER_TYPE.Adyen]: 0,\n [PAYMENT_PROVIDER_TYPE.CoinbaseCommerce]: 0,\n [PAYMENT_PROVIDER_TYPE.BlockchainBridge]: 0,\n [PAYMENT_PROVIDER_TYPE.Pix]: 0,\n [PAYMENT_PROVIDER_TYPE.Boleto]: 0,\n [PAYMENT_PROVIDER_TYPE.Sepa]: 0,\n [PAYMENT_PROVIDER_TYPE.Ideal]: 0,\n [PAYMENT_PROVIDER_TYPE.Sofort]: 0,\n [PAYMENT_PROVIDER_TYPE.Alipay]: 0,\n [PAYMENT_PROVIDER_TYPE.WechatPay]: 0,\n [PAYMENT_PROVIDER_TYPE.MockProvider]: 0,\n },\n stickiness: { enabled: false, duration: 0, key: 'user' },\n autoRebalance: { enabled: false, interval: 0, basedOn: 'mixed' },\n};\n","import {\n type LoadBalancingConfig,\n LOAD_BALANCING_STRATEGY,\n PAYMENT_PROVIDER_TYPE,\n} from '@plyaz/types';\nimport { NUMERIX } from '../../../../../db';\n\nexport const PerformanceBasedLoadBalancing: LoadBalancingConfig = {\n enabled: true,\n strategy: LOAD_BALANCING_STRATEGY.PerformanceBased,\n providerWeights: {\n [PAYMENT_PROVIDER_TYPE.Stripe]: 50,\n [PAYMENT_PROVIDER_TYPE.Moonpay]: 50,\n [PAYMENT_PROVIDER_TYPE.Paypal]: 0,\n [PAYMENT_PROVIDER_TYPE.CheckoutCom]: 0,\n [PAYMENT_PROVIDER_TYPE.Adyen]: 0,\n [PAYMENT_PROVIDER_TYPE.CoinbaseCommerce]: 0,\n [PAYMENT_PROVIDER_TYPE.BlockchainBridge]: 0,\n [PAYMENT_PROVIDER_TYPE.Pix]: 0,\n [PAYMENT_PROVIDER_TYPE.Boleto]: 0,\n [PAYMENT_PROVIDER_TYPE.Sepa]: 0,\n [PAYMENT_PROVIDER_TYPE.Ideal]: 0,\n [PAYMENT_PROVIDER_TYPE.Sofort]: 0,\n [PAYMENT_PROVIDER_TYPE.Alipay]: 0,\n [PAYMENT_PROVIDER_TYPE.WechatPay]: 0,\n [PAYMENT_PROVIDER_TYPE.MockProvider]: 0,\n },\n autoRebalance: {\n enabled: true,\n interval: NUMERIX.SIXTY,\n basedOn: 'latency',\n },\n stickiness: { enabled: false, duration: 0, key: 'user' },\n};\n","import {\n type LoadBalancingConfig,\n LOAD_BALANCING_STRATEGY,\n PAYMENT_PROVIDER_TYPE,\n} from '@plyaz/types';\n\nexport const CustomLoadBalancing: LoadBalancingConfig = {\n enabled: true,\n strategy: LOAD_BALANCING_STRATEGY.Custom,\n providerWeights: {\n [PAYMENT_PROVIDER_TYPE.Stripe]: 50,\n [PAYMENT_PROVIDER_TYPE.Moonpay]: 50,\n [PAYMENT_PROVIDER_TYPE.Paypal]: 0,\n [PAYMENT_PROVIDER_TYPE.CheckoutCom]: 0,\n [PAYMENT_PROVIDER_TYPE.Adyen]: 0,\n [PAYMENT_PROVIDER_TYPE.CoinbaseCommerce]: 0,\n [PAYMENT_PROVIDER_TYPE.BlockchainBridge]: 0,\n [PAYMENT_PROVIDER_TYPE.Pix]: 0,\n [PAYMENT_PROVIDER_TYPE.Boleto]: 0,\n [PAYMENT_PROVIDER_TYPE.Sepa]: 0,\n [PAYMENT_PROVIDER_TYPE.Ideal]: 0,\n [PAYMENT_PROVIDER_TYPE.Sofort]: 0,\n [PAYMENT_PROVIDER_TYPE.Alipay]: 0,\n [PAYMENT_PROVIDER_TYPE.WechatPay]: 0,\n [PAYMENT_PROVIDER_TYPE.MockProvider]: 0,\n },\n stickiness: { enabled: false, duration: 0, key: 'user' },\n autoRebalance: { enabled: false, interval: 0, basedOn: 'mixed' },\n};\n","import { LOAD_BALANCING_STRATEGY, type LoadBalancingConfig } from '@plyaz/types';\nimport { WeightedLoadBalancing } from './strategies/weighted.config';\nimport { RoundRobinLoadBalancing } from './strategies/round-robin.config';\nimport { LeastConnectionsLoadBalancing } from './strategies/least-connections.config';\nimport { PerformanceBasedLoadBalancing } from './strategies/performance-based.config';\nimport { CustomLoadBalancing } from './strategies/custom.config';\n\nexport const LoadBalancingRegistry: Record<LOAD_BALANCING_STRATEGY, LoadBalancingConfig> = {\n [LOAD_BALANCING_STRATEGY.Weighted]: WeightedLoadBalancing,\n [LOAD_BALANCING_STRATEGY.RoundRobin]: RoundRobinLoadBalancing,\n [LOAD_BALANCING_STRATEGY.LeastConnections]: LeastConnectionsLoadBalancing,\n [LOAD_BALANCING_STRATEGY.PerformanceBased]: PerformanceBasedLoadBalancing,\n [LOAD_BALANCING_STRATEGY.Custom]: CustomLoadBalancing,\n};\n","import {\n COST_OPTIMIZATION_STRATEGY,\n type CostOptimizationConfig,\n CURRENCY_CODES,\n} from '@plyaz/types';\n\nexport const COST_OPTIMIZATION_AGGRESSIVE: CostOptimizationConfig = {\n enabled: true,\n strategy: COST_OPTIMIZATION_STRATEGY.Aggressive,\n calculation: {\n includeNetworkFees: true,\n includeFxCosts: true,\n includeOpportunityCosts: false,\n updateFrequency: 10, // minutes\n },\n feePreferences: {\n preferenceType: 'lowest_total',\n percentageWeight: 0.7,\n fixedWeight: 0.3,\n },\n volumeOptimization: {\n enabled: true,\n trackingWindow: 30, // days\n volumeTiers: [\n {\n name: 'Tier 1',\n minimumVolume: { amount: 0, currency: CURRENCY_CODES.USD },\n feeRates: { percentage: 2.9, fixed: 0.3, currency: CURRENCY_CODES.USD },\n },\n {\n name: 'Tier 2',\n minimumVolume: { amount: 10000, currency: CURRENCY_CODES.USD },\n feeRates: { percentage: 2.7, fixed: 0.25, currency: CURRENCY_CODES.USD },\n benefits: ['Reduced processing fees'],\n },\n ],\n },\n currencyOptimization: {\n enabled: true,\n rateProviders: ['internal_fx', 'openexchangerates'],\n updateFrequency: 60,\n spreadTolerance: 0.01,\n },\n};\n","import {\n COST_OPTIMIZATION_STRATEGY,\n type CostOptimizationConfig,\n CURRENCY_CODES,\n} from '@plyaz/types';\n\nexport const COST_OPTIMIZATION_BALANCED: CostOptimizationConfig = {\n enabled: true,\n strategy: COST_OPTIMIZATION_STRATEGY.Balanced,\n calculation: {\n includeNetworkFees: true,\n includeFxCosts: true,\n includeOpportunityCosts: true,\n updateFrequency: 20,\n },\n feePreferences: {\n preferenceType: 'hybrid',\n percentageWeight: 0.5,\n fixedWeight: 0.5,\n },\n volumeOptimization: {\n enabled: true,\n trackingWindow: 60,\n volumeTiers: [\n {\n name: 'Base Tier',\n minimumVolume: { amount: 0, currency: CURRENCY_CODES.USD },\n feeRates: { percentage: 2.8, fixed: 0.3, currency: CURRENCY_CODES.USD },\n },\n {\n name: 'Growth Tier',\n minimumVolume: { amount: 50000, currency: CURRENCY_CODES.USD },\n feeRates: { percentage: 2.6, fixed: 0.25, currency: CURRENCY_CODES.USD },\n benefits: ['Priority routing', 'Fee stability'],\n },\n ],\n },\n currencyOptimization: {\n enabled: true,\n rateProviders: ['internal_fx', 'xe', 'reuters'],\n updateFrequency: 120,\n spreadTolerance: 0.015,\n },\n};\n","import { COST_OPTIMIZATION_STRATEGY, type CostOptimizationConfig } from '@plyaz/types';\n\nexport const COST_OPTIMIZATION_CONSERVATIVE: CostOptimizationConfig = {\n enabled: true,\n strategy: COST_OPTIMIZATION_STRATEGY.Conservative,\n calculation: {\n includeNetworkFees: true,\n includeFxCosts: false,\n includeOpportunityCosts: true,\n updateFrequency: 60,\n },\n feePreferences: {\n preferenceType: 'fixed',\n percentageWeight: 0.3,\n fixedWeight: 0.7,\n },\n volumeOptimization: {\n enabled: false,\n trackingWindow: 90,\n volumeTiers: [],\n },\n currencyOptimization: {\n enabled: false,\n rateProviders: [],\n updateFrequency: 0,\n spreadTolerance: 0,\n },\n};\n","import {\n COST_OPTIMIZATION_STRATEGY,\n type CostOptimizationConfig,\n CURRENCY_CODES,\n} from '@plyaz/types';\n\nexport const COST_OPTIMIZATION_TARGETED: CostOptimizationConfig = {\n enabled: true,\n strategy: COST_OPTIMIZATION_STRATEGY.Targeted,\n calculation: {\n includeNetworkFees: true,\n includeFxCosts: true,\n includeOpportunityCosts: true,\n updateFrequency: 15,\n },\n feePreferences: {\n preferenceType: 'percentage',\n percentageWeight: 0.8,\n fixedWeight: 0.2,\n },\n volumeOptimization: {\n enabled: true,\n trackingWindow: 45,\n volumeTiers: [\n {\n name: 'Target Tier 1',\n minimumVolume: { amount: 0, currency: CURRENCY_CODES.USD },\n feeRates: { percentage: 2.9, fixed: 0.25, currency: CURRENCY_CODES.USD },\n },\n {\n name: 'Target Tier 2',\n minimumVolume: { amount: 25000, currency: CURRENCY_CODES.USD },\n feeRates: { percentage: 2.5, fixed: 0.2, currency: CURRENCY_CODES.USD },\n benefits: ['Custom FX routing', 'Preferred provider path'],\n },\n ],\n },\n currencyOptimization: {\n enabled: true,\n rateProviders: ['openexchangerates', 'currencylayer'],\n updateFrequency: 30,\n spreadTolerance: 0.008,\n },\n};\n","import { COST_OPTIMIZATION_STRATEGY, type CostOptimizationConfig } from '@plyaz/types';\nimport { COST_OPTIMIZATION_AGGRESSIVE } from './strategies/aggressive.config';\nimport { COST_OPTIMIZATION_BALANCED } from './strategies/balanced.config';\nimport { COST_OPTIMIZATION_CONSERVATIVE } from './strategies/conservative.config';\nimport { COST_OPTIMIZATION_TARGETED } from './strategies/targeted.config';\n\nexport const COST_OPTIMIZATION: Record<COST_OPTIMIZATION_STRATEGY, CostOptimizationConfig> = {\n [COST_OPTIMIZATION_STRATEGY.Aggressive]: COST_OPTIMIZATION_AGGRESSIVE,\n [COST_OPTIMIZATION_STRATEGY.Balanced]: COST_OPTIMIZATION_BALANCED,\n [COST_OPTIMIZATION_STRATEGY.Conservative]: COST_OPTIMIZATION_CONSERVATIVE,\n [COST_OPTIMIZATION_STRATEGY.Targeted]: COST_OPTIMIZATION_TARGETED,\n};\n","import { type AmountBasedRule, PAYMENT_PROVIDER_TYPE } from '@plyaz/types';\n\nexport const AMOUNT_BASED_SELECTION: AmountBasedRule[] = [\n // United States (USD)\n {\n name: 'USD',\n amountRange: {\n min: { amount: 1000, currency: 'USD' },\n max: { amount: 1000000, currency: 'USD' },\n },\n preferredProviders: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 120,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 99, maxResponseTime: 700, checkInterval: 2 },\n },\n {\n provider: PAYMENT_PROVIDER_TYPE.Paypal,\n weight: 80,\n trafficPercentage: 10,\n conditions: [],\n healthRequirements: { minSuccessRate: 98, maxResponseTime: 800, checkInterval: 5 },\n },\n ],\n specialHandling: { requireVerification: true, enhancedSecurity: true, manualReview: false },\n },\n\n // Eurozone (EUR)\n {\n name: 'EUR',\n amountRange: {\n min: { amount: 900, currency: 'EUR' },\n max: { amount: 1000000, currency: 'EUR' },\n },\n preferredProviders: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 120,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 98, maxResponseTime: 750, checkInterval: 5 },\n },\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 80,\n trafficPercentage: 10,\n conditions: [],\n healthRequirements: { minSuccessRate: 96, maxResponseTime: 800, checkInterval: 5 },\n },\n ],\n specialHandling: { requireVerification: true, enhancedSecurity: true, manualReview: false },\n },\n\n // Brazil (BRL)\n {\n name: 'BRL',\n amountRange: {\n min: { amount: 50000, currency: 'BRL' },\n max: { amount: 1000000, currency: 'BRL' },\n },\n preferredProviders: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Pix,\n weight: 100,\n trafficPercentage: 60,\n conditions: [],\n healthRequirements: { minSuccessRate: 98, maxResponseTime: 700, checkInterval: 2 },\n },\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 90,\n trafficPercentage: 25,\n conditions: [],\n healthRequirements: { minSuccessRate: 97, maxResponseTime: 800, checkInterval: 5 },\n },\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 80,\n trafficPercentage: 15,\n conditions: [],\n healthRequirements: { minSuccessRate: 96, maxResponseTime: 900, checkInterval: 5 },\n },\n ],\n specialHandling: { requireVerification: true, enhancedSecurity: true, manualReview: false },\n },\n\n // China (CNY)\n {\n name: 'CNY',\n amountRange: {\n min: { amount: 7000, currency: 'CNY' },\n max: { amount: 1000000, currency: 'CNY' },\n },\n preferredProviders: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Alipay,\n weight: 100,\n trafficPercentage: 70,\n conditions: [],\n healthRequirements: { minSuccessRate: 97, maxResponseTime: 800, checkInterval: 5 },\n },\n {\n provider: PAYMENT_PROVIDER_TYPE.WechatPay,\n weight: 90,\n trafficPercentage: 30,\n conditions: [],\n healthRequirements: { minSuccessRate: 96, maxResponseTime: 850, checkInterval: 5 },\n },\n ],\n specialHandling: { requireVerification: true, enhancedSecurity: true, manualReview: false },\n },\n\n // Canada (CAD)\n {\n name: 'CAD',\n amountRange: {\n min: { amount: 1300, currency: 'CAD' },\n max: { amount: 1000000, currency: 'CAD' },\n },\n preferredProviders: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 120,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 99, maxResponseTime: 700, checkInterval: 2 },\n },\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 80,\n trafficPercentage: 10,\n conditions: [],\n healthRequirements: { minSuccessRate: 97, maxResponseTime: 800, checkInterval: 5 },\n },\n ],\n specialHandling: { requireVerification: true, enhancedSecurity: true, manualReview: false },\n },\n\n // Australia (AUD)\n {\n name: 'AUD',\n amountRange: {\n min: { amount: 1400, currency: 'AUD' },\n max: { amount: 1000000, currency: 'AUD' },\n },\n preferredProviders: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 120,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 99, maxResponseTime: 700, checkInterval: 2 },\n },\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 80,\n trafficPercentage: 10,\n conditions: [],\n healthRequirements: { minSuccessRate: 97, maxResponseTime: 800, checkInterval: 5 },\n },\n ],\n specialHandling: { requireVerification: true, enhancedSecurity: true, manualReview: false },\n },\n\n // India (INR)\n {\n name: 'INR',\n amountRange: {\n min: { amount: 75000, currency: 'INR' },\n max: { amount: 100000000, currency: 'INR' },\n },\n preferredProviders: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 120,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 98, maxResponseTime: 750, checkInterval: 5 },\n },\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 80,\n trafficPercentage: 10,\n conditions: [],\n healthRequirements: { minSuccessRate: 96, maxResponseTime: 800, checkInterval: 5 },\n },\n ],\n specialHandling: { requireVerification: true, enhancedSecurity: true, manualReview: false },\n },\n\n // Other international (USD fallback)\n {\n name: 'INTL',\n amountRange: {\n min: { amount: 1000, currency: 'USD' },\n max: { amount: 1000000, currency: 'USD' },\n },\n preferredProviders: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 120,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 98, maxResponseTime: 750, checkInterval: 5 },\n },\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 80,\n trafficPercentage: 10,\n conditions: [],\n healthRequirements: { minSuccessRate: 96, maxResponseTime: 800, checkInterval: 5 },\n },\n ],\n specialHandling: { requireVerification: true, enhancedSecurity: true, manualReview: false },\n },\n];\n","import { type CurrencyCode, PAYMENT_PROVIDER_TYPE, type ProviderPreference } from '@plyaz/types';\n\nexport const CurrencySpecificProviders: Record<CurrencyCode, ProviderPreference[]> = {\n // --- Major currencies ---\n USD: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 90,\n trafficPercentage: 70,\n conditions: [],\n healthRequirements: { minSuccessRate: 95, maxResponseTime: 1200, checkInterval: 5 },\n },\n ],\n EUR: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 100,\n trafficPercentage: 80,\n conditions: [],\n healthRequirements: { minSuccessRate: 98, maxResponseTime: 800, checkInterval: 3 },\n },\n ],\n GBP: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 95,\n trafficPercentage: 80,\n conditions: [],\n healthRequirements: { minSuccessRate: 97, maxResponseTime: 900, checkInterval: 3 },\n },\n ],\n JPY: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 70,\n conditions: [],\n healthRequirements: { minSuccessRate: 94, maxResponseTime: 1300, checkInterval: 6 },\n },\n ],\n CHF: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 95,\n trafficPercentage: 80,\n conditions: [],\n healthRequirements: { minSuccessRate: 98, maxResponseTime: 850, checkInterval: 3 },\n },\n ],\n CAD: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 95,\n trafficPercentage: 80,\n conditions: [],\n healthRequirements: { minSuccessRate: 97, maxResponseTime: 900, checkInterval: 3 },\n },\n ],\n AUD: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 90,\n trafficPercentage: 70,\n conditions: [],\n healthRequirements: { minSuccessRate: 95, maxResponseTime: 1200, checkInterval: 5 },\n },\n ],\n CNY: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 90,\n trafficPercentage: 80,\n conditions: [],\n healthRequirements: { minSuccessRate: 94, maxResponseTime: 1400, checkInterval: 6 },\n },\n ],\n\n // --- Asian currencies ---\n INR: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 90,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 93, maxResponseTime: 1500, checkInterval: 6 },\n },\n ],\n KRW: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 93, maxResponseTime: 1400, checkInterval: 6 },\n },\n ],\n SGD: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 95,\n trafficPercentage: 80,\n conditions: [],\n healthRequirements: { minSuccessRate: 97, maxResponseTime: 800, checkInterval: 3 },\n },\n ],\n HKD: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 95,\n trafficPercentage: 80,\n conditions: [],\n healthRequirements: { minSuccessRate: 97, maxResponseTime: 900, checkInterval: 3 },\n },\n ],\n TWD: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 90,\n trafficPercentage: 80,\n conditions: [],\n healthRequirements: { minSuccessRate: 94, maxResponseTime: 1300, checkInterval: 6 },\n },\n ],\n THB: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 90,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 92, maxResponseTime: 1500, checkInterval: 10 },\n },\n ],\n IDR: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 90,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 92, maxResponseTime: 1500, checkInterval: 10 },\n },\n ],\n MYR: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 90,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 93, maxResponseTime: 1500, checkInterval: 10 },\n },\n ],\n PHP: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 92, maxResponseTime: 1600, checkInterval: 10 },\n },\n ],\n VND: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 91, maxResponseTime: 1600, checkInterval: 10 },\n },\n ],\n BDT: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 90, maxResponseTime: 1700, checkInterval: 10 },\n },\n ],\n PKR: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 90,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 92, maxResponseTime: 1500, checkInterval: 10 },\n },\n ],\n LKR: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 90, maxResponseTime: 1700, checkInterval: 10 },\n },\n ],\n\n // --- European currencies ---\n SEK: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 95,\n trafficPercentage: 80,\n conditions: [],\n healthRequirements: { minSuccessRate: 97, maxResponseTime: 900, checkInterval: 3 },\n },\n ],\n NOK: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 95,\n trafficPercentage: 80,\n conditions: [],\n healthRequirements: { minSuccessRate: 97, maxResponseTime: 900, checkInterval: 3 },\n },\n ],\n DKK: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 95,\n trafficPercentage: 80,\n conditions: [],\n healthRequirements: { minSuccessRate: 97, maxResponseTime: 900, checkInterval: 3 },\n },\n ],\n PLN: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 93, maxResponseTime: 1300, checkInterval: 6 },\n },\n ],\n CZK: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 93, maxResponseTime: 1300, checkInterval: 6 },\n },\n ],\n HUF: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 92, maxResponseTime: 1300, checkInterval: 6 },\n },\n ],\n RON: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 92, maxResponseTime: 1300, checkInterval: 6 },\n },\n ],\n BGN: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 92, maxResponseTime: 1300, checkInterval: 6 },\n },\n ],\n HRK: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 92, maxResponseTime: 1300, checkInterval: 6 },\n },\n ],\n RSD: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 91, maxResponseTime: 1400, checkInterval: 6 },\n },\n ],\n ISK: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 95,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 97, maxResponseTime: 900, checkInterval: 3 },\n },\n ],\n\n // --- Americas ---\n BRL: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 93, maxResponseTime: 1400, checkInterval: 6 },\n },\n ],\n MXN: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 93, maxResponseTime: 1400, checkInterval: 6 },\n },\n ],\n ARS: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 90, maxResponseTime: 1600, checkInterval: 10 },\n },\n ],\n CLP: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 90, maxResponseTime: 1600, checkInterval: 10 },\n },\n ],\n COP: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 90, maxResponseTime: 1600, checkInterval: 10 },\n },\n ],\n PEN: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 90, maxResponseTime: 1600, checkInterval: 10 },\n },\n ],\n UYU: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 90, maxResponseTime: 1600, checkInterval: 10 },\n },\n ],\n VES: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 89, maxResponseTime: 1800, checkInterval: 10 },\n },\n ],\n BOB: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 89, maxResponseTime: 1800, checkInterval: 10 },\n },\n ],\n PYG: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 89, maxResponseTime: 1800, checkInterval: 10 },\n },\n ],\n CRC: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 90, maxResponseTime: 1600, checkInterval: 10 },\n },\n ],\n DOP: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 90, maxResponseTime: 1600, checkInterval: 10 },\n },\n ],\n JMD: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 90, maxResponseTime: 1600, checkInterval: 10 },\n },\n ],\n TTD: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 90, maxResponseTime: 1600, checkInterval: 10 },\n },\n ],\n\n // --- Middle East / Africa ---\n AED: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 95,\n trafficPercentage: 80,\n conditions: [],\n healthRequirements: { minSuccessRate: 97, maxResponseTime: 900, checkInterval: 3 },\n },\n ],\n SAR: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 95,\n trafficPercentage: 80,\n conditions: [],\n healthRequirements: { minSuccessRate: 97, maxResponseTime: 900, checkInterval: 3 },\n },\n ],\n QAR: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 95,\n trafficPercentage: 80,\n conditions: [],\n healthRequirements: { minSuccessRate: 97, maxResponseTime: 900, checkInterval: 3 },\n },\n ],\n KWD: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 95,\n trafficPercentage: 80,\n conditions: [],\n healthRequirements: { minSuccessRate: 97, maxResponseTime: 900, checkInterval: 3 },\n },\n ],\n BHD: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 95,\n trafficPercentage: 80,\n conditions: [],\n healthRequirements: { minSuccessRate: 97, maxResponseTime: 900, checkInterval: 3 },\n },\n ],\n OMR: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 95,\n trafficPercentage: 80,\n conditions: [],\n healthRequirements: { minSuccessRate: 97, maxResponseTime: 900, checkInterval: 3 },\n },\n ],\n JOD: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 95,\n trafficPercentage: 80,\n conditions: [],\n healthRequirements: { minSuccessRate: 97, maxResponseTime: 900, checkInterval: 3 },\n },\n ],\n ILS: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 95,\n trafficPercentage: 80,\n conditions: [],\n healthRequirements: { minSuccessRate: 97, maxResponseTime: 900, checkInterval: 3 },\n },\n ],\n TRY: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 90, maxResponseTime: 1500, checkInterval: 10 },\n },\n ],\n ZAR: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 90,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 94, maxResponseTime: 1300, checkInterval: 6 },\n },\n ],\n NGN: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 90,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 93, maxResponseTime: 1400, checkInterval: 6 },\n },\n ],\n EGP: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 90, maxResponseTime: 1600, checkInterval: 10 },\n },\n ],\n KES: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 90, maxResponseTime: 1600, checkInterval: 10 },\n },\n ],\n GHS: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 90, maxResponseTime: 1600, checkInterval: 10 },\n },\n ],\n MAD: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 91, maxResponseTime: 1400, checkInterval: 6 },\n },\n ],\n TND: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 91, maxResponseTime: 1400, checkInterval: 6 },\n },\n ],\n DZD: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 91, maxResponseTime: 1400, checkInterval: 6 },\n },\n ],\n\n // --- Crypto pseudo-currencies ---\n BTC: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 120,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 95, maxResponseTime: 1500, checkInterval: 10 },\n },\n ],\n ETH: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 120,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 95, maxResponseTime: 1500, checkInterval: 10 },\n },\n ],\n USDT: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 120,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 95, maxResponseTime: 1500, checkInterval: 10 },\n },\n ],\n USDC: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 120,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 95, maxResponseTime: 1500, checkInterval: 10 },\n },\n ],\n\n // --- Central America / Caribbean ---\n GTQ: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 90, maxResponseTime: 1600, checkInterval: 10 },\n },\n ],\n HNL: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 90, maxResponseTime: 1600, checkInterval: 10 },\n },\n ],\n NIO: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 90, maxResponseTime: 1600, checkInterval: 10 },\n },\n ],\n PAB: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 90,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 95, maxResponseTime: 1000, checkInterval: 5 },\n },\n ],\n BBD: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 91, maxResponseTime: 1400, checkInterval: 6 },\n },\n ],\n\n // --- Middle East (additional) ---\n IQD: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 90, maxResponseTime: 1500, checkInterval: 8 },\n },\n ],\n IRR: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 80,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 85, maxResponseTime: 1800, checkInterval: 10 },\n },\n ],\n LBP: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 80,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 85, maxResponseTime: 1800, checkInterval: 10 },\n },\n ],\n SYP: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 80,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 85, maxResponseTime: 1800, checkInterval: 10 },\n },\n ],\n\n // --- Africa (additional) ---\n ETB: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 90, maxResponseTime: 1500, checkInterval: 8 },\n },\n ],\n TZS: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 91, maxResponseTime: 1400, checkInterval: 6 },\n },\n ],\n UGX: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 91, maxResponseTime: 1400, checkInterval: 6 },\n },\n ],\n ZMW: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 91, maxResponseTime: 1400, checkInterval: 6 },\n },\n ],\n BWP: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 91, maxResponseTime: 1400, checkInterval: 6 },\n },\n ],\n MUR: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 91, maxResponseTime: 1400, checkInterval: 6 },\n },\n ],\n\n // --- Pacific / Oceania ---\n NZD: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 95,\n trafficPercentage: 80,\n conditions: [],\n healthRequirements: { minSuccessRate: 96, maxResponseTime: 1000, checkInterval: 4 },\n },\n ],\n FJD: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 92, maxResponseTime: 1400, checkInterval: 6 },\n },\n ],\n PGK: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 90, maxResponseTime: 1500, checkInterval: 8 },\n },\n ],\n\n // --- Former Soviet / Central Asia ---\n RUB: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 91, maxResponseTime: 1500, checkInterval: 8 },\n },\n ],\n UAH: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 91, maxResponseTime: 1500, checkInterval: 8 },\n },\n ],\n BYN: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 91, maxResponseTime: 1500, checkInterval: 8 },\n },\n ],\n KZT: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 91, maxResponseTime: 1500, checkInterval: 8 },\n },\n ],\n UZS: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 91, maxResponseTime: 1500, checkInterval: 8 },\n },\n ],\n AZN: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 91, maxResponseTime: 1500, checkInterval: 8 },\n },\n ],\n GEL: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 91, maxResponseTime: 1500, checkInterval: 8 },\n },\n ],\n AMD: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 91, maxResponseTime: 1500, checkInterval: 8 },\n },\n ],\n};\n","import { type CustomSelectionRule, PAYMENT_PROVIDER_TYPE } from '@plyaz/types';\n\nexport const CUSTOM_RULES: CustomSelectionRule[] = [\n {\n ruleId: 'crypto_onramp',\n name: 'Crypto: force Moonpay',\n description: 'If payment method is crypto-onramp, prefer Moonpay',\n conditions: {\n expression:\n \"['crypto_bitcoin','crypto_ethereum','crypto_polygon','crypto_native_token'].includes(paymentMethod)\",\n requiredContext: ['paymentMethod'],\n },\n providerSelection: {\n preferred: [PAYMENT_PROVIDER_TYPE.Moonpay],\n excluded: [PAYMENT_PROVIDER_TYPE.Stripe],\n weightAdjustments: {\n [PAYMENT_PROVIDER_TYPE.Stripe]: -20,\n [PAYMENT_PROVIDER_TYPE.Paypal]: 0,\n [PAYMENT_PROVIDER_TYPE.CheckoutCom]: 0,\n [PAYMENT_PROVIDER_TYPE.Adyen]: 0,\n [PAYMENT_PROVIDER_TYPE.Moonpay]: 20,\n [PAYMENT_PROVIDER_TYPE.CoinbaseCommerce]: 0,\n [PAYMENT_PROVIDER_TYPE.BlockchainBridge]: 0,\n [PAYMENT_PROVIDER_TYPE.Pix]: 0,\n [PAYMENT_PROVIDER_TYPE.Boleto]: 0,\n [PAYMENT_PROVIDER_TYPE.Sepa]: 0,\n [PAYMENT_PROVIDER_TYPE.Ideal]: 0,\n [PAYMENT_PROVIDER_TYPE.Sofort]: 0,\n [PAYMENT_PROVIDER_TYPE.Alipay]: 0,\n [PAYMENT_PROVIDER_TYPE.WechatPay]: 0,\n [PAYMENT_PROVIDER_TYPE.MockProvider]: 0,\n },\n },\n priority: 100,\n enabled: true,\n },\n];\n","import { PAYMENT_PROVIDER_TYPE, type ProviderPreference } from '@plyaz/types';\nimport { SUPPORTED_CURRENCIES } from '../../validators';\nimport { NUMERIX } from '../../../db';\nimport { CURRENCY_CODES } from '../../../locale';\n\n/**\n * Default provider preferences used for global or fallback routing.\n * Includes weight-based prioritization and health check parameters.\n */\nexport const DEFAULT_PROVIDERS: ProviderPreference[] = [\n {\n /** Primary high-performance global provider */\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 100,\n trafficPercentage: 40, // slightly adjusted for balance\n conditions: [],\n minAmount: { amount: 1, currency: CURRENCY_CODES.USD },\n maxAmount: { amount: 10000, currency: CURRENCY_CODES.USD },\n healthRequirements: {\n minSuccessRate: 98,\n maxResponseTime: 800,\n checkInterval: 2, // frequent health checks\n },\n },\n {\n /** Secondary fallback or region-optimized provider */\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 80,\n trafficPercentage: 60,\n conditions: [\n {\n type: 'currency',\n operator: 'in',\n value: SUPPORTED_CURRENCIES.slice(0, NUMERIX.FIFTY),\n required: false,\n },\n ],\n minAmount: { amount: 5, currency: CURRENCY_CODES.USD },\n maxAmount: { amount: 20000, currency: CURRENCY_CODES.USD },\n healthRequirements: {\n minSuccessRate: 95,\n maxResponseTime: 1500,\n checkInterval: 5,\n },\n },\n];\n","import { PAYMENT_METHOD, PAYMENT_PROVIDER_TYPE, type ProviderPreference } from '@plyaz/types';\n\nexport const MethodSpecificProviders: Record<PAYMENT_METHOD, ProviderPreference[]> = {\n // --- CARD PAYMENTS ---\n [PAYMENT_METHOD.CreditCard]: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 110,\n trafficPercentage: 70,\n conditions: [],\n healthRequirements: {\n minSuccessRate: 98,\n maxResponseTime: 600,\n checkInterval: 2,\n },\n },\n {\n provider: PAYMENT_PROVIDER_TYPE.Adyen,\n weight: 90,\n trafficPercentage: 20,\n conditions: [],\n healthRequirements: {\n minSuccessRate: 96,\n maxResponseTime: 800,\n checkInterval: 3,\n },\n },\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 40,\n trafficPercentage: 10,\n conditions: [],\n healthRequirements: {\n minSuccessRate: 94,\n maxResponseTime: 1200,\n checkInterval: 5,\n },\n },\n ],\n\n [PAYMENT_METHOD.DebitCard]: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 100,\n trafficPercentage: 60,\n conditions: [],\n healthRequirements: {\n minSuccessRate: 97,\n maxResponseTime: 700,\n checkInterval: 3,\n },\n },\n {\n provider: PAYMENT_PROVIDER_TYPE.CheckoutCom,\n weight: 90,\n trafficPercentage: 40,\n conditions: [],\n healthRequirements: {\n minSuccessRate: 95,\n maxResponseTime: 900,\n checkInterval: 4,\n },\n },\n ],\n\n [PAYMENT_METHOD.BankTransfer]: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Adyen,\n weight: 100,\n trafficPercentage: 70,\n conditions: [],\n healthRequirements: {\n minSuccessRate: 97,\n maxResponseTime: 900,\n checkInterval: 3,\n },\n },\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 80,\n trafficPercentage: 30,\n conditions: [],\n healthRequirements: {\n minSuccessRate: 96,\n maxResponseTime: 800,\n checkInterval: 3,\n },\n },\n ],\n\n [PAYMENT_METHOD.PaypalAccount]: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Paypal,\n weight: 150,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: {\n minSuccessRate: 99,\n maxResponseTime: 700,\n checkInterval: 2,\n },\n },\n ],\n\n // --- CRYPTO PAYMENTS ---\n [PAYMENT_METHOD.CryptoBitcoin]: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 120,\n trafficPercentage: 80,\n conditions: [],\n healthRequirements: {\n minSuccessRate: 95,\n maxResponseTime: 1500,\n checkInterval: 10,\n },\n },\n {\n provider: PAYMENT_PROVIDER_TYPE.CoinbaseCommerce,\n weight: 100,\n trafficPercentage: 20,\n conditions: [],\n healthRequirements: {\n minSuccessRate: 96,\n maxResponseTime: 1400,\n checkInterval: 8,\n },\n },\n ],\n\n [PAYMENT_METHOD.CryptoEthereum]: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 120,\n trafficPercentage: 80,\n conditions: [],\n healthRequirements: {\n minSuccessRate: 95,\n maxResponseTime: 1500,\n checkInterval: 10,\n },\n },\n {\n provider: PAYMENT_PROVIDER_TYPE.CoinbaseCommerce,\n weight: 100,\n trafficPercentage: 20,\n conditions: [],\n healthRequirements: {\n minSuccessRate: 96,\n maxResponseTime: 1400,\n checkInterval: 8,\n },\n },\n ],\n\n [PAYMENT_METHOD.CryptoPolygon]: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 110,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: {\n minSuccessRate: 94,\n maxResponseTime: 1500,\n checkInterval: 10,\n },\n },\n ],\n\n [PAYMENT_METHOD.CryptoOptimism]: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 110,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: {\n minSuccessRate: 94,\n maxResponseTime: 1500,\n checkInterval: 10,\n },\n },\n ],\n\n [PAYMENT_METHOD.CryptoUsdc]: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 120,\n trafficPercentage: 60,\n conditions: [],\n healthRequirements: {\n minSuccessRate: 96,\n maxResponseTime: 1300,\n checkInterval: 8,\n },\n },\n {\n provider: PAYMENT_PROVIDER_TYPE.CoinbaseCommerce,\n weight: 90,\n trafficPercentage: 40,\n conditions: [],\n healthRequirements: {\n minSuccessRate: 95,\n maxResponseTime: 1200,\n checkInterval: 8,\n },\n },\n ],\n\n [PAYMENT_METHOD.CryptoUsdt]: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 120,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: {\n minSuccessRate: 96,\n maxResponseTime: 1300,\n checkInterval: 8,\n },\n },\n ],\n\n [PAYMENT_METHOD.CryptoNativeToken]: [\n {\n provider: PAYMENT_PROVIDER_TYPE.BlockchainBridge,\n weight: 100,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: {\n minSuccessRate: 93,\n maxResponseTime: 1500,\n checkInterval: 10,\n },\n },\n ],\n\n // --- LOCAL / ALT PAYMENTS ---\n [PAYMENT_METHOD.PixInstant]: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Pix,\n weight: 130,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: {\n minSuccessRate: 98,\n maxResponseTime: 500,\n checkInterval: 2,\n },\n },\n ],\n\n [PAYMENT_METHOD.BoletoBancario]: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Boleto,\n weight: 120,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: {\n minSuccessRate: 97,\n maxResponseTime: 900,\n checkInterval: 3,\n },\n },\n ],\n\n [PAYMENT_METHOD.SepaDirectDebit]: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Sepa,\n weight: 120,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: {\n minSuccessRate: 97,\n maxResponseTime: 800,\n checkInterval: 3,\n },\n },\n ],\n\n [PAYMENT_METHOD.IdealBank]: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Ideal,\n weight: 120,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: {\n minSuccessRate: 97,\n maxResponseTime: 700,\n checkInterval: 3,\n },\n },\n ],\n\n [PAYMENT_METHOD.SofortBanking]: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Sofort,\n weight: 110,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: {\n minSuccessRate: 96,\n maxResponseTime: 800,\n checkInterval: 3,\n },\n },\n ],\n\n [PAYMENT_METHOD.AlipayDigital]: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Alipay,\n weight: 120,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: {\n minSuccessRate: 99,\n maxResponseTime: 600,\n checkInterval: 2,\n },\n },\n ],\n\n [PAYMENT_METHOD.WechatPayDigital]: [\n {\n provider: PAYMENT_PROVIDER_TYPE.WechatPay,\n weight: 120,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: {\n minSuccessRate: 99,\n maxResponseTime: 600,\n checkInterval: 2,\n },\n },\n ],\n\n // --- DIGITAL WALLETS ---\n [PAYMENT_METHOD.ApplePay]: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 110,\n trafficPercentage: 80,\n conditions: [],\n healthRequirements: {\n minSuccessRate: 98,\n maxResponseTime: 500,\n checkInterval: 2,\n },\n },\n {\n provider: PAYMENT_PROVIDER_TYPE.Adyen,\n weight: 100,\n trafficPercentage: 20,\n conditions: [],\n healthRequirements: {\n minSuccessRate: 97,\n maxResponseTime: 600,\n checkInterval: 2,\n },\n },\n ],\n\n [PAYMENT_METHOD.GooglePay]: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 110,\n trafficPercentage: 80,\n conditions: [],\n healthRequirements: {\n minSuccessRate: 98,\n maxResponseTime: 500,\n checkInterval: 2,\n },\n },\n {\n provider: PAYMENT_PROVIDER_TYPE.Adyen,\n weight: 100,\n trafficPercentage: 20,\n conditions: [],\n healthRequirements: {\n minSuccessRate: 97,\n maxResponseTime: 600,\n checkInterval: 2,\n },\n },\n ],\n\n [PAYMENT_METHOD.SamsungPay]: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 100,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: {\n minSuccessRate: 97,\n maxResponseTime: 600,\n checkInterval: 3,\n },\n },\n ],\n};\n","import { PAYMENT_PROVIDER_TYPE, type ProviderPreference } from '@plyaz/types';\n\nexport const regionSpecificProviders: Record<string, ProviderPreference[]> = {\n // United States\n US: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 100,\n trafficPercentage: 70,\n conditions: [],\n healthRequirements: { minSuccessRate: 99, maxResponseTime: 700, checkInterval: 2 },\n },\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 80,\n trafficPercentage: 30,\n conditions: [],\n healthRequirements: { minSuccessRate: 97, maxResponseTime: 800, checkInterval: 5 },\n },\n ],\n\n // European Union\n EU: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 100,\n trafficPercentage: 70,\n conditions: [],\n healthRequirements: { minSuccessRate: 98, maxResponseTime: 750, checkInterval: 5 },\n },\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 80,\n trafficPercentage: 30,\n conditions: [],\n healthRequirements: { minSuccessRate: 96, maxResponseTime: 800, checkInterval: 5 },\n },\n ],\n\n // Brazil\n BR: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Pix,\n weight: 100,\n trafficPercentage: 60,\n conditions: [],\n healthRequirements: { minSuccessRate: 98, maxResponseTime: 700, checkInterval: 2 },\n },\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 90,\n trafficPercentage: 25,\n conditions: [],\n healthRequirements: { minSuccessRate: 97, maxResponseTime: 800, checkInterval: 5 },\n },\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 80,\n trafficPercentage: 15,\n conditions: [],\n healthRequirements: { minSuccessRate: 96, maxResponseTime: 900, checkInterval: 5 },\n },\n ],\n\n // China\n CN: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Alipay,\n weight: 100,\n trafficPercentage: 70,\n conditions: [],\n healthRequirements: { minSuccessRate: 97, maxResponseTime: 800, checkInterval: 5 },\n },\n {\n provider: PAYMENT_PROVIDER_TYPE.WechatPay,\n weight: 90,\n trafficPercentage: 30,\n conditions: [],\n healthRequirements: { minSuccessRate: 96, maxResponseTime: 850, checkInterval: 5 },\n },\n ],\n\n // Canada\n CA: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 100,\n trafficPercentage: 70,\n conditions: [],\n healthRequirements: { minSuccessRate: 99, maxResponseTime: 700, checkInterval: 2 },\n },\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 80,\n trafficPercentage: 30,\n conditions: [],\n healthRequirements: { minSuccessRate: 97, maxResponseTime: 800, checkInterval: 5 },\n },\n ],\n\n // Australia\n AU: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 100,\n trafficPercentage: 70,\n conditions: [],\n healthRequirements: { minSuccessRate: 99, maxResponseTime: 700, checkInterval: 2 },\n },\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 80,\n trafficPercentage: 30,\n conditions: [],\n healthRequirements: { minSuccessRate: 97, maxResponseTime: 800, checkInterval: 5 },\n },\n ],\n\n // India\n IN: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 100,\n trafficPercentage: 70,\n conditions: [],\n healthRequirements: { minSuccessRate: 98, maxResponseTime: 750, checkInterval: 5 },\n },\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 80,\n trafficPercentage: 30,\n conditions: [],\n healthRequirements: { minSuccessRate: 96, maxResponseTime: 800, checkInterval: 5 },\n },\n ],\n\n // Japan\n JP: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 100,\n trafficPercentage: 70,\n conditions: [],\n healthRequirements: { minSuccessRate: 98, maxResponseTime: 750, checkInterval: 5 },\n },\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 80,\n trafficPercentage: 30,\n conditions: [],\n healthRequirements: { minSuccessRate: 96, maxResponseTime: 800, checkInterval: 5 },\n },\n ],\n\n // Korea\n KR: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 100,\n trafficPercentage: 70,\n conditions: [],\n healthRequirements: { minSuccessRate: 98, maxResponseTime: 750, checkInterval: 5 },\n },\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 80,\n trafficPercentage: 30,\n conditions: [],\n healthRequirements: { minSuccessRate: 96, maxResponseTime: 800, checkInterval: 5 },\n },\n ],\n\n // Mexico\n MX: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 100,\n trafficPercentage: 70,\n conditions: [],\n healthRequirements: { minSuccessRate: 98, maxResponseTime: 750, checkInterval: 5 },\n },\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 80,\n trafficPercentage: 30,\n conditions: [],\n healthRequirements: { minSuccessRate: 96, maxResponseTime: 800, checkInterval: 5 },\n },\n ],\n};\n","import { PAYMENT_PROVIDER_TYPE, type TimeBasedRule } from '@plyaz/types';\nimport { ALL_COUNTRY_TIMEZONES, DAYS_OF_WEEK, HOURS_OF_DAY } from '../../../time';\n\nexport const TIME_BASED_SELECTION: TimeBasedRule[] = [\n {\n name: 'Night / low-traffic cost save',\n timeConditions: {\n daysOfWeek: DAYS_OF_WEEK,\n hoursOfDay: HOURS_OF_DAY,\n timeZones: ALL_COUNTRY_TIMEZONES,\n },\n providerPreferences: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 100,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 93, maxResponseTime: 1600, checkInterval: 10 },\n },\n ],\n reason: 'lower fees observed during off-peak — route to cheaper provider',\n },\n];\n","import { PAYMENT_PROVIDER_TYPE, type ProviderPreference, USER_TYPE } from '@plyaz/types';\n\nexport const UserTypeSelection: Record<USER_TYPE, ProviderPreference[]> = {\n [USER_TYPE.Fan]: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 90,\n trafficPercentage: 80,\n conditions: [],\n healthRequirements: { minSuccessRate: 94, maxResponseTime: 1200, checkInterval: 5 },\n },\n ],\n [USER_TYPE.Athlete]: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 100,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 97, maxResponseTime: 800, checkInterval: 3 },\n },\n ],\n [USER_TYPE.Club]: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 110,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 99, maxResponseTime: 700, checkInterval: 2 },\n },\n ],\n [USER_TYPE.Agent]: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 90,\n trafficPercentage: 80,\n conditions: [],\n healthRequirements: { minSuccessRate: 93, maxResponseTime: 1300, checkInterval: 6 },\n },\n ],\n [USER_TYPE.Scout]: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 90,\n trafficPercentage: 80,\n conditions: [],\n healthRequirements: { minSuccessRate: 93, maxResponseTime: 1300, checkInterval: 6 },\n },\n ],\n [USER_TYPE.Admin]: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 120,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 99, maxResponseTime: 600, checkInterval: 2 },\n },\n ],\n [USER_TYPE.System]: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 120,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 99, maxResponseTime: 600, checkInterval: 2 },\n },\n ],\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/payments/error-messages.ts","../../src/payments/events.ts","../../src/payments/gateway.ts","../../src/payments/providers/stripe/constant.ts","../../src/locale/currencies.ts","../../src/locale/countries.ts","../../src/time/constants.ts","../../src/payments/providers/stripe/config.ts","../../src/utils/mapping/paymentMapping.ts","../../src/payments/providers/stripe/capabilities.ts","../../src/payments/validators.ts","../../src/payments/routing/methods/ab-testing/ab-testing.ts","../../src/db/constants.ts","../../src/payments/routing/methods/failover/strategies/priority-order.config.ts","../../src/payments/routing/methods/failover/strategies/next-available.config.ts","../../src/payments/routing/methods/failover/strategies/performance-based.config.ts","../../src/payments/routing/methods/failover/strategies/load-balanced.config.ts","../../src/payments/routing/methods/failover/strategies/geographic.config.ts","../../src/payments/routing/methods/failover/failover-registry.ts","../../src/payments/routing/methods/geographic/geographic.ts","../../src/payments/routing/methods/performance/performance.ts","../../src/payments/routing/methods/load-balancing/strategies/weighted.config.ts","../../src/payments/routing/methods/load-balancing/strategies/round-robin.config.ts","../../src/payments/routing/methods/load-balancing/strategies/least-connections.config.ts","../../src/payments/routing/methods/load-balancing/strategies/performance-based.config.ts","../../src/payments/routing/methods/load-balancing/strategies/custom.config.ts","../../src/payments/routing/methods/load-balancing/load-balancing-registry.ts","../../src/payments/routing/methods/cost-optimization/strategies/aggressive.config.ts","../../src/payments/routing/methods/cost-optimization/strategies/balanced.config.ts","../../src/payments/routing/methods/cost-optimization/strategies/conservative.config.ts","../../src/payments/routing/methods/cost-optimization/strategies/targeted.config.ts","../../src/payments/routing/methods/cost-optimization/cost-optimization-registry.ts","../../src/payments/routing/provider-selection/amount-based-selection.ts","../../src/payments/routing/provider-selection/currency-specific-providers.ts","../../src/payments/routing/provider-selection/custom-rules.ts","../../src/payments/routing/provider-selection/default-providers.ts","../../src/payments/routing/provider-selection/method-specific-providers.ts","../../src/payments/routing/provider-selection/region-specific-providers.ts","../../src/payments/routing/provider-selection/time-based-selection.ts","../../src/payments/routing/provider-selection/user-type-providers.ts"],"names":["DEFAULT_HMAC_ALGORITHM","DEFAULT_ENVIRONMENT","THRESHOLDS","SENSITIVE_KEYS","RISK_SCORE","LOG_LEVELS","REDACTED","PAYMENT_ERROR_MESSAGES","PAYMENT_ALERT_SEVERITY","ERROR_SEVERITY","PROCESSING_ERROR_MESSAGES","WEBHOOK_CONSTANTS","RECOVERY_STEPS","REFUND_ERROR_MESSAGES","DEFAULT_REFUND_LEVELS","FACTORY_MESSAGES","PAYLOAD_KEYS","STRIPE_ERROR_TYPES","PROVIDER_ERROR_MESSAGES","SECURITY_ERROR_MESSAGES","DEFAULT_PAYEMNT_PRIORITY","DEFAULT_URGENT","DEFAULT_MAX_LISTENERS","DEFAULT_HANDLER_TIMEOUT_MS","DEFAULT_EVENT_COUNT","DEFAULT_SUCCESS_THRESHOLD","DEFAULT_PARTIAL_SUCCESS_THRESHOLD","EVENT_DEFAULTS","EVENT_COMPONENT","EVENT_ERROR_CODE","EVENT_ERROR_MESSAGE","EVENT_ENVIRONMENT","PHASE_NONE","PHASE_CAPTURING","PHASE_AT_TARGET","PHASE_BUBBLING","EVENT_PHASE","EVENT_META_KEY","EVENT_SOURCE_FIELD","EVENT_RESULT_STATUS","EmptyArray","__name","CurrentTimestamp","SETTLED_PROMISE_STATUS","EVENT_NORMALIZER_MESSAGES","field","DEFAULT_RETRY_DELAY_MS","MAX_CIRCUIT_OPEN_MS","DEFAULT_CIRCUIT_BREAKER_FAILURE_THRESHOLD","FALLBACK_REASON","FALLBACK_NEXT_STEPS","RISK_LEVEL","SECURITY_FLAGS","CUSTOM_RULE_OPERATER","PAYMENT_GATEWAY_ERROR_MESSAGE","STRIPE_API_VERSION","STRIPE_MAPPING_VERSION","ZERO_AMOUNT","DEFAULT_PROCESSING_RATE","DEFAULT_PLATFORM_RATE","DEFAULT_CROSS_BORDER_RATE","DEFAULT_PRIORITY","FIXED_FEES","NEXT_STEP_EXPECTED_UPDATE_IN","STRIPE_CONFIDENCE_HIGH","STRIPE_PRIORITY_HIGH","STRIPE_CONFIDENCE_MEDIUM","STRIPE_PRIORITY_MEDIUM","AMOUNT_DECIMALS","AMOUNT_DIVISOR","UNIX_TIMESTAMP_MULTIPLIER","TIMESTAMP_FALLBACK","NEXT_STEP_USER_ACTION","NEXT_STEP_SYSTEM_ACTION","STRIPE_EVENT_TYPE","STRIPE_PAYMENT_INTENT_STATUS","DEFAULT_PROCESSING_TIME","DEFAULT_SETTLEMENT_TIME","STRIPE_DATA_PATHS","PAYMENT_OPERATION","STRIPE_MESSAGES","CURRENCY_CODES","COUNTRY_CODES","COUNTRY_CODES_SCOPED","DAYS_IN_WEEK","EARLY_MORNING_HOURS","TIME_CONSTANTS","COUNTRY_TIMEZONES","ALL_COUNTRY_TIMEZONES","DAYS_OF_WEEK","i","HOURS_OF_DAY","stripeConfig","PAYMENT_PROVIDER_TYPE","PAYMENT_METHOD","FEE_CONTEXT","HTTP_STATUS","createDefaultPaymentMethodMap","defaultValue","acc","method","providerCapabilities","payoutAccountCapabilities","USER_TYPE_KYC_MAPPING","USER_TYPE","KYC_ENTITY_TYPE","stripeLinkTypeMap","ONBOARD_LINK_TYPE","SUPPORTED_CURRENCIES","VALIDATION_MESSAGES","VALIDATOR_NAMES","CORE_FIELDS","VALID_BILLING_CYCLES","VALID_RISK_LEVELS","VALID_RECURRENCE_FREQUENCIES","MIN_POSITIVE_AMOUNT","CURRENCY_CODE_LENGTH","ABTesting","ROUTING_STRATEGY","COST_OPTIMIZATION_STRATEGY","NUMERIX","FAILOVER_PRIORITY_ORDER","FAIL_OVER_STRATEGY","FAILOVER_NEXT_AVAILABLE","FAILOVER_PERFORMANCE_BASED","FAILOVER_LOAD_BALANCED","FAILOVER_GEOGRAPHIC","FAILOVER_REGISTRY","Geographic","REGULATORY_FRAMEWORK","TRANSACTION_TYPE","Performance","PERFORMANCE_METRIC_TYPE","WeightedLoadBalancing","LOAD_BALANCING_STRATEGY","RoundRobinLoadBalancing","LeastConnectionsLoadBalancing","PerformanceBasedLoadBalancing","CustomLoadBalancing","LoadBalancingRegistry","COST_OPTIMIZATION_AGGRESSIVE","COST_OPTIMIZATION_BALANCED","COST_OPTIMIZATION_CONSERVATIVE","COST_OPTIMIZATION_TARGETED","COST_OPTIMIZATION","AMOUNT_BASED_SELECTION","CurrencySpecificProviders","CUSTOM_RULES","DEFAULT_PROVIDERS","MethodSpecificProviders","regionSpecificProviders","TIME_BASED_SELECTION","UserTypeSelection"],"mappings":"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","file":"index.mjs","sourcesContent":["import { ERROR_SEVERITY } from '@plyaz/types';\n\nexport const DEFAULT_HMAC_ALGORITHM = 'sha256';\nexport const DEFAULT_ENVIRONMENT = 'unknown';\n\nexport const THRESHOLDS = {\n RETRYABLE_ERROR_RATIO: 0.5,\n USER_FACING_ERROR_RATIO: 0.3,\n};\n\nexport const SENSITIVE_KEYS = ['token', 'secret', 'signature'];\n\nexport const RISK_SCORE = {\n MIN_SCORE: 100,\n} as const;\n\n// Log levels\nexport const LOG_LEVELS = {\n CRITICAL: 'critical',\n ERROR: 'error',\n WARN: 'warn',\n} as const;\n\n// Webhook redacted placeholders\nexport const REDACTED = {\n RAW_BODY: '[REDACTED_RAW_BODY]',\n SENSITIVE: '[REDACTED]',\n};\n\nexport const PAYMENT_ERROR_MESSAGES = {\n GENERIC_SYSTEM_ERROR: 'An unexpected error occurred while processing payment.',\n USER_FRIENDLY_SYSTEM_ERROR: 'A payment system error occurred. Please try again later.',\n USER_FRIENDLY_ALT: 'Payment error. Please try again.',\n SYSTEM: 'An internal payment error occurred. Our team has been notified.',\n VALIDATION: 'Some payment information is invalid. Please review your details.',\n AUTHENTICATION: 'Your session has expired. Please log in again.',\n AUTHORIZATION: 'You are not authorized to perform this payment action.',\n PROVIDER: 'There was an issue communicating with the payment provider.',\n NETWORK: 'Network error. Please try again later.',\n FRAUD: 'Suspicious activity detected. Please contact support.',\n REFUND: 'Refund could not be processed. Please try again later.',\n WEBHOOK: 'Payment notification failed. We are investigating.',\n PROCESSING: 'Payment is currently being processed. Please wait a moment.',\n COMPLIANCE: 'This transaction violates compliance rules. Please contact support.',\n LIMITS: 'The payment exceeds your transaction limit.',\n CONFIGURATION: 'Payment configuration error. Please contact your administrator.',\n DEFAULT: 'An unexpected error occurred while processing your payment.',\n INVALID_VALUE: 'Invalid value provided',\n PROVIDER_GENERIC: 'Provider error occurred',\n REFUND_NOT_ALLOWED: 'Refund not allowed',\n REFUND_AUTHORIZATION: 'Refund authorization failed',\n REFUND_PROCESSING: 'Refund processing failed',\n STRIPE_GENERIC: 'An unexpected error occurred while communicating with Stripe',\n};\n\nexport const PAYMENT_ALERT_SEVERITY: Record<\n (typeof ERROR_SEVERITY)[keyof typeof ERROR_SEVERITY],\n boolean\n> = {\n [ERROR_SEVERITY.Low]: true,\n [ERROR_SEVERITY.Medium]: false,\n [ERROR_SEVERITY.High]: true,\n [ERROR_SEVERITY.Critical]: true,\n};\n\nexport const PROCESSING_ERROR_MESSAGES = {\n GENERIC: 'There was an error processing your payment. Please try again.',\n API_RESPONSE_GENERIC: 'A processing error occurred.',\n};\n\nexport const WEBHOOK_CONSTANTS = {\n DEFAULT_MESSAGE: 'An error occurred while processing the webhook.',\n DEFAULT_USER_MESSAGE: 'An error occurred while handling the webhook.',\n};\n\nexport const RECOVERY_STEPS = {\n RETRY: 'Retry transaction after delay.',\n NOTIFY_USER: 'Notify user and suggest contacting support.',\n LOG_ONLY: 'Log and continue monitoring.',\n};\n\nexport const REFUND_ERROR_MESSAGES = {\n NOT_ALLOWED: 'Refund not allowed',\n AUTHORIZATION: 'Refund authorization failed',\n PROCESSING: 'Refund processing failed',\n DEFAULT_API_MESSAGE: 'An error occurred during the refund process.',\n DEFAULT_USER_MESSAGE: 'Refund could not be processed. Please try again or contact support.',\n};\n\nexport const DEFAULT_REFUND_LEVELS = {\n REQUIRED: 'manager',\n CURRENT: 'user',\n};\n\nexport const FACTORY_MESSAGES = {\n PROVIDER_ERROR_PREFIX: 'Provider {provider} error',\n STRIPE_GENERIC: 'An unexpected error occurred while communicating with Stripe.',\n WEBHOOK_SANITIZE_FAIL: 'Failed to sanitize webhook payload',\n UNKNOWN_REFUND_TYPE: 'Unknown refund error type: {type}',\n REDACTION_FAIL: 'Failed to sanitize object.',\n};\n\nexport const PAYLOAD_KEYS = {\n PROVIDER: 'provider',\n EVENT: 'event',\n};\n\nexport const STRIPE_ERROR_TYPES = {\n API_CONNECTION: 'api_connection_error',\n RATE_LIMIT: 'rate_limit_error',\n INVALID_REQUEST: 'invalid_request_error',\n CARD_ERROR: 'card_error',\n AUTHENTICATION: 'authentication_error',\n CARD_DECLINED: 'card_declined',\n} as const;\n\nexport const PROVIDER_ERROR_MESSAGES = {\n DEFAULT_API_MESSAGE: 'An error occurred with the payment provider.',\n DEFAULT_USER_MESSAGE: 'A payment provider error occurred. Please try again later.',\n};\n\nexport const SECURITY_ERROR_MESSAGES = {\n DEFAULT_API_MESSAGE: 'A security error occurred while processing the payment.',\n DEFAULT_USER_MESSAGE: 'A security issue was detected with the payment. Please contact support.',\n\n FRAUD_DETECTED: {\n CODE: 'FRAUD_DETECTED',\n DEFAULT_COMPONENT: 'fraud-detector',\n USER_MESSAGE: 'This transaction appears to be suspicious and has been blocked for your safety.',\n RISK_THRESHOLDS: {\n HIGH: 70,\n CRITICAL: 90,\n },\n },\n};\n","/**\n * Event System Constants\n * Centralized constants for event emitter, handlers, and system-level configurations.\n */\n\n// Numeric Constants\nexport const DEFAULT_PAYEMNT_PRIORITY = 1;\nexport const DEFAULT_URGENT = 0;\nexport const DEFAULT_MAX_LISTENERS = 10;\nexport const DEFAULT_HANDLER_TIMEOUT_MS = 10000;\nexport const DEFAULT_EVENT_COUNT = 0;\n\n// Success Thresholds\nexport const DEFAULT_SUCCESS_THRESHOLD = 1.0; // 100% handlers succeeded\nexport const DEFAULT_PARTIAL_SUCCESS_THRESHOLD = 0.9; // 90% handlers succeeded\n\n// Default Values\nexport const EVENT_DEFAULTS = {\n PRIORITY: DEFAULT_PAYEMNT_PRIORITY,\n URGENT: DEFAULT_URGENT,\n MAX_LISTENERS: DEFAULT_MAX_LISTENERS,\n HANDLER_TIMEOUT_MS: DEFAULT_HANDLER_TIMEOUT_MS,\n SUCCESS_THRESHOLD: DEFAULT_SUCCESS_THRESHOLD,\n PARTIAL_SUCCESS_THRESHOLD: DEFAULT_PARTIAL_SUCCESS_THRESHOLD,\n EVENT_COUNT: DEFAULT_EVENT_COUNT,\n};\n\n// Component Names\nexport const EVENT_COMPONENT = {\n EMITTER: 'event-emitter',\n PAYMENT_GATEWAY: 'payment-gateway',\n SUBSCRIPTION_MANAGER: 'subscription-manager',\n PROVIDER_ADAPTER: 'provider-adapter',\n} as const;\n\n// Error Codes\nexport const EVENT_ERROR_CODE = {\n HANDLER_FAILED: 'HANDLER_FAILED',\n HANDLER_CRASHED: 'HANDLER_CRASHED',\n HANDLER_TIMEOUT: 'HANDLER_TIMEOUT',\n} as const;\n\n// Error Messages\nexport const EVENT_ERROR_MESSAGE = {\n HANDLER_FAILED: 'Handler execution failed',\n HANDLER_TIMEOUT: 'Handler execution timed out',\n};\n\n// Environment\nexport const EVENT_ENVIRONMENT = {\n DEVELOPMENT: 'development',\n PRODUCTION: 'production',\n TEST: 'test',\n} as const;\n\n//Event Phases\nexport const PHASE_NONE = 0;\nexport const PHASE_CAPTURING = 1;\nexport const PHASE_AT_TARGET = 2;\nexport const PHASE_BUBBLING = 3;\n\nexport const EVENT_PHASE = {\n NONE: PHASE_NONE,\n CAPTURING_PHASE: PHASE_CAPTURING,\n AT_TARGET: PHASE_AT_TARGET,\n BUBBLING_PHASE: PHASE_BUBBLING,\n} as const;\n\n// Event Meta Keys\nexport const EVENT_META_KEY = {\n PRIORITY: 'priority',\n URGENT: 'urgent',\n CATEGORY: 'category',\n TAGS: 'tags',\n SOURCE: 'source',\n} as const;\n\n// Event Source Fields\nexport const EVENT_SOURCE_FIELD = {\n COMPONENT: 'component',\n ENVIRONMENT: 'environment',\n} as const;\n\n// Event Result Status\nexport const EVENT_RESULT_STATUS = {\n ERROR: 'error',\n INFO: 'info',\n WARNING: 'warning',\n CRITICAL: 'critical',\n} as const;\n\n// Utils\nexport const EmptyArray = <T = unknown>(): T[] => [];\nexport const CurrentTimestamp = (): number => Date.now();\n\n/**\n * Enum representing the state of a Promise.\n */\nexport const SETTLED_PROMISE_STATUS = {\n FULFILLED: 'fulfilled',\n REJECTED: 'rejected',\n} as const;\n\nexport const EVENT_NORMALIZER_MESSAGES = {\n NORMALIZATION_FAILED: 'Event normalization failed.',\n MAPPING_MISSING: 'No mapping configuration found for provider.',\n MAPPING_RETRIEVE_FAILED: 'Failed to retrieve provider mapping.',\n BUILD_NORMALIZED_DATA_FAILED: 'Failed to build normalized payment data.',\n BUILD_UNIFIED_EVENT_FAILED: 'Failed to build unified event.',\n EVENT_TYPE_MAPPING_FAILED: 'Event type mapping failed.',\n STATUS_MAPPING_FAILED: 'Status mapping failed.',\n PAYLOAD_EXTRACTION_FAILED: 'Payload extraction failed.',\n requiredFileMissing: (field: string): string => `Required field \"${field}\" is missing.`,\n} as const;\n","export const DEFAULT_RETRY_DELAY_MS = 1000;\nexport const MAX_CIRCUIT_OPEN_MS = 60_000;\nexport const DEFAULT_CIRCUIT_BREAKER_FAILURE_THRESHOLD = 3;\n\nexport const FALLBACK_REASON = {\n NO_PROVIDER: 'NO_PROVIDER_SELECTED',\n PROVIDER_FAILURE: 'PROVIDER_FAILURE',\n CIRCUIT_OPEN: 'CIRCUIT_OPEN',\n UNKNOWN_ERROR: 'UNKNOWN_ERROR',\n};\n\nexport const FALLBACK_NEXT_STEPS = {\n USER_ACTION: 'contact_support',\n SYSTEM_ACTION: 'manual_review',\n} as const;\n\n/** Risk levels */\nexport const RISK_LEVEL = {\n LOW: 'low',\n MEDIUM: 'medium',\n HIGH: 'high',\n} as const;\n\n/** Security flags */\nexport const SECURITY_FLAGS = {\n FALLBACK_USED: 'fallback_used',\n} as const;\n\n/** Allowed operators for custom rules */\nexport enum CUSTOM_RULE_OPERATER {\n ASSIGNMENT = 'assignment',\n LOGICAL = 'logical',\n COMPARISON = 'comparison',\n ARITHMETIC = 'arithmetic',\n CONDITIONAL = 'conditional',\n CONCATENATE = 'concatenate',\n}\n\nexport const PAYMENT_GATEWAY_ERROR_MESSAGE = {\n // General\n INITIAL_PAYMENT_ATTEMPT: 'Initial payment attempt.',\n PAYMENT_OPERATION_FAILED: 'Payment operation failed.',\n NON_PAYMENT_OPERATION_FAILED: 'Non-payment operation failed.',\n ADAPTER_NOT_FOUND: 'Adapter not found for provider:',\n NO_VALID_ADAPTER: 'No valid provider adapter found.',\n UNSUPPORTED_FEATURE: 'Requested feature is not supported by the provider.',\n UNKNOWN_PROVIDER: 'Unknown payment provider specified.',\n UNKNOWN_ERROR: 'An unknown error occurred during payment processing.',\n\n // Idempotency / concurrency\n DUPLICATE_PAYMENT_IN_PROGRESS: 'A payment with this idempotency key is already in progress.',\n DUPLICATE_REFUND_IN_PROGRESS: 'A refund for this transaction is already in progress.',\n\n // Validation\n MISSING_TRANSACTION_ID: 'Transaction ID is required for refund operation.',\n INVALID_PAYMENT_REQUEST: 'Invalid payment request payload.',\n INVALID_PROVIDER_CONFIGURATION: 'Invalid or missing provider configuration.',\n\n // Operations\n CAPTURE_PAYMENT_FAILED: 'Capture payment operation failed.',\n CANCEL_PAYMENT_FAILED: 'Cancel payment operation failed.',\n PROCESS_REFUND_FAILED: 'Refund operation failed.',\n GET_REFUND_STATUS_FAILED: 'Failed to retrieve refund status.',\n GET_PAYMENT_STATUS_FAILED: 'Failed to retrieve payment status.',\n GET_TRANSACTION_FAILED: 'Failed to retrieve transaction details.',\n CREATE_CUSTOMER_UNSUPPORTED: 'Create customer not supported by this provider.',\n SAVE_PAYMENT_METHOD_UNSUPPORTED: 'Save payment method not supported by this provider.',\n DELETE_PAYMENT_METHOD_UNSUPPORTED: 'Delete payment method not supported by this provider.',\n GET_USER_PAYMENT_METHODS_UNSUPPORTED: 'Get user payment methods not supported by this provider.',\n CREATE_SUBSCRIPTION_UNSUPPORTED: 'Create subscription not supported by this provider.',\n CANCEL_SUBSCRIPTION_UNSUPPORTED: 'Cancel subscription not supported by this provider.',\n PROCESS_PAYOUT_UNSUPPORTED: 'Payout not supported by this provider.',\n GET_TRANSACTION_HISTORY_UNSUPPORTED: 'Transaction history not supported by this provider.',\n\n // Gateway internal\n IDEMPOTENCY_LOCK_FAILED: 'Another operation with the same key is currently being processed.',\n FALLBACK_HANDLER_ERROR: 'An error occurred while executing fallback handling.',\n ROUTER_RESOLUTION_FAILED: 'Failed to resolve provider adapter route.',\n} as const;\n","export const STRIPE_API_VERSION = '2022-11-15';\nexport const STRIPE_MAPPING_VERSION = 'v1.0.0';\nexport const ZERO_AMOUNT = 0;\nexport const DEFAULT_PROCESSING_RATE = 0.029;\nexport const DEFAULT_PLATFORM_RATE = 0;\nexport const DEFAULT_CROSS_BORDER_RATE = 0.01;\nexport const DEFAULT_PRIORITY = 100;\n\nexport const FIXED_FEES = {\n CREDIT_CARD: 30,\n BANK_TRANSFER: 500,\n BOLETO_BANCARIO: 200,\n SEPA_DIRECT_DEBIT: 50,\n IDEAL_BANK: 50,\n} as const;\n\nexport const NEXT_STEP_EXPECTED_UPDATE_IN = {\n REDIRECT: 10,\n} as const;\n\n// Stripe mapping priorities & confidence\nexport const STRIPE_CONFIDENCE_HIGH = 1;\nexport const STRIPE_PRIORITY_HIGH = 100;\nexport const STRIPE_CONFIDENCE_MEDIUM = 0.9;\nexport const STRIPE_PRIORITY_MEDIUM = 80;\n\n// Display formatting\nexport const AMOUNT_DECIMALS = 2;\nexport const AMOUNT_DIVISOR = 100;\n\n// Timestamp conversion\nexport const UNIX_TIMESTAMP_MULTIPLIER = 1000;\n\n// Timestamps & limits\nexport const TIMESTAMP_FALLBACK = 0;\n\n/** Actions a user should take next in the payment flow */\nexport const NEXT_STEP_USER_ACTION = {\n REDIRECT: 'redirect',\n WAIT: 'wait',\n RETRY: 'retry',\n CONTACT_SUPPORT: 'contact_support',\n} as const;\n\n/** Actions the system should take next in the payment flow */\nexport const NEXT_STEP_SYSTEM_ACTION = {\n WEBHOOK_PENDING: 'webhook_pending',\n MANUAL_REVIEW: 'manual_review',\n AUTO_RETRY: 'auto_retry',\n} as const;\n\n/** Stripe provider event types for mapping */\nexport const STRIPE_EVENT_TYPE = {\n // Refunds\n CHARGE_REFUND_CREATED: 'charge.refund.created',\n REFUND_UPDATED: 'refund.updated',\n CHARGE_REFUND_SUCCEEDED: 'charge.refund.succeeded',\n CHARGE_REFUND_FAILED: 'charge.refund.failed',\n CHARGE_REFUND_CANCELED: 'charge.refund.canceled',\n\n // Disputes / Chargebacks\n CHARGE_DISPUTE_CREATED: 'charge.dispute.created',\n CHARGE_DISPUTE_UPDATED: 'charge.dispute.updated',\n CHARGE_DISPUTE_CLOSED: 'charge.dispute.closed',\n CHARGEBACK_RECEIVED: 'chargeback.received',\n CHARGEBACK_RESPONDED: 'chargeback.responded',\n CHARGE_DISPUTE_WON: 'charge.dispute.won',\n CHARGE_DISPUTE_LOST: 'charge.dispute.lost',\n\n // Payment methods\n PAYMENT_METHOD_ATTACHED: 'payment_method.attached',\n PAYMENT_METHOD_UPDATED: 'payment_method.updated',\n PAYMENT_METHOD_DETACHED: 'payment_method.detached',\n PAYMENT_METHOD_EXPIRED: 'payment_method.expired',\n\n // Subscriptions\n SUBSCRIPTION_CREATED: 'customer.subscription.created',\n SUBSCRIPTION_UPDATED: 'customer.subscription.updated',\n SUBSCRIPTION_DELETED: 'customer.subscription.deleted',\n SUBSCRIPTION_RENEWED: 'customer.subscription.renewed',\n SUBSCRIPTION_FAILED: 'customer.subscription.failed',\n SUBSCRIPTION_TRIAL_STARTED: 'customer.subscription.trial_started',\n SUBSCRIPTION_TRIAL_ENDED: 'customer.subscription.trial_ended',\n\n // Invoice / Checkout (Payment Links)\n INVOICE_PAYMENT_SUCCEEDED: 'invoice.payment_succeeded',\n INVOICE_PAYMENT_FAILED: 'invoice.payment_failed',\n CHECKOUT_SESSION_COMPLETED: 'checkout.session.completed',\n CHECKOUT_SESSION_EXPIRED: 'checkout.session.expired',\n CHECKOUT_SESSION_CANCELED: 'checkout.session.canceled',\n\n // Products & Pricing\n PRODUCT_CREATED: 'product.created',\n PRODUCT_UPDATED: 'product.updated',\n PRODUCT_DELETED: 'product.deleted',\n PRICE_CREATED: 'price.created',\n PRICE_UPDATED: 'price.updated',\n PRICE_DELETED: 'price.deleted',\n\n // Provider / System events\n PROVIDER_WEBHOOK_RECEIVED: 'provider.webhook.received',\n PROVIDER_WEBHOOK_PROCESSED: 'provider.webhook.processed',\n PROVIDER_API_CALLED: 'provider.api.called',\n PROVIDER_API_SUCCEEDED: 'provider.api.succeeded',\n PROVIDER_API_FAILED: 'provider.api.failed',\n} as const;\n\nexport const STRIPE_PAYMENT_INTENT_STATUS = {\n SUCCEEDED: 'succeeded',\n PROCESSING: 'processing',\n REQUIRES_ACTION: 'requires_action',\n REQUIRES_CONFIRMATION: 'requires_confirmation',\n REQUIRES_PAYMENT_METHOD: 'requires_payment_method',\n CANCELED: 'canceled',\n FAILED: 'failed',\n DECLINED: 'declined',\n EXPIRED: 'expired',\n AUTHORIZED: 'authorized',\n CAPTURED: 'captured',\n HELD: 'held',\n REFUNDED: 'refunded',\n PARTIALLY_REFUNDED: 'partially_refunded',\n DISPUTED: 'disputed',\n CHARGEBACK: 'chargeback',\n CHARGEBACK_RESOLVED: 'chargeback_resolved',\n} as const;\n\n/** Default processing time estimate */\nexport const DEFAULT_PROCESSING_TIME = {\n minimumMinutes: 5,\n maximumMinutes: 120,\n typicalMinutes: 30,\n factors: ['default estimate'],\n};\n\n/** Default settlement time estimate */\nexport const DEFAULT_SETTLEMENT_TIME = {\n minimumDays: 1,\n maximumDays: 5,\n typicalDays: 3,\n affectedByHolidays: true,\n};\n\nexport const STRIPE_DATA_PATHS = {\n TRANSACTION_ID: 'data.object.id',\n AMOUNT: 'data.object.amount',\n CURRENCY: 'data.object.currency',\n STATUS: 'data.object.status',\n PAYMENT_METHOD: 'data.object.payment_method',\n METADATA: 'data.object.metadata',\n};\n\nexport const PAYMENT_OPERATION = {\n INITIALIZE: 'initialize',\n CREATE_PAYMENT: 'createPayment',\n CAPTURE_PAYMENT: 'capturePayment',\n CANCEL_PAYMENT: 'cancelPayment',\n PROCESS_REFUND: 'processRefund',\n GET_REFUND_STATUS: 'getRefundStatus',\n GET_PAYMENT_STATUS: 'getPaymentStatus',\n PROCESS_WEBHOOK: 'processWebhook',\n VERIFY_WEBHOOK_SIGNATURE: 'verifyWebhookSignature',\n CALCULATE_FEES: 'calculateFees',\n GET_FEE_STRUCTURE: 'getFeeStructure',\n GET_TRANSACTION: 'getTransaction',\n WEBHOOK_PROCESS: 'webhookProcess',\n} as const;\n\nexport const STRIPE_MESSAGES = {\n MISSING_API_KEY: 'Missing Stripe API key',\n UNKNOWN_EVENT: 'unknown',\n MISSING_EVENT: 'missing',\n INIT_FAILED: 'Stripe SDK initialization failed',\n CREATE_PAYMENT_FAILED: 'Failed to create payment intent',\n CAPTURE_PAYMENT_FAILED: 'Failed to capture payment',\n CANCEL_PAYMENT_FAILED: 'Failed to cancel payment',\n REFUND_FAILED: 'Failed to process refund',\n REFUND_STATUS_FAILED: 'Failed to retrieve refund status',\n GET_PAYMENT_STATUS_FAILED: 'Failed to retrieve payment status',\n PROCESS_WEBHOOK_FAILED: 'Failed to process webhook',\n VERIFY_WEBHOOK_FAILED: 'Failed to verify webhook signature',\n CALCULATE_FEES_FAILED: 'Failed to calculate fees',\n GET_FEE_STRUCTURE_FAILED: 'Failed to get fee structure',\n GET_TRANSACTION_FAILED: 'Failed to retrieve transaction details',\n} as const;\n","/**\n * Currency Code Constants\n *\n * ISO 4217 currency codes for international currencies.\n *\n * @module locale/currencies\n */\n\n/**\n * Common currency codes (ISO 4217)\n */\nexport const CURRENCY_CODES = {\n // Major currencies\n USD: 'USD', // US Dollar\n EUR: 'EUR', // Euro\n GBP: 'GBP', // British Pound Sterling\n JPY: 'JPY', // Japanese Yen\n CHF: 'CHF', // Swiss Franc\n CAD: 'CAD', // Canadian Dollar\n AUD: 'AUD', // Australian Dollar\n CNY: 'CNY', // Chinese Yuan Renminbi\n\n // Asian currencies\n INR: 'INR', // Indian Rupee\n KRW: 'KRW', // South Korean Won\n SGD: 'SGD', // Singapore Dollar\n HKD: 'HKD', // Hong Kong Dollar\n TWD: 'TWD', // Taiwan New Dollar\n THB: 'THB', // Thai Baht\n IDR: 'IDR', // Indonesian Rupiah\n MYR: 'MYR', // Malaysian Ringgit\n PHP: 'PHP', // Philippine Peso\n VND: 'VND', // Vietnamese Dong\n BDT: 'BDT', // Bangladeshi Taka\n PKR: 'PKR', // Pakistani Rupee\n LKR: 'LKR', // Sri Lankan Rupee\n\n // European currencies\n SEK: 'SEK', // Swedish Krona\n NOK: 'NOK', // Norwegian Krone\n DKK: 'DKK', // Danish Krone\n PLN: 'PLN', // Polish Zloty\n CZK: 'CZK', // Czech Koruna\n HUF: 'HUF', // Hungarian Forint\n RON: 'RON', // Romanian Leu\n BGN: 'BGN', // Bulgarian Lev\n HRK: 'HRK', // Croatian Kuna\n RSD: 'RSD', // Serbian Dinar\n ISK: 'ISK', // Icelandic Króna\n\n // Americas currencies\n BRL: 'BRL', // Brazilian Real\n MXN: 'MXN', // Mexican Peso\n ARS: 'ARS', // Argentine Peso\n CLP: 'CLP', // Chilean Peso\n COP: 'COP', // Colombian Peso\n PEN: 'PEN', // Peruvian Sol\n UYU: 'UYU', // Uruguayan Peso\n VES: 'VES', // Venezuelan Bolívar\n BOB: 'BOB', // Bolivian Boliviano\n PYG: 'PYG', // Paraguayan Guarani\n CRC: 'CRC', // Costa Rican Colón\n GTQ: 'GTQ', // Guatemalan Quetzal\n HNL: 'HNL', // Honduran Lempira\n NIO: 'NIO', // Nicaraguan Córdoba\n PAB: 'PAB', // Panamanian Balboa\n DOP: 'DOP', // Dominican Peso\n JMD: 'JMD', // Jamaican Dollar\n TTD: 'TTD', // Trinidad and Tobago Dollar\n BBD: 'BBD', // Barbadian Dollar\n\n // Middle Eastern currencies\n AED: 'AED', // UAE Dirham\n SAR: 'SAR', // Saudi Riyal\n QAR: 'QAR', // Qatari Riyal\n KWD: 'KWD', // Kuwaiti Dinar\n BHD: 'BHD', // Bahraini Dinar\n OMR: 'OMR', // Omani Rial\n JOD: 'JOD', // Jordanian Dinar\n ILS: 'ILS', // Israeli New Shekel\n TRY: 'TRY', // Turkish Lira\n IQD: 'IQD', // Iraqi Dinar\n IRR: 'IRR', // Iranian Rial\n LBP: 'LBP', // Lebanese Pound\n SYP: 'SYP', // Syrian Pound\n\n // African currencies\n ZAR: 'ZAR', // South African Rand\n NGN: 'NGN', // Nigerian Naira\n EGP: 'EGP', // Egyptian Pound\n KES: 'KES', // Kenyan Shilling\n GHS: 'GHS', // Ghanaian Cedi\n MAD: 'MAD', // Moroccan Dirham\n TND: 'TND', // Tunisian Dinar\n DZD: 'DZD', // Algerian Dinar\n ETB: 'ETB', // Ethiopian Birr\n TZS: 'TZS', // Tanzanian Shilling\n UGX: 'UGX', // Ugandan Shilling\n ZMW: 'ZMW', // Zambian Kwacha\n BWP: 'BWP', // Botswana Pula\n MUR: 'MUR', // Mauritian Rupee\n\n // Pacific currencies\n NZD: 'NZD', // New Zealand Dollar\n FJD: 'FJD', // Fijian Dollar\n PGK: 'PGK', // Papua New Guinean Kina\n\n // Former Soviet Union currencies\n RUB: 'RUB', // Russian Ruble\n UAH: 'UAH', // Ukrainian Hryvnia\n BYN: 'BYN', // Belarusian Ruble\n KZT: 'KZT', // Kazakhstani Tenge\n UZS: 'UZS', // Uzbekistani Som\n AZN: 'AZN', // Azerbaijani Manat\n GEL: 'GEL', // Georgian Lari\n AMD: 'AMD', // Armenian Dram\n\n // Cryptocurrency representations (unofficial)\n BTC: 'BTC', // Bitcoin\n ETH: 'ETH', // Ethereum\n USDT: 'USDT', // Tether\n USDC: 'USDC', // USD Coin\n} as const;\n\n/**\n * Currency metadata\n */\nexport const CURRENCY_INFO = {\n /**\n * Currencies with no decimal places\n */\n NO_DECIMAL_CURRENCIES: ['JPY', 'KRW', 'VND', 'IDR', 'CLP', 'ISK', 'TWD'],\n\n /**\n * Currencies with 3 decimal places\n */\n THREE_DECIMAL_CURRENCIES: ['BHD', 'IQD', 'JOD', 'KWD', 'OMR', 'TND'],\n\n /**\n * Major reserve currencies\n */\n RESERVE_CURRENCIES: ['USD', 'EUR', 'GBP', 'JPY', 'CNY'],\n\n /**\n * G7 currencies\n */\n G7_CURRENCIES: ['USD', 'EUR', 'GBP', 'JPY', 'CAD'],\n\n /**\n * Default decimal places for most currencies\n */\n DEFAULT_DECIMAL_PLACES: 2,\n} as const;\n\n/**\n * Type exports\n */\nexport type CurrencyCode = (typeof CURRENCY_CODES)[keyof typeof CURRENCY_CODES];\nexport type CurrencyInfo = (typeof CURRENCY_INFO)[keyof typeof CURRENCY_INFO];\n","/**\n * Country Constants\n *\n * ISO 3166-1 country codes and related data.\n *\n * @module locale/countries\n */\n\n/**\n * Common country codes (ISO 3166-1 alpha-2)\n */\nexport const COUNTRY_CODES = {\n // Americas\n US: 'US', // United States\n CA: 'CA', // Canada\n MX: 'MX', // Mexico\n BR: 'BR', // Brazil\n AR: 'AR', // Argentina\n CL: 'CL', // Chile\n CO: 'CO', // Colombia\n PE: 'PE', // Peru\n VE: 'VE', // Venezuela\n EC: 'EC', // Ecuador\n BO: 'BO', // Bolivia\n PY: 'PY', // Paraguay\n UY: 'UY', // Uruguay\n GY: 'GY', // Guyana\n SR: 'SR', // Suriname\n GF: 'GF', // French Guiana\n FK: 'FK', // Falkland Islands\n\n // Caribbean\n CU: 'CU', // Cuba\n DO: 'DO', // Dominican Republic\n HT: 'HT', // Haiti\n JM: 'JM', // Jamaica\n TT: 'TT', // Trinidad and Tobago\n BB: 'BB', // Barbados\n BS: 'BS', // Bahamas\n PR: 'PR', // Puerto Rico\n\n // Central America\n GT: 'GT', // Guatemala\n HN: 'HN', // Honduras\n SV: 'SV', // El Salvador\n NI: 'NI', // Nicaragua\n CR: 'CR', // Costa Rica\n PA: 'PA', // Panama\n BZ: 'BZ', // Belize\n\n // Europe\n GB: 'GB', // United Kingdom\n FR: 'FR', // France\n DE: 'DE', // Germany\n IT: 'IT', // Italy\n ES: 'ES', // Spain\n PT: 'PT', // Portugal\n NL: 'NL', // Netherlands\n BE: 'BE', // Belgium\n LU: 'LU', // Luxembourg\n CH: 'CH', // Switzerland\n AT: 'AT', // Austria\n IE: 'IE', // Ireland\n DK: 'DK', // Denmark\n SE: 'SE', // Sweden\n NO: 'NO', // Norway\n FI: 'FI', // Finland\n IS: 'IS', // Iceland\n PL: 'PL', // Poland\n CZ: 'CZ', // Czech Republic\n SK: 'SK', // Slovakia\n HU: 'HU', // Hungary\n RO: 'RO', // Romania\n BG: 'BG', // Bulgaria\n GR: 'GR', // Greece\n HR: 'HR', // Croatia\n SI: 'SI', // Slovenia\n RS: 'RS', // Serbia\n BA: 'BA', // Bosnia and Herzegovina\n ME: 'ME', // Montenegro\n MK: 'MK', // North Macedonia\n AL: 'AL', // Albania\n XK: 'XK', // Kosovo\n EE: 'EE', // Estonia\n LV: 'LV', // Latvia\n LT: 'LT', // Lithuania\n BY: 'BY', // Belarus\n UA: 'UA', // Ukraine\n MD: 'MD', // Moldova\n RU: 'RU', // Russia\n CY: 'CY', // Cyprus\n MT: 'MT', // Malta\n AD: 'AD', // Andorra\n MC: 'MC', // Monaco\n SM: 'SM', // San Marino\n VA: 'VA', // Vatican City\n LI: 'LI', // Liechtenstein\n\n // Asia\n CN: 'CN', // China\n JP: 'JP', // Japan\n KR: 'KR', // South Korea\n KP: 'KP', // North Korea\n TW: 'TW', // Taiwan\n HK: 'HK', // Hong Kong\n MO: 'MO', // Macao\n IN: 'IN', // India\n PK: 'PK', // Pakistan\n BD: 'BD', // Bangladesh\n LK: 'LK', // Sri Lanka\n NP: 'NP', // Nepal\n BT: 'BT', // Bhutan\n MV: 'MV', // Maldives\n AF: 'AF', // Afghanistan\n TH: 'TH', // Thailand\n VN: 'VN', // Vietnam\n MY: 'MY', // Malaysia\n SG: 'SG', // Singapore\n ID: 'ID', // Indonesia\n PH: 'PH', // Philippines\n BN: 'BN', // Brunei\n KH: 'KH', // Cambodia\n LA: 'LA', // Laos\n MM: 'MM', // Myanmar\n TL: 'TL', // Timor-Leste\n MN: 'MN', // Mongolia\n KZ: 'KZ', // Kazakhstan\n UZ: 'UZ', // Uzbekistan\n TJ: 'TJ', // Tajikistan\n KG: 'KG', // Kyrgyzstan\n TM: 'TM', // Turkmenistan\n AZ: 'AZ', // Azerbaijan\n GE: 'GE', // Georgia\n AM: 'AM', // Armenia\n\n // Middle East\n SA: 'SA', // Saudi Arabia\n AE: 'AE', // United Arab Emirates\n QA: 'QA', // Qatar\n KW: 'KW', // Kuwait\n BH: 'BH', // Bahrain\n OM: 'OM', // Oman\n YE: 'YE', // Yemen\n JO: 'JO', // Jordan\n LB: 'LB', // Lebanon\n SY: 'SY', // Syria\n IQ: 'IQ', // Iraq\n IR: 'IR', // Iran\n IL: 'IL', // Israel\n PS: 'PS', // Palestine\n TR: 'TR', // Turkey\n\n // Africa\n EG: 'EG', // Egypt\n LY: 'LY', // Libya\n TN: 'TN', // Tunisia\n DZ: 'DZ', // Algeria\n MA: 'MA', // Morocco\n EH: 'EH', // Western Sahara\n MR: 'MR', // Mauritania\n ML: 'ML', // Mali\n NE: 'NE', // Niger\n TD: 'TD', // Chad\n SD: 'SD', // Sudan\n SS: 'SS', // South Sudan\n ER: 'ER', // Eritrea\n DJ: 'DJ', // Djibouti\n SO: 'SO', // Somalia\n ET: 'ET', // Ethiopia\n KE: 'KE', // Kenya\n UG: 'UG', // Uganda\n RW: 'RW', // Rwanda\n BI: 'BI', // Burundi\n TZ: 'TZ', // Tanzania\n MZ: 'MZ', // Mozambique\n MW: 'MW', // Malawi\n ZM: 'ZM', // Zambia\n ZW: 'ZW', // Zimbabwe\n BW: 'BW', // Botswana\n NA: 'NA', // Namibia\n ZA: 'ZA', // South Africa\n LS: 'LS', // Lesotho\n SZ: 'SZ', // Eswatini\n AO: 'AO', // Angola\n CD: 'CD', // Democratic Republic of the Congo\n CG: 'CG', // Republic of the Congo\n GA: 'GA', // Gabon\n GQ: 'GQ', // Equatorial Guinea\n CM: 'CM', // Cameroon\n CF: 'CF', // Central African Republic\n NG: 'NG', // Nigeria\n BJ: 'BJ', // Benin\n TG: 'TG', // Togo\n GH: 'GH', // Ghana\n BF: 'BF', // Burkina Faso\n CI: 'CI', // Côte d'Ivoire\n LR: 'LR', // Liberia\n SL: 'SL', // Sierra Leone\n GN: 'GN', // Guinea\n GW: 'GW', // Guinea-Bissau\n SN: 'SN', // Senegal\n GM: 'GM', // Gambia\n CV: 'CV', // Cape Verde\n ST: 'ST', // São Tomé and Príncipe\n MG: 'MG', // Madagascar\n MU: 'MU', // Mauritius\n SC: 'SC', // Seychelles\n KM: 'KM', // Comoros\n RE: 'RE', // Réunion\n\n // Oceania\n AU: 'AU', // Australia\n NZ: 'NZ', // New Zealand\n PG: 'PG', // Papua New Guinea\n FJ: 'FJ', // Fiji\n SB: 'SB', // Solomon Islands\n VU: 'VU', // Vanuatu\n NC: 'NC', // New Caledonia\n PF: 'PF', // French Polynesia\n WS: 'WS', // Samoa\n TO: 'TO', // Tonga\n TV: 'TV', // Tuvalu\n NR: 'NR', // Nauru\n KI: 'KI', // Kiribati\n PW: 'PW', // Palau\n MH: 'MH', // Marshall Islands\n FM: 'FM', // Micronesia\n GU: 'GU', // Guam\n MP: 'MP', // Northern Mariana Islands\n AS: 'AS', // American Samoa\n CK: 'CK', // Cook Islands\n NU: 'NU', // Niue\n TK: 'TK', // Tokelau\n WF: 'WF', // Wallis and Futuna\n PN: 'PN', // Pitcairn Islands\n\n // Antarctica\n AQ: 'AQ', // Antarctica\n} as const;\n\n/**\n * MVP DEFINED SCOPE: Only include Europe (EU) and Brazil (BR).\n */\nexport const COUNTRY_CODES_SCOPED = {\n // Brazil\n BR: 'BR',\n // Europe\n GB: 'GB',\n FR: 'FR',\n DE: 'DE',\n IT: 'IT',\n ES: 'ES',\n PT: 'PT',\n NL: 'NL',\n BE: 'BE',\n LU: 'LU',\n CH: 'CH',\n AT: 'AT',\n IE: 'IE',\n DK: 'DK',\n SE: 'SE',\n NO: 'NO',\n FI: 'FI',\n IS: 'IS',\n PL: 'PL',\n CZ: 'CZ',\n SK: 'SK',\n HU: 'HU',\n RO: 'RO',\n BG: 'BG',\n GR: 'GR',\n HR: 'HR',\n SI: 'SI',\n RS: 'RS',\n BA: 'BA',\n ME: 'ME',\n MK: 'MK',\n AL: 'AL',\n XK: 'XK',\n EE: 'EE',\n LV: 'LV',\n LT: 'LT',\n BY: 'BY',\n UA: 'UA',\n MD: 'MD',\n RU: 'RU',\n CY: 'CY',\n MT: 'MT',\n AD: 'AD',\n MC: 'MC',\n SM: 'SM',\n VA: 'VA',\n LI: 'LI',\n} as const;\n\n/**\n * MVP scoped country names\n */\nexport const COUNTRY_NAMES: { [key: string]: string } = {\n // Brazil (BR)\n BR: 'Brazil',\n\n // European Union (EU) Member States\n AT: 'Austria',\n BE: 'Belgium',\n BG: 'Bulgaria',\n HR: 'Croatia',\n CY: 'Cyprus',\n CZ: 'Czechia', // Using the modern short name\n DK: 'Denmark',\n EE: 'Estonia',\n FI: 'Finland',\n FR: 'France',\n DE: 'Germany',\n GR: 'Greece',\n HU: 'Hungary',\n IE: 'Ireland',\n IT: 'Italy',\n LV: 'Latvia',\n LT: 'Lithuania',\n LU: 'Luxembourg',\n MT: 'Malta',\n NL: 'Netherlands',\n PL: 'Poland',\n PT: 'Portugal',\n RO: 'Romania',\n SK: 'Slovakia',\n SI: 'Slovenia',\n ES: 'Spain',\n SE: 'Sweden',\n};\n\n/**\n * Country calling codes\n */\nexport const COUNTRY_CALLING_CODES = {\n /**\n * United States and Canada\n */\n '+1': ['US', 'CA'],\n /**\n * Egypt\n */\n '+20': ['EG'],\n /**\n * South Africa\n */\n '+27': ['ZA'],\n /**\n * Greece\n */\n '+30': ['GR'],\n /**\n * Netherlands\n */\n '+31': ['NL'],\n /**\n * Belgium\n */\n '+32': ['BE'],\n /**\n * France\n */\n '+33': ['FR'],\n /**\n * Spain\n */\n '+34': ['ES'],\n /**\n * Hungary\n */\n '+36': ['HU'],\n /**\n * Italy\n */\n '+39': ['IT'],\n /**\n * Romania\n */\n '+40': ['RO'],\n /**\n * Switzerland\n */\n '+41': ['CH'],\n /**\n * Austria\n */\n '+43': ['AT'],\n /**\n * United Kingdom\n */\n '+44': ['GB'],\n /**\n * Denmark\n */\n '+45': ['DK'],\n /**\n * Sweden\n */\n '+46': ['SE'],\n /**\n * Norway\n */\n '+47': ['NO'],\n /**\n * Poland\n */\n '+48': ['PL'],\n /**\n * Germany\n */\n '+49': ['DE'],\n /**\n * Peru\n */\n '+51': ['PE'],\n /**\n * Mexico\n */\n '+52': ['MX'],\n /**\n * Cuba\n */\n '+53': ['CU'],\n /**\n * Argentina\n */\n '+54': ['AR'],\n /**\n * Brazil\n */\n '+55': ['BR'],\n /**\n * Chile\n */\n '+56': ['CL'],\n /**\n * Colombia\n */\n '+57': ['CO'],\n /**\n * Venezuela\n */\n '+58': ['VE'],\n /**\n * Malaysia\n */\n '+60': ['MY'],\n /**\n * Australia\n */\n '+61': ['AU'],\n /**\n * Indonesia\n */\n '+62': ['ID'],\n /**\n * Philippines\n */\n '+63': ['PH'],\n /**\n * New Zealand\n */\n '+64': ['NZ'],\n /**\n * Singapore\n */\n '+65': ['SG'],\n /**\n * Thailand\n */\n '+66': ['TH'],\n /**\n * Russia and Kazakhstan\n */\n '+7': ['RU', 'KZ'],\n /**\n * Japan\n */\n '+81': ['JP'],\n /**\n * South Korea\n */\n '+82': ['KR'],\n /**\n * Vietnam\n */\n '+84': ['VN'],\n /**\n * China\n */\n '+86': ['CN'],\n /**\n * Turkey\n */\n '+90': ['TR'],\n /**\n * India\n */\n '+91': ['IN'],\n /**\n * Pakistan\n */\n '+92': ['PK'],\n /**\n * Afghanistan\n */\n '+93': ['AF'],\n /**\n * Sri Lanka\n */\n '+94': ['LK'],\n /**\n * Myanmar\n */\n '+95': ['MM'],\n /**\n * Iran\n */\n '+98': ['IR'],\n /**\n * Morocco\n */\n '+212': ['MA'],\n /**\n * Algeria\n */\n '+213': ['DZ'],\n /**\n * Tunisia\n */\n '+216': ['TN'],\n /**\n * Libya\n */\n '+218': ['LY'],\n /**\n * Gambia\n */\n '+220': ['GM'],\n /**\n * Senegal\n */\n '+221': ['SN'],\n /**\n * Mali\n */\n '+223': ['ML'],\n /**\n * Guinea\n */\n '+224': ['GN'],\n /**\n * Côte d'Ivoire\n */\n '+225': ['CI'],\n /**\n * Burkina Faso\n */\n '+226': ['BF'],\n /**\n * Niger\n */\n '+227': ['NE'],\n /**\n * Togo\n */\n '+228': ['TG'],\n /**\n * Benin\n */\n '+229': ['BJ'],\n /**\n * Mauritius\n */\n '+230': ['MU'],\n /**\n * Liberia\n */\n '+231': ['LR'],\n /**\n * Sierra Leone\n */\n '+232': ['SL'],\n /**\n * Ghana\n */\n '+233': ['GH'],\n /**\n * Nigeria\n */\n '+234': ['NG'],\n /**\n * Chad\n */\n '+235': ['TD'],\n /**\n * Central African Republic\n */\n '+236': ['CF'],\n /**\n * Cameroon\n */\n '+237': ['CM'],\n /**\n * Cape Verde\n */\n '+238': ['CV'],\n /**\n * São Tomé and Príncipe\n */\n '+239': ['ST'],\n /**\n * Equatorial Guinea\n */\n '+240': ['GQ'],\n /**\n * Gabon\n */\n '+241': ['GA'],\n /**\n * Congo\n */\n '+242': ['CG'],\n /**\n * Democratic Republic of the Congo\n */\n '+243': ['CD'],\n /**\n * Angola\n */\n '+244': ['AO'],\n /**\n * Guinea-Bissau\n */\n '+245': ['GW'],\n /**\n * Kenya\n */\n '+254': ['KE'],\n /**\n * Tanzania\n */\n '+255': ['TZ'],\n /**\n * Uganda\n */\n '+256': ['UG'],\n /**\n * Burundi\n */\n '+257': ['BI'],\n /**\n * Mozambique\n */\n '+258': ['MZ'],\n /**\n * Zambia\n */\n '+260': ['ZM'],\n /**\n * Madagascar\n */\n '+261': ['MG'],\n /**\n * Zimbabwe\n */\n '+263': ['ZW'],\n /**\n * Namibia\n */\n '+264': ['NA'],\n /**\n * Malawi\n */\n '+265': ['MW'],\n /**\n * Lesotho\n */\n '+266': ['LS'],\n /**\n * Botswana\n */\n '+267': ['BW'],\n /**\n * Eswatini\n */\n '+268': ['SZ'],\n /**\n * Seychelles\n */\n '+248': ['SC'],\n /**\n * Rwanda\n */\n '+250': ['RW'],\n /**\n * Ethiopia\n */\n '+251': ['ET'],\n /**\n * Somalia\n */\n '+252': ['SO'],\n /**\n * Djibouti\n */\n '+253': ['DJ'],\n /**\n * Hong Kong\n */\n '+852': ['HK'],\n /**\n * Macao\n */\n '+853': ['MO'],\n /**\n * Bangladesh\n */\n '+880': ['BD'],\n /**\n * Taiwan\n */\n '+886': ['TW'],\n /**\n * Maldives\n */\n '+960': ['MV'],\n /**\n * Lebanon\n */\n '+961': ['LB'],\n /**\n * Jordan\n */\n '+962': ['JO'],\n /**\n * Syria\n */\n '+963': ['SY'],\n /**\n * Iraq\n */\n '+964': ['IQ'],\n /**\n * Kuwait\n */\n '+965': ['KW'],\n /**\n * Saudi Arabia\n */\n '+966': ['SA'],\n /**\n * Yemen\n */\n '+967': ['YE'],\n /**\n * Oman\n */\n '+968': ['OM'],\n /**\n * Palestine\n */\n '+970': ['PS'],\n /**\n * United Arab Emirates\n */\n '+971': ['AE'],\n /**\n * Israel\n */\n '+972': ['IL'],\n /**\n * Bahrain\n */\n '+973': ['BH'],\n /**\n * Qatar\n */\n '+974': ['QA'],\n /**\n * Bhutan\n */\n '+975': ['BT'],\n /**\n * Mongolia\n */\n '+976': ['MN'],\n /**\n * Nepal\n */\n '+977': ['NP'],\n /**\n * Tajikistan\n */\n '+992': ['TJ'],\n /**\n * Turkmenistan\n */\n '+993': ['TM'],\n /**\n * Azerbaijan\n */\n '+994': ['AZ'],\n /**\n * Georgia\n */\n '+995': ['GE'],\n /**\n * Kyrgyzstan\n */\n '+996': ['KG'],\n /**\n * Uzbekistan\n */\n '+998': ['UZ'],\n} as const;\n\n/**\n * Regional groupings\n */\nexport const COUNTRY_REGIONS = {\n /**\n * European Union member states\n */\n EU: [\n 'AT',\n 'BE',\n 'BG',\n 'HR',\n 'CY',\n 'CZ',\n 'DK',\n 'EE',\n 'FI',\n 'FR',\n 'DE',\n 'GR',\n 'HU',\n 'IE',\n 'IT',\n 'LV',\n 'LT',\n 'LU',\n 'MT',\n 'NL',\n 'PL',\n 'PT',\n 'RO',\n 'SK',\n 'SI',\n 'ES',\n 'SE',\n ],\n\n /**\n * North American countries\n */\n NORTH_AMERICA: ['US', 'CA', 'MX'],\n\n /**\n * South American countries\n */\n SOUTH_AMERICA: ['AR', 'BO', 'BR', 'CL', 'CO', 'EC', 'GF', 'GY', 'PY', 'PE', 'SR', 'UY', 'VE'],\n\n /**\n * G7 countries\n */\n G7: ['US', 'CA', 'GB', 'FR', 'DE', 'IT', 'JP'],\n\n /**\n * G20 countries\n */\n G20: [\n 'AR',\n 'AU',\n 'BR',\n 'CA',\n 'CN',\n 'FR',\n 'DE',\n 'IN',\n 'ID',\n 'IT',\n 'JP',\n 'KR',\n 'MX',\n 'RU',\n 'SA',\n 'ZA',\n 'TR',\n 'GB',\n 'US',\n ],\n\n /**\n * ASEAN countries\n */\n ASEAN: ['BN', 'KH', 'ID', 'LA', 'MY', 'MM', 'PH', 'SG', 'TH', 'VN'],\n\n /**\n * BRICS countries\n */\n BRICS: ['BR', 'RU', 'IN', 'CN', 'ZA'],\n\n /**\n * OECD countries\n */\n OECD: [\n 'AU',\n 'AT',\n 'BE',\n 'CA',\n 'CL',\n 'CO',\n 'CR',\n 'CZ',\n 'DK',\n 'EE',\n 'FI',\n 'FR',\n 'DE',\n 'GR',\n 'HU',\n 'IS',\n 'IE',\n 'IL',\n 'IT',\n 'JP',\n 'KR',\n 'LV',\n 'LT',\n 'LU',\n 'MX',\n 'NL',\n 'NZ',\n 'NO',\n 'PL',\n 'PT',\n 'SK',\n 'SI',\n 'ES',\n 'SE',\n 'CH',\n 'TR',\n 'GB',\n 'US',\n ],\n\n /**\n * Commonwealth countries\n */\n COMMONWEALTH: [\n 'AG',\n 'AU',\n 'BS',\n 'BD',\n 'BB',\n 'BZ',\n 'BW',\n 'BN',\n 'CM',\n 'CA',\n 'CY',\n 'DM',\n 'FJ',\n 'GM',\n 'GH',\n 'GD',\n 'GY',\n 'IN',\n 'JM',\n 'KE',\n 'KI',\n 'LS',\n 'MW',\n 'MY',\n 'MV',\n 'MT',\n 'MU',\n 'MZ',\n 'NA',\n 'NR',\n 'NZ',\n 'NG',\n 'PK',\n 'PG',\n 'RW',\n 'KN',\n 'LC',\n 'VC',\n 'WS',\n 'SC',\n 'SL',\n 'SG',\n 'SB',\n 'ZA',\n 'LK',\n 'SZ',\n 'TZ',\n 'TO',\n 'TT',\n 'TV',\n 'UG',\n 'GB',\n 'VU',\n 'ZM',\n ],\n} as const;\n\n/**\n * Country code to region mapping for CDN headers\n */\nexport const COUNTRY_REGIONS_DETAILED: Record<string, { region: string; state?: string }> = {\n // EU countries\n DE: { region: 'eu' },\n FR: { region: 'eu' },\n IT: { region: 'eu' },\n ES: { region: 'eu' },\n NL: { region: 'eu' },\n BE: { region: 'eu' },\n AT: { region: 'eu' },\n SE: { region: 'eu' },\n DK: { region: 'eu' },\n FI: { region: 'eu' },\n NO: { region: 'eu' },\n PL: { region: 'eu' },\n CZ: { region: 'eu' },\n HU: { region: 'eu' },\n SK: { region: 'eu' },\n SI: { region: 'eu' },\n HR: { region: 'eu' },\n BG: { region: 'eu' },\n RO: { region: 'eu' },\n GR: { region: 'eu' },\n PT: { region: 'eu' },\n IE: { region: 'eu' },\n LU: { region: 'eu' },\n MT: { region: 'eu' },\n CY: { region: 'eu' },\n EE: { region: 'eu' },\n LV: { region: 'eu' },\n LT: { region: 'eu' },\n GB: { region: 'eu' },\n IS: { region: 'eu' },\n LI: { region: 'eu' },\n CH: { region: 'eu' },\n\n // US and states (would need more sophisticated detection for states)\n US: { region: 'us' },\n CA: { region: 'ca' }, // Canada as separate region\n\n // China\n CN: { region: 'cn' },\n HK: { region: 'cn' },\n MO: { region: 'cn' },\n\n // Japan\n JP: { region: 'jp' },\n\n // Other Asian countries\n KR: { region: 'global' }, // South Korea\n TW: { region: 'global' }, // Taiwan\n SG: { region: 'global' }, // Singapore\n MY: { region: 'global' }, // Malaysia\n TH: { region: 'global' }, // Thailand\n IN: { region: 'global' }, // India\n ID: { region: 'global' }, // Indonesia\n PH: { region: 'global' }, // Philippines\n VN: { region: 'global' }, // Vietnam\n\n // Oceania\n AU: { region: 'global' }, // Australia\n NZ: { region: 'global' }, // New Zealand\n\n // Americas (other than US/CA)\n MX: { region: 'global' }, // Mexico\n BR: { region: 'global' }, // Brazil\n AR: { region: 'global' }, // Argentina\n CL: { region: 'global' }, // Chile\n CO: { region: 'global' }, // Colombia\n\n // Middle East\n AE: { region: 'global' }, // UAE\n SA: { region: 'global' }, // Saudi Arabia\n IL: { region: 'global' }, // Israel\n TR: { region: 'global' }, // Turkey\n\n // Africa\n ZA: { region: 'global' }, // South Africa\n EG: { region: 'global' }, // Egypt\n NG: { region: 'global' }, // Nigeria\n KE: { region: 'global' }, // Kenya\n\n // Russia\n RU: { region: 'global' }, // Russia\n\n // Other countries default to global\n};\n\n/**\n * Type exports\n */\nexport type CountryCode = (typeof COUNTRY_CODES)[keyof typeof COUNTRY_CODES];\nexport type CountryCallingCode = keyof typeof COUNTRY_CALLING_CODES;\nexport type CountryRegion = keyof typeof COUNTRY_REGIONS;\nexport type CountryRegionDetailed =\n (typeof COUNTRY_REGIONS_DETAILED)[keyof typeof COUNTRY_REGIONS_DETAILED];\n","/**\n * Time-related Constants\n *\n * Common time values and durations used throughout the application\n * for timeouts, delays, caching, and other time-based operations.\n *\n * @module time/constants\n */\n\nimport { type CountryCode } from '@plyaz/types';\nimport { COUNTRY_CODES } from '../locale';\n\nexport const DAYS_IN_WEEK = 7;\nexport const EARLY_MORNING_HOURS = 6;\n/**\n * Time conversion and duration constants\n */\nexport const TIME_CONSTANTS = {\n // Time unit conversions (in milliseconds)\n /**\n * One millisecond in milliseconds\n */\n MILLISECOND: 1,\n\n /**\n * One second in milliseconds\n */\n SECOND: 1000,\n\n /**\n * One minute in milliseconds\n */\n MINUTE: 60000,\n\n /**\n * One hour in milliseconds\n */\n HOUR: 3600000,\n\n /**\n * One day in milliseconds\n */\n DAY: 86400000,\n\n /**\n * One week in milliseconds\n */\n WEEK: 604800000,\n\n /**\n * One month in milliseconds (30 days average)\n */\n MONTH: 2592000000,\n\n /**\n * One year in milliseconds (365 days)\n */\n YEAR: 31536000000,\n\n // Time unit ratios\n /**\n * Number of milliseconds in one second\n */\n MILLISECONDS_PER_SECOND: 1000,\n\n /**\n * Number of seconds in one minute\n */\n SECONDS_PER_MINUTE: 60,\n\n /**\n * Number of minutes in one hour\n */\n MINUTES_PER_HOUR: 60,\n\n /**\n * Number of hours in one day\n */\n HOURS_PER_DAY: 24,\n\n /**\n * Number of days in one week\n */\n DAYS_PER_WEEK: 7,\n\n /**\n * Number of days in one month (average)\n */\n DAYS_PER_MONTH: 30,\n\n /**\n * Number of days in one year\n */\n DAYS_PER_YEAR: 365,\n\n /**\n * Number of weeks in one year\n */\n WEEKS_PER_YEAR: 52,\n\n /**\n * Number of months in one year\n */\n MONTHS_PER_YEAR: 12,\n\n // Common durations in milliseconds\n /**\n * 100 milliseconds\n */\n HUNDRED_MS: 100,\n\n /**\n * 250 milliseconds\n */\n QUARTER_SECOND: 250,\n\n /**\n * 500 milliseconds (half second)\n */\n HALF_SECOND: 500,\n\n /**\n * 2 seconds in milliseconds\n */\n TWO_SECONDS: 2000,\n\n /**\n * 3 seconds in milliseconds\n */\n THREE_SECONDS: 3000,\n\n /**\n * 5 seconds in milliseconds\n */\n FIVE_SECONDS: 5000,\n\n /**\n * 10 seconds in milliseconds\n */\n TEN_SECONDS: 10000,\n\n /**\n * 30 seconds in milliseconds\n */\n THIRTY_SECONDS: 30000,\n\n /**\n * 2 minutes in milliseconds\n */\n TWO_MINUTES: 120000,\n\n /**\n * 5 minutes in milliseconds\n */\n FIVE_MINUTES: 300000,\n\n /**\n * 10 minutes in milliseconds\n */\n TEN_MINUTES: 600000,\n\n /**\n * 15 minutes in milliseconds\n */\n FIFTEEN_MINUTES: 900000,\n\n /**\n * 30 minutes in milliseconds\n */\n THIRTY_MINUTES: 1800000,\n\n /**\n * 1 hour in milliseconds\n */\n ONE_HOUR: 3600000,\n\n /**\n * 2 hours in milliseconds\n */\n TWO_HOURS: 7200000,\n\n /**\n * 6 hours in milliseconds\n */\n SIX_HOURS: 21600000,\n\n /**\n * 12 hours in milliseconds\n */\n TWELVE_HOURS: 43200000,\n\n // Default values\n /**\n * Default timeout duration in milliseconds (5 seconds)\n */\n DEFAULT_TIMEOUT: 5000,\n\n /**\n * Default short timeout in milliseconds (1 second)\n */\n DEFAULT_SHORT_TIMEOUT: 1000,\n\n /**\n * Default long timeout in milliseconds (30 seconds)\n */\n DEFAULT_LONG_TIMEOUT: 30000,\n\n /**\n * Default retry delay in milliseconds (100ms)\n */\n DEFAULT_RETRY_DELAY: 100,\n\n /**\n * Default exponential backoff base delay in milliseconds (1 second)\n */\n DEFAULT_BACKOFF_BASE: 1000,\n\n /**\n * Default maximum backoff delay in milliseconds (30 seconds)\n */\n DEFAULT_MAX_BACKOFF: 30000,\n\n /**\n * Default number of retry attempts\n */\n DEFAULT_RETRY_ATTEMPTS: 3,\n\n /**\n * Default debounce delay in milliseconds (50ms)\n */\n DEFAULT_DEBOUNCE_DELAY: 50,\n\n /**\n * Default throttle delay in milliseconds (100ms)\n */\n DEFAULT_THROTTLE_DELAY: 100,\n\n /**\n * Default animation frame duration in milliseconds (~60fps)\n */\n DEFAULT_ANIMATION_FRAME: 16.67,\n\n /**\n * Default transition duration in milliseconds (300ms)\n */\n DEFAULT_TRANSITION_DURATION: 300,\n\n /**\n * Default cache time-to-live in seconds (5 minutes)\n */\n DEFAULT_CACHE_TTL: 300,\n\n /**\n * Default short cache TTL in seconds (1 minute)\n */\n DEFAULT_SHORT_CACHE_TTL: 60,\n\n /**\n * Default long cache TTL in seconds (1 hour)\n */\n DEFAULT_LONG_CACHE_TTL: 3600,\n\n /**\n * Default session timeout in milliseconds (30 minutes)\n */\n DEFAULT_SESSION_TIMEOUT: 1800000,\n\n /**\n * Default idle timeout in milliseconds (15 minutes)\n */\n DEFAULT_IDLE_TIMEOUT: 900000,\n\n /**\n * Default poll interval in milliseconds (5 seconds)\n */\n DEFAULT_POLL_INTERVAL: 5000,\n\n /**\n * Default heartbeat interval in milliseconds (30 seconds)\n */\n DEFAULT_HEARTBEAT_INTERVAL: 30000,\n\n // Network and ports\n /**\n * Default port number for servers\n */\n DEFAULT_PORT: 3000,\n\n /**\n * Default HTTP port\n */\n HTTP_PORT: 80,\n\n /**\n * Default HTTPS port\n */\n HTTPS_PORT: 443,\n\n /**\n * Default WebSocket port\n */\n WEBSOCKET_PORT: 8080,\n\n /**\n * Default database port (PostgreSQL)\n */\n DATABASE_PORT: 5432,\n\n /**\n * Default Redis port\n */\n REDIS_PORT: 6379,\n\n // WebSocket specific\n /**\n * WebSocket normal closure code\n */\n WEBSOCKET_CLOSE_NORMAL: 1000,\n\n /**\n * WebSocket going away code\n */\n WEBSOCKET_CLOSE_GOING_AWAY: 1001,\n\n /**\n * WebSocket protocol error code\n */\n WEBSOCKET_CLOSE_PROTOCOL_ERROR: 1002,\n\n /**\n * WebSocket unsupported data code\n */\n WEBSOCKET_CLOSE_UNSUPPORTED: 1003,\n\n /**\n * WebSocket abnormal closure code\n */\n WEBSOCKET_CLOSE_ABNORMAL: 1006,\n\n /**\n * WebSocket retry delay in milliseconds (500ms)\n */\n WEBSOCKET_RETRY_DELAY: 500,\n\n /**\n * WebSocket ping interval in milliseconds (30 seconds)\n */\n WEBSOCKET_PING_INTERVAL: 30000,\n\n /**\n * WebSocket reconnect delay in milliseconds (1 second)\n */\n WEBSOCKET_RECONNECT_DELAY: 1000,\n\n /**\n * WebSocket max reconnect delay in milliseconds (30 seconds)\n */\n WEBSOCKET_MAX_RECONNECT_DELAY: 30000,\n} as const;\n\n/**\n * Country → Time Zone Mapping\n * Based on IANA time zone database (https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)\n */\nexport const COUNTRY_TIMEZONES: Record<string, string[]> = {\n // --- AMERICAS ---\n [COUNTRY_CODES.US]: [\n 'America/New_York',\n 'America/Chicago',\n 'America/Denver',\n 'America/Los_Angeles',\n 'America/Anchorage',\n 'Pacific/Honolulu',\n ],\n [COUNTRY_CODES.CA]: [\n 'America/Toronto',\n 'America/Vancouver',\n 'America/Edmonton',\n 'America/Halifax',\n 'America/St_Johns',\n ],\n [COUNTRY_CODES.MX]: ['America/Mexico_City', 'America/Monterrey', 'America/Tijuana'],\n [COUNTRY_CODES.BR]: ['America/Sao_Paulo', 'America/Manaus', 'America/Fortaleza'],\n [COUNTRY_CODES.AR]: ['America/Argentina/Buenos_Aires'],\n [COUNTRY_CODES.CL]: ['America/Santiago'],\n [COUNTRY_CODES.CO]: ['America/Bogota'],\n [COUNTRY_CODES.PE]: ['America/Lima'],\n [COUNTRY_CODES.VE]: ['America/Caracas'],\n\n // --- EUROPE ---\n [COUNTRY_CODES.GB]: ['Europe/London'],\n [COUNTRY_CODES.FR]: ['Europe/Paris'],\n [COUNTRY_CODES.DE]: ['Europe/Berlin'],\n [COUNTRY_CODES.IT]: ['Europe/Rome'],\n [COUNTRY_CODES.ES]: ['Europe/Madrid'],\n [COUNTRY_CODES.PT]: ['Europe/Lisbon'],\n [COUNTRY_CODES.NL]: ['Europe/Amsterdam'],\n [COUNTRY_CODES.SE]: ['Europe/Stockholm'],\n [COUNTRY_CODES.PL]: ['Europe/Warsaw'],\n [COUNTRY_CODES.FI]: ['Europe/Helsinki'],\n [COUNTRY_CODES.NO]: ['Europe/Oslo'],\n [COUNTRY_CODES.CH]: ['Europe/Zurich'],\n [COUNTRY_CODES.RU]: ['Europe/Moscow', 'Asia/Yekaterinburg', 'Asia/Irkutsk', 'Asia/Vladivostok'],\n [COUNTRY_CODES.UA]: ['Europe/Kyiv'],\n [COUNTRY_CODES.GR]: ['Europe/Athens'],\n [COUNTRY_CODES.TR]: ['Europe/Istanbul'],\n\n // --- ASIA ---\n [COUNTRY_CODES.CN]: ['Asia/Shanghai', 'Asia/Urumqi'],\n [COUNTRY_CODES.JP]: ['Asia/Tokyo'],\n [COUNTRY_CODES.KR]: ['Asia/Seoul'],\n [COUNTRY_CODES.IN]: ['Asia/Kolkata'],\n [COUNTRY_CODES.PK]: ['Asia/Karachi'],\n [COUNTRY_CODES.BD]: ['Asia/Dhaka'],\n [COUNTRY_CODES.TH]: ['Asia/Bangkok'],\n [COUNTRY_CODES.VN]: ['Asia/Ho_Chi_Minh'],\n [COUNTRY_CODES.MY]: ['Asia/Kuala_Lumpur'],\n [COUNTRY_CODES.SG]: ['Asia/Singapore'],\n [COUNTRY_CODES.ID]: [\n 'Asia/Jakarta',\n 'Asia/Makassar',\n 'Asia/Jayapura', // Indonesia has 3 time zones\n ],\n [COUNTRY_CODES.PH]: ['Asia/Manila'],\n [COUNTRY_CODES.AE]: ['Asia/Dubai'],\n [COUNTRY_CODES.SA]: ['Asia/Riyadh'],\n [COUNTRY_CODES.IR]: ['Asia/Tehran'],\n [COUNTRY_CODES.IQ]: ['Asia/Baghdad'],\n [COUNTRY_CODES.IL]: ['Asia/Jerusalem'],\n [COUNTRY_CODES.QA]: ['Asia/Qatar'],\n [COUNTRY_CODES.KW]: ['Asia/Kuwait'],\n\n // --- AFRICA ---\n [COUNTRY_CODES.EG]: ['Africa/Cairo'],\n [COUNTRY_CODES.NG]: ['Africa/Lagos'],\n [COUNTRY_CODES.ZA]: ['Africa/Johannesburg'],\n [COUNTRY_CODES.KE]: ['Africa/Nairobi'],\n [COUNTRY_CODES.MA]: ['Africa/Casablanca'],\n [COUNTRY_CODES.GH]: ['Africa/Accra'],\n [COUNTRY_CODES.ET]: ['Africa/Addis_Ababa'],\n [COUNTRY_CODES.TZ]: ['Africa/Dar_es_Salaam'],\n [COUNTRY_CODES.SN]: ['Africa/Dakar'],\n\n // --- OCEANIA ---\n [COUNTRY_CODES.AU]: [\n 'Australia/Sydney',\n 'Australia/Melbourne',\n 'Australia/Perth',\n 'Australia/Brisbane',\n ],\n [COUNTRY_CODES.NZ]: ['Pacific/Auckland'],\n [COUNTRY_CODES.FJ]: ['Pacific/Fiji'],\n [COUNTRY_CODES.PG]: ['Pacific/Port_Moresby'],\n\n // --- ANTARCTICA ---\n [COUNTRY_CODES.AQ]: ['Antarctica/McMurdo', 'Antarctica/Palmer', 'Antarctica/Casey'],\n};\n\nexport const ALL_COUNTRY_TIMEZONES: string[] = Array.from(\n new Set(Object.values(COUNTRY_TIMEZONES).flat())\n);\n\n/**\n * A single record describing the available time zones for a given country.\n */\nexport interface CountryTimezoneEntry {\n countryCode: CountryCode;\n timeZones: string[];\n}\n\n/**\n * Full mapping of all countries → time zones.\n */\nexport type CountryTimezones = Record<CountryCode, string[]>;\n\n/**\n * A flattened list of all unique IANA time zones supported globally.\n */\nexport type AllTimezones = string[];\n\nexport const DAYS_OF_WEEK = Array.from({ length: DAYS_IN_WEEK }, (_, i) => i);\nexport const HOURS_OF_DAY = Array.from({ length: EARLY_MORNING_HOURS }, (_, i) => i);\n\n/**\n * Type for time constant values\n */\nexport type TimeConstant = (typeof TIME_CONSTANTS)[keyof typeof TIME_CONSTANTS];\n","import type { BaseProviderConfig } from '@plyaz/types';\nimport { FEE_CONTEXT, PAYMENT_METHOD, PAYMENT_PROVIDER_TYPE } from '@plyaz/types';\nimport { CURRENCY_CODES } from '../../../locale';\nimport { TIME_CONSTANTS } from '../../../time';\nimport { HTTP_STATUS } from '../../../http';\n\nexport const stripeConfig: BaseProviderConfig = {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n displayName: PAYMENT_PROVIDER_TYPE.Stripe,\n enabled: true,\n environment: {\n current: 'sandbox',\n apiUrls: {\n sandbox: 'https://api.stripe.com',\n staging: 'https://api.stripe.com',\n production: 'https://api.stripe.com',\n },\n environmentOverrides: {\n sandbox: {\n payments: {\n enabled: true,\n subscriptions: true,\n preauthorization: true,\n cancellation: true,\n updates: true,\n },\n },\n },\n debug: {\n enabled: true,\n logLevel: 'debug',\n logRequests: true,\n logResponses: true,\n },\n },\n\n credentials: {\n apiKey: globalThis.process.env.STRIPE_API_KEY ?? '',\n secretKey: globalThis.process.env.STRIPE_SECRET_KEY ?? '',\n additionalCredentials: {\n webhookSecret: globalThis.process.env.STRIPE_WEBHOOK_SECRET ?? '',\n merchantId: globalThis.process.env.STRIPE_MERCHANT_ID ?? '',\n },\n rotation: {\n enabled: false,\n intervalDays: 90,\n warningDays: 10,\n },\n encryption: {\n encrypted: false,\n },\n },\n\n webhooks: {\n enabled: true,\n endpoints: {\n primary: 'https://yourdomain.com/api/webhooks/stripe',\n },\n security: {\n signatureMethod: 'hmac_sha256',\n signatureHeader: 'Stripe-Signature',\n secret: globalThis.process.env.STRIPE_WEBHOOK_SECRET ?? '',\n timestampTolerance: 300,\n },\n events: {\n subscribed: [\n 'payment_intent.succeeded',\n 'payment_intent.payment_failed',\n 'charge.refunded',\n 'customer.subscription.created',\n 'customer.subscription.deleted',\n ],\n },\n reliability: {\n retryEnabled: true,\n maxRetries: 5,\n retryDelays: [\n TIME_CONSTANTS.SECOND,\n TIME_CONSTANTS.THREE_SECONDS,\n TIME_CONSTANTS.FIVE_SECONDS,\n TIME_CONSTANTS.TEN_SECONDS,\n ],\n timeout: 10000,\n deadLetterQueue: {\n enabled: true,\n retentionDays: 7,\n },\n },\n },\n features: {\n payments: {\n enabled: true,\n subscriptions: true,\n preauthorization: true,\n cancellation: true,\n updates: true,\n },\n refunds: {\n enabled: true,\n partial: true,\n instant: true,\n scheduled: false,\n },\n security: {\n threeDS: true,\n fraudDetection: true,\n velocityChecking: true,\n tokenization: true,\n },\n customers: {\n profiles: true,\n savedMethods: true,\n authentication: true,\n },\n marketplace: {\n enabled: true,\n splitPayments: true,\n connectedAccounts: true,\n instantPayouts: true,\n },\n advanced: {\n multiCurrency: true,\n currencyConversion: true,\n smartRouting: true,\n costOptimization: true,\n abTesting: true,\n },\n },\n\n /** Fees */\n fees: {\n baseFees: {\n percentage: 2.9,\n fixed: 30,\n currency: CURRENCY_CODES.USD,\n },\n methodFees: {\n [PAYMENT_METHOD.CreditCard]: { percentage: 2.9, fixed: 30, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.DebitCard]: { percentage: 2.9, fixed: 30, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.BankTransfer]: { percentage: 0.8, fixed: 0, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.PaypalAccount]: { percentage: 3.5, fixed: 30, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.CryptoBitcoin]: { percentage: 1.0, fixed: 0, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.CryptoEthereum]: { percentage: 1.0, fixed: 0, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.CryptoPolygon]: { percentage: 1.0, fixed: 0, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.CryptoOptimism]: { percentage: 1.0, fixed: 0, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.CryptoUsdc]: { percentage: 1.0, fixed: 0, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.CryptoUsdt]: { percentage: 1.0, fixed: 0, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.CryptoNativeToken]: {\n percentage: 1.0,\n fixed: 0,\n currency: CURRENCY_CODES.USD,\n },\n [PAYMENT_METHOD.PixInstant]: { percentage: 1.0, fixed: 0, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.BoletoBancario]: { percentage: 1.0, fixed: 0, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.SepaDirectDebit]: { percentage: 1.0, fixed: 0, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.IdealBank]: { percentage: 1.0, fixed: 0, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.SofortBanking]: { percentage: 1.0, fixed: 0, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.AlipayDigital]: { percentage: 1.0, fixed: 0, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.WechatPayDigital]: {\n percentage: 1.0,\n fixed: 0,\n currency: CURRENCY_CODES.USD,\n },\n [PAYMENT_METHOD.ApplePay]: { percentage: 2.9, fixed: 30, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.GooglePay]: { percentage: 2.9, fixed: 30, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.SamsungPay]: { percentage: 2.9, fixed: 30, currency: CURRENCY_CODES.USD },\n },\n volumeTiers: [\n {\n name: 'Tier 1',\n minimumVolume: { amount: 0, currency: CURRENCY_CODES.USD },\n feeRates: { percentage: 2.9, fixed: 30, currency: CURRENCY_CODES.USD },\n },\n {\n name: 'Tier 2',\n minimumVolume: { amount: 1000000, currency: CURRENCY_CODES.USD },\n feeRates: { percentage: 2.5, fixed: 25, currency: CURRENCY_CODES.USD },\n },\n ],\n regionalFees: {\n EU: { percentage: 2.5, fixed: 30, currency: CURRENCY_CODES.EUR },\n PK: { percentage: 3.0, fixed: 50, currency: CURRENCY_CODES.PKR },\n US: { percentage: 2.9, fixed: 30, currency: CURRENCY_CODES.USD },\n CA: { percentage: 2.9, fixed: 40, currency: CURRENCY_CODES.CAD },\n GB: { percentage: 2.8, fixed: 25, currency: CURRENCY_CODES.GBP },\n AU: { percentage: 3.0, fixed: 35, currency: CURRENCY_CODES.AUD },\n IN: { percentage: 3.5, fixed: 40, currency: CURRENCY_CODES.INR },\n JP: { percentage: 3.0, fixed: 300, currency: CURRENCY_CODES.JPY },\n CN: { percentage: 3.5, fixed: 20, currency: CURRENCY_CODES.CNY },\n SG: { percentage: 3.0, fixed: 30, currency: CURRENCY_CODES.SGD },\n BR: { percentage: 3.8, fixed: 50, currency: CURRENCY_CODES.BRL },\n MX: { percentage: 3.5, fixed: 40, currency: CURRENCY_CODES.MXN },\n ZA: { percentage: 3.0, fixed: 50, currency: CURRENCY_CODES.ZAR },\n AE: { percentage: 3.0, fixed: 25, currency: CURRENCY_CODES.AED },\n NZ: { percentage: 3.0, fixed: 35, currency: CURRENCY_CODES.NZD },\n },\n additionalFees: {\n /** Platform fees */\n platform: {\n context: [\n FEE_CONTEXT.Payment,\n FEE_CONTEXT.Dispute,\n FEE_CONTEXT.Refund,\n FEE_CONTEXT.Subscription,\n FEE_CONTEXT.Withdrawal,\n ],\n percentage: 2.0,\n enabled: true,\n },\n\n /** Cross-border transaction fees */\n crossBorder: {\n context: [\n FEE_CONTEXT.Payment,\n FEE_CONTEXT.Dispute,\n FEE_CONTEXT.Refund,\n FEE_CONTEXT.Subscription,\n FEE_CONTEXT.Withdrawal,\n ],\n percentage: 1.0,\n enabled: true,\n },\n\n /** Currency conversion fees */\n currencyConversion: {\n context: [\n FEE_CONTEXT.Payment,\n FEE_CONTEXT.Dispute,\n FEE_CONTEXT.Refund,\n FEE_CONTEXT.Subscription,\n FEE_CONTEXT.Withdrawal,\n ],\n percentage: 1.0,\n minimumFee: 50,\n enabled: true,\n },\n\n /** Network fees (e.g., blockchain) */\n network: {\n context: [\n FEE_CONTEXT.Payment,\n FEE_CONTEXT.Dispute,\n FEE_CONTEXT.Refund,\n FEE_CONTEXT.Subscription,\n FEE_CONTEXT.Withdrawal,\n ],\n amount: 0.0005,\n currency: CURRENCY_CODES.USD,\n enabled: false,\n },\n\n /** Gas fees (blockchain-specific) */\n gas: {\n context: [\n FEE_CONTEXT.Payment,\n FEE_CONTEXT.Dispute,\n FEE_CONTEXT.Refund,\n FEE_CONTEXT.Subscription,\n FEE_CONTEXT.Withdrawal,\n ],\n estimated: 0.0002,\n maxLimit: 0.001,\n currency: CURRENCY_CODES.USD,\n enabled: false,\n },\n\n /** Expedite fees for faster withdrawals */\n expedite: {\n context: [FEE_CONTEXT.Withdrawal],\n fixed: 100,\n enabled: false,\n },\n\n /** Risk fees based on transaction risk */\n risk: {\n context: [\n FEE_CONTEXT.Payment,\n FEE_CONTEXT.Dispute,\n FEE_CONTEXT.Refund,\n FEE_CONTEXT.Subscription,\n FEE_CONTEXT.Withdrawal,\n ],\n percentage: 1.5,\n riskScoreThreshold: 70,\n enabled: true,\n },\n\n /** Compliance fees for regulatory checks */\n compliance: {\n context: [\n FEE_CONTEXT.Payment,\n FEE_CONTEXT.Dispute,\n FEE_CONTEXT.Refund,\n FEE_CONTEXT.Subscription,\n FEE_CONTEXT.Withdrawal,\n ],\n fixed: 50,\n perCheck: 10,\n currency: CURRENCY_CODES.USD,\n enabled: true,\n },\n\n /** Chargeback fees */\n chargeback: {\n context: [FEE_CONTEXT.Dispute],\n amount: 1500,\n currency: CURRENCY_CODES.USD,\n enabled: true,\n },\n\n /** Refund processing fees */\n refund: {\n context: [FEE_CONTEXT.Refund],\n percentage: 2.9,\n fixed: 30,\n enabled: true,\n },\n },\n calculation: {\n rounding: 'nearest',\n minimumFee: { amount: 50, currency: CURRENCY_CODES.USD },\n },\n },\n limits: {\n amounts: {\n minimum: {\n [PAYMENT_METHOD.CreditCard]: { amount: 10, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.DebitCard]: { amount: 10, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.BankTransfer]: { amount: 10, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.PaypalAccount]: { amount: 10, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.CryptoBitcoin]: { amount: 10, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.CryptoEthereum]: { amount: 10, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.CryptoPolygon]: { amount: 10, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.CryptoOptimism]: { amount: 10, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.CryptoUsdc]: { amount: 10, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.CryptoUsdt]: { amount: 10, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.CryptoNativeToken]: { amount: 10, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.PixInstant]: { amount: 10, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.BoletoBancario]: { amount: 10, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.SepaDirectDebit]: { amount: 10, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.IdealBank]: { amount: 10, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.SofortBanking]: { amount: 10, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.AlipayDigital]: { amount: 10, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.WechatPayDigital]: { amount: 10, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.ApplePay]: { amount: 10, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.GooglePay]: { amount: 10, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.SamsungPay]: { amount: 10, currency: CURRENCY_CODES.USD },\n },\n maximum: {\n [PAYMENT_METHOD.CreditCard]: { amount: 10000, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.DebitCard]: { amount: 10000, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.BankTransfer]: { amount: 100000, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.PaypalAccount]: { amount: 100000, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.CryptoBitcoin]: { amount: 100000, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.CryptoEthereum]: { amount: 100000, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.CryptoPolygon]: { amount: 100000, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.CryptoOptimism]: { amount: 100000, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.CryptoUsdc]: { amount: 100000, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.CryptoUsdt]: { amount: 100000, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.CryptoNativeToken]: { amount: 100000, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.PixInstant]: { amount: 10000, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.BoletoBancario]: { amount: 10000, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.SepaDirectDebit]: { amount: 100000, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.IdealBank]: { amount: 100000, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.SofortBanking]: { amount: 10000, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.AlipayDigital]: { amount: 10000, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.WechatPayDigital]: { amount: 10000, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.ApplePay]: { amount: 10000, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.GooglePay]: { amount: 10000, currency: CURRENCY_CODES.USD },\n [PAYMENT_METHOD.SamsungPay]: { amount: 10000, currency: CURRENCY_CODES.USD },\n },\n },\n velocity: {\n daily: {\n maxTransactions: 5000,\n maxAmount: { amount: 5000000, currency: CURRENCY_CODES.USD },\n },\n monthly: {\n maxTransactions: 100000,\n maxAmount: { amount: 100000000, currency: CURRENCY_CODES.USD },\n },\n },\n apiLimits: {\n requestsPerSecond: 100,\n requestsPerMinute: 6000,\n requestsPerHour: 360000,\n },\n providerSpecific: {},\n },\n\n performance: {\n timeouts: {\n connection: 5000,\n request: 15000,\n total: 20000,\n },\n retries: {\n enabled: true,\n maxAttempts: 0,\n strategy: 'exponential',\n baseDelay: 1000,\n maxDelay: 10000,\n jitter: true,\n retryableStatusCodes: [\n HTTP_STATUS.REQUEST_TIMEOUT,\n HTTP_STATUS.TOO_MANY_REQUESTS,\n HTTP_STATUS.INTERNAL_SERVER_ERROR,\n HTTP_STATUS.BAD_GATEWAY,\n HTTP_STATUS.SERVICE_UNAVAILABLE,\n HTTP_STATUS.GATEWAY_TIMEOUT,\n ],\n },\n circuitBreaker: {\n enabled: true,\n failureThreshold: 5,\n windowSize: 60_000,\n timeout: 30_000,\n minimumRequests: 10,\n },\n connectionPool: {\n maxConnections: 50,\n minConnections: 5,\n idleTimeout: 30000,\n validationInterval: 60000,\n },\n caching: {\n enabled: true,\n ttl: {\n getPaymentStatus: 60,\n getTransaction: 60,\n },\n maxSize: 1000,\n evictionStrategy: 'lru',\n },\n },\n customSettings: {\n enableRadar: true,\n enableApplePay: true,\n },\n};\n","import { PAYMENT_METHOD } from '@plyaz/types';\n\n/** Generate a default map of all PAYMENTMETHODs to a value */\nexport function createDefaultPaymentMethodMap<T>(defaultValue: T): Record<PAYMENT_METHOD, T> {\n return Object.values(PAYMENT_METHOD).reduce(\n (acc, method) => {\n acc[method] = defaultValue;\n return acc;\n },\n {} as Record<PAYMENT_METHOD, T>\n );\n}\n","import type { PayoutAccountCapabilities, UserTypeKycConfig } from '@plyaz/types';\nimport {\n KYC_ENTITY_TYPE,\n ONBOARD_LINK_TYPE,\n type ProviderCapabilities,\n USER_TYPE,\n} from '@plyaz/types';\nimport { COUNTRY_CODES_SCOPED } from '../../../locale';\nimport { stripeConfig } from './config';\nimport { createDefaultPaymentMethodMap } from '../../../utils/mapping/paymentMapping';\nimport { DEFAULT_PROCESSING_TIME, DEFAULT_SETTLEMENT_TIME } from './constant';\n\nexport const providerCapabilities: ProviderCapabilities = {\n supportsSubscriptions: true,\n supportsRefunds: true,\n supportsPartialRefunds: true,\n supportsPreauthorization: true,\n supportsCancellation: true,\n supports3DSecure: true,\n supportsFraudDetection: true,\n supportsMultiFactorAuth: false,\n supportsWebhooks: true,\n supportsCustomerProfiles: true,\n supportsSavedPaymentMethods: true,\n supportsTransactionHistory: true,\n supportsMultiCurrency: true,\n supportsCurrencyConversion: true,\n supportsCryptocurrency: false,\n supportsCrossBorderPayments: true,\n supportsInstantPayouts: false,\n supportsScheduledPayouts: true,\n supportsMarketplacePayments: true,\n supportsDisputeManagement: true,\n supportsDisputeEvidence: true,\n minimumAmounts: stripeConfig.limits.amounts.minimum,\n maximumAmounts: stripeConfig.limits.amounts.maximum,\n supportedRegions: Object.values(COUNTRY_CODES_SCOPED),\n processingTimes: createDefaultPaymentMethodMap(DEFAULT_PROCESSING_TIME),\n settlementTimes: createDefaultPaymentMethodMap(DEFAULT_SETTLEMENT_TIME),\n};\n\n/**\n * Default payout/account capabilities configuration for a provider.\n * This object defines which features are supported at account level.\n */\nexport const payoutAccountCapabilities: PayoutAccountCapabilities = {\n // Core capabilities\n canAcceptPayments: true, // Stripe card_payments\n canReceiveTransfers: true, // Stripe transfers\n canPayout: true, // Stripe payouts\n\n // Optional / region-specific capabilities\n canAcceptSEPA: true, // EU SEPA Direct Debit\n canAcceptBACS: true, // UK BACS Direct Debit\n canAcceptiDEAL: true, // Netherlands iDEAL\n canAcceptKlarna: true, // Klarna BNPL\n canAcceptOtherBNPL: true, // Afterpay / Clearpay\n\n canAcceptACH: true, // US ACH bank payments\n canAcceptFasterPayments: true, // UK Faster Payments\n canAcceptP24: false, // Przelewy24 (Poland)\n canAcceptEPS: false, // EPS (Austria)\n canAcceptGiropay: false, // Germany Giropay\n canAcceptAlipay: false, // Alipay\n canAcceptWeChatPay: false, // WeChat Pay\n\n // Advanced / financial products\n canUseTreasury: false, // Stripe Treasury\n canIssueCards: false, // Stripe Issuing\n canUseInstantPayouts: false, // Provider instant payouts\n canHoldBalance: true, // Ability to hold platform balance\n canCreateSubAccounts: true, // Marketplace or sub-account support\n\n // Optional fraud / compliance / reporting\n canUseTaxReporting: true, // US 1099 or provider tax reporting\n bankVerified: true, // Bank account verified\n canUseKYCVerification: true, // KYC checks passed\n canUseAMLCheck: true, // AML checks passed\n canProcessRefunds: true, // Can refund transactions\n canHandleDisputes: true, // Can handle disputes / chargebacks\n};\n\n/**\n * Mapping of user types to KYC configuration.\n * - `kycRequired` determines if the user must go through KYC.\n * - `entityType` defines the KYC entity (INDIVIDUAL | COMPANY), or null if not applicable.\n */\nexport const USER_TYPE_KYC_MAPPING: Record<USER_TYPE, UserTypeKycConfig> = {\n [USER_TYPE.Fan]: { kycRequired: false, entityType: null },\n [USER_TYPE.Athlete]: { kycRequired: true, entityType: KYC_ENTITY_TYPE.Individual },\n [USER_TYPE.Agent]: { kycRequired: true, entityType: KYC_ENTITY_TYPE.Individual },\n [USER_TYPE.Scout]: { kycRequired: false, entityType: null },\n [USER_TYPE.Admin]: { kycRequired: true, entityType: KYC_ENTITY_TYPE.Individual },\n [USER_TYPE.Club]: { kycRequired: true, entityType: KYC_ENTITY_TYPE.Company },\n [USER_TYPE.System]: { kycRequired: false, entityType: null },\n};\n\nexport const stripeLinkTypeMap: Record<ONBOARD_LINK_TYPE, 'account_onboarding' | 'account_update'> =\n {\n [ONBOARD_LINK_TYPE.Onboard]: 'account_onboarding',\n [ONBOARD_LINK_TYPE.Update]: 'account_update',\n };\n","import { CURRENCY_CODES } from '../locale';\n\n// Convert enum to array for inclusion checks\nexport const SUPPORTED_CURRENCIES = Object.values(CURRENCY_CODES);\n\n// Validation Messages\nexport const VALIDATION_MESSAGES = {\n AMOUNT: 'Amount must be a positive number with valid currency format.',\n CORE_FIELDS:\n 'Missing required core fields: amount, paymentMethod, userId, userType, productId, productType.',\n CURRENCY: 'Unsupported or missing currency code.',\n METADATA: 'Invalid metadata structure or missing required metadata fields.',\n RISK_ASSESSMENT: 'Invalid or inconsistent risk assessment fields.',\n SCHEDULING: 'Invalid scheduling configuration.',\n REFUND_TRANSACTION_ID: 'Transaction ID is required.',\n REFUND_PROVIDER: 'Provider is required.',\n REFUND_AMOUNT: 'Refund amount must be positive.',\n};\n\n// Validator Names\nexport const VALIDATOR_NAMES = {\n AMOUNT: 'AmountValidator',\n CORE_FIELDS: 'CoreFieldValidator',\n CURRENCY: 'CurrencyValidator',\n METADATA: 'MetadataValidator',\n RISK_ASSESSMENT: 'RiskAssessmentValidator',\n SCHEDULING: 'SchedulingValidator',\n};\n\n// Core Fields\nexport const CORE_FIELDS = [\n 'amount',\n 'paymentMethod',\n 'userId',\n 'userType',\n 'productId',\n 'productType',\n] as const;\n\n// Billing Cycles\nexport const VALID_BILLING_CYCLES = ['monthly', 'quarterly', 'yearly'] as const;\n\n// Risk Levels\nexport const VALID_RISK_LEVELS = ['low', 'medium', 'high'] as const;\n\n// Recurrence Frequencies\nexport const VALID_RECURRENCE_FREQUENCIES = [\n 'daily',\n 'weekly',\n 'monthly',\n 'quarterly',\n 'yearly',\n] as const;\n\n// Numeric and Length Constants\nexport const MIN_POSITIVE_AMOUNT = 0;\nexport const CURRENCY_CODE_LENGTH = 3;\n","/**\n * @file ABTestingConfig.ts\n * @description\n * Production-ready A/B testing configuration for routing experiments.\n * Currently supports Cost Optimization strategy, with future extensibility\n * for reliability, performance, and hybrid routing.\n */\n\nimport {\n type ABTestingConfig,\n COST_OPTIMIZATION_STRATEGY,\n PAYMENT_METHOD,\n PAYMENT_PROVIDER_TYPE,\n ROUTING_STRATEGY,\n} from '@plyaz/types';\nimport { COUNTRY_CODES } from '../../../../locale';\n\n/**\n * Global A/B Testing Configuration\n *\n * Used by the routing engine to control experiment behavior, traffic allocation,\n * and dynamic routing strategy selection.\n */\nexport const ABTesting: ABTestingConfig = {\n enabled: true,\n\n /**\n * Default experiment ID used when no specific test is matched\n * or when experiment assignment fails.\n */\n defaultExperimentId: 'cost_vs_reliability_v1',\n\n /**\n * Registered A/B test experiments.\n * Each experiment defines targeting, traffic allocation, and routing overrides.\n */\n experiments: [\n {\n id: 'cost_vs_reliability_v1',\n description:\n 'Compare cost-optimized Moonpay routing vs. control group (Stripe reliability) for USD credit card payments in NA and APAC regions.',\n\n /**\n * Traffic allocation (in percentage).\n * Control: Default routing logic (e.g., reliability-first / baseline).\n * Variant: Modified routing logic (e.g., cost-optimized Moonpay).\n */\n allocation: {\n control: 70,\n variant: 30,\n },\n\n /**\n * Experiment-specific overrides for variant users.\n * These are merged with the default routing configuration.\n */\n overrides: {\n strategy: ROUTING_STRATEGY.CostOptimized,\n preferredProviders: [PAYMENT_PROVIDER_TYPE.Moonpay],\n costOptimization: {\n enabled: true,\n strategy: COST_OPTIMIZATION_STRATEGY.Aggressive,\n // Additional configuration fields can be extended here when full cost optimization\n // support is implemented.\n },\n },\n\n /**\n * Targeting criteria for experiment eligibility.\n */\n targeting: {\n regions: [\n // North America\n COUNTRY_CODES.US,\n COUNTRY_CODES.CA,\n COUNTRY_CODES.MX,\n\n // APAC\n COUNTRY_CODES.SG,\n COUNTRY_CODES.HK,\n COUNTRY_CODES.JP,\n COUNTRY_CODES.KR,\n COUNTRY_CODES.AU,\n COUNTRY_CODES.NZ,\n COUNTRY_CODES.IN,\n COUNTRY_CODES.MY,\n COUNTRY_CODES.TH,\n COUNTRY_CODES.ID,\n COUNTRY_CODES.PH,\n COUNTRY_CODES.VN,\n\n // Europe + UK\n COUNTRY_CODES.GB, // United Kingdom\n COUNTRY_CODES.IE, // Ireland\n COUNTRY_CODES.FR, // France\n COUNTRY_CODES.DE, // Germany\n COUNTRY_CODES.IT, // Italy\n COUNTRY_CODES.ES, // Spain\n COUNTRY_CODES.PT, // Portugal\n COUNTRY_CODES.NL, // Netherlands\n COUNTRY_CODES.BE, // Belgium\n COUNTRY_CODES.LU, // Luxembourg\n COUNTRY_CODES.CH, // Switzerland\n COUNTRY_CODES.AT, // Austria\n COUNTRY_CODES.SE, // Sweden\n COUNTRY_CODES.NO, // Norway\n COUNTRY_CODES.DK, // Denmark\n COUNTRY_CODES.FI, // Finland\n COUNTRY_CODES.PL, // Poland\n COUNTRY_CODES.CZ, // Czech Republic\n COUNTRY_CODES.HU, // Hungary\n COUNTRY_CODES.GR, // Greece\n ],\n\n paymentMethods: [PAYMENT_METHOD.CreditCard],\n },\n\n /**\n * Scheduling controls.\n * Start immediately; no predefined end date.\n */\n schedule: {\n start: new Date(),\n end: undefined,\n },\n\n /** Experiment activation flag. */\n active: true,\n },\n ],\n\n /**\n * Fallback behavior when experiment assignment or execution fails.\n */\n fallback: {\n useControlOnFailure: true,\n logErrors: true,\n },\n};\n","/**\n * A centralized collection of numeric constants used to avoid magic numbers across the codebase.\n *\n * Purpose:\n * - Provide named aliases for common numeric values so intent is clearer and maintenance is easier.\n * - Keep commonly used numeric literals (counts, thresholds, time durations, limits) in one place.\n *\n * Typical uses:\n * - Time and duration calculations (e.g., seconds/minutes/hours, TTLs, timeouts).\n * - Pagination, limit and capacity defaults.\n * - Validation thresholds, scaling factors and numeric formatting.\n * - Bit/byte or base arithmetic where small numeric constants improve readability.\n *\n * Properties (brief intent and common usage):\n * - TWO (2) — small counts, boolean-like numeric operations, pair-related logic.\n * - FIVE (5) — small retry counts or UI/validation limits.\n * - NINE (9) — index/format boundaries or small-range checks.\n * - TEN (10) — decimal/base operations, digit limits, common loop bounds.\n * - SIXTEEN (16) — bit/hex operations, buffer sizes or base-16 related math.\n * - TWENTY_FOUR (24) — hours-in-day, daily calculations.\n * - THIRTY_SIX (36) — base-36 or domain-specific scaling factors.\n * - SIXTY (60) — seconds/minutes conversions.\n * - NINETY (90) — percentage/angle thresholds or large-range caps.\n * - HUNDERD (100) — percentage base or general scaling (note: name preserved for backward compatibility).\n * - THOUSAND (1000) — millisecond/rounding bases or thousand-scale thresholds.\n * - FIVE_THOUSAND (5000) — medium-duration timeouts or capacity hints (e.g., ms).\n * - THREE_HUNDERD (300) — short timeouts or conventional numeric boundaries (name preserved).\n * - THIRTY_SIX_HUNDERD (3600) — seconds-per-hour; common default TTL/cache durations (3600 seconds).\n * - THIRTY_THOUSAND (30000) — longer timeouts/polling intervals in milliseconds.\n *\n * Remarks:\n * - Using these constants improves readability and makes it easier to change a value in one place.\n * - Several keys contain spelling inconsistencies (e.g., \"HUNDERD\", \"THREE_HUNDERD\", \"THIRTY_SIX_HUNDERD\") — keep names stable to avoid breaking callers; consider normalizing names in a planned refactor.\n *\n * Example:\n * - const timeoutMs = digits.FIVE_THOUSAND; // use 5000 ms timeout\n * - const hourlySeconds = digits.THIRTY_SIX_HUNDERD; // use 3600 seconds for TTL\n */\nexport const NUMERIX = {\n TWO: 2,\n FIVE: 5,\n NINE: 9,\n TEN: 10,\n TWENTY_FOUR: 24,\n THIRTY_SIX: 36,\n FIFTY: 50,\n SIXTY: 60,\n NINETY: 90,\n HUNDERD: 100,\n FIVE_HUNDERD: 500,\n ONE_THOUSAND_AND_FIVE_HUNDERD: 1500,\n THOUSAND: 1000,\n TWO_THOUSAND: 2000,\n THREE_THOUSAND: 3000,\n FOUR_THOUSAND: 4000,\n FIVE_THOUSAND: 5000,\n THIRTY_SIX_HUNDERD: 3600,\n THREE_HUNDERD: 300,\n SIXTEEN: 16,\n TWENTY_THOUSAND: 20000,\n THIRTY_THOUSAND: 30000,\n FORTY_FIVE_THOUSAND: 45000,\n FIFTY_THOUSAND: 50000,\n SIXTY_THOUSAND: 60000,\n};\n","import {\n FAIL_OVER_STRATEGY,\n type FailoverConfiguration,\n PAYMENT_PROVIDER_TYPE,\n} from '@plyaz/types';\nimport { NUMERIX } from '../../../../../db';\n\nexport const FAILOVER_PRIORITY_ORDER: FailoverConfiguration = {\n enabled: true,\n strategy: FAIL_OVER_STRATEGY.PriorityOrder,\n providerOrder: [PAYMENT_PROVIDER_TYPE.Stripe, PAYMENT_PROVIDER_TYPE.Moonpay],\n failureDetection: {\n consecutiveFailureThreshold: 5,\n errorRateThreshold: 10,\n responseTimeThreshold: NUMERIX.FOUR_THOUSAND,\n healthCheckInterval: 30,\n },\n retry: {\n enabled: true,\n maxAttempts: 1,\n delays: [NUMERIX.THOUSAND, NUMERIX.TWO_THOUSAND],\n exponentialBackoff: false,\n },\n recovery: {\n autoRecovery: false,\n recoveryInterval: 120,\n recoveryThreshold: 10,\n gradualRestoration: false,\n },\n circuitBreaker: {\n enabled: true,\n failureThreshold: 8,\n successThreshold: 5,\n timeout: NUMERIX.SIXTY_THOUSAND,\n },\n};\n","import {\n FAIL_OVER_STRATEGY,\n type FailoverConfiguration,\n PAYMENT_PROVIDER_TYPE,\n} from '@plyaz/types';\nimport { NUMERIX } from '../../../../../db';\n\nexport const FAILOVER_NEXT_AVAILABLE: FailoverConfiguration = {\n enabled: true,\n strategy: FAIL_OVER_STRATEGY.NextAvailable,\n providerOrder: [PAYMENT_PROVIDER_TYPE.Stripe, PAYMENT_PROVIDER_TYPE.Moonpay],\n failureDetection: {\n consecutiveFailureThreshold: 3,\n errorRateThreshold: 5, // %\n responseTimeThreshold: NUMERIX.THREE_THOUSAND, // 3s\n healthCheckInterval: 15, // sec\n },\n retry: {\n enabled: true,\n maxAttempts: 1,\n delays: [NUMERIX.FIVE_HUNDERD, NUMERIX.THOUSAND, NUMERIX.TWO_THOUSAND],\n exponentialBackoff: true,\n },\n recovery: {\n autoRecovery: true,\n recoveryInterval: 60, // sec\n recoveryThreshold: 5, // success events\n gradualRestoration: true,\n },\n circuitBreaker: {\n enabled: true,\n failureThreshold: 5,\n successThreshold: 3,\n timeout: NUMERIX.THIRTY_THOUSAND, // ms\n },\n};\n","import {\n FAIL_OVER_STRATEGY,\n type FailoverConfiguration,\n PAYMENT_PROVIDER_TYPE,\n} from '@plyaz/types';\nimport { NUMERIX } from '../../../../../db';\n\nexport const FAILOVER_PERFORMANCE_BASED: FailoverConfiguration = {\n enabled: true,\n strategy: FAIL_OVER_STRATEGY.PerformanceBased,\n providerOrder: [PAYMENT_PROVIDER_TYPE.Stripe, PAYMENT_PROVIDER_TYPE.Moonpay],\n failureDetection: {\n consecutiveFailureThreshold: 2,\n errorRateThreshold: 3,\n responseTimeThreshold: NUMERIX.TWO_THOUSAND,\n healthCheckInterval: 10,\n },\n retry: {\n enabled: true,\n maxAttempts: 1,\n delays: [NUMERIX.FIVE_HUNDERD, NUMERIX.THOUSAND],\n exponentialBackoff: true,\n },\n recovery: {\n autoRecovery: true,\n recoveryInterval: 30,\n recoveryThreshold: 3,\n gradualRestoration: true,\n },\n circuitBreaker: {\n enabled: true,\n failureThreshold: 4,\n successThreshold: 2,\n timeout: NUMERIX.TWENTY_THOUSAND,\n },\n};\n","import {\n FAIL_OVER_STRATEGY,\n type FailoverConfiguration,\n PAYMENT_PROVIDER_TYPE,\n} from '@plyaz/types';\nimport { NUMERIX } from '../../../../../db';\n\nexport const FAILOVER_LOAD_BALANCED: FailoverConfiguration = {\n enabled: true,\n strategy: FAIL_OVER_STRATEGY.LoadBalanced,\n providerOrder: [PAYMENT_PROVIDER_TYPE.Stripe, PAYMENT_PROVIDER_TYPE.Moonpay],\n failureDetection: {\n consecutiveFailureThreshold: 3,\n errorRateThreshold: 5,\n responseTimeThreshold: NUMERIX.THREE_THOUSAND,\n healthCheckInterval: 20,\n },\n retry: {\n enabled: true,\n maxAttempts: 1,\n delays: [NUMERIX.FIVE_HUNDERD, NUMERIX.THOUSAND, NUMERIX.TWO_THOUSAND],\n exponentialBackoff: true,\n },\n recovery: {\n autoRecovery: true,\n recoveryInterval: 45,\n recoveryThreshold: 4,\n gradualRestoration: true,\n },\n circuitBreaker: {\n enabled: true,\n failureThreshold: 6,\n successThreshold: 3,\n timeout: NUMERIX.FORTY_FIVE_THOUSAND,\n },\n};\n","import {\n FAIL_OVER_STRATEGY,\n type FailoverConfiguration,\n PAYMENT_PROVIDER_TYPE,\n} from '@plyaz/types';\nimport { NUMERIX } from '../../../../../db';\n\nexport const FAILOVER_GEOGRAPHIC: FailoverConfiguration = {\n enabled: true,\n strategy: FAIL_OVER_STRATEGY.Geographic,\n providerOrder: [PAYMENT_PROVIDER_TYPE.Moonpay, PAYMENT_PROVIDER_TYPE.Stripe],\n failureDetection: {\n consecutiveFailureThreshold: 3,\n errorRateThreshold: 6,\n responseTimeThreshold: NUMERIX.THREE_THOUSAND,\n healthCheckInterval: 25,\n },\n retry: {\n enabled: true,\n maxAttempts: 1,\n delays: [NUMERIX.THOUSAND, NUMERIX.TWO_THOUSAND],\n exponentialBackoff: true,\n },\n recovery: {\n autoRecovery: true,\n recoveryInterval: 90,\n recoveryThreshold: 7,\n gradualRestoration: true,\n },\n circuitBreaker: {\n enabled: true,\n failureThreshold: 5,\n successThreshold: 4,\n timeout: NUMERIX.FIFTY_THOUSAND,\n },\n};\n","import { FAIL_OVER_STRATEGY, type FailoverConfiguration } from '@plyaz/types';\nimport { FAILOVER_PRIORITY_ORDER } from './strategies/priority-order.config';\nimport { FAILOVER_NEXT_AVAILABLE } from './strategies/next-available.config';\nimport { FAILOVER_PERFORMANCE_BASED } from './strategies/performance-based.config';\nimport { FAILOVER_LOAD_BALANCED } from './strategies/load-balanced.config';\nimport { FAILOVER_GEOGRAPHIC } from './strategies/geographic.config';\n\nexport const FAILOVER_REGISTRY: Record<FAIL_OVER_STRATEGY, FailoverConfiguration> = {\n [FAIL_OVER_STRATEGY.PriorityOrder]: FAILOVER_PRIORITY_ORDER,\n [FAIL_OVER_STRATEGY.NextAvailable]: FAILOVER_NEXT_AVAILABLE,\n [FAIL_OVER_STRATEGY.PerformanceBased]: FAILOVER_PERFORMANCE_BASED,\n [FAIL_OVER_STRATEGY.LoadBalanced]: FAILOVER_LOAD_BALANCED,\n [FAIL_OVER_STRATEGY.Geographic]: FAILOVER_GEOGRAPHIC,\n};\n","import {\n type GeographicRoutingConfig,\n PAYMENT_METHOD,\n PAYMENT_PROVIDER_TYPE,\n REGULATORY_FRAMEWORK,\n TRANSACTION_TYPE,\n} from '@plyaz/types';\nimport { SUPPORTED_CURRENCIES } from '../../../validators';\n\n/**\n * Global geographic routing configuration\n *\n * Defines provider routing, regulations, and optimizations\n * per geographic region and currency zone.\n */\nexport const Geographic: GeographicRoutingConfig = {\n enabled: true,\n\n /** Region-based preferences */\n regionPreferences: {\n /** Pakistan */\n PK: {\n regionId: 'PK',\n preferredProviders: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 95,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 92, maxResponseTime: 1800, checkInterval: 10 },\n },\n ],\n localPaymentMethods: [PAYMENT_METHOD.BankTransfer, PAYMENT_METHOD.CryptoNativeToken],\n regulations: {\n kycRequired: true,\n transactionLimits: {\n daily: { amount: 50000, currency: 'PKR' },\n monthly: { amount: 1000000, currency: 'PKR' },\n },\n requiredLicenses: [],\n },\n optimizations: {\n preferredDataCenters: ['asia-south1'],\n cdnEndpoints: ['cdn-pk.plyaz.com'],\n cachingStrategy: 'standard',\n },\n },\n\n /** India */\n IN: {\n regionId: 'IN',\n preferredProviders: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 85,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 95, maxResponseTime: 1600, checkInterval: 8 },\n },\n ],\n localPaymentMethods: [PAYMENT_METHOD.BankTransfer],\n regulations: {\n kycRequired: true,\n transactionLimits: {\n daily: { amount: 100000, currency: 'INR' },\n monthly: { amount: 2000000, currency: 'INR' },\n },\n requiredLicenses: ['RBI'],\n },\n optimizations: {\n preferredDataCenters: ['asia-south2'],\n cdnEndpoints: ['cdn-in.plyaz.com'],\n cachingStrategy: 'standard',\n },\n },\n\n /** United Arab Emirates */\n AE: {\n regionId: 'AE',\n preferredProviders: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 90,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 94, maxResponseTime: 1700, checkInterval: 10 },\n },\n ],\n localPaymentMethods: [PAYMENT_METHOD.BankTransfer, PAYMENT_METHOD.CreditCard],\n regulations: {\n kycRequired: true,\n transactionLimits: {\n daily: { amount: 50000, currency: 'AED' },\n monthly: { amount: 1000000, currency: 'AED' },\n },\n requiredLicenses: ['CBUAE'],\n },\n optimizations: {\n preferredDataCenters: ['me-central1'],\n cdnEndpoints: ['cdn-ae.plyaz.com'],\n cachingStrategy: 'standard',\n },\n },\n\n /** Singapore */\n SG: {\n regionId: 'SG',\n preferredProviders: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 95, maxResponseTime: 1500, checkInterval: 8 },\n },\n ],\n localPaymentMethods: [PAYMENT_METHOD.BankTransfer, PAYMENT_METHOD.CryptoNativeToken],\n regulations: {\n kycRequired: true,\n transactionLimits: {\n daily: { amount: 60000, currency: 'SGD' },\n monthly: { amount: 1200000, currency: 'SGD' },\n },\n requiredLicenses: ['MAS'],\n },\n optimizations: {\n preferredDataCenters: ['asia-southeast1'],\n cdnEndpoints: ['cdn-sg.plyaz.com'],\n cachingStrategy: 'standard',\n },\n },\n\n /** Japan */\n JP: {\n regionId: 'JP',\n preferredProviders: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 90,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 97, maxResponseTime: 1200, checkInterval: 6 },\n },\n ],\n localPaymentMethods: [PAYMENT_METHOD.CreditCard, PAYMENT_METHOD.BankTransfer],\n regulations: {\n kycRequired: true,\n transactionLimits: {\n daily: { amount: 8000000, currency: 'JPY' },\n monthly: { amount: 20000000, currency: 'JPY' },\n },\n requiredLicenses: ['FSA'],\n },\n optimizations: {\n preferredDataCenters: ['asia-northeast1'],\n cdnEndpoints: ['cdn-jp.plyaz.com'],\n cachingStrategy: 'aggressive',\n },\n },\n\n /** United States */\n US: {\n regionId: 'US',\n preferredProviders: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 95,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 98, maxResponseTime: 1000, checkInterval: 5 },\n },\n ],\n localPaymentMethods: [PAYMENT_METHOD.CreditCard, PAYMENT_METHOD.BankTransfer],\n regulations: {\n kycRequired: true,\n transactionLimits: {\n daily: { amount: 100000, currency: 'USD' },\n monthly: { amount: 2000000, currency: 'USD' },\n },\n requiredLicenses: ['FINTRAC', 'MSB'],\n },\n optimizations: {\n preferredDataCenters: ['us-central1'],\n cdnEndpoints: ['cdn-us.plyaz.com'],\n cachingStrategy: 'aggressive',\n },\n },\n\n /**Canada */\n CA: {\n regionId: 'CA',\n preferredProviders: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 85,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 96, maxResponseTime: 1300, checkInterval: 6 },\n },\n ],\n localPaymentMethods: [PAYMENT_METHOD.CreditCard, PAYMENT_METHOD.BankTransfer],\n regulations: {\n kycRequired: true,\n transactionLimits: {\n daily: { amount: 100000, currency: 'CAD' },\n monthly: { amount: 1500000, currency: 'CAD' },\n },\n requiredLicenses: ['FINTRAC'],\n },\n optimizations: {\n preferredDataCenters: ['northamerica-northeast1'],\n cdnEndpoints: ['cdn-ca.plyaz.com'],\n cachingStrategy: 'standard',\n },\n },\n\n /** European Union */\n EU: {\n regionId: 'EU',\n preferredProviders: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 90,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 96, maxResponseTime: 1300, checkInterval: 5 },\n },\n ],\n localPaymentMethods: [PAYMENT_METHOD.CreditCard],\n regulations: {\n kycRequired: true,\n transactionLimits: {\n daily: { amount: 80000, currency: 'EUR' },\n monthly: { amount: 1500000, currency: 'EUR' },\n },\n requiredLicenses: ['PSD2'],\n },\n optimizations: {\n preferredDataCenters: ['europe-west1'],\n cdnEndpoints: ['cdn-eu.plyaz.com'],\n cachingStrategy: 'standard',\n },\n },\n\n /**United Kingdom */\n UK: {\n regionId: 'UK',\n preferredProviders: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 90,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 96, maxResponseTime: 1400, checkInterval: 6 },\n },\n ],\n localPaymentMethods: [PAYMENT_METHOD.CreditCard, PAYMENT_METHOD.BankTransfer],\n regulations: {\n kycRequired: true,\n transactionLimits: {\n daily: { amount: 70000, currency: 'GBP' },\n monthly: { amount: 1400000, currency: 'GBP' },\n },\n requiredLicenses: ['FCA'],\n },\n optimizations: {\n preferredDataCenters: ['europe-west2'],\n cdnEndpoints: ['cdn-uk.plyaz.com'],\n cachingStrategy: 'standard',\n },\n },\n\n /** Australia */\n AU: {\n regionId: 'AU',\n preferredProviders: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 85,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 95, maxResponseTime: 1500, checkInterval: 8 },\n },\n ],\n localPaymentMethods: [PAYMENT_METHOD.BankTransfer, PAYMENT_METHOD.CreditCard],\n regulations: {\n kycRequired: true,\n transactionLimits: {\n daily: { amount: 100000, currency: 'AUD' },\n monthly: { amount: 2000000, currency: 'AUD' },\n },\n requiredLicenses: ['AUSTRAC'],\n },\n optimizations: {\n preferredDataCenters: ['australia-southeast1'],\n cdnEndpoints: ['cdn-au.plyaz.com'],\n cachingStrategy: 'standard',\n },\n },\n },\n\n /** Cross-border routing setup */\n crossBorder: {\n enabled: true,\n preferredProviders: [PAYMENT_PROVIDER_TYPE.Stripe, PAYMENT_PROVIDER_TYPE.Moonpay],\n additionalFees: { percentage: 2.5 },\n },\n\n /** Global AML/KYC compliance rules */\n compliance: {\n enabled: true,\n rules: {\n GLOBAL: [\n {\n ruleId: 'aml_kyc_high_value',\n description: 'High-value transactions require KYC & AML checks',\n framework: REGULATORY_FRAMEWORK.Aml,\n conditions: {\n transactionTypes: [\n TRANSACTION_TYPE.Payment,\n TRANSACTION_TYPE.Refund,\n TRANSACTION_TYPE.Subscription,\n ],\n amountThresholds: { min: { amount: 1000, currency: 'USD' } },\n },\n actions: { verification: ['identity_document'], reporting: true, approval: true },\n enforcement: 'mandatory',\n },\n ],\n },\n },\n\n /** Currency zones configuration */\n currencyZones: {\n enabled: true,\n zones: {\n Fiat: {\n currencies: SUPPORTED_CURRENCIES,\n preferredProviders: [PAYMENT_PROVIDER_TYPE.Stripe],\n },\n Crypto: {\n currencies: ['BTC', 'ETH', 'USDT'],\n preferredProviders: [PAYMENT_PROVIDER_TYPE.Moonpay],\n },\n },\n },\n};\n","import { PERFORMANCE_METRIC_TYPE, type PerformanceMonitoringConfig } from '@plyaz/types';\n\n/**\n * Performance monitoring configuration\n *\n * Defines which metrics to collect, how often, and alert thresholds.\n * Tuned for high-availability payment routing with moderate sampling.\n *\n * @see PerformanceMonitoringConfig\n */\nexport const Performance: PerformanceMonitoringConfig = {\n /** Enable or disable performance monitoring globally */\n enabled: true,\n\n /** Metrics to collect and report */\n metrics: [\n PERFORMANCE_METRIC_TYPE.Cost,\n PERFORMANCE_METRIC_TYPE.SuccessRate,\n PERFORMANCE_METRIC_TYPE.Latency,\n PERFORMANCE_METRIC_TYPE.ErrorRate,\n PERFORMANCE_METRIC_TYPE.Throughput,\n ],\n\n /** Data retention period in minutes (1440 = 24 hours) */\n retentionPeriod: 1440,\n\n /** Sampling rate (0–1): 0.5 means 50% of events are sampled */\n samplingRate: 0.5,\n\n /** Alerting thresholds and sensitivity configuration */\n alerting: {\n enabled: true,\n\n /** Trigger alert if error rate exceeds 2% */\n errorRateThreshold: 2,\n\n /** Trigger alert if latency exceeds 1500ms */\n latencyThreshold: 1500,\n\n /** Trigger alert if success rate drops below 98% */\n successRateThreshold: 98,\n\n /** Minimum number of samples required before evaluating alert conditions */\n minSampleSize: 100,\n },\n\n /** Integration endpoints for metrics and logs */\n integrations: {\n metricsSink: 'prometheus',\n logSink: 'logstash',\n },\n};\n","import {\n type LoadBalancingConfig,\n LOAD_BALANCING_STRATEGY,\n PAYMENT_PROVIDER_TYPE,\n} from '@plyaz/types';\nimport { NUMERIX } from '../../../../../db';\nimport { TIME_CONSTANTS } from '../../../../../time';\n\nexport const WeightedLoadBalancing: LoadBalancingConfig = {\n enabled: true,\n strategy: LOAD_BALANCING_STRATEGY.Weighted,\n providerWeights: {\n [PAYMENT_PROVIDER_TYPE.Stripe]: 40,\n [PAYMENT_PROVIDER_TYPE.Moonpay]: 60,\n [PAYMENT_PROVIDER_TYPE.Paypal]: 0,\n [PAYMENT_PROVIDER_TYPE.CheckoutCom]: 0,\n [PAYMENT_PROVIDER_TYPE.Adyen]: 0,\n [PAYMENT_PROVIDER_TYPE.CoinbaseCommerce]: 0,\n [PAYMENT_PROVIDER_TYPE.BlockchainBridge]: 0,\n [PAYMENT_PROVIDER_TYPE.Pix]: 0,\n [PAYMENT_PROVIDER_TYPE.Boleto]: 0,\n [PAYMENT_PROVIDER_TYPE.Sepa]: 0,\n [PAYMENT_PROVIDER_TYPE.Ideal]: 0,\n [PAYMENT_PROVIDER_TYPE.Sofort]: 0,\n [PAYMENT_PROVIDER_TYPE.Alipay]: 0,\n [PAYMENT_PROVIDER_TYPE.WechatPay]: 0,\n [PAYMENT_PROVIDER_TYPE.MockProvider]: 0,\n },\n maxConnections: {\n [PAYMENT_PROVIDER_TYPE.Stripe]: NUMERIX.THOUSAND,\n [PAYMENT_PROVIDER_TYPE.Moonpay]: NUMERIX.FIVE_HUNDERD,\n [PAYMENT_PROVIDER_TYPE.Paypal]: 0,\n [PAYMENT_PROVIDER_TYPE.CheckoutCom]: 0,\n [PAYMENT_PROVIDER_TYPE.Adyen]: 0,\n [PAYMENT_PROVIDER_TYPE.CoinbaseCommerce]: 0,\n [PAYMENT_PROVIDER_TYPE.BlockchainBridge]: 0,\n [PAYMENT_PROVIDER_TYPE.Pix]: 0,\n [PAYMENT_PROVIDER_TYPE.Boleto]: 0,\n [PAYMENT_PROVIDER_TYPE.Sepa]: 0,\n [PAYMENT_PROVIDER_TYPE.Ideal]: 0,\n [PAYMENT_PROVIDER_TYPE.Sofort]: 0,\n [PAYMENT_PROVIDER_TYPE.Alipay]: 0,\n [PAYMENT_PROVIDER_TYPE.WechatPay]: 0,\n [PAYMENT_PROVIDER_TYPE.MockProvider]: 0,\n },\n stickiness: {\n enabled: true,\n duration: TIME_CONSTANTS.HOUR, // 1 hour\n key: 'user',\n },\n autoRebalance: {\n enabled: true,\n interval: TIME_CONSTANTS.FIVE_MINUTES, // every 5 minutes\n basedOn: 'cost',\n },\n};\n","import {\n type LoadBalancingConfig,\n LOAD_BALANCING_STRATEGY,\n PAYMENT_PROVIDER_TYPE,\n} from '@plyaz/types';\n\nexport const RoundRobinLoadBalancing: LoadBalancingConfig = {\n enabled: true,\n strategy: LOAD_BALANCING_STRATEGY.RoundRobin,\n providerWeights: {\n [PAYMENT_PROVIDER_TYPE.Stripe]: 1,\n [PAYMENT_PROVIDER_TYPE.Moonpay]: 1,\n [PAYMENT_PROVIDER_TYPE.Paypal]: 0,\n [PAYMENT_PROVIDER_TYPE.CheckoutCom]: 0,\n [PAYMENT_PROVIDER_TYPE.Adyen]: 0,\n [PAYMENT_PROVIDER_TYPE.CoinbaseCommerce]: 0,\n [PAYMENT_PROVIDER_TYPE.BlockchainBridge]: 0,\n [PAYMENT_PROVIDER_TYPE.Pix]: 0,\n [PAYMENT_PROVIDER_TYPE.Boleto]: 0,\n [PAYMENT_PROVIDER_TYPE.Sepa]: 0,\n [PAYMENT_PROVIDER_TYPE.Ideal]: 0,\n [PAYMENT_PROVIDER_TYPE.Sofort]: 0,\n [PAYMENT_PROVIDER_TYPE.Alipay]: 0,\n [PAYMENT_PROVIDER_TYPE.WechatPay]: 0,\n [PAYMENT_PROVIDER_TYPE.MockProvider]: 0,\n },\n stickiness: { enabled: false, duration: 0, key: 'user' },\n autoRebalance: { enabled: false, interval: 0, basedOn: 'mixed' },\n};\n","import {\n type LoadBalancingConfig,\n LOAD_BALANCING_STRATEGY,\n PAYMENT_PROVIDER_TYPE,\n} from '@plyaz/types';\nimport { NUMERIX } from '../../../../../db';\n\nexport const LeastConnectionsLoadBalancing: LoadBalancingConfig = {\n enabled: true,\n strategy: LOAD_BALANCING_STRATEGY.LeastConnections,\n providerWeights: {\n [PAYMENT_PROVIDER_TYPE.Stripe]: 1,\n [PAYMENT_PROVIDER_TYPE.Moonpay]: 1,\n [PAYMENT_PROVIDER_TYPE.Paypal]: 0,\n [PAYMENT_PROVIDER_TYPE.CheckoutCom]: 0,\n [PAYMENT_PROVIDER_TYPE.Adyen]: 0,\n [PAYMENT_PROVIDER_TYPE.CoinbaseCommerce]: 0,\n [PAYMENT_PROVIDER_TYPE.BlockchainBridge]: 0,\n [PAYMENT_PROVIDER_TYPE.Pix]: 0,\n [PAYMENT_PROVIDER_TYPE.Boleto]: 0,\n [PAYMENT_PROVIDER_TYPE.Sepa]: 0,\n [PAYMENT_PROVIDER_TYPE.Ideal]: 0,\n [PAYMENT_PROVIDER_TYPE.Sofort]: 0,\n [PAYMENT_PROVIDER_TYPE.Alipay]: 0,\n [PAYMENT_PROVIDER_TYPE.WechatPay]: 0,\n [PAYMENT_PROVIDER_TYPE.MockProvider]: 0,\n },\n maxConnections: {\n [PAYMENT_PROVIDER_TYPE.Stripe]: NUMERIX.THOUSAND,\n [PAYMENT_PROVIDER_TYPE.Moonpay]: NUMERIX.FIVE_HUNDERD,\n [PAYMENT_PROVIDER_TYPE.Paypal]: 0,\n [PAYMENT_PROVIDER_TYPE.CheckoutCom]: 0,\n [PAYMENT_PROVIDER_TYPE.Adyen]: 0,\n [PAYMENT_PROVIDER_TYPE.CoinbaseCommerce]: 0,\n [PAYMENT_PROVIDER_TYPE.BlockchainBridge]: 0,\n [PAYMENT_PROVIDER_TYPE.Pix]: 0,\n [PAYMENT_PROVIDER_TYPE.Boleto]: 0,\n [PAYMENT_PROVIDER_TYPE.Sepa]: 0,\n [PAYMENT_PROVIDER_TYPE.Ideal]: 0,\n [PAYMENT_PROVIDER_TYPE.Sofort]: 0,\n [PAYMENT_PROVIDER_TYPE.Alipay]: 0,\n [PAYMENT_PROVIDER_TYPE.WechatPay]: 0,\n [PAYMENT_PROVIDER_TYPE.MockProvider]: 0,\n },\n stickiness: { enabled: false, duration: 0, key: 'user' },\n autoRebalance: { enabled: false, interval: 0, basedOn: 'mixed' },\n};\n","import {\n type LoadBalancingConfig,\n LOAD_BALANCING_STRATEGY,\n PAYMENT_PROVIDER_TYPE,\n} from '@plyaz/types';\nimport { NUMERIX } from '../../../../../db';\n\nexport const PerformanceBasedLoadBalancing: LoadBalancingConfig = {\n enabled: true,\n strategy: LOAD_BALANCING_STRATEGY.PerformanceBased,\n providerWeights: {\n [PAYMENT_PROVIDER_TYPE.Stripe]: 50,\n [PAYMENT_PROVIDER_TYPE.Moonpay]: 50,\n [PAYMENT_PROVIDER_TYPE.Paypal]: 0,\n [PAYMENT_PROVIDER_TYPE.CheckoutCom]: 0,\n [PAYMENT_PROVIDER_TYPE.Adyen]: 0,\n [PAYMENT_PROVIDER_TYPE.CoinbaseCommerce]: 0,\n [PAYMENT_PROVIDER_TYPE.BlockchainBridge]: 0,\n [PAYMENT_PROVIDER_TYPE.Pix]: 0,\n [PAYMENT_PROVIDER_TYPE.Boleto]: 0,\n [PAYMENT_PROVIDER_TYPE.Sepa]: 0,\n [PAYMENT_PROVIDER_TYPE.Ideal]: 0,\n [PAYMENT_PROVIDER_TYPE.Sofort]: 0,\n [PAYMENT_PROVIDER_TYPE.Alipay]: 0,\n [PAYMENT_PROVIDER_TYPE.WechatPay]: 0,\n [PAYMENT_PROVIDER_TYPE.MockProvider]: 0,\n },\n autoRebalance: {\n enabled: true,\n interval: NUMERIX.SIXTY,\n basedOn: 'latency',\n },\n stickiness: { enabled: false, duration: 0, key: 'user' },\n};\n","import {\n type LoadBalancingConfig,\n LOAD_BALANCING_STRATEGY,\n PAYMENT_PROVIDER_TYPE,\n} from '@plyaz/types';\n\nexport const CustomLoadBalancing: LoadBalancingConfig = {\n enabled: true,\n strategy: LOAD_BALANCING_STRATEGY.Custom,\n providerWeights: {\n [PAYMENT_PROVIDER_TYPE.Stripe]: 50,\n [PAYMENT_PROVIDER_TYPE.Moonpay]: 50,\n [PAYMENT_PROVIDER_TYPE.Paypal]: 0,\n [PAYMENT_PROVIDER_TYPE.CheckoutCom]: 0,\n [PAYMENT_PROVIDER_TYPE.Adyen]: 0,\n [PAYMENT_PROVIDER_TYPE.CoinbaseCommerce]: 0,\n [PAYMENT_PROVIDER_TYPE.BlockchainBridge]: 0,\n [PAYMENT_PROVIDER_TYPE.Pix]: 0,\n [PAYMENT_PROVIDER_TYPE.Boleto]: 0,\n [PAYMENT_PROVIDER_TYPE.Sepa]: 0,\n [PAYMENT_PROVIDER_TYPE.Ideal]: 0,\n [PAYMENT_PROVIDER_TYPE.Sofort]: 0,\n [PAYMENT_PROVIDER_TYPE.Alipay]: 0,\n [PAYMENT_PROVIDER_TYPE.WechatPay]: 0,\n [PAYMENT_PROVIDER_TYPE.MockProvider]: 0,\n },\n stickiness: { enabled: false, duration: 0, key: 'user' },\n autoRebalance: { enabled: false, interval: 0, basedOn: 'mixed' },\n};\n","import { LOAD_BALANCING_STRATEGY, type LoadBalancingConfig } from '@plyaz/types';\nimport { WeightedLoadBalancing } from './strategies/weighted.config';\nimport { RoundRobinLoadBalancing } from './strategies/round-robin.config';\nimport { LeastConnectionsLoadBalancing } from './strategies/least-connections.config';\nimport { PerformanceBasedLoadBalancing } from './strategies/performance-based.config';\nimport { CustomLoadBalancing } from './strategies/custom.config';\n\nexport const LoadBalancingRegistry: Record<LOAD_BALANCING_STRATEGY, LoadBalancingConfig> = {\n [LOAD_BALANCING_STRATEGY.Weighted]: WeightedLoadBalancing,\n [LOAD_BALANCING_STRATEGY.RoundRobin]: RoundRobinLoadBalancing,\n [LOAD_BALANCING_STRATEGY.LeastConnections]: LeastConnectionsLoadBalancing,\n [LOAD_BALANCING_STRATEGY.PerformanceBased]: PerformanceBasedLoadBalancing,\n [LOAD_BALANCING_STRATEGY.Custom]: CustomLoadBalancing,\n};\n","import {\n COST_OPTIMIZATION_STRATEGY,\n type CostOptimizationConfig,\n CURRENCY_CODES,\n} from '@plyaz/types';\n\nexport const COST_OPTIMIZATION_AGGRESSIVE: CostOptimizationConfig = {\n enabled: true,\n strategy: COST_OPTIMIZATION_STRATEGY.Aggressive,\n calculation: {\n includeNetworkFees: true,\n includeFxCosts: true,\n includeOpportunityCosts: false,\n updateFrequency: 10, // minutes\n },\n feePreferences: {\n preferenceType: 'lowest_total',\n percentageWeight: 0.7,\n fixedWeight: 0.3,\n },\n volumeOptimization: {\n enabled: true,\n trackingWindow: 30, // days\n volumeTiers: [\n {\n name: 'Tier 1',\n minimumVolume: { amount: 0, currency: CURRENCY_CODES.USD },\n feeRates: { percentage: 2.9, fixed: 0.3, currency: CURRENCY_CODES.USD },\n },\n {\n name: 'Tier 2',\n minimumVolume: { amount: 10000, currency: CURRENCY_CODES.USD },\n feeRates: { percentage: 2.7, fixed: 0.25, currency: CURRENCY_CODES.USD },\n benefits: ['Reduced processing fees'],\n },\n ],\n },\n currencyOptimization: {\n enabled: true,\n rateProviders: ['internal_fx', 'openexchangerates'],\n updateFrequency: 60,\n spreadTolerance: 0.01,\n },\n};\n","import {\n COST_OPTIMIZATION_STRATEGY,\n type CostOptimizationConfig,\n CURRENCY_CODES,\n} from '@plyaz/types';\n\nexport const COST_OPTIMIZATION_BALANCED: CostOptimizationConfig = {\n enabled: true,\n strategy: COST_OPTIMIZATION_STRATEGY.Balanced,\n calculation: {\n includeNetworkFees: true,\n includeFxCosts: true,\n includeOpportunityCosts: true,\n updateFrequency: 20,\n },\n feePreferences: {\n preferenceType: 'hybrid',\n percentageWeight: 0.5,\n fixedWeight: 0.5,\n },\n volumeOptimization: {\n enabled: true,\n trackingWindow: 60,\n volumeTiers: [\n {\n name: 'Base Tier',\n minimumVolume: { amount: 0, currency: CURRENCY_CODES.USD },\n feeRates: { percentage: 2.8, fixed: 0.3, currency: CURRENCY_CODES.USD },\n },\n {\n name: 'Growth Tier',\n minimumVolume: { amount: 50000, currency: CURRENCY_CODES.USD },\n feeRates: { percentage: 2.6, fixed: 0.25, currency: CURRENCY_CODES.USD },\n benefits: ['Priority routing', 'Fee stability'],\n },\n ],\n },\n currencyOptimization: {\n enabled: true,\n rateProviders: ['internal_fx', 'xe', 'reuters'],\n updateFrequency: 120,\n spreadTolerance: 0.015,\n },\n};\n","import { COST_OPTIMIZATION_STRATEGY, type CostOptimizationConfig } from '@plyaz/types';\n\nexport const COST_OPTIMIZATION_CONSERVATIVE: CostOptimizationConfig = {\n enabled: true,\n strategy: COST_OPTIMIZATION_STRATEGY.Conservative,\n calculation: {\n includeNetworkFees: true,\n includeFxCosts: false,\n includeOpportunityCosts: true,\n updateFrequency: 60,\n },\n feePreferences: {\n preferenceType: 'fixed',\n percentageWeight: 0.3,\n fixedWeight: 0.7,\n },\n volumeOptimization: {\n enabled: false,\n trackingWindow: 90,\n volumeTiers: [],\n },\n currencyOptimization: {\n enabled: false,\n rateProviders: [],\n updateFrequency: 0,\n spreadTolerance: 0,\n },\n};\n","import {\n COST_OPTIMIZATION_STRATEGY,\n type CostOptimizationConfig,\n CURRENCY_CODES,\n} from '@plyaz/types';\n\nexport const COST_OPTIMIZATION_TARGETED: CostOptimizationConfig = {\n enabled: true,\n strategy: COST_OPTIMIZATION_STRATEGY.Targeted,\n calculation: {\n includeNetworkFees: true,\n includeFxCosts: true,\n includeOpportunityCosts: true,\n updateFrequency: 15,\n },\n feePreferences: {\n preferenceType: 'percentage',\n percentageWeight: 0.8,\n fixedWeight: 0.2,\n },\n volumeOptimization: {\n enabled: true,\n trackingWindow: 45,\n volumeTiers: [\n {\n name: 'Target Tier 1',\n minimumVolume: { amount: 0, currency: CURRENCY_CODES.USD },\n feeRates: { percentage: 2.9, fixed: 0.25, currency: CURRENCY_CODES.USD },\n },\n {\n name: 'Target Tier 2',\n minimumVolume: { amount: 25000, currency: CURRENCY_CODES.USD },\n feeRates: { percentage: 2.5, fixed: 0.2, currency: CURRENCY_CODES.USD },\n benefits: ['Custom FX routing', 'Preferred provider path'],\n },\n ],\n },\n currencyOptimization: {\n enabled: true,\n rateProviders: ['openexchangerates', 'currencylayer'],\n updateFrequency: 30,\n spreadTolerance: 0.008,\n },\n};\n","import { COST_OPTIMIZATION_STRATEGY, type CostOptimizationConfig } from '@plyaz/types';\nimport { COST_OPTIMIZATION_AGGRESSIVE } from './strategies/aggressive.config';\nimport { COST_OPTIMIZATION_BALANCED } from './strategies/balanced.config';\nimport { COST_OPTIMIZATION_CONSERVATIVE } from './strategies/conservative.config';\nimport { COST_OPTIMIZATION_TARGETED } from './strategies/targeted.config';\n\nexport const COST_OPTIMIZATION: Record<COST_OPTIMIZATION_STRATEGY, CostOptimizationConfig> = {\n [COST_OPTIMIZATION_STRATEGY.Aggressive]: COST_OPTIMIZATION_AGGRESSIVE,\n [COST_OPTIMIZATION_STRATEGY.Balanced]: COST_OPTIMIZATION_BALANCED,\n [COST_OPTIMIZATION_STRATEGY.Conservative]: COST_OPTIMIZATION_CONSERVATIVE,\n [COST_OPTIMIZATION_STRATEGY.Targeted]: COST_OPTIMIZATION_TARGETED,\n};\n","import { type AmountBasedRule, PAYMENT_PROVIDER_TYPE } from '@plyaz/types';\n\nexport const AMOUNT_BASED_SELECTION: AmountBasedRule[] = [\n // United States (USD)\n {\n name: 'USD',\n amountRange: {\n min: { amount: 1000, currency: 'USD' },\n max: { amount: 1000000, currency: 'USD' },\n },\n preferredProviders: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 120,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 99, maxResponseTime: 700, checkInterval: 2 },\n },\n {\n provider: PAYMENT_PROVIDER_TYPE.Paypal,\n weight: 80,\n trafficPercentage: 10,\n conditions: [],\n healthRequirements: { minSuccessRate: 98, maxResponseTime: 800, checkInterval: 5 },\n },\n ],\n specialHandling: { requireVerification: true, enhancedSecurity: true, manualReview: false },\n },\n\n // Eurozone (EUR)\n {\n name: 'EUR',\n amountRange: {\n min: { amount: 900, currency: 'EUR' },\n max: { amount: 1000000, currency: 'EUR' },\n },\n preferredProviders: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 120,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 98, maxResponseTime: 750, checkInterval: 5 },\n },\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 80,\n trafficPercentage: 10,\n conditions: [],\n healthRequirements: { minSuccessRate: 96, maxResponseTime: 800, checkInterval: 5 },\n },\n ],\n specialHandling: { requireVerification: true, enhancedSecurity: true, manualReview: false },\n },\n\n // Brazil (BRL)\n {\n name: 'BRL',\n amountRange: {\n min: { amount: 50000, currency: 'BRL' },\n max: { amount: 1000000, currency: 'BRL' },\n },\n preferredProviders: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Pix,\n weight: 100,\n trafficPercentage: 60,\n conditions: [],\n healthRequirements: { minSuccessRate: 98, maxResponseTime: 700, checkInterval: 2 },\n },\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 90,\n trafficPercentage: 25,\n conditions: [],\n healthRequirements: { minSuccessRate: 97, maxResponseTime: 800, checkInterval: 5 },\n },\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 80,\n trafficPercentage: 15,\n conditions: [],\n healthRequirements: { minSuccessRate: 96, maxResponseTime: 900, checkInterval: 5 },\n },\n ],\n specialHandling: { requireVerification: true, enhancedSecurity: true, manualReview: false },\n },\n\n // China (CNY)\n {\n name: 'CNY',\n amountRange: {\n min: { amount: 7000, currency: 'CNY' },\n max: { amount: 1000000, currency: 'CNY' },\n },\n preferredProviders: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Alipay,\n weight: 100,\n trafficPercentage: 70,\n conditions: [],\n healthRequirements: { minSuccessRate: 97, maxResponseTime: 800, checkInterval: 5 },\n },\n {\n provider: PAYMENT_PROVIDER_TYPE.WechatPay,\n weight: 90,\n trafficPercentage: 30,\n conditions: [],\n healthRequirements: { minSuccessRate: 96, maxResponseTime: 850, checkInterval: 5 },\n },\n ],\n specialHandling: { requireVerification: true, enhancedSecurity: true, manualReview: false },\n },\n\n // Canada (CAD)\n {\n name: 'CAD',\n amountRange: {\n min: { amount: 1300, currency: 'CAD' },\n max: { amount: 1000000, currency: 'CAD' },\n },\n preferredProviders: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 120,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 99, maxResponseTime: 700, checkInterval: 2 },\n },\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 80,\n trafficPercentage: 10,\n conditions: [],\n healthRequirements: { minSuccessRate: 97, maxResponseTime: 800, checkInterval: 5 },\n },\n ],\n specialHandling: { requireVerification: true, enhancedSecurity: true, manualReview: false },\n },\n\n // Australia (AUD)\n {\n name: 'AUD',\n amountRange: {\n min: { amount: 1400, currency: 'AUD' },\n max: { amount: 1000000, currency: 'AUD' },\n },\n preferredProviders: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 120,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 99, maxResponseTime: 700, checkInterval: 2 },\n },\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 80,\n trafficPercentage: 10,\n conditions: [],\n healthRequirements: { minSuccessRate: 97, maxResponseTime: 800, checkInterval: 5 },\n },\n ],\n specialHandling: { requireVerification: true, enhancedSecurity: true, manualReview: false },\n },\n\n // India (INR)\n {\n name: 'INR',\n amountRange: {\n min: { amount: 75000, currency: 'INR' },\n max: { amount: 100000000, currency: 'INR' },\n },\n preferredProviders: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 120,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 98, maxResponseTime: 750, checkInterval: 5 },\n },\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 80,\n trafficPercentage: 10,\n conditions: [],\n healthRequirements: { minSuccessRate: 96, maxResponseTime: 800, checkInterval: 5 },\n },\n ],\n specialHandling: { requireVerification: true, enhancedSecurity: true, manualReview: false },\n },\n\n // Other international (USD fallback)\n {\n name: 'INTL',\n amountRange: {\n min: { amount: 1000, currency: 'USD' },\n max: { amount: 1000000, currency: 'USD' },\n },\n preferredProviders: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 120,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 98, maxResponseTime: 750, checkInterval: 5 },\n },\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 80,\n trafficPercentage: 10,\n conditions: [],\n healthRequirements: { minSuccessRate: 96, maxResponseTime: 800, checkInterval: 5 },\n },\n ],\n specialHandling: { requireVerification: true, enhancedSecurity: true, manualReview: false },\n },\n];\n","import { type CurrencyCode, PAYMENT_PROVIDER_TYPE, type ProviderPreference } from '@plyaz/types';\n\nexport const CurrencySpecificProviders: Record<CurrencyCode, ProviderPreference[]> = {\n // --- Major currencies ---\n USD: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 90,\n trafficPercentage: 70,\n conditions: [],\n healthRequirements: { minSuccessRate: 95, maxResponseTime: 1200, checkInterval: 5 },\n },\n ],\n EUR: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 100,\n trafficPercentage: 80,\n conditions: [],\n healthRequirements: { minSuccessRate: 98, maxResponseTime: 800, checkInterval: 3 },\n },\n ],\n GBP: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 95,\n trafficPercentage: 80,\n conditions: [],\n healthRequirements: { minSuccessRate: 97, maxResponseTime: 900, checkInterval: 3 },\n },\n ],\n JPY: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 70,\n conditions: [],\n healthRequirements: { minSuccessRate: 94, maxResponseTime: 1300, checkInterval: 6 },\n },\n ],\n CHF: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 95,\n trafficPercentage: 80,\n conditions: [],\n healthRequirements: { minSuccessRate: 98, maxResponseTime: 850, checkInterval: 3 },\n },\n ],\n CAD: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 95,\n trafficPercentage: 80,\n conditions: [],\n healthRequirements: { minSuccessRate: 97, maxResponseTime: 900, checkInterval: 3 },\n },\n ],\n AUD: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 90,\n trafficPercentage: 70,\n conditions: [],\n healthRequirements: { minSuccessRate: 95, maxResponseTime: 1200, checkInterval: 5 },\n },\n ],\n CNY: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 90,\n trafficPercentage: 80,\n conditions: [],\n healthRequirements: { minSuccessRate: 94, maxResponseTime: 1400, checkInterval: 6 },\n },\n ],\n\n // --- Asian currencies ---\n INR: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 90,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 93, maxResponseTime: 1500, checkInterval: 6 },\n },\n ],\n KRW: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 93, maxResponseTime: 1400, checkInterval: 6 },\n },\n ],\n SGD: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 95,\n trafficPercentage: 80,\n conditions: [],\n healthRequirements: { minSuccessRate: 97, maxResponseTime: 800, checkInterval: 3 },\n },\n ],\n HKD: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 95,\n trafficPercentage: 80,\n conditions: [],\n healthRequirements: { minSuccessRate: 97, maxResponseTime: 900, checkInterval: 3 },\n },\n ],\n TWD: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 90,\n trafficPercentage: 80,\n conditions: [],\n healthRequirements: { minSuccessRate: 94, maxResponseTime: 1300, checkInterval: 6 },\n },\n ],\n THB: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 90,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 92, maxResponseTime: 1500, checkInterval: 10 },\n },\n ],\n IDR: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 90,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 92, maxResponseTime: 1500, checkInterval: 10 },\n },\n ],\n MYR: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 90,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 93, maxResponseTime: 1500, checkInterval: 10 },\n },\n ],\n PHP: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 92, maxResponseTime: 1600, checkInterval: 10 },\n },\n ],\n VND: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 91, maxResponseTime: 1600, checkInterval: 10 },\n },\n ],\n BDT: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 90, maxResponseTime: 1700, checkInterval: 10 },\n },\n ],\n PKR: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 90,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 92, maxResponseTime: 1500, checkInterval: 10 },\n },\n ],\n LKR: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 90, maxResponseTime: 1700, checkInterval: 10 },\n },\n ],\n\n // --- European currencies ---\n SEK: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 95,\n trafficPercentage: 80,\n conditions: [],\n healthRequirements: { minSuccessRate: 97, maxResponseTime: 900, checkInterval: 3 },\n },\n ],\n NOK: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 95,\n trafficPercentage: 80,\n conditions: [],\n healthRequirements: { minSuccessRate: 97, maxResponseTime: 900, checkInterval: 3 },\n },\n ],\n DKK: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 95,\n trafficPercentage: 80,\n conditions: [],\n healthRequirements: { minSuccessRate: 97, maxResponseTime: 900, checkInterval: 3 },\n },\n ],\n PLN: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 93, maxResponseTime: 1300, checkInterval: 6 },\n },\n ],\n CZK: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 93, maxResponseTime: 1300, checkInterval: 6 },\n },\n ],\n HUF: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 92, maxResponseTime: 1300, checkInterval: 6 },\n },\n ],\n RON: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 92, maxResponseTime: 1300, checkInterval: 6 },\n },\n ],\n BGN: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 92, maxResponseTime: 1300, checkInterval: 6 },\n },\n ],\n HRK: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 92, maxResponseTime: 1300, checkInterval: 6 },\n },\n ],\n RSD: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 91, maxResponseTime: 1400, checkInterval: 6 },\n },\n ],\n ISK: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 95,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 97, maxResponseTime: 900, checkInterval: 3 },\n },\n ],\n\n // --- Americas ---\n BRL: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 93, maxResponseTime: 1400, checkInterval: 6 },\n },\n ],\n MXN: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 93, maxResponseTime: 1400, checkInterval: 6 },\n },\n ],\n ARS: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 90, maxResponseTime: 1600, checkInterval: 10 },\n },\n ],\n CLP: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 90, maxResponseTime: 1600, checkInterval: 10 },\n },\n ],\n COP: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 90, maxResponseTime: 1600, checkInterval: 10 },\n },\n ],\n PEN: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 90, maxResponseTime: 1600, checkInterval: 10 },\n },\n ],\n UYU: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 90, maxResponseTime: 1600, checkInterval: 10 },\n },\n ],\n VES: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 89, maxResponseTime: 1800, checkInterval: 10 },\n },\n ],\n BOB: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 89, maxResponseTime: 1800, checkInterval: 10 },\n },\n ],\n PYG: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 89, maxResponseTime: 1800, checkInterval: 10 },\n },\n ],\n CRC: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 90, maxResponseTime: 1600, checkInterval: 10 },\n },\n ],\n DOP: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 90, maxResponseTime: 1600, checkInterval: 10 },\n },\n ],\n JMD: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 90, maxResponseTime: 1600, checkInterval: 10 },\n },\n ],\n TTD: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 90, maxResponseTime: 1600, checkInterval: 10 },\n },\n ],\n\n // --- Middle East / Africa ---\n AED: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 95,\n trafficPercentage: 80,\n conditions: [],\n healthRequirements: { minSuccessRate: 97, maxResponseTime: 900, checkInterval: 3 },\n },\n ],\n SAR: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 95,\n trafficPercentage: 80,\n conditions: [],\n healthRequirements: { minSuccessRate: 97, maxResponseTime: 900, checkInterval: 3 },\n },\n ],\n QAR: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 95,\n trafficPercentage: 80,\n conditions: [],\n healthRequirements: { minSuccessRate: 97, maxResponseTime: 900, checkInterval: 3 },\n },\n ],\n KWD: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 95,\n trafficPercentage: 80,\n conditions: [],\n healthRequirements: { minSuccessRate: 97, maxResponseTime: 900, checkInterval: 3 },\n },\n ],\n BHD: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 95,\n trafficPercentage: 80,\n conditions: [],\n healthRequirements: { minSuccessRate: 97, maxResponseTime: 900, checkInterval: 3 },\n },\n ],\n OMR: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 95,\n trafficPercentage: 80,\n conditions: [],\n healthRequirements: { minSuccessRate: 97, maxResponseTime: 900, checkInterval: 3 },\n },\n ],\n JOD: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 95,\n trafficPercentage: 80,\n conditions: [],\n healthRequirements: { minSuccessRate: 97, maxResponseTime: 900, checkInterval: 3 },\n },\n ],\n ILS: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 95,\n trafficPercentage: 80,\n conditions: [],\n healthRequirements: { minSuccessRate: 97, maxResponseTime: 900, checkInterval: 3 },\n },\n ],\n TRY: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 90, maxResponseTime: 1500, checkInterval: 10 },\n },\n ],\n ZAR: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 90,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 94, maxResponseTime: 1300, checkInterval: 6 },\n },\n ],\n NGN: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 90,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 93, maxResponseTime: 1400, checkInterval: 6 },\n },\n ],\n EGP: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 90, maxResponseTime: 1600, checkInterval: 10 },\n },\n ],\n KES: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 90, maxResponseTime: 1600, checkInterval: 10 },\n },\n ],\n GHS: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 90, maxResponseTime: 1600, checkInterval: 10 },\n },\n ],\n MAD: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 91, maxResponseTime: 1400, checkInterval: 6 },\n },\n ],\n TND: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 91, maxResponseTime: 1400, checkInterval: 6 },\n },\n ],\n DZD: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 91, maxResponseTime: 1400, checkInterval: 6 },\n },\n ],\n\n // --- Crypto pseudo-currencies ---\n BTC: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 120,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 95, maxResponseTime: 1500, checkInterval: 10 },\n },\n ],\n ETH: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 120,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 95, maxResponseTime: 1500, checkInterval: 10 },\n },\n ],\n USDT: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 120,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 95, maxResponseTime: 1500, checkInterval: 10 },\n },\n ],\n USDC: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 120,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 95, maxResponseTime: 1500, checkInterval: 10 },\n },\n ],\n\n // --- Central America / Caribbean ---\n GTQ: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 90, maxResponseTime: 1600, checkInterval: 10 },\n },\n ],\n HNL: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 90, maxResponseTime: 1600, checkInterval: 10 },\n },\n ],\n NIO: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 90, maxResponseTime: 1600, checkInterval: 10 },\n },\n ],\n PAB: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 90,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 95, maxResponseTime: 1000, checkInterval: 5 },\n },\n ],\n BBD: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 91, maxResponseTime: 1400, checkInterval: 6 },\n },\n ],\n\n // --- Middle East (additional) ---\n IQD: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 90, maxResponseTime: 1500, checkInterval: 8 },\n },\n ],\n IRR: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 80,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 85, maxResponseTime: 1800, checkInterval: 10 },\n },\n ],\n LBP: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 80,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 85, maxResponseTime: 1800, checkInterval: 10 },\n },\n ],\n SYP: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 80,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 85, maxResponseTime: 1800, checkInterval: 10 },\n },\n ],\n\n // --- Africa (additional) ---\n ETB: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 90, maxResponseTime: 1500, checkInterval: 8 },\n },\n ],\n TZS: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 91, maxResponseTime: 1400, checkInterval: 6 },\n },\n ],\n UGX: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 91, maxResponseTime: 1400, checkInterval: 6 },\n },\n ],\n ZMW: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 91, maxResponseTime: 1400, checkInterval: 6 },\n },\n ],\n BWP: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 91, maxResponseTime: 1400, checkInterval: 6 },\n },\n ],\n MUR: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 91, maxResponseTime: 1400, checkInterval: 6 },\n },\n ],\n\n // --- Pacific / Oceania ---\n NZD: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 95,\n trafficPercentage: 80,\n conditions: [],\n healthRequirements: { minSuccessRate: 96, maxResponseTime: 1000, checkInterval: 4 },\n },\n ],\n FJD: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 92, maxResponseTime: 1400, checkInterval: 6 },\n },\n ],\n PGK: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 90, maxResponseTime: 1500, checkInterval: 8 },\n },\n ],\n\n // --- Former Soviet / Central Asia ---\n RUB: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 91, maxResponseTime: 1500, checkInterval: 8 },\n },\n ],\n UAH: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 91, maxResponseTime: 1500, checkInterval: 8 },\n },\n ],\n BYN: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 91, maxResponseTime: 1500, checkInterval: 8 },\n },\n ],\n KZT: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 91, maxResponseTime: 1500, checkInterval: 8 },\n },\n ],\n UZS: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 91, maxResponseTime: 1500, checkInterval: 8 },\n },\n ],\n AZN: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 91, maxResponseTime: 1500, checkInterval: 8 },\n },\n ],\n GEL: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 91, maxResponseTime: 1500, checkInterval: 8 },\n },\n ],\n AMD: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 85,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 91, maxResponseTime: 1500, checkInterval: 8 },\n },\n ],\n};\n","import { type CustomSelectionRule, PAYMENT_PROVIDER_TYPE } from '@plyaz/types';\n\nexport const CUSTOM_RULES: CustomSelectionRule[] = [\n {\n ruleId: 'crypto_onramp',\n name: 'Crypto: force Moonpay',\n description: 'If payment method is crypto-onramp, prefer Moonpay',\n conditions: {\n expression:\n \"['crypto_bitcoin','crypto_ethereum','crypto_polygon','crypto_native_token'].includes(paymentMethod)\",\n requiredContext: ['paymentMethod'],\n },\n providerSelection: {\n preferred: [PAYMENT_PROVIDER_TYPE.Moonpay],\n excluded: [PAYMENT_PROVIDER_TYPE.Stripe],\n weightAdjustments: {\n [PAYMENT_PROVIDER_TYPE.Stripe]: -20,\n [PAYMENT_PROVIDER_TYPE.Paypal]: 0,\n [PAYMENT_PROVIDER_TYPE.CheckoutCom]: 0,\n [PAYMENT_PROVIDER_TYPE.Adyen]: 0,\n [PAYMENT_PROVIDER_TYPE.Moonpay]: 20,\n [PAYMENT_PROVIDER_TYPE.CoinbaseCommerce]: 0,\n [PAYMENT_PROVIDER_TYPE.BlockchainBridge]: 0,\n [PAYMENT_PROVIDER_TYPE.Pix]: 0,\n [PAYMENT_PROVIDER_TYPE.Boleto]: 0,\n [PAYMENT_PROVIDER_TYPE.Sepa]: 0,\n [PAYMENT_PROVIDER_TYPE.Ideal]: 0,\n [PAYMENT_PROVIDER_TYPE.Sofort]: 0,\n [PAYMENT_PROVIDER_TYPE.Alipay]: 0,\n [PAYMENT_PROVIDER_TYPE.WechatPay]: 0,\n [PAYMENT_PROVIDER_TYPE.MockProvider]: 0,\n },\n },\n priority: 100,\n enabled: true,\n },\n];\n","import { PAYMENT_PROVIDER_TYPE, type ProviderPreference } from '@plyaz/types';\nimport { SUPPORTED_CURRENCIES } from '../../validators';\nimport { NUMERIX } from '../../../db';\nimport { CURRENCY_CODES } from '../../../locale';\n\n/**\n * Default provider preferences used for global or fallback routing.\n * Includes weight-based prioritization and health check parameters.\n */\nexport const DEFAULT_PROVIDERS: ProviderPreference[] = [\n {\n /** Primary high-performance global provider */\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 100,\n trafficPercentage: 40, // slightly adjusted for balance\n conditions: [],\n minAmount: { amount: 1, currency: CURRENCY_CODES.USD },\n maxAmount: { amount: 10000, currency: CURRENCY_CODES.USD },\n healthRequirements: {\n minSuccessRate: 98,\n maxResponseTime: 800,\n checkInterval: 2, // frequent health checks\n },\n },\n {\n /** Secondary fallback or region-optimized provider */\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 80,\n trafficPercentage: 60,\n conditions: [\n {\n type: 'currency',\n operator: 'in',\n value: SUPPORTED_CURRENCIES.slice(0, NUMERIX.FIFTY),\n required: false,\n },\n ],\n minAmount: { amount: 5, currency: CURRENCY_CODES.USD },\n maxAmount: { amount: 20000, currency: CURRENCY_CODES.USD },\n healthRequirements: {\n minSuccessRate: 95,\n maxResponseTime: 1500,\n checkInterval: 5,\n },\n },\n];\n","import { PAYMENT_METHOD, PAYMENT_PROVIDER_TYPE, type ProviderPreference } from '@plyaz/types';\n\nexport const MethodSpecificProviders: Record<PAYMENT_METHOD, ProviderPreference[]> = {\n // --- CARD PAYMENTS ---\n [PAYMENT_METHOD.CreditCard]: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 110,\n trafficPercentage: 70,\n conditions: [],\n healthRequirements: {\n minSuccessRate: 98,\n maxResponseTime: 600,\n checkInterval: 2,\n },\n },\n {\n provider: PAYMENT_PROVIDER_TYPE.Adyen,\n weight: 90,\n trafficPercentage: 20,\n conditions: [],\n healthRequirements: {\n minSuccessRate: 96,\n maxResponseTime: 800,\n checkInterval: 3,\n },\n },\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 40,\n trafficPercentage: 10,\n conditions: [],\n healthRequirements: {\n minSuccessRate: 94,\n maxResponseTime: 1200,\n checkInterval: 5,\n },\n },\n ],\n\n [PAYMENT_METHOD.DebitCard]: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 100,\n trafficPercentage: 60,\n conditions: [],\n healthRequirements: {\n minSuccessRate: 97,\n maxResponseTime: 700,\n checkInterval: 3,\n },\n },\n {\n provider: PAYMENT_PROVIDER_TYPE.CheckoutCom,\n weight: 90,\n trafficPercentage: 40,\n conditions: [],\n healthRequirements: {\n minSuccessRate: 95,\n maxResponseTime: 900,\n checkInterval: 4,\n },\n },\n ],\n\n [PAYMENT_METHOD.BankTransfer]: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Adyen,\n weight: 100,\n trafficPercentage: 70,\n conditions: [],\n healthRequirements: {\n minSuccessRate: 97,\n maxResponseTime: 900,\n checkInterval: 3,\n },\n },\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 80,\n trafficPercentage: 30,\n conditions: [],\n healthRequirements: {\n minSuccessRate: 96,\n maxResponseTime: 800,\n checkInterval: 3,\n },\n },\n ],\n\n [PAYMENT_METHOD.PaypalAccount]: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Paypal,\n weight: 150,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: {\n minSuccessRate: 99,\n maxResponseTime: 700,\n checkInterval: 2,\n },\n },\n ],\n\n // --- CRYPTO PAYMENTS ---\n [PAYMENT_METHOD.CryptoBitcoin]: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 120,\n trafficPercentage: 80,\n conditions: [],\n healthRequirements: {\n minSuccessRate: 95,\n maxResponseTime: 1500,\n checkInterval: 10,\n },\n },\n {\n provider: PAYMENT_PROVIDER_TYPE.CoinbaseCommerce,\n weight: 100,\n trafficPercentage: 20,\n conditions: [],\n healthRequirements: {\n minSuccessRate: 96,\n maxResponseTime: 1400,\n checkInterval: 8,\n },\n },\n ],\n\n [PAYMENT_METHOD.CryptoEthereum]: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 120,\n trafficPercentage: 80,\n conditions: [],\n healthRequirements: {\n minSuccessRate: 95,\n maxResponseTime: 1500,\n checkInterval: 10,\n },\n },\n {\n provider: PAYMENT_PROVIDER_TYPE.CoinbaseCommerce,\n weight: 100,\n trafficPercentage: 20,\n conditions: [],\n healthRequirements: {\n minSuccessRate: 96,\n maxResponseTime: 1400,\n checkInterval: 8,\n },\n },\n ],\n\n [PAYMENT_METHOD.CryptoPolygon]: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 110,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: {\n minSuccessRate: 94,\n maxResponseTime: 1500,\n checkInterval: 10,\n },\n },\n ],\n\n [PAYMENT_METHOD.CryptoOptimism]: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 110,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: {\n minSuccessRate: 94,\n maxResponseTime: 1500,\n checkInterval: 10,\n },\n },\n ],\n\n [PAYMENT_METHOD.CryptoUsdc]: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 120,\n trafficPercentage: 60,\n conditions: [],\n healthRequirements: {\n minSuccessRate: 96,\n maxResponseTime: 1300,\n checkInterval: 8,\n },\n },\n {\n provider: PAYMENT_PROVIDER_TYPE.CoinbaseCommerce,\n weight: 90,\n trafficPercentage: 40,\n conditions: [],\n healthRequirements: {\n minSuccessRate: 95,\n maxResponseTime: 1200,\n checkInterval: 8,\n },\n },\n ],\n\n [PAYMENT_METHOD.CryptoUsdt]: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 120,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: {\n minSuccessRate: 96,\n maxResponseTime: 1300,\n checkInterval: 8,\n },\n },\n ],\n\n [PAYMENT_METHOD.CryptoNativeToken]: [\n {\n provider: PAYMENT_PROVIDER_TYPE.BlockchainBridge,\n weight: 100,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: {\n minSuccessRate: 93,\n maxResponseTime: 1500,\n checkInterval: 10,\n },\n },\n ],\n\n // --- LOCAL / ALT PAYMENTS ---\n [PAYMENT_METHOD.PixInstant]: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Pix,\n weight: 130,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: {\n minSuccessRate: 98,\n maxResponseTime: 500,\n checkInterval: 2,\n },\n },\n ],\n\n [PAYMENT_METHOD.BoletoBancario]: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Boleto,\n weight: 120,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: {\n minSuccessRate: 97,\n maxResponseTime: 900,\n checkInterval: 3,\n },\n },\n ],\n\n [PAYMENT_METHOD.SepaDirectDebit]: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Sepa,\n weight: 120,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: {\n minSuccessRate: 97,\n maxResponseTime: 800,\n checkInterval: 3,\n },\n },\n ],\n\n [PAYMENT_METHOD.IdealBank]: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Ideal,\n weight: 120,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: {\n minSuccessRate: 97,\n maxResponseTime: 700,\n checkInterval: 3,\n },\n },\n ],\n\n [PAYMENT_METHOD.SofortBanking]: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Sofort,\n weight: 110,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: {\n minSuccessRate: 96,\n maxResponseTime: 800,\n checkInterval: 3,\n },\n },\n ],\n\n [PAYMENT_METHOD.AlipayDigital]: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Alipay,\n weight: 120,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: {\n minSuccessRate: 99,\n maxResponseTime: 600,\n checkInterval: 2,\n },\n },\n ],\n\n [PAYMENT_METHOD.WechatPayDigital]: [\n {\n provider: PAYMENT_PROVIDER_TYPE.WechatPay,\n weight: 120,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: {\n minSuccessRate: 99,\n maxResponseTime: 600,\n checkInterval: 2,\n },\n },\n ],\n\n // --- DIGITAL WALLETS ---\n [PAYMENT_METHOD.ApplePay]: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 110,\n trafficPercentage: 80,\n conditions: [],\n healthRequirements: {\n minSuccessRate: 98,\n maxResponseTime: 500,\n checkInterval: 2,\n },\n },\n {\n provider: PAYMENT_PROVIDER_TYPE.Adyen,\n weight: 100,\n trafficPercentage: 20,\n conditions: [],\n healthRequirements: {\n minSuccessRate: 97,\n maxResponseTime: 600,\n checkInterval: 2,\n },\n },\n ],\n\n [PAYMENT_METHOD.GooglePay]: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 110,\n trafficPercentage: 80,\n conditions: [],\n healthRequirements: {\n minSuccessRate: 98,\n maxResponseTime: 500,\n checkInterval: 2,\n },\n },\n {\n provider: PAYMENT_PROVIDER_TYPE.Adyen,\n weight: 100,\n trafficPercentage: 20,\n conditions: [],\n healthRequirements: {\n minSuccessRate: 97,\n maxResponseTime: 600,\n checkInterval: 2,\n },\n },\n ],\n\n [PAYMENT_METHOD.SamsungPay]: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 100,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: {\n minSuccessRate: 97,\n maxResponseTime: 600,\n checkInterval: 3,\n },\n },\n ],\n};\n","import { PAYMENT_PROVIDER_TYPE, type ProviderPreference } from '@plyaz/types';\n\nexport const regionSpecificProviders: Record<string, ProviderPreference[]> = {\n // United States\n US: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 100,\n trafficPercentage: 70,\n conditions: [],\n healthRequirements: { minSuccessRate: 99, maxResponseTime: 700, checkInterval: 2 },\n },\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 80,\n trafficPercentage: 30,\n conditions: [],\n healthRequirements: { minSuccessRate: 97, maxResponseTime: 800, checkInterval: 5 },\n },\n ],\n\n // European Union\n EU: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 100,\n trafficPercentage: 70,\n conditions: [],\n healthRequirements: { minSuccessRate: 98, maxResponseTime: 750, checkInterval: 5 },\n },\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 80,\n trafficPercentage: 30,\n conditions: [],\n healthRequirements: { minSuccessRate: 96, maxResponseTime: 800, checkInterval: 5 },\n },\n ],\n\n // Brazil\n BR: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Pix,\n weight: 100,\n trafficPercentage: 60,\n conditions: [],\n healthRequirements: { minSuccessRate: 98, maxResponseTime: 700, checkInterval: 2 },\n },\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 90,\n trafficPercentage: 25,\n conditions: [],\n healthRequirements: { minSuccessRate: 97, maxResponseTime: 800, checkInterval: 5 },\n },\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 80,\n trafficPercentage: 15,\n conditions: [],\n healthRequirements: { minSuccessRate: 96, maxResponseTime: 900, checkInterval: 5 },\n },\n ],\n\n // China\n CN: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Alipay,\n weight: 100,\n trafficPercentage: 70,\n conditions: [],\n healthRequirements: { minSuccessRate: 97, maxResponseTime: 800, checkInterval: 5 },\n },\n {\n provider: PAYMENT_PROVIDER_TYPE.WechatPay,\n weight: 90,\n trafficPercentage: 30,\n conditions: [],\n healthRequirements: { minSuccessRate: 96, maxResponseTime: 850, checkInterval: 5 },\n },\n ],\n\n // Canada\n CA: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 100,\n trafficPercentage: 70,\n conditions: [],\n healthRequirements: { minSuccessRate: 99, maxResponseTime: 700, checkInterval: 2 },\n },\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 80,\n trafficPercentage: 30,\n conditions: [],\n healthRequirements: { minSuccessRate: 97, maxResponseTime: 800, checkInterval: 5 },\n },\n ],\n\n // Australia\n AU: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 100,\n trafficPercentage: 70,\n conditions: [],\n healthRequirements: { minSuccessRate: 99, maxResponseTime: 700, checkInterval: 2 },\n },\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 80,\n trafficPercentage: 30,\n conditions: [],\n healthRequirements: { minSuccessRate: 97, maxResponseTime: 800, checkInterval: 5 },\n },\n ],\n\n // India\n IN: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 100,\n trafficPercentage: 70,\n conditions: [],\n healthRequirements: { minSuccessRate: 98, maxResponseTime: 750, checkInterval: 5 },\n },\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 80,\n trafficPercentage: 30,\n conditions: [],\n healthRequirements: { minSuccessRate: 96, maxResponseTime: 800, checkInterval: 5 },\n },\n ],\n\n // Japan\n JP: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 100,\n trafficPercentage: 70,\n conditions: [],\n healthRequirements: { minSuccessRate: 98, maxResponseTime: 750, checkInterval: 5 },\n },\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 80,\n trafficPercentage: 30,\n conditions: [],\n healthRequirements: { minSuccessRate: 96, maxResponseTime: 800, checkInterval: 5 },\n },\n ],\n\n // Korea\n KR: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 100,\n trafficPercentage: 70,\n conditions: [],\n healthRequirements: { minSuccessRate: 98, maxResponseTime: 750, checkInterval: 5 },\n },\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 80,\n trafficPercentage: 30,\n conditions: [],\n healthRequirements: { minSuccessRate: 96, maxResponseTime: 800, checkInterval: 5 },\n },\n ],\n\n // Mexico\n MX: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 100,\n trafficPercentage: 70,\n conditions: [],\n healthRequirements: { minSuccessRate: 98, maxResponseTime: 750, checkInterval: 5 },\n },\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 80,\n trafficPercentage: 30,\n conditions: [],\n healthRequirements: { minSuccessRate: 96, maxResponseTime: 800, checkInterval: 5 },\n },\n ],\n};\n","import { PAYMENT_PROVIDER_TYPE, type TimeBasedRule } from '@plyaz/types';\nimport { ALL_COUNTRY_TIMEZONES, DAYS_OF_WEEK, HOURS_OF_DAY } from '../../../time';\n\nexport const TIME_BASED_SELECTION: TimeBasedRule[] = [\n {\n name: 'Night / low-traffic cost save',\n timeConditions: {\n daysOfWeek: DAYS_OF_WEEK,\n hoursOfDay: HOURS_OF_DAY,\n timeZones: ALL_COUNTRY_TIMEZONES,\n },\n providerPreferences: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 100,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 93, maxResponseTime: 1600, checkInterval: 10 },\n },\n ],\n reason: 'lower fees observed during off-peak — route to cheaper provider',\n },\n];\n","import { PAYMENT_PROVIDER_TYPE, type ProviderPreference, USER_TYPE } from '@plyaz/types';\n\nexport const UserTypeSelection: Record<USER_TYPE, ProviderPreference[]> = {\n [USER_TYPE.Fan]: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 90,\n trafficPercentage: 80,\n conditions: [],\n healthRequirements: { minSuccessRate: 94, maxResponseTime: 1200, checkInterval: 5 },\n },\n ],\n [USER_TYPE.Athlete]: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 100,\n trafficPercentage: 90,\n conditions: [],\n healthRequirements: { minSuccessRate: 97, maxResponseTime: 800, checkInterval: 3 },\n },\n ],\n [USER_TYPE.Club]: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 110,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 99, maxResponseTime: 700, checkInterval: 2 },\n },\n ],\n [USER_TYPE.Agent]: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 90,\n trafficPercentage: 80,\n conditions: [],\n healthRequirements: { minSuccessRate: 93, maxResponseTime: 1300, checkInterval: 6 },\n },\n ],\n [USER_TYPE.Scout]: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Moonpay,\n weight: 90,\n trafficPercentage: 80,\n conditions: [],\n healthRequirements: { minSuccessRate: 93, maxResponseTime: 1300, checkInterval: 6 },\n },\n ],\n [USER_TYPE.Admin]: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 120,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 99, maxResponseTime: 600, checkInterval: 2 },\n },\n ],\n [USER_TYPE.System]: [\n {\n provider: PAYMENT_PROVIDER_TYPE.Stripe,\n weight: 120,\n trafficPercentage: 100,\n conditions: [],\n healthRequirements: { minSuccessRate: 99, maxResponseTime: 600, checkInterval: 2 },\n },\n ],\n};\n"]}
|