{"version":3,"sources":["../src/env.ts","../src/providers/alchemy.ts","../src/providers/oauth.ts","../src/providers/apiConfig.ts","../src/chains/contracts.ts","../src/chains/supportedChains.ts","../src/features.ts","../src/domains.ts","../src/locales.ts","../src/app.ts","../src/security/denylist.ts","../src/security.ts","../src/utils/string/constants.ts","../src/utils/collection/constants.ts","../src/utils/hash/constants.ts","../src/locale/iso.ts","../src/locale/formats.ts","../src/locale/phone.ts","../src/locale/address.ts","../src/locale/currencies.ts","../src/locale/countries.ts","../src/locale/languages.ts","../src/locale/timezone.ts","../src/locale/athlete_position.ts","../src/time/constants.ts","../src/math/constants.ts","../src/performance/index.ts","../src/network/constants.ts","../src/display/constants.ts","../src/db/constants.ts","../src/db/config.ts","../src/social.ts","../src/a11y/constants.ts","../src/errors/constants.ts","../src/logger/constants.ts","../src/api/encryption.ts","../src/api/environments.ts","../src/api/package/defaults.ts","../src/auth/constants.ts","../src/notifications/constants.ts","../src/payments/error-messages.ts","../src/payments/events.ts","../src/payments/gateway.ts","../src/payments/providers/stripe/constant.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/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","../src/storage/constants.ts","../src/storage/defaults.ts","../src/storage/validation.ts","../src/storage/mime-types.ts","../src/storage/categories.ts","../src/storage/chunked-upload.ts","../src/streaming/constants.ts","../src/aws/constants.ts","../src/campaign/constants.ts"],"names":["isServer","isDev","isProd","isTest","ALCHEMY_CONFIG","OAUTH_PROVIDER_CONFIGS","OAUTH_PROVIDERS","ENV_CONFIG","API_CONFIG","CONTRACTS","PROD_SUPPORTED_CHAINS","mainnet","STAGING_SUPPORTED_CHAINS","sepolia","DEV_SUPPORTED_CHAINS","FEATURES","DEFAULT_BACKEND_CONFIG","DEFAULT_FRONTEND_CONFIG","FILE_CHECK_INTERVAL_DEFAULT","FEATURE_FLAG_CACHE_TTL_DEFAULT","CACHE_CLEANUP_INTERVAL_DEFAULT","CACHE_MAX_SIZE_DEFAULT","CACHE_EVICTION_PERCENTAGE","FEATURE_FLAG_PROVIDERS","FEATURE_FLAG_FILE_FORMATS","FEATURE_FLAG_FILE_PATHS","FEATURE_FLAG_EVALUATION_REASONS","DOMAINS","DEFAULT_LOCALE","SUPPORTED_LOCALES","TIMEZONE","TIMEZONE_OFFSET","DEFAULT_COUNTRY","DEFAULT_CURRENCY","DEFAULT_LANGUAGE","LANDING_PAGE_APP","WEB_APP","SYSTEM_RESERVED","PLATFORM_RESERVED","INAPPROPRIATE_TERMS","SOCIAL_PLATFORMS","FINANCIAL_TERMS","SPORTS_RESERVED","CONTENT_DENYLIST","USERNAME_DENYLIST","CAMPAIGN_TITLE_DENYLIST","NICKNAME_DENYLIST","isContentDenylisted","__name","content","normalized","validateContentNotDenylisted","SECURITY","STRING_CONSTANTS","FORMAT_CONSTANTS","COLLECTION_CONSTANTS","FNV_CONSTANTS","HASH_SEED_CONSTANTS","HASH_DISTRIBUTION_CONSTANTS","SHA_CONSTANTS","MD5_CONSTANTS","HASH_ENCODING","HASH_ALGORITHMS","MURMUR_CONSTANTS","CRC_CONSTANTS","ISO_STANDARDS","LOCALE_FORMATS","DATE_FORMATS","TEXT_DIRECTION","PHONE_FORMATS","PHONE_PATTERNS","ADDRESS_FORMATS","ADDRESS_FIELDS","CURRENCY_CODES","CURRENCY_INFO","COUNTRY_CODES","COUNTRY_CODES_SCOPED","COUNTRY_NAMES","COUNTRY_CALLING_CODES","COUNTRY_REGIONS","COUNTRY_REGIONS_DETAILED","LOCALE_REGIONS","LOCALE_REGIONS_DETAILED","TIMEZONE_REGIONS","ATHLETE_POSITIONS","DAYS_IN_WEEK","EARLY_MORNING_HOURS","TIME_CONSTANTS","COUNTRY_TIMEZONES","ALL_COUNTRY_TIMEZONES","DAYS_OF_WEEK","_","i","HOURS_OF_DAY","NUMBER_SYSTEM","MATH_CONSTANTS","MULTIPLIERS","NUMERIC_CONSTANTS","PERFORMANCE_CONSTANTS","NETWORK_CONSTANTS","RTT_THRESHOLDS","SPEED_THRESHOLDS","NETWORK_SCORES","NETWORK_TIMEOUTS","CACHE_TTL","CACHE_STALE","DEDUPE_TIME","RETRY_ATTEMPTS","RETRY_DELAYS","RETRY_BACKOFF","BATCH_SIZES","PAGE_SIZES","DISPLAY_CONSTANTS","CHAR_CODES","NUMERIX","dynamicPoolDefaultConfig","SOCIAL_LINKS","PRODUCT_LINKS","BLOG","A11Y_CONSTANTS","ARIA_ROLES","ARIA_ATTRIBUTES","KEYBOARD_CODES","ANNOUNCEMENT_PRIORITY","FOCUS_TRAP","ERRORS_CODES","BASE_ERRORS_RESPONSE","DEFAULT_ERROR_EVENT_SCOPES","LOGGER_LEVELS","SENSITIVE_DATA","LOGGER_TRANSPORT_CONFIGURATION","API_ENCRYPTION_DEFAULTS","createDefaultEncryptionKey","key","options","createEncryptionConfig","PRODUCTION_CONFIG","STAGING_CONFIG","DEVELOPMENT_CONFIG","DEFAULT_API_CONFIG","DEFAULT_API_CLIENT_OPTIONS","SUPABASE_CONFIG","CLERK_PUBLISHABLE_KEY","SIZE_25_MB","SIZE_30_MB","DEFAULT_NOTIFICATION_CATEGORY","NOTIFICATION_CATEGORIES","RETRY_CONFIG","ATTACHMENT_CONFIG","CIRCUIT_BREAKER_CONFIG","QUEUE_CONFIG","RATE_LIMIT_CONFIG","TEMPLATE_CONFIG","SMS_CONFIG","NOTIFICATION_CONFIG","LOGGING_CONFIG","HEALTH_CHECK_CONFIG","NOTIFICATION_PACKAGE_CONFIG","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","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","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","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","SIZE_5_MB","SIZE_10_MB","SIZE_50_MB","SIZE_100_MB","SIZE_500_MB","SIZE_1_GB","FILE_VALIDATION_CONFIG","STORAGE_RETRY_CONFIG","RETRY_STRATEGY","PATH_GENERATION_CONFIG","PATH_GENERATION_STRATEGY","STORAGE_QUEUE_CONFIG","STORAGE_QUEUE_PRIORITY","ADAPTER_CONFIG","ADAPTER_HEALTH_STATUS","UPLOAD_CONFIG","FILE_ACCESS_LEVEL","DOWNLOAD_CONFIG","MEDIA_PROCESSING_CONFIG","VIRUS_SCAN_CONFIG","COMPLIANCE_CONFIG","STORAGE_TEMPLATE_CONFIG","SHARE_LINK_CONFIG","TTL_CONFIG","CORS_CONFIG","AUDIT_CONFIG","CDN_CONFIG","MONITORING_CONFIG","CLOUDFLARE_R2_CONFIG","SUPABASE_STORAGE_CONFIG","STORAGE_PACKAGE_CONFIG","DEFAULT_RETENTION_POLICY","STORAGE_JURISDICTION","STORAGE_REGULATORY_FRAMEWORK","DEFAULT_COMPLIANCE_CONFIG","PRESET_RETENTION_POLICIES","BUILT_IN_PRESETS","STORAGE_DEVICE_TYPE","FILE_CATEGORY","DEFAULT_VARIANTS_BY_CATEGORY","DEVICE_SPECIFIC_VARIANT_OVERRIDES","MINIMUM_VARIANTS_BY_CATEGORY","STANDARD_VARIANT_DEFINITIONS","STORAGE_VARIANT_NAME","STORAGE_FILE_SIZE_LIMITS","STORAGE_DEFAULT_VALIDATION_CONFIG","BUCKET_PURPOSE","getStorageValidationRulesForPurpose","purpose","config","validationConfig","purposeRules","defaultRules","STORAGE_OUTPUT_FORMAT_TO_EXTENSION","STORAGE_OUTPUT_FORMAT_TO_MIME_TYPE","getStorageExtensionForFormat","format","getStorageMimeTypeForFormat","getStorageFormatInfo","STORAGE_RETENTION_DAYS","STORAGE_TTL_CONSTANTS","STORAGE_CATEGORIES","STORAGE_VISIBILITY","STORAGE_CHUNK_MULTIPLIERS","STORAGE_CHUNK_SIZE","STORAGE_FILE_SIZE_THRESHOLDS","shouldUseStorageChunkedUpload","file","threshold","getStorageOptimalChunkSize","totalSize","STREAMING_SERVER_CONFIG","STREAMING_CLIENT_CONFIG","STREAMING_BUFFER_CONFIG","STREAMING_PACKAGE_CONFIG","STREAMING_DEFAULTS","AWS_DEFAULT_REGIONS","AWS_SERVICE_NAMES","AWS_SERVICE_HOSTS","AWS_CLOUDFRONT_CONFIG","AWS_S3_CONFIG","getAWSServiceEndpoint","service","region","CAMPAIGN_DURATION","VALID_DURATIONS","CAMPAIGN_FUNDING","RESERVED_TITLES"],"mappings":"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AA,CAAoB,CACxB,QACA,SAAA,CACA,MAAA,CACA,SAAA,CACA,MAAA,CACA,OAAA,CACA,OAAA,CACA,UACA,QAAA,CACA,OAAA,CACA,YACA,WAAA,CACA,OAAA,CACA,WACA,UAAA,CACA,MAAA,CACA,OAAA,CACA,WAAA,CACA,KAAA,CACA,OAAA,CACA,UACA,SAAA,CACA,SAAA,CACA,eACA,UAAA,CACA,QAAA,CACA,QACA,QAAA,CACA,UAAA,CAGA,WAAA,CACA,aAAA,CACA,cAAA,CACA,OAAA,CACA,UACA,eACF,CAAA,CAGMC,GAAsB,CAC1B,MAAA,CACA,YACA,MAAA,CACA,QAAA,CACA,SACA,SAAA,CACA,MAAA,CACA,SACA,SAAA,CACA,OAAA,CACA,UACA,MAAA,CACA,MAAA,CACA,QACA,MAAA,CACA,UAAA,CACA,KAAA,CACA,OAAA,CACA,MAAA,CACA,SAAA,CACA,OACA,QAAA,CACA,SAAA,CACA,OACA,WAAA,CACA,MAAA,CACA,QACA,MAAA,CACA,QAAA,CACA,SAAA,CAGA,QAAA,CACA,OAAA,CACA,MAAA,CACA,QACA,aAAA,CACA,OAAA,CACA,QACF,CAAA,CAGMC,EAAAA,CAAmB,CACvB,UAAA,CACA,SAAA,CACA,WAAA,CACA,QAAA,CACA,SAAA,CACA,UAAA,CACA,WACA,SAAA,CACA,UAAA,CACA,WACA,QAAA,CACA,WAAA,CACA,SACA,QAAA,CACA,QAAA,CAGA,IAAA,CACA,IAAA,CACA,IAAA,CACA,IACF,EAGMC,EAAAA,CAAkB,CACtB,OACA,SAAA,CACA,QAAA,CACA,QACA,MAAA,CACA,SAAA,CACA,QAAA,CACA,QAAA,CACA,MAAA,CACA,YAAA,CACA,OACA,SAAA,CACA,QAAA,CACA,SACA,aAAA,CACA,QAAA,CAGA,WACA,SAAA,CACA,SAAA,CACA,QAAA,CACA,YAAA,CACA,YACF,CAAA,CAGMC,GAAkB,CACtB,SAAA,CACA,QACA,SAAA,CACA,SAAA,CACA,QACA,SAAA,CACA,aAAA,CACA,MAAA,CACA,QAAA,CACA,YAAA,CACA,cAAA,CACA,S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IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,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,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CAGJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,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,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,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,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,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,KAGJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,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,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CAGJ,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,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,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,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,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,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,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,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,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,CAGJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,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AC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,OAAQ,CAAC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IAAI,EAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,OAAQ,CAAC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IAAI,EAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,OAAQ,CAAC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IAAI,EAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,OAAQ,CAAC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IAAI,EAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,OAAQ,CAAC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IAAI,EAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,OAAQ,CAAC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IAAI,EAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,OAAQ,CAAC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IA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","file":"index.mjs","sourcesContent":["export const isServer = typeof window === 'undefined';\nexport const isDev = globalThis.process?.env?.NODE_ENV === 'development';\nexport const isProd = globalThis.process?.env?.NODE_ENV === 'production';\nexport const isTest = globalThis.process?.env?.NODE_ENV === 'test';\n","/**\n * Alchemy blockchain provider configuration\n */\nexport const ALCHEMY_CONFIG = {\n  /**\n   * Alchemy API key from environment\n   */\n  apiKey: globalThis.process?.env?.NEXT_PUBLIC_ALCHEMY_KEY!,\n\n  /**\n   * RPC URLs for different blockchain networks\n   */\n  rpcUrls: {\n    /**\n     * Ethereum mainnet RPC URL\n     */\n    ethereum: `https://eth-mainnet.g.alchemy.com/v2/${globalThis.process?.env?.NEXT_PUBLIC_ALCHEMY_KEY}`,\n\n    /**\n     * Polygon mainnet RPC URL\n     */\n    polygon: `https://polygon-mainnet.g.alchemy.com/v2/${globalThis.process?.env?.NEXT_PUBLIC_ALCHEMY_KEY}`,\n\n    /**\n     * Arbitrum mainnet RPC URL\n     */\n    arbitrum: `https://arb-mainnet.g.alchemy.com/v2/${globalThis.process?.env?.NEXT_PUBLIC_ALCHEMY_KEY}`,\n\n    /**\n     * Optimism mainnet RPC URL\n     */\n    optimism: `https://opt-mainnet.g.alchemy.com/v2/${globalThis.process?.env?.NEXT_PUBLIC_ALCHEMY_KEY}`,\n\n    /**\n     * Base mainnet RPC URL\n     */\n    base: `https://base-mainnet.g.alchemy.com/v2/${globalThis.process?.env?.NEXT_PUBLIC_ALCHEMY_KEY}`,\n\n    /**\n     * Solana mainnet RPC URL\n     */\n    solana: `https://solana-mainnet.g.alchemy.com/v2/${globalThis.process?.env?.NEXT_PUBLIC_ALCHEMY_KEY}`,\n  },\n};\n","import type { OAuthProvider, OAuthProviderConfig } from '@plyaz/types';\nimport { OAUTH_PROVIDERS } from '@plyaz/types';\n\nexport const OAUTH_PROVIDER_CONFIGS: Record<OAuthProvider, OAuthProviderConfig> = {\n  [OAUTH_PROVIDERS.GOOGLE]: {\n    name: 'Google',\n    authUrl: 'https://accounts.google.com/o/oauth2/v2/auth',\n    tokenUrl: 'https://oauth2.googleapis.com/token',\n    userInfoUrl: 'https://www.googleapis.com/oauth2/v2/userinfo',\n    scopes: ['openid', 'email', 'profile'],\n    brandColor: '#4285f4',\n    iconName: 'google',\n  },\n\n  [OAUTH_PROVIDERS.FACEBOOK]: {\n    name: 'Facebook',\n    authUrl: 'https://www.facebook.com/v18.0/dialog/oauth',\n    tokenUrl: 'https://graph.facebook.com/v18.0/oauth/access_token',\n    userInfoUrl: 'https://graph.facebook.com/me',\n    scopes: ['email', 'public_profile'],\n    brandColor: '#1877f2',\n    iconName: 'facebook',\n  },\n\n  [OAUTH_PROVIDERS.APPLE]: {\n    name: 'Apple',\n    authUrl: 'https://appleid.apple.com/auth/authorize',\n    tokenUrl: 'https://appleid.apple.com/auth/token',\n    userInfoUrl: '', // Apple provides user info in ID token\n    scopes: ['name', 'email'],\n    brandColor: '#000000',\n    iconName: 'apple',\n  },\n\n  [OAUTH_PROVIDERS.GITHUB]: {\n    name: 'GitHub',\n    authUrl: 'https://github.com/login/oauth/authorize',\n    tokenUrl: 'https://github.com/login/oauth/access_token',\n    userInfoUrl: 'https://api.github.com/user',\n    scopes: ['user:email'],\n    brandColor: '#24292e',\n    iconName: 'github',\n  },\n\n  [OAUTH_PROVIDERS.TWITTER]: {\n    name: 'Twitter',\n    authUrl: 'https://twitter.com/i/oauth2/authorize',\n    tokenUrl: 'https://api.twitter.com/2/oauth2/token',\n    userInfoUrl: 'https://api.twitter.com/2/users/me',\n    scopes: ['tweet.read', 'users.read'],\n    brandColor: '#1da1f2',\n    iconName: 'twitter',\n  },\n\n  [OAUTH_PROVIDERS.LINKEDIN]: {\n    name: 'LinkedIn',\n    authUrl: 'https://www.linkedin.com/oauth/v2/authorization',\n    tokenUrl: 'https://www.linkedin.com/oauth/v2/accessToken',\n    userInfoUrl: 'https://api.linkedin.com/v2/people/~',\n    scopes: ['r_liteprofile', 'r_emailaddress'],\n    brandColor: '#0077b5',\n    iconName: 'linkedin',\n  },\n\n  [OAUTH_PROVIDERS.DISCORD]: {\n    name: 'Discord',\n    authUrl: 'https://discord.com/api/oauth2/authorize',\n    tokenUrl: 'https://discord.com/api/oauth2/token',\n    userInfoUrl: 'https://discord.com/api/users/@me',\n    scopes: ['identify', 'email'],\n    brandColor: '#5865f2',\n    iconName: 'discord',\n  },\n\n  [OAUTH_PROVIDERS.MICROSOFT]: {\n    name: 'Microsoft',\n    authUrl: 'https://login.microsoftonline.com/common/oauth2/v2.0/authorize',\n    tokenUrl: 'https://login.microsoftonline.com/common/oauth2/v2.0/token',\n    userInfoUrl: 'https://graph.microsoft.com/v1.0/me',\n    scopes: ['openid', 'profile', 'email'],\n    brandColor: '#00a4ef',\n    iconName: 'microsoft',\n  },\n};\n","/**\n * API Client Provider Configuration\n * Environment and API client configuration constants\n */\n\n/**\n * Environment configuration for API client\n */\nexport const ENV_CONFIG = {\n  /**\n   * Current Node.js environment (development, production, test)\n   */\n  env: globalThis.process?.env?.NODE_ENV as 'development' | 'production',\n\n  /**\n   * Public API key from environment variables\n   */\n  apiKey: globalThis.process?.env?.NEXT_PUBLIC_API_KEY,\n};\n\n/**\n * API client configuration with encryption settings\n */\nexport const API_CONFIG = {\n  /**\n   * Base URL for API requests\n   */\n  baseURL: globalThis.process?.env?.NEXT_PUBLIC_API_URL ?? '/api',\n\n  /**\n   * Encryption configuration for secure API communication\n   */\n  encryption: {\n    /**\n     * Whether encryption is enabled\n     */\n    enabled: true,\n\n    /**\n     * Encryption key configuration\n     */\n    key: {\n      /**\n       * Key identifier for production environment\n       */\n      id: 'prod-key-v1',\n\n      /**\n       * Encryption key from environment variables\n       */\n      key: globalThis.process?.env?.ENCRYPTION_KEY ?? '',\n\n      /**\n       * Encryption algorithm (AES-GCM)\n       */\n      algorithm: 'AES-GCM' as const,\n\n      /**\n       * Key format specification\n       */\n      format: 'raw' as const,\n    },\n  },\n};\n","/**\n * Smart contract addresses for different networks\n */\nexport const CONTRACTS = {\n  /**\n   * NFT Manager contract addresses\n   */\n  nftManager: {\n    /**\n     * Read-only contract addresses\n     */\n    read: {\n      /**\n       * Arbitrum network NFT Manager address\n       */\n      arbitrum: '',\n    },\n    /**\n     * Write-enabled contract addresses\n     */\n    write: {\n      /**\n       * Arbitrum network NFT Manager address\n       */\n      arbitrum: '',\n    },\n  },\n\n  /**\n   * Token Manager contract addresses\n   */\n  tokenManager: {\n    /**\n     * Read-only contract addresses\n     */\n    read: {\n      /**\n       * Arbitrum network Token Manager address\n       */\n      arbitrum: '',\n    },\n    /**\n     * Write-enabled contract addresses\n     */\n    write: {\n      /**\n       * Arbitrum network Token Manager address\n       */\n      arbitrum: '',\n    },\n  },\n} as const;\n","import { mainnet, sepolia } from 'viem/chains';\n\n/**\n * Blockchain chains supported in production environment\n */\nexport const PROD_SUPPORTED_CHAINS = {\n  /**\n   * Ethereum mainnet\n   */\n  ethereum: mainnet,\n} as const;\n\n/**\n * Blockchain chains supported in staging environment\n */\nexport const STAGING_SUPPORTED_CHAINS = {\n  /**\n   * Ethereum mainnet\n   */\n  ethereum: mainnet,\n  /**\n   * Sepolia testnet (Ethereum)\n   */\n  sepolia,\n} as const;\n\n/**\n * Blockchain chains supported in development environment\n */\nexport const DEV_SUPPORTED_CHAINS = {\n  /**\n   * Sepolia testnet (Ethereum)\n   */\n  sepolia,\n} as const;\n","/**\n * Feature Flag Constants\n *\n */\n\nimport { isDev } from './env';\n\n/**\n * Feature flags for authentication providers and other features\n */\nexport const FEATURES = {\n  /**\n   * Enable Google OAuth authentication\n   */\n  AUTH_GOOGLE: true,\n\n  /**\n   * Enable Discord OAuth authentication (dev only)\n   */\n  AUTH_DISCORD: isDev,\n\n  /**\n   * Enable Facebook OAuth authentication\n   */\n  AUTH_FACEBOOK: false,\n\n  /**\n   * Enable GitHub OAuth authentication\n   */\n  AUTH_GITHUB: true,\n} as const satisfies Record<string, boolean>;\n\n/**\n * Default backend configuration for feature flags.\n * Optimized for server-side usage with reasonable defaults.\n */\nexport const DEFAULT_BACKEND_CONFIG = {\n  provider: 'database',\n  isCacheEnabled: true,\n  cacheTtl: 300, // 5 minutes\n  refreshInterval: 60, // 1 minute auto-refresh\n  shouldFallbackToDefaults: true,\n  isLoggingEnabled: globalThis.process?.env?.NODE_ENV === 'development',\n} as const;\n\n/**\n * Default frontend configuration for feature flags.\n * Optimized for client-side usage with reasonable defaults.\n */\nexport const DEFAULT_FRONTEND_CONFIG = {\n  provider: 'memory',\n  isCacheEnabled: true,\n  cacheTtl: 300, // 5 minutes\n  refreshInterval: 0, // No auto-refresh for frontend\n  shouldFallbackToDefaults: true,\n  isLoggingEnabled: false, // Disabled in production\n} as const;\n\n/**\n * Default file check interval for file watcher debouncing (in milliseconds)\n * Prevents rapid reloads when files are saved multiple times quickly\n * @default 100\n */\nexport const FILE_CHECK_INTERVAL_DEFAULT = 100;\n\n/**\n * Default cache TTL for feature flags (in seconds)\n * @default 300 (5 minutes)\n */\nexport const FEATURE_FLAG_CACHE_TTL_DEFAULT = 300;\n\n/**\n * Default cleanup interval for memory cache (in milliseconds)\n * @default 60000 (1 minute)\n */\nexport const CACHE_CLEANUP_INTERVAL_DEFAULT = 60000;\n\n/**\n * Default maximum cache size for memory strategy\n * @default 1000\n */\nexport const CACHE_MAX_SIZE_DEFAULT = 1000;\n\n/**\n * Percentage of cache entries to evict when cache is full\n * @default 0.1 (10%)\n */\nexport const CACHE_EVICTION_PERCENTAGE = 0.1;\n\n/**\n * Feature flag provider types\n */\nexport const FEATURE_FLAG_PROVIDERS = {\n  MEMORY: 'memory',\n  FILE: 'file',\n  REDIS: 'redis',\n  API: 'api',\n  DATABASE: 'database',\n} as const;\n\n/**\n * Feature flag file formats\n */\nexport const FEATURE_FLAG_FILE_FORMATS = {\n  JSON: 'json',\n  YAML: 'yaml',\n} as const;\n\n/**\n * Default file paths for feature flag configuration\n */\nexport const FEATURE_FLAG_FILE_PATHS = {\n  DEFAULT: 'src/config/feature-provider.json',\n  JSON_EXAMPLE: 'src/config/feature-provider.json.example',\n  YAML_EXAMPLE: 'src/config/feature-provider.yaml.example',\n} as const;\n\n/**\n * Feature flag evaluation reasons\n */\nexport const FEATURE_FLAG_EVALUATION_REASONS = {\n  DEFAULT: 'default',\n  OVERRIDE: 'override',\n  RULE_MATCH: 'rule_match',\n  FLAG_DISABLED: 'flag_disabled',\n  ERROR: 'error',\n} as const;\n","/**\n * Domain and URL configuration\n */\nexport const DOMAINS = {\n  /**\n   * Main application URL\n   */\n  app: 'https://plyaz.co.uk',\n\n  /**\n   * API endpoint URL from environment\n   */\n  api: globalThis.process?.env?.NEXT_PUBLIC_API_URL ?? '',\n} as const;\n","/**\n * Default locale for the application (ISO 639-1 language code)\n */\nexport const DEFAULT_LOCALE = 'en';\n\n/**\n * List of supported locale codes for the application\n */\nexport const SUPPORTED_LOCALES = ['en', 'es', 'pt'] as const;\n\n/**\n * Default timezone for the application (IANA timezone identifier)\n */\nexport const TIMEZONE = 'America/Sao_Paulo';\n\n/**\n * Default timezone offset from UTC\n */\nexport const TIMEZONE_OFFSET = -3; // UTC-3 for Brasília Time (BRT)\n\n/**\n * Default country code (ISO 3166-1 alpha-2)\n */\nexport const DEFAULT_COUNTRY = 'BR';\n\n/**\n * Default currency code (ISO 4217)\n */\nexport const DEFAULT_CURRENCY = 'BRL';\n\n/**\n * Default language code (ISO 639-1)\n */\nexport const DEFAULT_LANGUAGE = 'en';\n\n/**\n * Type for supported locales\n */\nexport type SupportedLocale = (typeof SUPPORTED_LOCALES)[number];\n","import { DEFAULT_LOCALE, SUPPORTED_LOCALES } from './locales';\n\n/**\n * Landing page application configuration\n */\nexport const LANDING_PAGE_APP = {\n  /**\n   * Application name\n   */\n  NAME: 'Plyaz',\n\n  /**\n   * Application version\n   */\n  VERSION: '1.0.0',\n\n  /**\n   * Default locale for the application\n   */\n  DEFAULT_LOCALE,\n\n  /**\n   * List of supported locales\n   */\n  SUPPORTED_LOCALES,\n} as const;\n\n/**\n * Web application configuration\n */\nexport const WEB_APP = {\n  /**\n   * Application name\n   */\n  NAME: 'Plyaz The App',\n\n  /**\n   * Application version\n   */\n  VERSION: '1.0.0',\n\n  /**\n   * Default locale for the application\n   */\n  DEFAULT_LOCALE,\n\n  /**\n   * List of supported locales\n   */\n  SUPPORTED_LOCALES,\n} as const;\n","/**\n * Content Denylist Configuration\n *\n * Comprehensive denylist for usernames, titles, and other user-generated content.\n * Used across the application to prevent reserved/inappropriate names.\n */\n\n/** System reserved terms */\nconst SYSTEM_RESERVED = [\n  'admin',\n  'administrator',\n  'root',\n  'system',\n  'sys',\n  'daemon',\n  'api',\n  'app',\n  'application',\n  'service',\n  'server',\n  'host',\n  'www',\n  'web',\n  'website',\n  'site',\n  'domain',\n  'subdomain',\n  'mail',\n  'email',\n  'smtp',\n  'pop',\n  'imap',\n  'ftp',\n  'ssh',\n  'database',\n  'db',\n  'sql',\n  'mysql',\n  'postgres',\n  'redis',\n  'cache',\n  'cdn',\n  'static',\n  'assets',\n  'media',\n  'upload',\n  'download',\n  'file',\n  'files',\n  'backup',\n  'log',\n  'logs',\n  'config',\n  'configuration',\n  'settings',\n  'env',\n  'environment',\n\n  // attacker-favored system impersonation\n  'internal',\n  'private',\n  'public',\n  'health',\n  'status',\n  'metrics',\n  'cron',\n  'queue',\n  'worker',\n  'token',\n  'session',\n  'auth',\n  'oauth',\n] as const;\n\n/** Platform/Brand reserved terms */\nconst PLATFORM_RESERVED = [\n  'plyaz',\n  'support',\n  'help',\n  'contact',\n  'info',\n  'about',\n  'terms',\n  'privacy',\n  'policy',\n  'legal',\n  'copyright',\n  'trademark',\n  'brand',\n  'official',\n  'verified',\n  'team',\n  'staff',\n  'moderator',\n  'mod',\n  'owner',\n  'billing',\n  'payment',\n  'invoice',\n  'subscription',\n  'security',\n  'safety',\n  'abuse',\n  'report',\n  'feedback',\n\n  // impersonation & trust abuse\n  'adminteam',\n  'supportteam',\n  'officialteam',\n  'trust',\n  'trusted',\n  'verified-team',\n] as const;\n\n/** Common inappropriate/offensive terms */\nconst INAPPROPRIATE_TERMS = [\n  'null',\n  'undefined',\n  'void',\n  'delete',\n  'remove',\n  'destroy',\n  'hack',\n  'hacker',\n  'exploit',\n  'virus',\n  'malware',\n  'spam',\n  'fake',\n  'fraud',\n  'scam',\n  'phishing',\n  'bot',\n  'robot',\n  'test',\n  'testing',\n  'demo',\n  'sample',\n  'example',\n  'temp',\n  'anonymous',\n  'anon',\n  'guest',\n  'user',\n  'member',\n  'account',\n\n  // attacker / abuse patterns\n  'bypass',\n  'crack',\n  'leak',\n  'steal',\n  'impersonate',\n  'spoof',\n  'abuser',\n] as const;\n\n/** Social media platform names */\nconst SOCIAL_PLATFORMS = [\n  'facebook',\n  'twitter',\n  'instagram',\n  'tiktok',\n  'youtube',\n  'linkedin',\n  'snapchat',\n  'discord',\n  'telegram',\n  'whatsapp',\n  'reddit',\n  'pinterest',\n  'tumblr',\n  'twitch',\n  'github',\n\n  // short/alias abuse\n  'fb',\n  'ig',\n  'yt',\n  'gh',\n] as const;\n\n/** Payment/Financial terms */\nconst FINANCIAL_TERMS = [\n  'bank',\n  'banking',\n  'credit',\n  'debit',\n  'card',\n  'payment',\n  'paypal',\n  'stripe',\n  'visa',\n  'mastercard',\n  'amex',\n  'bitcoin',\n  'crypto',\n  'wallet',\n  'transaction',\n  'refund',\n\n  // scam-prone finance terms\n  'withdraw',\n  'deposit',\n  'balance',\n  'payout',\n  'settlement',\n  'chargeback',\n] as const;\n\n/** Sports/Athletic terms that might cause confusion */\nconst SPORTS_RESERVED = [\n  'athlete',\n  'coach',\n  'trainer',\n  'manager',\n  'agent',\n  'sponsor',\n  'sponsorship',\n  'team',\n  'league',\n  'tournament',\n  'championship',\n  'winner',\n  'champion',\n  'mvp',\n  'allstar',\n\n  // common impersonation / hype abuse\n  'official-team',\n  'verified-team',\n  'pro',\n  'professional',\n  'elite',\n] as const;\n\n/** Complete denylist combining all categories */\nexport const CONTENT_DENYLIST = [\n  ...SYSTEM_RESERVED,\n  ...PLATFORM_RESERVED,\n  ...INAPPROPRIATE_TERMS,\n  ...SOCIAL_PLATFORMS,\n  ...FINANCIAL_TERMS,\n  ...SPORTS_RESERVED,\n] as const;\n\n/** Specific denylists for different use cases */\nexport const USERNAME_DENYLIST = CONTENT_DENYLIST;\nexport const CAMPAIGN_TITLE_DENYLIST = CONTENT_DENYLIST;\nexport const NICKNAME_DENYLIST = CONTENT_DENYLIST;\n\n/** Helper function to check if a term is in the denylist */\nexport const isContentDenylisted = (content: string): boolean => {\n  const normalized = content.toLowerCase().trim();\n  return CONTENT_DENYLIST.includes(normalized as (typeof CONTENT_DENYLIST)[number]);\n};\n\n/** Helper function for case-insensitive denylist checking */\nexport const validateContentNotDenylisted = (content: string): boolean => {\n  return !isContentDenylisted(content);\n};\n","/**\n * Security and compliance configuration\n */\nexport const SECURITY = {\n  /**\n   * ISO country codes for blocked regions (sanctions/compliance)\n   * KP: North Korea, SY: Syria, IR: Iran, CU: Cuba, SD: Sudan, SO: Somalia\n   * UA-CR: Ukraine-Crimea, UA-DP: Ukraine-Donetsk, UA-LU: Ukraine-Luhansk\n   */\n  BLOCKED_REGIONS: ['KP', 'SY', 'IR', 'CU', 'SD', 'SO', 'UA-CR', 'UA-DP', 'UA-LU'],\n} as const;\n\n// Re-export denylist functionality\nexport * from './security/denylist';\n","/**\n * String Manipulation Constants\n *\n * Constants used for string generation, manipulation,\n * and UUID-related operations.\n *\n * @module utils/string/constants\n */\n\n/**\n * String generation and manipulation constants\n */\nexport const STRING_CONSTANTS = {\n  /**\n   * Starting position for random string extraction\n   */\n  RANDOM_STRING_START: 2,\n\n  /**\n   * Length of random string segment\n   */\n  RANDOM_STRING_LENGTH: 9,\n\n  /**\n   * Multiplier for UUID random value generation\n   */\n  UUID_RANDOM_MULTIPLIER: 16,\n\n  /**\n   * Hexadecimal mask for UUID generation\n   */\n  UUID_HEX_MASK: 0x3,\n\n  /**\n   * OR value for UUID hexadecimal operations\n   */\n  UUID_HEX_OR_VALUE: 0x8,\n} as const;\n\n/**\n * Formatting and serialization constants\n */\nexport const FORMAT_CONSTANTS = {\n  /**\n   * Default indentation for JSON stringification (spaces)\n   */\n  JSON_INDENT_SPACES: 2,\n\n  /**\n   * Default indentation for code formatting (spaces)\n   */\n  CODE_INDENT_SPACES: 2,\n\n  /**\n   * Tab size in spaces\n   */\n  TAB_SIZE: 4,\n\n  /**\n   * Maximum line length for code formatting\n   */\n  MAX_LINE_LENGTH: 80,\n\n  /**\n   * Maximum line length for prettier\n   */\n  PRETTIER_LINE_WIDTH: 100,\n\n  /**\n   * Default encoding for text files\n   */\n  DEFAULT_ENCODING: 'utf-8',\n\n  /**\n   * Line endings\n   */\n  LINE_ENDING_LF: '\\n',\n  LINE_ENDING_CRLF: '\\r\\n',\n\n  /**\n   * Common file extensions\n   */\n  EXTENSION_JSON: '.json',\n  EXTENSION_JS: '.js',\n  EXTENSION_TS: '.ts',\n  EXTENSION_TSX: '.tsx',\n  EXTENSION_JSX: '.jsx',\n  EXTENSION_CSS: '.css',\n  EXTENSION_SCSS: '.scss',\n  EXTENSION_MD: '.md',\n  EXTENSION_YML: '.yml',\n  EXTENSION_YAML: '.yaml',\n\n  /**\n   * Quote styles\n   */\n  SINGLE_QUOTE: \"'\",\n  DOUBLE_QUOTE: '\"',\n  BACKTICK: '`',\n\n  /**\n   * Common separators\n   */\n  COMMA: ',',\n  SEMICOLON: ';',\n  COLON: ':',\n  DOT: '.',\n  SLASH: '/',\n  BACKSLASH: '\\\\',\n  UNDERSCORE: '_',\n  HYPHEN: '-',\n  PIPE: '|',\n  SPACE: ' ',\n  EMPTY_STRING: '',\n\n  /**\n   * Whitespace characters\n   */\n  TAB: '\\t',\n  NEWLINE: '\\n',\n  CARRIAGE_RETURN: '\\r',\n  FORM_FEED: '\\f',\n  VERTICAL_TAB: '\\v',\n\n  /**\n   * Common brackets\n   */\n  OPEN_PAREN: '(',\n  CLOSE_PAREN: ')',\n  OPEN_BRACKET: '[',\n  CLOSE_BRACKET: ']',\n  OPEN_BRACE: '{',\n  CLOSE_BRACE: '}',\n  OPEN_ANGLE: '<',\n  CLOSE_ANGLE: '>',\n} as const;\n\n/**\n * Type for string constant values\n */\nexport type StringConstant = (typeof STRING_CONSTANTS)[keyof typeof STRING_CONSTANTS];\n\n/**\n * Type for format constant values\n */\nexport type FormatConstant = (typeof FORMAT_CONSTANTS)[keyof typeof FORMAT_CONSTANTS];\n","/**\n * Collection and Array Constants\n *\n * Constants for array operations, pagination,\n * and collection manipulation.\n *\n * @module utils/collection/constants\n */\n\n/**\n * Array and collection operation constants\n */\nexport const COLLECTION_CONSTANTS = {\n  /**\n   * Center point for array splitting (50%)\n   */\n  ARRAY_SPLIT_CENTER: 0.5,\n\n  /**\n   * Default page size for pagination\n   */\n  DEFAULT_PAGE_SIZE: 10,\n\n  /**\n   * Default maximum number of retries for operations\n   */\n  DEFAULT_MAX_RETRIES: 3,\n\n  /**\n   * Constant for three items (used in various contexts)\n   */\n  THREE_ITEMS: 3,\n} as const;\n\n/**\n * Type for collection constant values\n */\nexport type CollectionConstant = (typeof COLLECTION_CONSTANTS)[keyof typeof COLLECTION_CONSTANTS];\n","/**\n * Hash Algorithm Constants\n *\n * Constants used for various hash algorithms including FNV-1a,\n * SHA, and other cryptographic operations.\n *\n * @module utils/hash/constants\n */\n\n/**\n * FNV (Fowler-Noll-Vo) Hash Algorithm Constants\n *\n * FNV-1a is a non-cryptographic hash function created by Glenn Fowler,\n * Landon Curt Noll, and Kiem-Phong Vo. It's designed to be fast while\n * maintaining a low collision rate.\n */\nexport const FNV_CONSTANTS = {\n  /**\n   * FNV-1a 32-bit prime number\n   * Used as the multiplication factor in the hash algorithm\n   * Decimal: 16777619\n   */\n  FNV_32_PRIME: 0x01000193,\n\n  /**\n   * FNV-1a 32-bit offset basis\n   * Initial hash value for FNV-1a 32-bit\n   * Decimal: 2166136261\n   */\n  FNV_32_OFFSET: 0x811c9dc5,\n\n  /**\n   * FNV-1a 64-bit prime number (as BigInt)\n   * Used for 64-bit hash calculations\n   * Decimal: 1099511628211\n   */\n  FNV_64_PRIME: BigInt('0x100000001b3'),\n\n  /**\n   * FNV-1a 64-bit offset basis (as BigInt)\n   * Initial hash value for FNV-1a 64-bit\n   * Decimal: 14695981039346656037\n   */\n  FNV_64_OFFSET: BigInt('0xcbf29ce484222325'),\n\n  /**\n   * Mask for 32-bit operations\n   */\n  MASK_32: 0xffffffff,\n\n  /**\n   * Number of bits for 32-bit hash\n   */\n  BITS_32: 32,\n\n  /**\n   * Number of bits for 64-bit hash\n   */\n  BITS_64: 64,\n} as const;\n\n/**\n * Hash Seed Constants\n *\n * Constants for deterministic random seed generation\n */\nexport const HASH_SEED_CONSTANTS = {\n  /**\n   * Maximum safe seed value for 31-bit positive integer\n   * Used for compatibility with libraries expecting positive signed 32-bit integers\n   * Value: 2^31 - 1 = 2147483647\n   */\n  MAX_SAFE_SEED: 0x7fffffff,\n\n  /**\n   * Maximum 32-bit unsigned integer\n   * Value: 2^32 - 1 = 4294967295\n   */\n  MAX_UINT32: 0xffffffff,\n} as const;\n\n/**\n * Hash Distribution Constants\n *\n * Constants for hash distribution and bucketing\n */\nexport const HASH_DISTRIBUTION_CONSTANTS = {\n  /**\n   * Default number of buckets for hash distribution\n   */\n  DEFAULT_BUCKET_COUNT: 10,\n\n  /**\n   * Default total buckets for percentage-based distribution\n   * Same as MATH_CONSTANTS.PERCENTAGE_MAX for consistency\n   */\n  DEFAULT_PERCENTAGE_BUCKETS: 100,\n\n  /**\n   * Bit shift amount for simple hash algorithms\n   * Used in polynomial rolling hash\n   */\n  HASH_SHIFT: 5,\n} as const;\n\n/**\n * SHA (Secure Hash Algorithm) constants\n */\nexport const SHA_CONSTANTS = {\n  /**\n   * SHA-1 output length in bytes\n   */\n  SHA1_LENGTH: 20,\n\n  /**\n   * SHA-256 output length in bytes\n   */\n  SHA256_LENGTH: 32,\n\n  /**\n   * SHA-384 output length in bytes\n   */\n  SHA384_LENGTH: 48,\n\n  /**\n   * SHA-512 output length in bytes\n   */\n  SHA512_LENGTH: 64,\n\n  /**\n   * SHA block size in bytes\n   */\n  SHA_BLOCK_SIZE: 64,\n\n  /**\n   * SHA-512 block size in bytes\n   */\n  SHA512_BLOCK_SIZE: 128,\n} as const;\n\n/**\n * MD5 hash algorithm constants\n */\nexport const MD5_CONSTANTS = {\n  /**\n   * MD5 output length in bytes\n   */\n  MD5_LENGTH: 16,\n\n  /**\n   * MD5 block size in bytes\n   */\n  MD5_BLOCK_SIZE: 64,\n} as const;\n\n/**\n * Hash encoding formats\n */\nexport const HASH_ENCODING = {\n  /**\n   * Hexadecimal encoding\n   */\n  HEX: 'hex',\n\n  /**\n   * Base64 encoding\n   */\n  BASE64: 'base64',\n\n  /**\n   * Base64 URL-safe encoding\n   */\n  BASE64URL: 'base64url',\n\n  /**\n   * Binary encoding\n   */\n  BINARY: 'binary',\n\n  /**\n   * UTF-8 encoding\n   */\n  UTF8: 'utf8',\n} as const;\n\n/**\n * Hash algorithm names\n */\nexport const HASH_ALGORITHMS = {\n  /**\n   * MD5 algorithm (deprecated for security, use only for checksums)\n   */\n  MD5: 'md5',\n\n  /**\n   * SHA-1 algorithm (deprecated for security)\n   */\n  SHA1: 'sha1',\n\n  /**\n   * SHA-256 algorithm\n   */\n  SHA256: 'sha256',\n\n  /**\n   * SHA-384 algorithm\n   */\n  SHA384: 'sha384',\n\n  /**\n   * SHA-512 algorithm\n   */\n  SHA512: 'sha512',\n\n  /**\n   * SHA3-256 algorithm\n   */\n  SHA3_256: 'sha3-256',\n\n  /**\n   * SHA3-384 algorithm\n   */\n  SHA3_384: 'sha3-384',\n\n  /**\n   * SHA3-512 algorithm\n   */\n  SHA3_512: 'sha3-512',\n\n  /**\n   * BLAKE2b algorithm\n   */\n  BLAKE2B: 'blake2b',\n\n  /**\n   * BLAKE2s algorithm\n   */\n  BLAKE2S: 'blake2s',\n\n  /**\n   * FNV-1a 32-bit algorithm\n   */\n  FNV1A_32: 'fnv1a-32',\n\n  /**\n   * FNV-1a 64-bit algorithm\n   */\n  FNV1A_64: 'fnv1a-64',\n} as const;\n\n/**\n * Murmur hash constants\n */\nexport const MURMUR_CONSTANTS = {\n  /**\n   * MurmurHash3 32-bit seed\n   */\n  MURMUR3_32_SEED: 0,\n\n  /**\n   * MurmurHash3 32-bit c1 constant\n   */\n  MURMUR3_32_C1: 0xcc9e2d51,\n\n  /**\n   * MurmurHash3 32-bit c2 constant\n   */\n  MURMUR3_32_C2: 0x1b873593,\n\n  /**\n   * MurmurHash3 32-bit r1 rotation\n   */\n  MURMUR3_32_R1: 15,\n\n  /**\n   * MurmurHash3 32-bit r2 rotation\n   */\n  MURMUR3_32_R2: 13,\n\n  /**\n   * MurmurHash3 32-bit m constant\n   */\n  MURMUR3_32_M: 5,\n\n  /**\n   * MurmurHash3 32-bit n constant\n   */\n  MURMUR3_32_N: 0xe6546b64,\n} as const;\n\n/**\n * CRC (Cyclic Redundancy Check) constants\n */\nexport const CRC_CONSTANTS = {\n  /**\n   * CRC-32 polynomial\n   */\n  CRC32_POLYNOMIAL: 0xedb88320,\n\n  /**\n   * CRC-32 initial value\n   */\n  CRC32_INITIAL: 0xffffffff,\n\n  /**\n   * CRC-32 XOR output\n   */\n  CRC32_XOR_OUTPUT: 0xffffffff,\n\n  /**\n   * CRC-16 polynomial\n   */\n  CRC16_POLYNOMIAL: 0xa001,\n\n  /**\n   * CRC-16 initial value\n   */\n  CRC16_INITIAL: 0x0000,\n} as const;\n\n/**\n * Type exports\n */\nexport type FnvConstant = (typeof FNV_CONSTANTS)[keyof typeof FNV_CONSTANTS];\nexport type HashSeedConstant = (typeof HASH_SEED_CONSTANTS)[keyof typeof HASH_SEED_CONSTANTS];\nexport type HashDistributionConstant =\n  (typeof HASH_DISTRIBUTION_CONSTANTS)[keyof typeof HASH_DISTRIBUTION_CONSTANTS];\nexport type SHAConstant = (typeof SHA_CONSTANTS)[keyof typeof SHA_CONSTANTS];\nexport type MD5Constant = (typeof MD5_CONSTANTS)[keyof typeof MD5_CONSTANTS];\nexport type HashEncoding = (typeof HASH_ENCODING)[keyof typeof HASH_ENCODING];\nexport type HashAlgorithm = (typeof HASH_ALGORITHMS)[keyof typeof HASH_ALGORITHMS];\nexport type MurmurConstant = (typeof MURMUR_CONSTANTS)[keyof typeof MURMUR_CONSTANTS];\nexport type CRCConstant = (typeof CRC_CONSTANTS)[keyof typeof CRC_CONSTANTS];\n","/**\n * ISO Standards Constants\n *\n * International Organization for Standardization (ISO) code lengths\n * and standards used for country codes, language codes, currencies, etc.\n *\n * @module locale/iso\n */\n\n/**\n * ISO code length standards\n */\nexport const ISO_STANDARDS = {\n  /**\n   * ISO 3166-1 alpha-2 country code length (e.g., \"US\", \"GB\", \"FR\")\n   */\n  ISO_COUNTRY_CODE_LENGTH: 2,\n\n  /**\n   * ISO 3166-1 alpha-3 country code length (e.g., \"USA\", \"GBR\", \"FRA\")\n   */\n  ISO_COUNTRY_CODE_ALPHA3_LENGTH: 3,\n\n  /**\n   * ISO 639-1 language code length (e.g., \"en\", \"fr\", \"es\")\n   */\n  ISO_LANGUAGE_CODE_LENGTH: 2,\n\n  /**\n   * ISO 639-2 language code length (e.g., \"eng\", \"fra\", \"spa\")\n   */\n  ISO_LANGUAGE_CODE_ALPHA3_LENGTH: 3,\n\n  /**\n   * ISO 4217 currency code length (e.g., \"USD\", \"EUR\", \"GBP\")\n   */\n  ISO_CURRENCY_CODE_LENGTH: 3,\n\n  /**\n   * ISO 8601 date format length (YYYY-MM-DD)\n   */\n  ISO_DATE_LENGTH: 10,\n\n  /**\n   * ISO 8601 datetime format length (YYYY-MM-DDTHH:mm:ss.sssZ)\n   */\n  ISO_DATETIME_LENGTH: 24,\n\n  /**\n   * ISO 8601 time format length (HH:mm:ss)\n   */\n  ISO_TIME_LENGTH: 8,\n\n  /**\n   * ISO week date format length (YYYY-Www)\n   */\n  ISO_WEEK_DATE_LENGTH: 8,\n\n  /**\n   * BCP 47 language tag minimum length (e.g., \"en\")\n   */\n  BCP47_MIN_LENGTH: 2,\n\n  /**\n   * BCP 47 language tag with region (e.g., \"en-US\")\n   */\n  BCP47_WITH_REGION_LENGTH: 5,\n\n  /**\n   * RFC 5646 maximum language tag length\n   */\n  RFC5646_MAX_LENGTH: 35,\n\n  /**\n   * ISO 3166-1 numeric country code length\n   */\n  ISO_NUMERIC_COUNTRY_CODE_LENGTH: 3,\n\n  /**\n   * ISO 639-3 language code length\n   */\n  ISO_639_3_LENGTH: 3,\n} as const;\n\n/**\n * Type for ISO standard values\n */\nexport type IsoStandard = (typeof ISO_STANDARDS)[keyof typeof ISO_STANDARDS];\n","/**\n * Locale and Date Formatting Constants\n *\n * Constants for formatting dates, numbers, and locale-specific values.\n *\n * @module locale/formats\n */\n\n/**\n * Number and currency formatting constants\n */\nexport const LOCALE_FORMATS = {\n  /**\n   * Locale separator character\n   */\n  LOCALE_SEPARATOR: '-',\n\n  /**\n   * BCP 47 separator character\n   */\n  BCP47_SEPARATOR: '-',\n\n  /**\n   * Currency decimal places\n   */\n  CURRENCY_DECIMALS: 2,\n\n  /**\n   * Currency symbol placement (before/after)\n   */\n  CURRENCY_SYMBOL_BEFORE: true,\n\n  /**\n   * Thousands separator\n   */\n  THOUSANDS_SEPARATOR: ',',\n\n  /**\n   * Decimal separator\n   */\n  DECIMAL_SEPARATOR: '.',\n\n  /**\n   * Maximum locale string length\n   */\n  MAX_LOCALE_LENGTH: 35,\n\n  /**\n   * Minimum locale string length\n   */\n  MIN_LOCALE_LENGTH: 2,\n\n  /**\n   * Percentage decimal places\n   */\n  PERCENTAGE_DECIMALS: 2,\n\n  /**\n   * Default number of fraction digits\n   */\n  DEFAULT_FRACTION_DIGITS: 2,\n\n  /**\n   * Maximum fraction digits\n   */\n  MAX_FRACTION_DIGITS: 20,\n} as const;\n\n/**\n * Date and time formatting patterns\n */\nexport const DATE_FORMATS = {\n  /**\n   * ISO 8601 date format\n   */\n  ISO_DATE: 'YYYY-MM-DD',\n\n  /**\n   * ISO 8601 datetime format\n   */\n  ISO_DATETIME: 'YYYY-MM-DDTHH:mm:ss.sssZ',\n\n  /**\n   * ISO 8601 time format\n   */\n  ISO_TIME: 'HH:mm:ss',\n\n  /**\n   * US date format\n   */\n  US_DATE: 'MM/DD/YYYY',\n\n  /**\n   * European date format\n   */\n  EU_DATE: 'DD/MM/YYYY',\n\n  /**\n   * UK date format\n   */\n  UK_DATE: 'DD/MM/YYYY',\n\n  /**\n   * Japanese date format\n   */\n  JP_DATE: 'YYYY/MM/DD',\n\n  /**\n   * Short date format\n   */\n  SHORT_DATE: 'MMM DD',\n\n  /**\n   * Long date format\n   */\n  LONG_DATE: 'MMMM DD, YYYY',\n\n  /**\n   * Full date format\n   */\n  FULL_DATE: 'dddd, MMMM DD, YYYY',\n\n  /**\n   * Time format 12-hour\n   */\n  TIME_12H: 'hh:mm A',\n\n  /**\n   * Time format 24-hour\n   */\n  TIME_24H: 'HH:mm',\n\n  /**\n   * Time with seconds 12-hour\n   */\n  TIME_12H_SECONDS: 'hh:mm:ss A',\n\n  /**\n   * Time with seconds 24-hour\n   */\n  TIME_24H_SECONDS: 'HH:mm:ss',\n\n  /**\n   * Relative time threshold in seconds\n   */\n  RELATIVE_TIME_THRESHOLD: 86400,\n\n  /**\n   * Month/Year format\n   */\n  MONTH_YEAR: 'MMMM YYYY',\n\n  /**\n   * Short month/Year format\n   */\n  SHORT_MONTH_YEAR: 'MMM YYYY',\n\n  /**\n   * Year only format\n   */\n  YEAR_ONLY: 'YYYY',\n} as const;\n\n/**\n * Text direction constants\n */\nexport const TEXT_DIRECTION = {\n  /**\n   * Left-to-right\n   */\n  LTR: 'ltr',\n\n  /**\n   * Right-to-left\n   */\n  RTL: 'rtl',\n\n  /**\n   * Auto-detect\n   */\n  AUTO: 'auto',\n} as const;\n\n/**\n * Type exports\n */\nexport type LocaleFormat = (typeof LOCALE_FORMATS)[keyof typeof LOCALE_FORMATS];\nexport type DateFormat = (typeof DATE_FORMATS)[keyof typeof DATE_FORMATS];\nexport type TextDirectionValue = (typeof TEXT_DIRECTION)[keyof typeof TEXT_DIRECTION];\n","/**\n * Phone Number Formatting Constants\n *\n * Constants for phone number validation and formatting across different countries.\n *\n * @module locale/phone\n */\n\n/**\n * Phone number formats and validation\n */\nexport const PHONE_FORMATS = {\n  /**\n   * International prefix\n   */\n  INTERNATIONAL_PREFIX: '+',\n\n  /**\n   * International direct dialing prefix\n   */\n  IDD_PREFIX: '00',\n\n  /**\n   * US country code\n   */\n  US_COUNTRY_CODE: '1',\n\n  /**\n   * UK country code\n   */\n  UK_COUNTRY_CODE: '44',\n\n  /**\n   * Germany country code\n   */\n  DE_COUNTRY_CODE: '49',\n\n  /**\n   * France country code\n   */\n  FR_COUNTRY_CODE: '33',\n\n  /**\n   * Japan country code\n   */\n  JP_COUNTRY_CODE: '81',\n\n  /**\n   * China country code\n   */\n  CN_COUNTRY_CODE: '86',\n\n  /**\n   * India country code\n   */\n  IN_COUNTRY_CODE: '91',\n\n  /**\n   * Brazil country code\n   */\n  BR_COUNTRY_CODE: '55',\n\n  /**\n   * US phone number length (without country code)\n   */\n  US_PHONE_LENGTH: 10,\n\n  /**\n   * UK phone number length (without country code)\n   */\n  UK_PHONE_LENGTH: 10,\n\n  /**\n   * International phone minimum length\n   */\n  MIN_PHONE_LENGTH: 7,\n\n  /**\n   * International phone maximum length\n   */\n  MAX_PHONE_LENGTH: 15,\n\n  /**\n   * E.164 format maximum length (with +)\n   */\n  E164_MAX_LENGTH: 16,\n\n  /**\n   * E.164 format minimum length (with +)\n   */\n  E164_MIN_LENGTH: 8,\n\n  /**\n   * Area code length (US)\n   */\n  US_AREA_CODE_LENGTH: 3,\n\n  /**\n   * Exchange code length (US)\n   */\n  US_EXCHANGE_CODE_LENGTH: 3,\n\n  /**\n   * Line number length (US)\n   */\n  US_LINE_NUMBER_LENGTH: 4,\n\n  /**\n   * Extension maximum length\n   */\n  MAX_EXTENSION_LENGTH: 6,\n\n  /**\n   * Country code maximum length\n   */\n  MAX_COUNTRY_CODE_LENGTH: 3,\n\n  /**\n   * National number maximum length\n   */\n  MAX_NATIONAL_NUMBER_LENGTH: 15,\n} as const;\n\n/**\n * Phone number format patterns\n */\nexport const PHONE_PATTERNS = {\n  /**\n   * US phone format pattern\n   */\n  US_FORMAT: '(XXX) XXX-XXXX',\n\n  /**\n   * UK phone format pattern\n   */\n  UK_FORMAT: 'XXXX XXX XXXX',\n\n  /**\n   * International format pattern\n   */\n  INTERNATIONAL_FORMAT: '+X XXX XXX XXXX',\n\n  /**\n   * E.164 format pattern\n   */\n  E164_FORMAT: '+XXXXXXXXXXXX',\n\n  /**\n   * Extension format\n   */\n  EXTENSION_FORMAT: 'ext. XXXX',\n} as const;\n\n/**\n * Type exports\n */\nexport type PhoneFormat = (typeof PHONE_FORMATS)[keyof typeof PHONE_FORMATS];\nexport type PhonePattern = (typeof PHONE_PATTERNS)[keyof typeof PHONE_PATTERNS];\n","/**\n * Address Formatting Constants\n *\n * Constants for address validation and formatting across different countries.\n *\n * @module locale/address\n */\n\n/**\n * Address formatting and validation constants\n */\nexport const ADDRESS_FORMATS = {\n  /**\n   * US ZIP code length\n   */\n  US_ZIP_LENGTH: 5,\n\n  /**\n   * US ZIP+4 code length\n   */\n  US_ZIP_PLUS4_LENGTH: 9,\n\n  /**\n   * US ZIP+4 separator\n   */\n  US_ZIP_SEPARATOR: '-',\n\n  /**\n   * Canadian postal code length\n   */\n  CA_POSTAL_CODE_LENGTH: 6,\n\n  /**\n   * UK postcode minimum length\n   */\n  UK_POSTCODE_MIN_LENGTH: 5,\n\n  /**\n   * UK postcode maximum length\n   */\n  UK_POSTCODE_MAX_LENGTH: 8,\n\n  /**\n   * German postal code length\n   */\n  DE_POSTAL_CODE_LENGTH: 5,\n\n  /**\n   * French postal code length\n   */\n  FR_POSTAL_CODE_LENGTH: 5,\n\n  /**\n   * Japanese postal code length\n   */\n  JP_POSTAL_CODE_LENGTH: 7,\n\n  /**\n   * Australian postal code length\n   */\n  AU_POSTAL_CODE_LENGTH: 4,\n\n  /**\n   * Brazilian CEP code length\n   */\n  BR_CEP_LENGTH: 8,\n\n  /**\n   * State/Province code length\n   */\n  STATE_CODE_LENGTH: 2,\n\n  /**\n   * State/Province full name maximum length\n   */\n  STATE_NAME_MAX_LENGTH: 50,\n\n  /**\n   * Maximum address line length\n   */\n  MAX_ADDRESS_LINE_LENGTH: 100,\n\n  /**\n   * Minimum address line length\n   */\n  MIN_ADDRESS_LINE_LENGTH: 3,\n\n  /**\n   * Maximum city name length\n   */\n  MAX_CITY_LENGTH: 50,\n\n  /**\n   * Minimum city name length\n   */\n  MIN_CITY_LENGTH: 2,\n\n  /**\n   * Maximum country name length\n   */\n  MAX_COUNTRY_LENGTH: 56,\n\n  /**\n   * Maximum building number length\n   */\n  MAX_BUILDING_NUMBER_LENGTH: 10,\n\n  /**\n   * Maximum apartment/suite number length\n   */\n  MAX_UNIT_NUMBER_LENGTH: 10,\n\n  /**\n   * PO Box number maximum length\n   */\n  MAX_PO_BOX_LENGTH: 10,\n\n  /**\n   * Maximum number of address lines\n   */\n  MAX_ADDRESS_LINES: 3,\n} as const;\n\n/**\n * Address field types\n */\nexport const ADDRESS_FIELDS = {\n  /**\n   * Street address line 1\n   */\n  ADDRESS_LINE_1: 'addressLine1',\n\n  /**\n   * Street address line 2\n   */\n  ADDRESS_LINE_2: 'addressLine2',\n\n  /**\n   * City or locality\n   */\n  CITY: 'city',\n\n  /**\n   * State or province\n   */\n  STATE: 'state',\n\n  /**\n   * Postal or ZIP code\n   */\n  POSTAL_CODE: 'postalCode',\n\n  /**\n   * Country\n   */\n  COUNTRY: 'country',\n\n  /**\n   * Building number\n   */\n  BUILDING_NUMBER: 'buildingNumber',\n\n  /**\n   * Unit/Apartment number\n   */\n  UNIT_NUMBER: 'unitNumber',\n\n  /**\n   * PO Box\n   */\n  PO_BOX: 'poBox',\n\n  /**\n   * District or neighborhood\n   */\n  DISTRICT: 'district',\n\n  /**\n   * County\n   */\n  COUNTY: 'county',\n} as const;\n\n/**\n * Type exports\n */\nexport type AddressFormat = (typeof ADDRESS_FORMATS)[keyof typeof ADDRESS_FORMATS];\nexport type AddressField = (typeof ADDRESS_FIELDS)[keyof typeof ADDRESS_FIELDS];\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 * Common Locale Constants\n *\n * BCP 47 language tags for common locales worldwide.\n *\n * @module locale/locales\n */\n\n/**\n * Locale regions\n */\nexport const LOCALE_REGIONS = {\n  AMERICAS: ['en-US', 'es-MX', 'pt-BR', 'en-CA', 'fr-CA'],\n  EUROPE: ['en-GB', 'de-DE', 'fr-FR', 'it-IT', 'es-ES', 'nl-NL'],\n  ASIA_PACIFIC: ['zh-CN', 'ja-JP', 'ko-KR', 'hi-IN', 'en-AU'],\n  MIDDLE_EAST_AFRICA: ['ar-SA', 'he-IL', 'tr-TR', 'en-ZA'],\n} as const;\n\n/**\n * Locale to region mapping\n */\nexport const LOCALE_REGIONS_DETAILED: Record<string, { region: string; country?: string }> = {\n  // EU locales\n  de: { region: 'eu', country: 'DE' },\n  'de-de': { region: 'eu', country: 'DE' },\n  'de-at': { region: 'eu', country: 'AT' },\n  'de-ch': { region: 'eu', country: 'CH' },\n  'it-ch': { region: 'eu', country: 'CH' },\n  'fr-ch': { region: 'eu', country: 'CH' },\n  fr: { region: 'eu', country: 'FR' },\n  'fr-fr': { region: 'eu', country: 'FR' },\n  'fr-be': { region: 'eu', country: 'BE' },\n  es: { region: 'eu', country: 'ES' },\n  'es-es': { region: 'eu', country: 'ES' },\n  it: { region: 'eu', country: 'IT' },\n  'it-it': { region: 'eu', country: 'IT' },\n  nl: { region: 'eu', country: 'NL' },\n  'nl-nl': { region: 'eu', country: 'NL' },\n  'nl-be': { region: 'eu', country: 'BE' },\n  pl: { region: 'eu', country: 'PL' },\n  'pl-pl': { region: 'eu', country: 'PL' },\n  pt: { region: 'eu', country: 'PT' },\n  'pt-pt': { region: 'eu', country: 'PT' },\n  sv: { region: 'eu', country: 'SE' },\n  'sv-se': { region: 'eu', country: 'SE' },\n  'sv-fi': { region: 'eu', country: 'FI' },\n  da: { region: 'eu', country: 'DK' },\n  'da-dk': { region: 'eu', country: 'DK' },\n  fi: { region: 'eu', country: 'FI' },\n  'fi-fi': { region: 'eu', country: 'FI' },\n  'en-gb': { region: 'eu', country: 'GB' },\n  'en-ie': { region: 'eu', country: 'IE' },\n\n  // US locales\n  'en-us': { region: 'us', country: 'US' },\n  en: { region: 'global', country: undefined }, // Default English to global (no specific country)\n\n  // China locales\n  zh: { region: 'cn', country: 'CN' },\n  'zh-cn': { region: 'cn', country: 'CN' },\n  'zh-hans': { region: 'cn', country: 'CN' },\n  'zh-hk': { region: 'cn', country: 'HK' },\n  'zh-tw': { region: 'global', country: 'TW' }, // Taiwan as global\n\n  // Japan locales\n  ja: { region: 'jp', country: 'JP' },\n  'ja-jp': { region: 'jp', country: 'JP' },\n\n  // Other locales\n  'en-ca': { region: 'ca', country: 'CA' },\n  'fr-ca': { region: 'ca', country: 'CA' },\n  'en-au': { region: 'global', country: 'AU' },\n  'en-nz': { region: 'global', country: 'NZ' },\n  ko: { region: 'global', country: 'KR' },\n  'ko-kr': { region: 'global', country: 'KR' },\n\n  // Latin America locales\n  'pt-br': { region: 'global', country: 'BR' },\n  'es-mx': { region: 'global', country: 'MX' },\n  'es-ar': { region: 'global', country: 'AR' },\n  'es-cl': { region: 'global', country: 'CL' },\n  'es-co': { region: 'global', country: 'CO' },\n  'es-pe': { region: 'global', country: 'PE' },\n  'es-VE': { region: 'global', country: 'VE' },\n  'es-EC': { region: 'global', country: 'EC' },\n  'es-UY': { region: 'global', country: 'UY' },\n  'es-PY': { region: 'global', country: 'PY' },\n  'es-BO': { region: 'global', country: 'BO' },\n  'es-DO': { region: 'global', country: 'DO' },\n  'es-GT': { region: 'global', country: 'GT' },\n  'es-HN': { region: 'global', country: 'HN' },\n  'es-NI': { region: 'global', country: 'NI' },\n  'es-PA': { region: 'global', country: 'PA' },\n  'es-CR': { region: 'global', country: 'CR' },\n  'es-SV': { region: 'global', country: 'SV' },\n\n  // Asian locales\n  'zh-SG': { region: 'global', country: 'SG' },\n  'en-SG': { region: 'global', country: 'SG' },\n  'en-IN': { region: 'global', country: 'IN' },\n  'hi-IN': { region: 'global', country: 'IN' },\n  'en-PH': { region: 'global', country: 'PH' },\n  'tl-PH': { region: 'global', country: 'PH' },\n  'id-ID': { region: 'global', country: 'ID' },\n  'ms-MY': { region: 'global', country: 'MY' },\n  'en-MY': { region: 'global', country: 'MY' },\n  'th-TH': { region: 'global', country: 'TH' },\n  'vi-VN': { region: 'global', country: 'VN' },\n\n  // Middle East & Africa locales\n  'ar-SA': { region: 'global', country: 'SA' },\n  'ar-AE': { region: 'global', country: 'AE' },\n  'ar-EG': { region: 'global', country: 'EG' },\n  'ar-DZ': { region: 'global', country: 'DZ' },\n  'ar-MA': { region: 'global', country: 'MA' },\n  'he-IL': { region: 'global', country: 'IL' },\n  'tr-TR': { region: 'global', country: 'TR' },\n  'en-ZA': { region: 'global', country: 'ZA' },\n  'af-ZA': { region: 'global', country: 'ZA' },\n  'en-NG': { region: 'global', country: 'NG' },\n  'en-KE': { region: 'global', country: 'KE' },\n  'sw-KE': { region: 'global', country: 'KE' },\n\n  // Eastern Europe/Russia locales\n  'ru-RU': { region: 'global', country: 'RU' },\n  'uk-UA': { region: 'eu', country: 'UA' },\n  'be-BY': { region: 'global', country: 'BY' },\n  'kk-KZ': { region: 'global', country: 'KZ' },\n};\n\n/**\n * Type exports\n */\nexport type LocaleRegion = (typeof LOCALE_REGIONS)[keyof typeof LOCALE_REGIONS];\nexport type LocaleRegionDetailed =\n  (typeof LOCALE_REGIONS_DETAILED)[keyof typeof LOCALE_REGIONS_DETAILED];\n","/**\n * Timezone to region mapping\n */\nexport const TIMEZONE_REGIONS: Record<\n  string,\n  { region: string; country?: string; state?: string }\n> = {\n  // Europe\n  'Europe/London': { region: 'eu', country: 'GB' },\n  'Europe/Berlin': { region: 'eu', country: 'DE' },\n  'Europe/Paris': { region: 'eu', country: 'FR' },\n  'Europe/Rome': { region: 'eu', country: 'IT' },\n  'Europe/Madrid': { region: 'eu', country: 'ES' },\n  'Europe/Amsterdam': { region: 'eu', country: 'NL' },\n  'Europe/Stockholm': { region: 'eu', country: 'SE' },\n  'Europe/Helsinki': { region: 'eu', country: 'FI' },\n  'Europe/Vienna': { region: 'eu', country: 'AT' },\n  'Europe/Brussels': { region: 'eu', country: 'BE' },\n  'Europe/Dublin': { region: 'eu', country: 'IE' },\n  'Europe/Copenhagen': { region: 'eu', country: 'DK' },\n  'Europe/Warsaw': { region: 'eu', country: 'PL' },\n  'Europe/Prague': { region: 'eu', country: 'CZ' },\n  'Europe/Budapest': { region: 'eu', country: 'HU' },\n  'Europe/Bucharest': { region: 'eu', country: 'RO' },\n  'Europe/Athens': { region: 'eu', country: 'GR' },\n  'Europe/Lisbon': { region: 'eu', country: 'PT' },\n  'Europe/Zagreb': { region: 'eu', country: 'HR' },\n  'Europe/Ljubljana': { region: 'eu', country: 'SI' },\n  'Europe/Bratislava': { region: 'eu', country: 'SK' },\n  'Europe/Sofia': { region: 'eu', country: 'BG' },\n  'Europe/Tallinn': { region: 'eu', country: 'EE' },\n  'Europe/Riga': { region: 'eu', country: 'LV' },\n  'Europe/Vilnius': { region: 'eu', country: 'LT' },\n  'Europe/Luxembourg': { region: 'eu', country: 'LU' },\n  'Europe/Malta': { region: 'eu', country: 'MT' },\n  'Europe/Oslo': { region: 'eu', country: 'NO' },\n  'Europe/Zurich': { region: 'eu', country: 'CH' },\n  'Europe/Reykjavik': { region: 'eu', country: 'IS' },\n  'Europe/Kiev': { region: 'eu', country: 'UA' },\n  'Europe/Minsk': { region: 'global', country: 'BY' },\n  'Europe/Moscow': { region: 'global', country: 'RU' },\n\n  // United States\n  'America/Los_Angeles': { region: 'us', country: 'US', state: 'ca' },\n  'America/San_Francisco': { region: 'us', country: 'US', state: 'ca' },\n  'America/New_York': { region: 'us', country: 'US', state: 'ny' },\n  'America/Chicago': { region: 'us', country: 'US', state: 'il' },\n  'America/Denver': { region: 'us', country: 'US', state: 'co' },\n  'America/Phoenix': { region: 'us', country: 'US', state: 'az' },\n  'America/Detroit': { region: 'us', country: 'US', state: 'mi' },\n  'America/Atlanta': { region: 'us', country: 'US', state: 'ga' },\n  'America/Miami': { region: 'us', country: 'US', state: 'fl' },\n  'America/Dallas': { region: 'us', country: 'US', state: 'tx' },\n  'America/Houston': { region: 'us', country: 'US', state: 'tx' },\n  'America/Seattle': { region: 'us', country: 'US', state: 'wa' },\n  'America/Boston': { region: 'us', country: 'US', state: 'ma' },\n  'America/Philadelphia': { region: 'us', country: 'US', state: 'pa' },\n\n  // China\n  'Asia/Shanghai': { region: 'cn', country: 'CN' },\n  'Asia/Beijing': { region: 'cn', country: 'CN' },\n  'Asia/Hong_Kong': { region: 'cn', country: 'HK' },\n  'Asia/Macau': { region: 'cn', country: 'MO' },\n  'Asia/Chongqing': { region: 'cn', country: 'CN' },\n  'Asia/Urumqi': { region: 'cn', country: 'CN' },\n\n  // Japan\n  'Asia/Tokyo': { region: 'jp', country: 'JP' },\n  'Asia/Osaka': { region: 'jp', country: 'JP' },\n\n  // Other Asian regions\n  'Asia/Bangkok': { region: 'global', country: 'TH' },\n  'Asia/Jakarta': { region: 'global', country: 'ID' },\n  'Asia/Manila': { region: 'global', country: 'PH' },\n  'Asia/Kuala_Lumpur': { region: 'global', country: 'MY' },\n  'Asia/Ho_Chi_Minh': { region: 'global', country: 'VN' },\n  'Asia/Taipei': { region: 'global', country: 'TW' },\n  'Asia/Kolkata': { region: 'global', country: 'IN' },\n  'Asia/Delhi': { region: 'global', country: 'IN' },\n  'Asia/Karachi': { region: 'global', country: 'PK' },\n  'Asia/Dhaka': { region: 'global', country: 'BD' },\n  'Asia/Colombo': { region: 'global', country: 'LK' },\n  'Asia/Kathmandu': { region: 'global', country: 'NP' },\n\n  // Pacific regions\n  'Pacific/Fiji': { region: 'global', country: 'FJ' },\n  'Pacific/Guam': { region: 'us', country: 'GU' },\n  'Pacific/Honolulu': { region: 'us', country: 'US', state: 'hi' },\n\n  // Canada\n  'America/Toronto': { region: 'us', country: 'CA' }, // Treat Canada as US for simplicity\n  'America/Vancouver': { region: 'us', country: 'CA' },\n  'America/Montreal': { region: 'us', country: 'CA' },\n  'America/Edmonton': { region: 'us', country: 'CA' },\n  'America/Winnipeg': { region: 'us', country: 'CA' },\n  'America/Halifax': { region: 'us', country: 'CA' },\n\n  // Australia & New Zealand\n  'Australia/Sydney': { region: 'global', country: 'AU' },\n  'Australia/Melbourne': { region: 'global', country: 'AU' },\n  'Australia/Brisbane': { region: 'global', country: 'AU' },\n  'Australia/Perth': { region: 'global', country: 'AU' },\n  'Australia/Adelaide': { region: 'global', country: 'AU' },\n  'Australia/Darwin': { region: 'global', country: 'AU' },\n  'Australia/Hobart': { region: 'global', country: 'AU' },\n  'Pacific/Auckland': { region: 'global', country: 'NZ' },\n  'Pacific/Wellington': { region: 'global', country: 'NZ' },\n  'Pacific/Christchurch': { region: 'global', country: 'NZ' },\n\n  // Other Asian regions\n  'Asia/Singapore': { region: 'global', country: 'SG' },\n  'Asia/Seoul': { region: 'global', country: 'KR' },\n  'Asia/Mumbai': { region: 'global', country: 'IN' },\n  'Asia/Dubai': { region: 'global', country: 'AE' },\n  'Asia/Riyadh': { region: 'global', country: 'SA' },\n  'Asia/Jerusalem': { region: 'global', country: 'IL' },\n  'Asia/Tel_Aviv': { region: 'global', country: 'IL' },\n  'Asia/Istanbul': { region: 'global', country: 'TR' },\n  'Asia/Tehran': { region: 'global', country: 'IR' },\n  'Asia/Baghdad': { region: 'global', country: 'IQ' },\n  'Asia/Kuwait': { region: 'global', country: 'KW' },\n  'Asia/Doha': { region: 'global', country: 'QA' },\n  'Asia/Muscat': { region: 'global', country: 'OM' },\n  'Asia/Amman': { region: 'global', country: 'JO' },\n  'Asia/Beirut': { region: 'global', country: 'LB' },\n  'Asia/Damascus': { region: 'global', country: 'SY' },\n\n  // Latin America\n  'America/Sao_Paulo': { region: 'global', country: 'BR' },\n  'America/Rio_de_Janeiro': { region: 'global', country: 'BR' },\n  'America/Brasilia': { region: 'global', country: 'BR' },\n  'America/Mexico_City': { region: 'global', country: 'MX' },\n  'America/Tijuana': { region: 'global', country: 'MX' },\n  'America/Monterrey': { region: 'global', country: 'MX' },\n  'America/Buenos_Aires': { region: 'global', country: 'AR' },\n  'America/Santiago': { region: 'global', country: 'CL' },\n  'America/Bogota': { region: 'global', country: 'CO' },\n  'America/Lima': { region: 'global', country: 'PE' },\n  'America/Caracas': { region: 'global', country: 'VE' },\n  'America/La_Paz': { region: 'global', country: 'BO' },\n  'America/Guayaquil': { region: 'global', country: 'EC' },\n  'America/Montevideo': { region: 'global', country: 'UY' },\n  'America/Asuncion': { region: 'global', country: 'PY' },\n  'America/Santo_Domingo': { region: 'global', country: 'DO' },\n  'America/Havana': { region: 'global', country: 'CU' },\n  'America/Panama': { region: 'global', country: 'PA' },\n  'America/Guatemala': { region: 'global', country: 'GT' },\n  'America/Costa_Rica': { region: 'global', country: 'CR' },\n  'America/San_Salvador': { region: 'global', country: 'SV' },\n  'America/Tegucigalpa': { region: 'global', country: 'HN' },\n  'America/Managua': { region: 'global', country: 'NI' },\n  'America/Jamaica': { region: 'global', country: 'JM' },\n  'America/Port-au-Prince': { region: 'global', country: 'HT' },\n\n  // Africa\n  'Africa/Johannesburg': { region: 'global', country: 'ZA' },\n  'Africa/Cairo': { region: 'global', country: 'EG' },\n  'Africa/Lagos': { region: 'global', country: 'NG' },\n  'Africa/Nairobi': { region: 'global', country: 'KE' },\n  'Africa/Casablanca': { region: 'global', country: 'MA' },\n  'Africa/Algiers': { region: 'global', country: 'DZ' },\n  'Africa/Tunis': { region: 'global', country: 'TN' },\n  'Africa/Addis_Ababa': { region: 'global', country: 'ET' },\n  'Africa/Dar_es_Salaam': { region: 'global', country: 'TZ' },\n  'Africa/Kinshasa': { region: 'global', country: 'CD' },\n  'Africa/Luanda': { region: 'global', country: 'AO' },\n  'Africa/Kampala': { region: 'global', country: 'UG' },\n  'Africa/Harare': { region: 'global', country: 'ZW' },\n  'Africa/Accra': { region: 'global', country: 'GH' },\n  'Africa/Dakar': { region: 'global', country: 'SN' },\n  'Africa/Abidjan': { region: 'global', country: 'CI' },\n\n  // Fallback prefix patterns (should be at the end for proper precedence)\n  'Europe/': { region: 'eu' }, // Catch-all for European timezones\n  'America/': { region: 'us' }, // Default Americas to US\n  'Asia/': { region: 'asia' }, // Default Asia to asia region\n  'Africa/': { region: 'global' }, // Default Africa to global\n  'Pacific/': { region: 'global' }, // Default Pacific to global\n};\n\n/**\n * Type exports\n */\nexport type TimezoneRegion = (typeof TIMEZONE_REGIONS)[keyof typeof TIMEZONE_REGIONS];\n","export const ATHLETE_POSITIONS = [\n  { name: 'Goalkeeper', value: 'goal_keeper' },\n  { name: 'Centre Back', value: 'centre_back' },\n  { name: 'Right Back', value: 'right_back' },\n  { name: 'Left Back', value: 'left_back' },\n  { name: 'Wing Back (Right/Left)', value: 'wing_back' },\n  { name: 'Defensive Midfielder', value: 'defensive_midfielder' },\n  { name: 'Central Midfielder', value: 'central_midfielder' },\n  { name: 'Attacking Midfielder', value: 'attacking_midfielder' },\n  { name: 'Right Midfielder/Winger', value: 'right_midfielder_winger' },\n  { name: 'Left Midfielder/Winger', value: 'left_midfielder_winger' },\n  { name: 'Centre Forward/Striker', value: 'centre_forward_striker' },\n] as const;\n\nexport type AthletePosition = (typeof ATHLETE_POSITIONS)[keyof typeof ATHLETE_POSITIONS];\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","/**\n * Mathematical Constants\n *\n * Common mathematical values, number system bases, and calculation constants\n * used throughout the application for various computations.\n *\n * @module math/constants\n */\n\n/**\n * Number system base constants\n */\nexport const NUMBER_SYSTEM = {\n  // Number bases\n  /**\n   * Base 2 - Binary number system\n   */\n  BINARY_BASE: 2,\n\n  /**\n   * Base 8 - Octal number system\n   */\n  OCTAL_BASE: 8,\n\n  /**\n   * Base 10 - Decimal number system\n   */\n  DECIMAL_BASE: 10,\n\n  /**\n   * Base 12 - Duodecimal number system\n   */\n  DUODECIMAL_BASE: 12,\n\n  /**\n   * Base 16 - Hexadecimal number system\n   */\n  HEX_BASE: 16,\n\n  /**\n   * Base 32 - Base32 encoding\n   */\n  BASE32: 32,\n\n  /**\n   * Base 36 - Alphanumeric number system (0-9, a-z)\n   */\n  BASE36: 36,\n\n  /**\n   * Base 58 - Bitcoin base58 encoding (excludes similar looking characters)\n   */\n  BASE58: 58,\n\n  /**\n   * Base 62 - Alphanumeric with uppercase (0-9, a-z, A-Z)\n   */\n  BASE62: 62,\n\n  /**\n   * Base 64 - Base64 encoding\n   */\n  BASE64: 64,\n\n  // Formatting and padding\n  /**\n   * Default padding length for hexadecimal values (e.g., \"0F\" instead of \"F\")\n   */\n  HEX_PAD_LENGTH: 2,\n\n  /**\n   * Padding length for RGB hex colors (6 characters)\n   */\n  HEX_COLOR_LENGTH: 6,\n\n  /**\n   * Padding length for RGBA hex colors with alpha (8 characters)\n   */\n  HEX_COLOR_ALPHA_LENGTH: 8,\n\n  /**\n   * Standard byte size in bits\n   */\n  BITS_PER_BYTE: 8,\n\n  /**\n   * Standard nibble size in bits (half byte)\n   */\n  BITS_PER_NIBBLE: 4,\n\n  /**\n   * Number of bytes in a kilobyte (binary)\n   */\n  BYTES_PER_KB: 1024,\n\n  /**\n   * Number of bytes in a megabyte (binary)\n   */\n  BYTES_PER_MB: 1048576,\n\n  /**\n   * Number of bytes in a gigabyte (binary)\n   */\n  BYTES_PER_GB: 1073741824,\n\n  // Precision and rounding\n  /**\n   * Default decimal places for currency\n   */\n  CURRENCY_DECIMAL_PLACES: 2,\n\n  /**\n   * Default decimal places for percentages\n   */\n  PERCENTAGE_DECIMAL_PLACES: 2,\n\n  /**\n   * Default decimal places for coordinates\n   */\n  COORDINATE_DECIMAL_PLACES: 6,\n\n  /**\n   * Maximum safe integer in JavaScript\n   */\n  MAX_SAFE_INTEGER: 9007199254740991,\n\n  /**\n   * Minimum safe integer in JavaScript\n   */\n  MIN_SAFE_INTEGER: -9007199254740991,\n\n  /**\n   * Maximum 32-bit signed integer\n   */\n  MAX_INT32: 2147483647,\n\n  /**\n   * Minimum 32-bit signed integer\n   */\n  MIN_INT32: -2147483648,\n\n  /**\n   * Maximum 16-bit unsigned integer\n   */\n  MAX_UINT16: 65535,\n\n  /**\n   * Maximum 8-bit unsigned integer\n   */\n  MAX_UINT8: 255,\n\n  // Common angles in degrees\n  /**\n   * Full circle in degrees\n   */\n  DEGREES_FULL_CIRCLE: 360,\n\n  /**\n   * Half circle in degrees\n   */\n  DEGREES_HALF_CIRCLE: 180,\n\n  /**\n   * Quarter circle in degrees (right angle)\n   */\n  DEGREES_RIGHT_ANGLE: 90,\n\n  /**\n   * Degrees in a radian\n   */\n  DEGREES_PER_RADIAN: 57.29577951308232,\n\n  /**\n   * Radians in a degree\n   */\n  RADIANS_PER_DEGREE: 0.017453292519943295,\n\n  // Mathematical constants\n  /**\n   * Pi (π)\n   */\n  PI: 3.141592653589793,\n\n  /**\n   * Two times Pi (2π) - full circle in radians\n   */\n  TWO_PI: 6.283185307179586,\n\n  /**\n   * Half Pi (π/2) - quarter circle in radians\n   */\n  HALF_PI: 1.5707963267948966,\n\n  /**\n   * Euler's number (e)\n   */\n  E: 2.718281828459045,\n\n  /**\n   * Golden ratio (φ)\n   */\n  GOLDEN_RATIO: 1.618033988749895,\n\n  /**\n   * Square root of 2\n   */\n  SQRT2: 1.4142135623730951,\n\n  /**\n   * Square root of 3\n   */\n  SQRT3: 1.7320508075688772,\n\n  /**\n   * Natural logarithm of 2\n   */\n  LN2: 0.6931471805599453,\n\n  /**\n   * Natural logarithm of 10\n   */\n  LN10: 2.302585092994046,\n\n  /**\n   * Base 2 logarithm of E\n   */\n  LOG2E: 1.4426950408889634,\n\n  /**\n   * Base 10 logarithm of E\n   */\n  LOG10E: 0.4342944819032518,\n} as const;\n\n/**\n * Mathematical and percentage constants\n */\nexport const MATH_CONSTANTS = {\n  /**\n   * Maximum percentage value\n   */\n  PERCENTAGE_MAX: 100,\n\n  /**\n   * Half value (50%)\n   */\n  HALF: 0.5,\n\n  /**\n   * One tenth (10%)\n   */\n  TENTH: 0.1,\n\n  /**\n   * One twentieth (5%)\n   */\n  TWENTIETH: 0.05,\n\n  /**\n   * 95th percentile\n   */\n  PERCENT_95: 0.95,\n\n  /**\n   * 99th percentile\n   */\n  PERCENT_99: 0.99,\n\n  /**\n   * Threshold for quadratic algorithm detection\n   */\n  QUADRATIC_THRESHOLD: 1.5,\n\n  /**\n   * Threshold for exponential algorithm detection\n   */\n  EXPONENTIAL_THRESHOLD: 3,\n\n  /**\n   * Multiplier for variance calculations\n   */\n  VARIANCE_MULTIPLIER: 4,\n\n  /**\n   * Offset for variance calculations\n   */\n  VARIANCE_OFFSET: 2,\n} as const;\n\n/**\n * Common numeric multipliers for calculations\n */\nexport const MULTIPLIERS = {\n  /**\n   * One and a half times (1.5x)\n   */\n  ONE_AND_HALF: 1.5,\n\n  /**\n   * Double (2x)\n   */\n  DOUBLE: 2,\n\n  /**\n   * Triple (3x)\n   */\n  TRIPLE: 3,\n\n  /**\n   * Quadruple (4x)\n   */\n  QUADRUPLE: 4,\n\n  /**\n   * Quintuple (5x)\n   */\n  QUINTUPLE: 5,\n\n  /**\n   * Ten times (10x)\n   */\n  TEN: 10,\n} as const;\n\n/**\n * Common numeric constants for general use\n */\nexport const NUMERIC_CONSTANTS = {\n  /**\n   * Milliseconds in one second\n   */\n  MILLISECONDS_PER_SECOND: 1000,\n\n  /**\n   * Seconds in one minute\n   */\n  SECONDS_PER_MINUTE: 60,\n\n  /**\n   * Minutes in one hour\n   */\n  MINUTES_PER_HOUR: 60,\n\n  /**\n   * Hours in one day\n   */\n  HOURS_PER_DAY: 24,\n\n  /**\n   * Negative one (-1)\n   */\n  NEGATIVE_ONE: -1,\n\n  /**\n   * Zero (0)\n   */\n  ZERO: 0,\n\n  /**\n   * One (1)\n   */\n  ONE: 1,\n\n  /**\n   * Two (2)\n   */\n  TWO: 2,\n\n  /**\n   * Three (3)\n   */\n  THREE: 3,\n\n  /**\n   * Five (5)\n   */\n  FIVE: 5,\n\n  /**\n   * Ten (10)\n   */\n  TEN: 10,\n  /**\n   * One hour in seconds (3600)\n   */\n  ONE_HOUR_SECONDS: 3600,\n  /**\n   * Minimum pool size (1)\n   */\n  MIN_POOL_SIZE: 1,\n  /**\n   * Maximum pool size (100)\n   */\n  MAX_POOL_SIZE: 100,\n  /**\n   * Minimum timeout in milliseconds (1000)\n   */\n  MIN_TIMEOUT_MS: 1000,\n} as const;\n\n/**\n * Type for number system values\n */\nexport type NumberSystemBase = (typeof NUMBER_SYSTEM)[keyof typeof NUMBER_SYSTEM];\n\n/**\n * Type for math constant values\n */\nexport type MathConstant = (typeof MATH_CONSTANTS)[keyof typeof MATH_CONSTANTS];\n\n/**\n * Type for multiplier values\n */\nexport type Multiplier = (typeof MULTIPLIERS)[keyof typeof MULTIPLIERS];\n\n/**\n * Type for numeric constant values\n */\nexport type NumericConstant = (typeof NUMERIC_CONSTANTS)[keyof typeof NUMERIC_CONSTANTS];\n","/**\n * Performance Module\n *\n * Performance monitoring and benchmarking constants used for\n * measuring application performance, detecting memory leaks,\n * and configuring performance tests.\n *\n * @module performance\n */\n\n/**\n * Performance measurement constants\n */\nexport const PERFORMANCE_CONSTANTS = {\n  /**\n   * Threshold for detecting memory leaks (10% growth)\n   */\n  MEMORY_LEAK_THRESHOLD: 0.1,\n\n  /**\n   * Default number of benchmark runs for performance testing\n   */\n  DEFAULT_BENCHMARK_RUNS: 100,\n\n  /**\n   * Default number of warmup runs before benchmarking\n   */\n  DEFAULT_WARMUP_RUNS: 10,\n} as const;\n\n/**\n * Type for performance constant values\n */\nexport type PerformanceConstant =\n  (typeof PERFORMANCE_CONSTANTS)[keyof typeof PERFORMANCE_CONSTANTS];\n","/**\n * Network-related Constants\n *\n * Constants for network operations including IP addresses,\n * byte ranges, and process identifiers.\n *\n * @module network/constants\n */\n\n/**\n * Network and connection constants\n */\nexport const NETWORK_CONSTANTS = {\n  /**\n   * Minimum value for an IPv4 octet (excluding 0 for first octet)\n   */\n  IPV4_OCTET_MIN: 1,\n\n  /**\n   * Maximum value for an IPv4 octet\n   */\n  IPV4_OCTET_MAX: 255,\n\n  /**\n   * Number of octets in an IPv4 address\n   */\n  IPV4_OCTET_COUNT: 4,\n\n  /**\n   * Maximum value for a random byte (256 exclusive)\n   */\n  RANDOM_BYTE_MAX: 256,\n\n  /**\n   * Default maximum process ID for testing\n   */\n  DEFAULT_PROCESS_ID_MAX: 10000,\n} as const;\n\n/**\n * Round-trip time (RTT) thresholds in milliseconds\n * Used to classify network latency quality\n */\nexport const RTT_THRESHOLDS = {\n  /**\n   * Excellent network latency - under 50ms\n   */\n  EXCELLENT: 50,\n\n  /**\n   * Good network latency - under 150ms\n   */\n  GOOD: 150,\n\n  /**\n   * Fair network latency - under 400ms\n   */\n  FAIR: 400,\n} as const;\n\n/**\n * Network speed thresholds in Mbps\n * Used to classify connection speed quality\n */\nexport const SPEED_THRESHOLDS = {\n  /**\n   * Excellent connection speed - 10+ Mbps\n   */\n  EXCELLENT: 10,\n\n  /**\n   * Good connection speed - 2+ Mbps\n   */\n  GOOD: 2,\n\n  /**\n   * Fair connection speed - 0.5+ Mbps\n   */\n  FAIR: 0.5,\n} as const;\n\n/**\n * Network quality scores (0-100 scale)\n * Used to quantify overall network performance\n */\nexport const NETWORK_SCORES = {\n  /**\n   * Excellent network quality score\n   */\n  EXCELLENT: 100,\n\n  /**\n   * Good network quality score\n   */\n  GOOD: 75,\n\n  /**\n   * Fair network quality score\n   */\n  FAIR: 50,\n\n  /**\n   * Poor network quality score\n   */\n  POOR: 25,\n\n  /**\n   * Offline - no network connection\n   */\n  OFFLINE: 0,\n} as const;\n\n/**\n * Network timeout constants in milliseconds\n * Used for request timeout configuration based on network quality\n */\nexport const NETWORK_TIMEOUTS = {\n  /**\n   * Fast network timeout - 15 seconds\n   */\n  FAST: 15000,\n\n  /**\n   * Medium network timeout - 30 seconds\n   */\n  MEDIUM: 30000,\n\n  /**\n   * Slow network timeout - 60 seconds\n   */\n  SLOW: 60000,\n\n  /**\n   * Very slow network timeout - 90 seconds\n   */\n  VERY_SLOW: 90000,\n\n  /**\n   * Offline timeout - 5 seconds (fail fast)\n   */\n  OFFLINE: 5000,\n} as const;\n\n/**\n * Cache TTL (Time-To-Live) constants in seconds\n * Used for cache expiration strategies\n */\nexport const CACHE_TTL = {\n  /**\n   * Short cache TTL - 5 minutes\n   */\n  SHORT: 300,\n\n  /**\n   * Medium cache TTL - 10 minutes\n   */\n  MEDIUM: 600,\n\n  /**\n   * Long cache TTL - 30 minutes\n   */\n  LONG: 1800,\n} as const;\n\n/**\n * Cache stale time constants in seconds\n * Used to determine when cached data is considered stale\n */\nexport const CACHE_STALE = {\n  /**\n   * Short stale time - 1 minute\n   */\n  SHORT: 60,\n\n  /**\n   * Medium stale time - 5 minutes\n   */\n  MEDIUM: 300,\n\n  /**\n   * Long stale time - 15 minutes\n   */\n  LONG: 900,\n} as const;\n\n/**\n * Request deduplication time constants in milliseconds\n * Used to prevent duplicate requests within time windows\n */\nexport const DEDUPE_TIME = {\n  /**\n   * Aggressive deduplication - 1 second\n   */\n  AGGRESSIVE: 1000,\n\n  /**\n   * Balanced deduplication - 2 seconds\n   */\n  BALANCED: 2000,\n\n  /**\n   * Conservative deduplication - 5 seconds\n   */\n  CONSERVATIVE: 5000,\n} as const;\n\n/**\n * Retry attempt constants\n * Number of retry attempts for failed requests\n */\nexport const RETRY_ATTEMPTS = {\n  /**\n   * Few retry attempts - 2\n   */\n  FEW: 2,\n\n  /**\n   * Standard retry attempts - 3\n   */\n  STANDARD: 3,\n\n  /**\n   * Many retry attempts - 5\n   */\n  MANY: 5,\n} as const;\n\n/**\n * Retry delay constants in milliseconds\n * Initial delays between retry attempts\n */\nexport const RETRY_DELAYS = {\n  /**\n   * Short retry delay - 1 second\n   */\n  SHORT: 1000,\n\n  /**\n   * Long retry delay - 2 seconds\n   */\n  LONG: 2000,\n\n  /**\n   * Maximum retry delay - 30 seconds\n   */\n  MAX: 30000,\n} as const;\n\n/**\n * Retry backoff multiplier constants\n * Exponential backoff multipliers for retry delays\n */\nexport const RETRY_BACKOFF = {\n  /**\n   * Small backoff multiplier - 1.5x\n   */\n  SMALL: 1.5,\n\n  /**\n   * Medium backoff multiplier - 2x\n   */\n  MEDIUM: 2,\n\n  /**\n   * Large backoff multiplier - 2.5x\n   */\n  LARGE: 2.5,\n} as const;\n\n/**\n * Batch size constants\n * Number of items to process in a single batch\n */\nexport const BATCH_SIZES = {\n  /**\n   * Huge batch size - 50 items\n   */\n  HUGE: 50,\n\n  /**\n   * Large batch size - 25 items\n   */\n  LARGE: 25,\n\n  /**\n   * Medium batch size - 10 items\n   */\n  MEDIUM: 10,\n\n  /**\n   * Small batch size - 5 items\n   */\n  SMALL: 5,\n\n  /**\n   * No batching - 0 items\n   */\n  NONE: 0,\n} as const;\n\n/**\n * Page size constants\n * Number of items per page for pagination\n */\nexport const PAGE_SIZES = {\n  /**\n   * Huge page size - 100 items\n   */\n  HUGE: 100,\n\n  /**\n   * Large page size - 50 items\n   */\n  LARGE: 50,\n\n  /**\n   * Medium page size - 25 items\n   */\n  MEDIUM: 25,\n\n  /**\n   * Small page size - 10 items\n   */\n  SMALL: 10,\n\n  /**\n   * No pagination - 0 items\n   */\n  NONE: 0,\n} as const;\n\n/**\n * Type for network constant values\n */\nexport type NetworkConstant = (typeof NETWORK_CONSTANTS)[keyof typeof NETWORK_CONSTANTS];\n\n/**\n * Type for RTT threshold values\n */\nexport type RTTThreshold = (typeof RTT_THRESHOLDS)[keyof typeof RTT_THRESHOLDS];\n\n/**\n * Type for speed threshold values\n */\nexport type SpeedThreshold = (typeof SPEED_THRESHOLDS)[keyof typeof SPEED_THRESHOLDS];\n\n/**\n * Type for network score values\n */\nexport type NetworkScore = (typeof NETWORK_SCORES)[keyof typeof NETWORK_SCORES];\n\n/**\n * Type for network timeout values\n */\nexport type NetworkTimeout = (typeof NETWORK_TIMEOUTS)[keyof typeof NETWORK_TIMEOUTS];\n\n/**\n * Type for cache TTL values\n */\nexport type CacheTTL = (typeof CACHE_TTL)[keyof typeof CACHE_TTL];\n\n/**\n * Type for cache stale values\n */\nexport type CacheStale = (typeof CACHE_STALE)[keyof typeof CACHE_STALE];\n\n/**\n * Type for dedupe time values\n */\nexport type DedupeTime = (typeof DEDUPE_TIME)[keyof typeof DEDUPE_TIME];\n\n/**\n * Type for retry attempt values\n */\nexport type RetryAttempt = (typeof RETRY_ATTEMPTS)[keyof typeof RETRY_ATTEMPTS];\n\n/**\n * Type for retry delay values\n */\nexport type RetryDelay = (typeof RETRY_DELAYS)[keyof typeof RETRY_DELAYS];\n\n/**\n * Type for retry backoff values\n */\nexport type RetryBackoff = (typeof RETRY_BACKOFF)[keyof typeof RETRY_BACKOFF];\n\n/**\n * Type for batch size values\n */\nexport type BatchSize = (typeof BATCH_SIZES)[keyof typeof BATCH_SIZES];\n\n/**\n * Type for page size values\n */\nexport type PageSize = (typeof PAGE_SIZES)[keyof typeof PAGE_SIZES];\n","/**\n * Display and Character Constants\n *\n * Constants for display formatting, charting,\n * and character code operations.\n *\n * @module display/constants\n */\n\n/**\n * Display and chart formatting constants\n */\nexport const DISPLAY_CONSTANTS = {\n  /**\n   * Maximum length for chart bar display\n   */\n  CHART_BAR_MAX_LENGTH: 40,\n\n  /**\n   * Length of chart separator lines\n   */\n  CHART_SEPARATOR_LENGTH: 60,\n\n  /**\n   * Number of decimal places for display precision\n   */\n  DECIMAL_PRECISION: 3,\n} as const;\n\n/**\n * Character code constants\n */\nexport const CHAR_CODES = {\n  /**\n   * ASCII code for lowercase 'a'\n   */\n  LOWERCASE_A: 97,\n\n  /**\n   * Number of letters in the alphabet\n   */\n  ALPHABET_SIZE: 26,\n\n  /**\n   * ASCII code for space character\n   */\n  SPACE: 32,\n} as const;\n\n/**\n * Type for display constant values\n */\nexport type DisplayConstant = (typeof DISPLAY_CONSTANTS)[keyof typeof DISPLAY_CONSTANTS];\n\n/**\n * Type for character code values\n */\nexport type CharCode = (typeof CHAR_CODES)[keyof typeof CHAR_CODES];\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  HUNDRED: 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","// Default configuration for the dynamic PostgreSQL connection pool.\n// Defines minimum/maximum connections, timeouts, and auto-scaling thresholds\n// to maintain optimal performance and resource utilization.\nexport const dynamicPoolDefaultConfig = {\n  min: 2,\n  max: 10,\n  idleTimeoutMillis: 30000,\n  acquireTimeoutMillis: 10000,\n  scaling: {\n    enabled: true,\n    scaleUpThreshold: 80, // Scale up when pool usage exceeds 80%\n    scaleDownThreshold: 20, // Scale down when usage drops below 20%\n    scaleInterval: 30000, // Interval (ms) to check scaling conditions\n    maxScale: 2, // Maximum scaling multiplier\n  },\n};\n","/**\n * Social media platform URLs\n */\nexport const SOCIAL_LINKS = {\n  /**\n   * X (formerly Twitter) profile URL\n   */\n  x: 'https://x.com/Plyaz_',\n\n  /**\n   * Instagram profile URL\n   */\n  instagram: 'https://instagram.com/plyaz_',\n\n  /**\n   * LinkedIn company page URL\n   */\n  linkedin: 'https://linkedin.com/company/plyaz',\n} as const;\n\n/**\n * Product-related external links\n */\nexport const PRODUCT_LINKS = {\n  /**\n   * Documentation site URL\n   */\n  docs: 'https://plyaz.gitbook.io/plyaz',\n\n  /**\n   * Community platform URL\n   */\n  community: 'https://community.plyaz.co.uk',\n\n  /**\n   * Support email address\n   */\n  support: 'mailto:help@plyaz.co.uk',\n} as const;\n\n/**\n * Blog configuration constants\n */\nexport const BLOG = {\n  /**\n   * Number of posts to display initially\n   */\n  INITIAL_POSTS_TO_SHOW: 3,\n\n  /**\n   * Number of posts to load when \"Load More\" is clicked\n   */\n  POSTS_INCREMENT: 3,\n\n  /**\n   * Animation delay in milliseconds between post appearances\n   */\n  ANIMATION_DELAY: 100,\n} as const;\n","/**\n * Accessibility (a11y) Constants\n *\n * WCAG compliance constants, ARIA attributes, color contrast calculations,\n * and other accessibility-related values used throughout the application.\n *\n * @module a11y/constants\n */\n\n/**\n * Core accessibility constants for testing and validation\n */\nexport const A11Y_CONSTANTS = {\n  // Focus and interaction timing\n  /**\n   * Delay before checking focus state (milliseconds)\n   */\n  FOCUS_CHECK_DELAY: 100,\n\n  /**\n   * Maximum number of tab key presses for focus testing\n   */\n  FOCUS_TAB_COUNT: 10,\n\n  /**\n   * Minimum time for focus to be visible (milliseconds)\n   */\n  MIN_FOCUS_VISIBLE_TIME: 200,\n\n  /**\n   * Maximum time to wait for focus change (milliseconds)\n   */\n  MAX_FOCUS_WAIT_TIME: 3000,\n\n  /**\n   * Debounce delay for screen reader announcements (milliseconds)\n   */\n  SCREEN_READER_DEBOUNCE: 150,\n\n  // Text size thresholds\n  /**\n   * Minimum font size for large text (points)\n   */\n  MIN_LARGE_TEXT_SIZE: 18,\n\n  /**\n   * Minimum font size for bold large text (points)\n   */\n  MIN_LARGE_TEXT_BOLD_SIZE: 14,\n\n  /**\n   * Minimum font size for normal text (points)\n   */\n  MIN_NORMAL_TEXT_SIZE: 14,\n\n  /**\n   * Minimum touch target size (pixels) - WCAG 2.5.5\n   */\n  MIN_TOUCH_TARGET_SIZE: 44,\n\n  /**\n   * Minimum touch target size for inline elements (pixels)\n   */\n  MIN_INLINE_TARGET_SIZE: 24,\n\n  // Color and contrast calculations\n  /**\n   * Maximum value for RGB color channels\n   */\n  COLOR_CHANNEL_MAX: 255,\n\n  /**\n   * sRGB threshold for luminance calculation\n   */\n  SRGB_THRESHOLD: 0.03928,\n\n  /**\n   * sRGB divisor for linear conversion\n   */\n  SRGB_DIVISOR: 12.92,\n\n  /**\n   * sRGB offset for gamma correction\n   */\n  SRGB_OFFSET: 0.055,\n\n  /**\n   * sRGB scale factor for gamma correction\n   */\n  SRGB_SCALE: 1.055,\n\n  /**\n   * sRGB exponent for gamma correction\n   */\n  SRGB_EXPONENT: 2.4,\n\n  /**\n   * Red channel weight for luminance calculation\n   */\n  LUMINANCE_RED: 0.2126,\n\n  /**\n   * Green channel weight for luminance calculation\n   */\n  LUMINANCE_GREEN: 0.7152,\n\n  /**\n   * Blue channel weight for luminance calculation\n   */\n  LUMINANCE_BLUE: 0.0722,\n\n  /**\n   * Offset added to luminance for contrast ratio calculation\n   */\n  LUMINANCE_OFFSET: 0.05,\n\n  // WCAG contrast ratios\n  /**\n   * Minimum contrast ratio for AA compliance (normal text)\n   */\n  CONTRAST_RATIO_AA: 4.5,\n\n  /**\n   * Minimum contrast ratio for AA compliance (large text)\n   */\n  CONTRAST_RATIO_AA_LARGE: 3,\n\n  /**\n   * Minimum contrast ratio for AAA compliance (normal text)\n   */\n  CONTRAST_RATIO_AAA: 7,\n\n  /**\n   * Minimum contrast ratio for AAA compliance (large text)\n   */\n  CONTRAST_RATIO_AAA_LARGE: 4.5,\n\n  /**\n   * Minimum contrast ratio for non-text elements (graphics, UI components)\n   */\n  CONTRAST_RATIO_GRAPHICS: 3,\n\n  /**\n   * Maximum percentage value\n   */\n  PERCENTAGE_MAX: 100,\n\n  // Animation and motion\n  /**\n   * Maximum duration for essential animations (milliseconds)\n   */\n  MAX_ESSENTIAL_ANIMATION_DURATION: 5000,\n\n  /**\n   * Default duration for reduced motion (milliseconds)\n   */\n  REDUCED_MOTION_DURATION: 1,\n\n  /**\n   * Maximum flashes per second to avoid seizures (WCAG 2.3.1)\n   */\n  MAX_FLASH_RATE: 3,\n\n  /**\n   * Minimum time between auto-updating content (seconds)\n   */\n  MIN_AUTO_UPDATE_INTERVAL: 5,\n\n  // Timing and session\n  /**\n   * Minimum warning time before timeout (seconds) - WCAG 2.2.1\n   */\n  MIN_TIMEOUT_WARNING: 20,\n\n  /**\n   * Default session timeout (minutes)\n   */\n  DEFAULT_SESSION_TIMEOUT: 20,\n\n  /**\n   * Extended session timeout for accessibility (minutes)\n   */\n  EXTENDED_SESSION_TIMEOUT: 120,\n\n  // Audio and video\n  /**\n   * Maximum background audio level (dB) - WCAG 1.4.7\n   */\n  MAX_BACKGROUND_AUDIO_LEVEL: -20,\n\n  /**\n   * Default caption offset from bottom (pixels)\n   */\n  DEFAULT_CAPTION_OFFSET: 50,\n\n  /**\n   * Minimum caption font size (pixels)\n   */\n  MIN_CAPTION_FONT_SIZE: 16,\n\n  /**\n   * Default audio description delay (milliseconds)\n   */\n  AUDIO_DESCRIPTION_DELAY: 100,\n\n  // Form validation\n  /**\n   * Delay before showing validation errors (milliseconds)\n   */\n  VALIDATION_DELAY: 1000,\n\n  /**\n   * Maximum error message length for screen readers\n   */\n  MAX_ERROR_MESSAGE_LENGTH: 150,\n\n  /**\n   * Minimum password length for accessibility\n   */\n  MIN_PASSWORD_LENGTH: 8,\n\n  // Zoom and scaling\n  /**\n   * Maximum zoom level without horizontal scrolling (percentage)\n   */\n  MAX_ZOOM_WITHOUT_SCROLL: 200,\n\n  /**\n   * Minimum zoom level supported (percentage)\n   */\n  MIN_ZOOM_LEVEL: 50,\n\n  /**\n   * Maximum zoom level supported (percentage)\n   */\n  MAX_ZOOM_LEVEL: 500,\n\n  // Reading and comprehension\n  /**\n   * Maximum line length for readability (characters)\n   */\n  MAX_LINE_LENGTH: 80,\n\n  /**\n   * Optimal line length for reading (characters)\n   */\n  OPTIMAL_LINE_LENGTH: 66,\n\n  /**\n   * Minimum line height for readability\n   */\n  MIN_LINE_HEIGHT: 1.5,\n\n  /**\n   * Maximum paragraph width for readability (pixels)\n   */\n  MAX_PARAGRAPH_WIDTH: 600,\n} as const;\n\n/**\n * ARIA roles for semantic HTML\n */\nexport const ARIA_ROLES = {\n  // Landmark roles\n  BANNER: 'banner',\n  COMPLEMENTARY: 'complementary',\n  CONTENTINFO: 'contentinfo',\n  FORM: 'form',\n  MAIN: 'main',\n  NAVIGATION: 'navigation',\n  REGION: 'region',\n  SEARCH: 'search',\n\n  // Structure roles\n  APPLICATION: 'application',\n  ARTICLE: 'article',\n  CELL: 'cell',\n  COLUMNHEADER: 'columnheader',\n  DEFINITION: 'definition',\n  DIRECTORY: 'directory',\n  DOCUMENT: 'document',\n  FEED: 'feed',\n  FIGURE: 'figure',\n  GROUP: 'group',\n  HEADING: 'heading',\n  IMG: 'img',\n  LIST: 'list',\n  LISTITEM: 'listitem',\n  MATH: 'math',\n  NOTE: 'note',\n  PRESENTATION: 'presentation',\n  ROW: 'row',\n  ROWGROUP: 'rowgroup',\n  ROWHEADER: 'rowheader',\n  SEPARATOR: 'separator',\n  TABLE: 'table',\n  TERM: 'term',\n\n  // Widget roles\n  ALERT: 'alert',\n  ALERTDIALOG: 'alertdialog',\n  BUTTON: 'button',\n  CHECKBOX: 'checkbox',\n  COMBOBOX: 'combobox',\n  DIALOG: 'dialog',\n  GRIDCELL: 'gridcell',\n  LINK: 'link',\n  LISTBOX: 'listbox',\n  LOG: 'log',\n  MARQUEE: 'marquee',\n  MENU: 'menu',\n  MENUBAR: 'menubar',\n  MENUITEM: 'menuitem',\n  MENUITEMCHECKBOX: 'menuitemcheckbox',\n  MENUITEMRADIO: 'menuitemradio',\n  OPTION: 'option',\n  PROGRESSBAR: 'progressbar',\n  RADIO: 'radio',\n  RADIOGROUP: 'radiogroup',\n  SCROLLBAR: 'scrollbar',\n  SEARCHBOX: 'searchbox',\n  SLIDER: 'slider',\n  SPINBUTTON: 'spinbutton',\n  STATUS: 'status',\n  SWITCH: 'switch',\n  TAB: 'tab',\n  TABLIST: 'tablist',\n  TABPANEL: 'tabpanel',\n  TEXTBOX: 'textbox',\n  TIMER: 'timer',\n  TOOLBAR: 'toolbar',\n  TOOLTIP: 'tooltip',\n  TREE: 'tree',\n  TREEGRID: 'treegrid',\n  TREEITEM: 'treeitem',\n\n  // Abstract roles (should not be used directly)\n  COMMAND: 'command',\n  COMPOSITE: 'composite',\n  INPUT: 'input',\n  LANDMARK: 'landmark',\n  RANGE: 'range',\n  ROLETYPE: 'roletype',\n  SECTION: 'section',\n  SECTIONHEAD: 'sectionhead',\n  SELECT: 'select',\n  STRUCTURE: 'structure',\n  WIDGET: 'widget',\n  WINDOW: 'window',\n} as const;\n\n/**\n * Common ARIA attributes\n */\nexport const ARIA_ATTRIBUTES = {\n  // Widget attributes\n  ARIA_AUTOCOMPLETE: 'aria-autocomplete',\n  ARIA_CHECKED: 'aria-checked',\n  ARIA_DISABLED: 'aria-disabled',\n  ARIA_ERRORMESSAGE: 'aria-errormessage',\n  ARIA_EXPANDED: 'aria-expanded',\n  ARIA_HASPOPUP: 'aria-haspopup',\n  ARIA_HIDDEN: 'aria-hidden',\n  ARIA_INVALID: 'aria-invalid',\n  ARIA_LABEL: 'aria-label',\n  ARIA_LEVEL: 'aria-level',\n  ARIA_MODAL: 'aria-modal',\n  ARIA_MULTILINE: 'aria-multiline',\n  ARIA_MULTISELECTABLE: 'aria-multiselectable',\n  ARIA_ORIENTATION: 'aria-orientation',\n  ARIA_PLACEHOLDER: 'aria-placeholder',\n  ARIA_PRESSED: 'aria-pressed',\n  ARIA_READONLY: 'aria-readonly',\n  ARIA_REQUIRED: 'aria-required',\n  ARIA_SELECTED: 'aria-selected',\n  ARIA_SORT: 'aria-sort',\n  ARIA_VALUEMAX: 'aria-valuemax',\n  ARIA_VALUEMIN: 'aria-valuemin',\n  ARIA_VALUENOW: 'aria-valuenow',\n  ARIA_VALUETEXT: 'aria-valuetext',\n\n  // Live region attributes\n  ARIA_LIVE: 'aria-live',\n  ARIA_ATOMIC: 'aria-atomic',\n  ARIA_RELEVANT: 'aria-relevant',\n  ARIA_BUSY: 'aria-busy',\n\n  // Drag and drop attributes\n  ARIA_DROPEFFECT: 'aria-dropeffect',\n  ARIA_GRABBED: 'aria-grabbed',\n\n  // Relationship attributes\n  ARIA_ACTIVEDESCENDANT: 'aria-activedescendant',\n  ARIA_COLCOUNT: 'aria-colcount',\n  ARIA_COLINDEX: 'aria-colindex',\n  ARIA_COLSPAN: 'aria-colspan',\n  ARIA_CONTROLS: 'aria-controls',\n  ARIA_DESCRIBEDBY: 'aria-describedby',\n  ARIA_DETAILS: 'aria-details',\n  ARIA_FLOWTO: 'aria-flowto',\n  ARIA_LABELLEDBY: 'aria-labelledby',\n  ARIA_OWNS: 'aria-owns',\n  ARIA_POSINSET: 'aria-posinset',\n  ARIA_ROWCOUNT: 'aria-rowcount',\n  ARIA_ROWINDEX: 'aria-rowindex',\n  ARIA_ROWSPAN: 'aria-rowspan',\n  ARIA_SETSIZE: 'aria-setsize',\n\n  // Global attributes\n  ARIA_CURRENT: 'aria-current',\n  ARIA_DESCRIPTION: 'aria-description',\n  ARIA_KEYSHORTCUTS: 'aria-keyshortcuts',\n  ARIA_ROLEDESCRIPTION: 'aria-roledescription',\n} as const;\n\n/**\n * Keyboard navigation constants\n */\nexport const KEYBOARD_CODES = {\n  // Navigation keys\n  TAB: 'Tab',\n  ENTER: 'Enter',\n  SPACE: ' ',\n  ESCAPE: 'Escape',\n  ARROW_UP: 'ArrowUp',\n  ARROW_DOWN: 'ArrowDown',\n  ARROW_LEFT: 'ArrowLeft',\n  ARROW_RIGHT: 'ArrowRight',\n  HOME: 'Home',\n  END: 'End',\n  PAGE_UP: 'PageUp',\n  PAGE_DOWN: 'PageDown',\n\n  // Legacy key codes (for compatibility)\n  TAB_KEYCODE: 9,\n  ENTER_KEYCODE: 13,\n  ESCAPE_KEYCODE: 27,\n  SPACE_KEYCODE: 32,\n  ARROW_LEFT_KEYCODE: 37,\n  ARROW_UP_KEYCODE: 38,\n  ARROW_RIGHT_KEYCODE: 39,\n  ARROW_DOWN_KEYCODE: 40,\n} as const;\n\n/**\n * Screen reader announcement priorities\n */\nexport const ANNOUNCEMENT_PRIORITY = {\n  /**\n   * Polite announcement - waits for current speech to finish\n   */\n  POLITE: 'polite',\n\n  /**\n   * Assertive announcement - interrupts current speech\n   */\n  ASSERTIVE: 'assertive',\n\n  /**\n   * Off - no announcement\n   */\n  OFF: 'off',\n} as const;\n\n/**\n * Focus trap configurations\n */\nexport const FOCUS_TRAP = {\n  /**\n   * Initial focus selector\n   */\n  INITIAL_FOCUS: '[data-focus-initial], [autofocus]',\n\n  /**\n   * Focusable elements selector\n   */\n  FOCUSABLE_ELEMENTS:\n    'a[href], button:not([disabled]), textarea:not([disabled]), input:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex=\"-1\"])',\n\n  /**\n   * Interactive elements selector\n   */\n  INTERACTIVE_ELEMENTS: 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])',\n\n  /**\n   * Skip link selector\n   */\n  SKIP_LINK: '[data-skip-link], .skip-link',\n} as const;\n\n/**\n * Type exports\n */\nexport type A11yConstant = (typeof A11Y_CONSTANTS)[keyof typeof A11Y_CONSTANTS];\nexport type AriaRole = (typeof ARIA_ROLES)[keyof typeof ARIA_ROLES];\nexport type AriaAttribute = (typeof ARIA_ATTRIBUTES)[keyof typeof ARIA_ATTRIBUTES];\nexport type KeyboardCode = (typeof KEYBOARD_CODES)[keyof typeof KEYBOARD_CODES];\nexport type AnnouncementPriority =\n  (typeof ANNOUNCEMENT_PRIORITY)[keyof typeof ANNOUNCEMENT_PRIORITY];\n","import type { EventScope } from '@plyaz/types/errors';\n\n// Errors Code with messages\nexport const ERRORS_CODES = {\n  validation_error: {\n    status: 400,\n    message: 'errors.validation.error',\n  },\n  unauthorized: {\n    status: 401,\n    message: 'errors.auth.unauthorized',\n  },\n  payment_failed: {\n    status: 402,\n    message: 'errors.payment.failed',\n  },\n  forbidden: {\n    status: 403,\n    message: 'errors.auth.forbidden',\n  },\n  not_found: {\n    status: 404,\n    message: 'errors.common.notFound',\n  },\n  method_not_allowed: {\n    status: 405,\n    message: 'errors.common.methodNotAllowed',\n  },\n  user_already_exists: {\n    status: 409,\n    message: 'errors.user.alreadyExists',\n  },\n  unprocessable_entity: {\n    status: 422,\n    message: 'errors.validation.unprocessable',\n  },\n  too_many_requests: {\n    status: 429,\n    message: 'errors.rateLimit.tooManyRequests',\n  },\n  internal_server_error: {\n    status: 500,\n    message: 'errors.server.internal',\n  },\n  not_implemented: {\n    status: 501,\n    message: 'errors.server.notImplemented',\n  },\n  bad_gateway: {\n    status: 502,\n    message: 'errors.server.badGateway',\n  },\n  service_unavailable: {\n    status: 503,\n    message: 'errors.server.serviceUnavailable',\n  },\n  gateway_timeout: {\n    status: 504,\n    message: 'errors.server.gatewayTimeout',\n  },\n} as const;\n\nexport const BASE_ERRORS_RESPONSE = {\n  ['InvalidInput']: {\n    type: 'form',\n    message: 'Invalid input',\n    timestamp: new Date().toISOString(),\n  },\n  [ERRORS_CODES.internal_server_error.status]: {\n    type: 'server',\n    message: 'Something went wrong',\n    timestamp: new Date().toISOString(),\n  },\n  [ERRORS_CODES.unauthorized.status]: {\n    type: 'auth',\n    message: 'Please log in again',\n    timestamp: new Date().toISOString(),\n  },\n};\n\n/**\n * Default event scopes for errors\n */\nexport const DEFAULT_ERROR_EVENT_SCOPES = [\n  'GLOBAL',\n  'CONFIG',\n  'CLIENT',\n  'REQUEST',\n  'TEMPORARY',\n] as const as EventScope[];\n","// levels of the loggers\nexport const LOGGER_LEVELS = {\n  trace: 10,\n  debug: 20,\n  info: 30,\n  warn: 40,\n  error: 50,\n  fatal: 60,\n};\n\n// Sensitive fields excluded from logs\nexport const SENSITIVE_DATA = ['email', 'password', 'wallet', 'token', 'secret', 'ssn'];\n\nexport const LOGGER_TRANSPORT_CONFIGURATION = [\n  {\n    target: 'pino-pretty',\n    options: {\n      colorize: true,\n    },\n  },\n];\n","/**\n * API Encryption Constants\n *\n * Centralized constants for API encryption configuration.\n * Uses Web Crypto API compatible algorithms.\n *\n * @module config/api/encryption\n */\n\nimport type {\n  EncryptionAlgorithm,\n  KeyFormat,\n  EncryptionKey,\n  EncryptionConfig,\n} from '@plyaz/types/api';\n\n/**\n * Default encryption configuration values for API clients\n */\nexport const API_ENCRYPTION_DEFAULTS = {\n  /** Default algorithm - AES-GCM is recommended for Web Crypto API */\n  ALGORITHM: 'AES-GCM' as EncryptionAlgorithm,\n\n  /** Default key format */\n  KEY_FORMAT: 'base64' as KeyFormat,\n\n  /** Default key ID for frontend clients */\n  FRONTEND_KEY_ID: 'frontend-key',\n\n  /** Default key ID for backend clients */\n  BACKEND_KEY_ID: 'backend-key',\n} as const;\n\n/**\n * Create a default encryption key configuration\n *\n * @param key - The encryption key (base64 encoded)\n * @param options - Optional overrides\n * @returns EncryptionKey configuration\n *\n * @example\n * ```ts\n * const encryptionKey = createDefaultEncryptionKey(process.env.API_ENCRYPTION_KEY!);\n * ```\n */\nexport function createDefaultEncryptionKey(\n  key: string,\n  options?: {\n    id?: string;\n    format?: KeyFormat;\n    algorithm?: EncryptionAlgorithm;\n  }\n): EncryptionKey {\n  return {\n    id: options?.id ?? API_ENCRYPTION_DEFAULTS.FRONTEND_KEY_ID,\n    key,\n    format: options?.format ?? API_ENCRYPTION_DEFAULTS.KEY_FORMAT,\n    algorithm: options?.algorithm ?? API_ENCRYPTION_DEFAULTS.ALGORITHM,\n  };\n}\n\n/**\n * Create the full encryption configuration for API clients\n *\n * @param key - The encryption key (base64 encoded)\n * @param options - Optional overrides for key and config\n * @returns Full EncryptionConfig ready for use\n *\n * @example\n * ```ts\n * // Basic usage\n * const encryptionConfig = createEncryptionConfig(process.env.API_ENCRYPTION_KEY!);\n *\n * // With overrides\n * const encryptionConfig = createEncryptionConfig(key, {\n *   algorithm: 'AES-CBC',\n *   keyId: 'custom-key-id',\n * });\n * ```\n */\nexport function createEncryptionConfig(\n  key: string,\n  options?: {\n    algorithm?: EncryptionAlgorithm;\n    keyId?: string;\n    keyFormat?: KeyFormat;\n  }\n): EncryptionConfig {\n  return {\n    enabled: true,\n    algorithm: options?.algorithm ?? API_ENCRYPTION_DEFAULTS.ALGORITHM,\n    key: createDefaultEncryptionKey(key, {\n      id: options?.keyId,\n      format: options?.keyFormat,\n      algorithm: options?.algorithm,\n    }),\n  };\n}\n","/**\n * API Client Environment Configurations\n *\n * Provides environment-specific default configurations for the API client service.\n * These configs are optimized for production, staging, and development environments.\n *\n * @module config/api/environments\n */\n\nimport type { ApiConfig, HeaderPresetName, EncryptionKey } from '@plyaz/types/api';\nimport { TIME_CONSTANTS } from '../time';\n\n/**\n * Production configuration for the API client service.\n * Optimized for reliability, security, and performance in production environments.\n *\n * Key Production Features:\n * - Encryption REQUIRED (enforced)\n * - Minimal headers (privacy-focused)\n * - Network adaptation enabled (auto-adjust to conditions)\n * - Balanced telemetry (monitoring without overhead)\n * - Aggressive retry strategy (5 attempts with exponential backoff)\n * - Uses retry PRESET strings instead of hardcoded values\n */\nexport const PRODUCTION_CONFIG: Partial<ApiConfig> = {\n  // Core settings\n  timeout: TIME_CONSTANTS.THIRTY_SECONDS,\n\n  // Unified strategy - includes cache, retry, performance strategies\n  // 'interactive' = standard cache + standard retry + balanced performance\n  unifiedStrategy: 'interactive',\n\n  // Revalidation strategy - NOT covered by unifiedStrategy\n  // Controls when to revalidate cached data (SWR pattern)\n  revalidationStrategy: 'balanced', // Revalidate on focus, network reconnect\n\n  // Error handling strategy - return {data, error} without throwing\n  strategy: 'softFail',\n\n  // Default JSON headers for most API interactions\n  headers: {\n    presets: ['json' as unknown as HeaderPresetName] as const, // Sets Accept and Content-Type to application/json\n    autoDetectNetwork: true,\n    requestClientHints: false,\n  },\n\n  // Enriched headers - minimal preset with GLOBAL compliance\n  // Adds ~5-7 headers: platform, app version, timezone, locale, network type\n  // Privacy-conscious: respects DNT, no device fingerprinting\n  // Global compliance: covers GDPR, CCPA, PIPL, APPI automatically\n  enrichedHeaders: {\n    enabled: true,\n    preset: 'standard', // standard context headers\n    includeDevice: false, // No device fingerprinting (privacy)\n    includeNetwork: true, // Network type (wifi/cellular/etc)\n    includePlatform: true, // Platform (web/ios/android)\n    includeCompliance: true, // Timezone, locale for regional compliance\n    respectDoNotTrack: true, // Honor DNT header (GDPR/CCPA)\n    autoDetectRegion: true, // Auto-detect region from timezone\n    regionalPreset: 'global', // Global compliance (GDPR+CCPA+PIPL+APPI)\n    useTimezone: true, // Use timezone for region detection\n  },\n\n  // Network awareness - monitoring enabled, WITH auto-adaptation\n  // Adjusts strategies based on network quality\n  networkAware: {\n    enabled: true, // Enable network quality monitoring\n    adaptConfig: true, // Auto-adjust strategies based on network\n    requestClientHints: false, // Don't request extra browser hints\n  },\n\n  // Tracking configuration - balanced for production (monitoring without overhead)\n  tracking: {\n    enabled: true,\n    operations: true,\n    events: true,\n    performanceMode: 'minimal', // Not 'full' - avoid overhead in prod\n    queueStrategy: 'batch',\n    eventStrategy: 'queued',\n    telemetry: true, // Send to monitoring in production\n  },\n\n  // Retry strategy - use preset instead of hardcoded values\n  retryStrategy: 'aggressive', // More retries for production reliability (5 attempts)\n  // Note: unifiedStrategy 'interactive' already includes 'standard' retry (3 attempts)\n  // This overrides it for production to be more aggressive\n\n  // Encryption - ENABLED by default for regulatory compliance (GDPR, CCPA, PIPL, etc.)\n  // Encrypts common sensitive fields automatically\n  // User MUST provide encryption key via init() - defaults don't include key\n  encryption: {\n    enabled: true,\n    algorithm: 'AES-GCM', // Industry standard, FIPS 140-2 compliant\n    autoDecrypt: true, // Auto-decrypt responses\n    target: ['all'], // Encrypt in request body and query params\n    // Key will be provided by user during initialization\n    key: undefined as unknown as EncryptionKey, // Placeholder - user must provide via apiConfig\n\n    // Common sensitive field patterns (uses glob matching)\n    // Covers: email, SSN, phone, card numbers, passwords, tokens, wallet addresses\n    fields: [\n      // Personal Identifiable Information (PII) - GDPR Art. 9\n      '*.email',\n      '*.ssn',\n      '*.taxId',\n      '*.nationalId',\n      '*.passport',\n      '*.driverLicense',\n      '*.governmentId',\n\n      // Contact Information - GDPR Art. 4(1)\n      '*.phone',\n      '*.phoneNumber',\n      '*.mobile',\n      '*.telephone',\n      '*.address.street',\n      '*.address.line1',\n      '*.address.line2',\n      '*.postalCode',\n      '*.zipCode',\n\n      // Financial Information - PCI-DSS Req 3.4\n      '*.cardNumber',\n      '*.creditCard',\n      '*.debitCard',\n      '*.cvv',\n      '*.cvc',\n      '*.iban',\n      '*.accountNumber',\n      '*.routingNumber',\n      '*.swiftCode',\n      '*.sortCode',\n\n      // Authentication Credentials - OWASP ASVS 2.1\n      '*.password',\n      '*.apiKey',\n      '*.secret',\n      '*.token',\n      '*.accessToken',\n      '*.refreshToken',\n      '*.privateKey',\n      '*.secretKey',\n\n      // Crypto/Blockchain - Web3 security\n      '*.wallet',\n      '*.walletAddress',\n      '*.mnemonic',\n      '*.seedPhrase',\n      '*.privateKeyHex',\n\n      // Health Information - HIPAA §164.312(a)(2)(iv)\n      '*.medicalRecord',\n      '*.medicalRecordNumber',\n      '*.healthInfo',\n      '*.diagnosis',\n      '*.prescription',\n      '*.healthInsurance',\n\n      // Biometric Data - GDPR Art. 9(1)\n      '*.fingerprint',\n      '*.faceId',\n      '*.biometric',\n\n      // Date of Birth - Age verification\n      '*.birthDate',\n      '*.dateOfBirth',\n      '*.dob',\n\n      // IP Addresses - GDPR considers PII\n      '*.ipAddress',\n      '*.ip',\n    ],\n\n    // Key provider - MUST be provided by user via init()\n    // Supports three patterns:\n    //\n    // 1. EncryptionKey object (with metadata):\n    //    key: {\n    //      id: 'prod-key-v1',\n    //      key: process.env.ENCRYPTION_KEY!,\n    //      algorithm: 'AES-GCM',\n    //      format: 'raw'\n    //    }\n    //\n    // 2. KeyProvider function (for key rotation):\n    //    key: async (context) => {\n    //      const keyId = await getActiveKeyId();\n    //      const key = await keyManagementService.getKey(keyId);\n    //      return { id: keyId, key, algorithm: 'AES-GCM' };\n    //    }\n    //\n    // 3. Simple string (auto-converted to EncryptionKey):\n    //    key: process.env.ENCRYPTION_KEY!\n    //\n    // NO default key - user provides via init()\n  },\n};\n\n/**\n * Staging configuration for the API client service.\n * ALIGNED with production for accurate pre-production testing.\n * Only differences: standard headers for debugging, full performance tracking.\n *\n * Key Staging Features:\n * - Encryption ENABLED (same as production)\n * - Standard headers (slightly more context for debugging than prod)\n * - Full performance tracking (catch issues before production)\n * - Same retry strategy as production (aggressive)\n * - Same network adaptation as production\n */\nexport const STAGING_CONFIG: Partial<ApiConfig> = {\n  // Core settings - SAME AS PRODUCTION\n  timeout: TIME_CONSTANTS.THIRTY_SECONDS,\n\n  // Unified strategy - SAME AS PRODUCTION\n  unifiedStrategy: 'interactive',\n\n  // Revalidation strategy - SAME AS PRODUCTION\n  revalidationStrategy: 'balanced',\n\n  // Error handling strategy - SAME AS PRODUCTION\n  strategy: 'softFail',\n\n  // Headers preset - SAME AS PRODUCTION\n  headers: {\n    presets: ['json' as unknown as HeaderPresetName] as const,\n    autoDetectNetwork: true,\n    requestClientHints: false, // Same as prod\n  },\n\n  // Enriched headers - SLIGHTLY MORE than prod for debugging\n  enrichedHeaders: {\n    enabled: true,\n    preset: 'standard', // One level up from prod's 'minimal'\n    includeDevice: true, // Include device info for debugging\n    includeNetwork: true,\n    includePlatform: true,\n    includeCompliance: true,\n    respectDoNotTrack: true, // Same as prod\n    autoDetectRegion: true,\n    regionalPreset: 'global', // Same as prod\n    useTimezone: true,\n  },\n\n  // Network awareness - SAME AS PRODUCTION\n  networkAware: {\n    enabled: true,\n    adaptConfig: true, // Same as prod\n    requestClientHints: false, // Same as prod\n  },\n\n  // Tracking configuration - FULL in staging (only difference from prod)\n  tracking: {\n    enabled: true,\n    operations: true,\n    events: true,\n    performanceMode: 'full', // Full tracking to catch issues (prod uses 'balanced')\n    queueStrategy: 'batch',\n    eventStrategy: 'queued',\n    telemetry: true, // Same as prod\n  },\n\n  // Retry strategy - SAME AS PRODUCTION\n  retryStrategy: 'aggressive', // Same aggressive retries as production\n  // Test production retry behavior in staging\n\n  // Encryption - SAME AS PRODUCTION (REQUIRED)\n  encryption: {\n    enabled: true, // REQUIRED in staging (same as prod)\n    algorithm: 'AES-GCM',\n    autoDecrypt: true,\n    target: ['all'],\n    key: undefined as unknown as EncryptionKey, // Placeholder - user must provide via apiConfig\n    fields: [\n      // Same 50+ fields as production\n      '*.email',\n      '*.ssn',\n      '*.taxId',\n      '*.nationalId',\n      '*.passport',\n      '*.driverLicense',\n      '*.governmentId',\n      '*.phone',\n      '*.phoneNumber',\n      '*.mobile',\n      '*.telephone',\n      '*.address.street',\n      '*.address.line1',\n      '*.address.line2',\n      '*.postalCode',\n      '*.zipCode',\n      '*.cardNumber',\n      '*.creditCard',\n      '*.debitCard',\n      '*.cvv',\n      '*.cvc',\n      '*.iban',\n      '*.accountNumber',\n      '*.routingNumber',\n      '*.swiftCode',\n      '*.sortCode',\n      '*.password',\n      '*.apiKey',\n      '*.secret',\n      '*.token',\n      '*.accessToken',\n      '*.refreshToken',\n      '*.privateKey',\n      '*.secretKey',\n      '*.wallet',\n      '*.walletAddress',\n      '*.mnemonic',\n      '*.seedPhrase',\n      '*.privateKeyHex',\n      '*.medicalRecord',\n      '*.medicalRecordNumber',\n      '*.healthInfo',\n      '*.diagnosis',\n      '*.prescription',\n      '*.healthInsurance',\n      '*.fingerprint',\n      '*.faceId',\n      '*.biometric',\n      '*.birthDate',\n      '*.dateOfBirth',\n      '*.dob',\n      '*.ipAddress',\n      '*.ip',\n    ],\n  },\n};\n\n/**\n * Development configuration for the API client service.\n * Optimized for debugging and fast feedback during development.\n *\n * Key Development Features:\n * - Encryption OPTIONAL (disable for easier debugging)\n * - Full headers (all context for debugging)\n * - No network adaptation (consistent behavior)\n * - Minimal retries (fail fast to see errors quickly)\n * - Full performance tracking (optimize during development)\n * - Longer timeout (allow for debugging/breakpoints)\n */\nexport const DEVELOPMENT_CONFIG: Partial<ApiConfig> = {\n  // Core settings - longer timeout for debugging\n  timeout: TIME_CONSTANTS.TWO_MINUTES,\n\n  // Unified strategy - interactive works well for dev\n  unifiedStrategy: 'interactive',\n\n  // Revalidation strategy\n  revalidationStrategy: 'balanced',\n\n  // Error handling strategy\n  strategy: 'softFail',\n\n  // Full headers preset for maximum debugging context\n  headers: {\n    presets: ['json' as unknown as HeaderPresetName] as const,\n    autoDetectNetwork: true,\n    requestClientHints: true,\n  },\n\n  // Enriched headers - FULL preset with all context\n  enrichedHeaders: {\n    enabled: true,\n    preset: 'full', // All possible headers for debugging\n    includeDevice: true, // Include everything\n    includeNetwork: true,\n    includePlatform: true,\n    includeCompliance: true,\n    includePerformance: true, // Performance hints\n    respectDoNotTrack: false, // Ignore DNT in dev\n    autoDetectRegion: true,\n    regionalPreset: 'global',\n    useTimezone: true,\n  },\n\n  // Network awareness - DISABLED (consistent behavior in dev)\n  networkAware: {\n    enabled: false, // Don't adapt config in dev\n    adaptConfig: false,\n    requestClientHints: false,\n  },\n\n  // Tracking configuration - FULL to see everything\n  tracking: {\n    enabled: true,\n    operations: true,\n    events: true,\n    performanceMode: 'full', // Track everything in dev\n    queueStrategy: 'immediate', // Process immediately (no batching)\n    eventStrategy: 'immediate', // Immediate events for debugging\n    telemetry: false, // Don't send to monitoring from dev\n  },\n\n  // Retry strategy - MINIMAL (fail fast to see errors)\n  retryStrategy: 'conservative', // Minimal retries (1 attempt) to see errors immediately\n  // Note: unifiedStrategy 'interactive' includes 'standard' retry (3 attempts)\n  // This overrides it for development to fail faster\n\n  // Encryption - DISABLED by default but with SAME fields as production\n  // This allows developers to test encryption locally when needed\n  encryption: {\n    enabled: false, // Disabled in dev by default (enable via apiConfig when testing)\n    algorithm: 'AES-GCM',\n    autoDecrypt: true,\n    target: ['all'],\n\n    // NO default key in development - encryption is disabled\n    // To test encryption locally, pass key via apiConfig:\n    //   encryption: {\n    //     enabled: true,\n    //     key: \"your-test-key\" // Auto-converted to EncryptionKey\n    //     // Or use EncryptionKey object:\n    //     // key: { id: \"test-1\", key: \"your-key\", algorithm: \"AES-GCM\" }\n    //   }\n    key: undefined as unknown as EncryptionKey, // Placeholder - encryption disabled in development\n\n    // Same 50+ fields as production for testing\n    fields: [\n      '*.email',\n      '*.ssn',\n      '*.taxId',\n      '*.nationalId',\n      '*.passport',\n      '*.driverLicense',\n      '*.governmentId',\n      '*.phone',\n      '*.phoneNumber',\n      '*.mobile',\n      '*.telephone',\n      '*.address.street',\n      '*.address.line1',\n      '*.address.line2',\n      '*.postalCode',\n      '*.zipCode',\n      '*.cardNumber',\n      '*.creditCard',\n      '*.debitCard',\n      '*.cvv',\n      '*.cvc',\n      '*.iban',\n      '*.accountNumber',\n      '*.routingNumber',\n      '*.swiftCode',\n      '*.sortCode',\n      '*.password',\n      '*.apiKey',\n      '*.secret',\n      '*.token',\n      '*.accessToken',\n      '*.refreshToken',\n      '*.privateKey',\n      '*.secretKey',\n      '*.wallet',\n      '*.walletAddress',\n      '*.mnemonic',\n      '*.seedPhrase',\n      '*.privateKeyHex',\n      '*.medicalRecord',\n      '*.medicalRecordNumber',\n      '*.healthInfo',\n      '*.diagnosis',\n      '*.prescription',\n      '*.healthInsurance',\n      '*.fingerprint',\n      '*.faceId',\n      '*.biometric',\n      '*.birthDate',\n      '*.dateOfBirth',\n      '*.dob',\n      '*.ipAddress',\n      '*.ip',\n    ],\n  },\n};\n","import type { ApiClientOptions, ApiConfig } from '@plyaz/types/api';\nimport { TIME_CONSTANTS } from '../../time/constants';\n\n/**\n * Default configuration for API clients\n *\n * These defaults provide sensible out-of-the-box behavior:\n * - 30 second timeout for requests\n * - 3 retry attempts with exponential backoff\n * - 60 second cache TTL with 5 minute stale time\n * - Standard JSON content-type headers\n * - Soft-fail error strategy (returns error without throwing)\n */\nexport const DEFAULT_API_CONFIG: ApiConfig = {\n  baseURL: '',\n  timeout: TIME_CONSTANTS.THIRTY_SECONDS,\n  retry: {\n    attempts: 3,\n    delay: TIME_CONSTANTS.SECOND,\n    maxDelay: TIME_CONSTANTS.THIRTY_SECONDS,\n    backoff: 1.5,\n  },\n  cache: {\n    ttl: 60,\n    stale: 300,\n  },\n  headers: {\n    'Content-Type': 'application/json',\n    Accept: 'application/json',\n  },\n  strategy: 'softFail',\n};\n\n/**\n * Default client options with global compliance enabled by default\n *\n * This ensures maximum privacy protection out of the box:\n * - Enriched headers enabled with standard preset\n * - Global compliance level (minimum data collection)\n */\nexport const DEFAULT_API_CLIENT_OPTIONS: Partial<ApiClientOptions> = {\n  enrichedHeaders: {\n    enabled: true,\n    preset: 'standard', // Uses 'global' compliance by default\n  },\n};\n","export const SUPABASE_CONFIG = {\n  SUPABASE_URL: globalThis.process?.env?.NEXT_PUBLIC_SUPABASE_URL ?? '',\n  SUPABASE_ANON_KEY: globalThis.process?.env?.NEXT_PUBLIC_SUPABASE_ANON_KEY ?? '',\n};\n\nexport const CLERK_PUBLISHABLE_KEY =\n  globalThis.process?.env?.NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY ?? '';\n","/**\n * Notification Configuration Constants\n *\n * Default configuration values for the notifications system.\n * These can be overridden at runtime through configuration objects.\n *\n * @module src/notifications/constants\n */\n\n// Import type-level constants from @plyaz/types\nimport { NOTIFICATION_CATEGORIES } from '@plyaz/types';\n\n// Import byte calculation constants from @plyaz/config/math\nimport { NUMBER_SYSTEM } from '../math/constants';\n\n// Common size values in MB\nconst SIZE_25_MB = 25;\nconst SIZE_30_MB = 30;\n\n/**\n * Default notification category\n * Safest default for compliance - transactional emails must always be sent\n */\nexport const DEFAULT_NOTIFICATION_CATEGORY = NOTIFICATION_CATEGORIES.TRANSACTIONAL;\n\n/**\n * Retry Configuration\n */\nexport const RETRY_CONFIG = {\n  /**\n   * Default maximum number of retry attempts\n   * Used when no specific retry count is provided\n   */\n  DEFAULT_MAX_ATTEMPTS: 3,\n\n  /**\n   * Default initial delay between retries (milliseconds)\n   * Used for exponential backoff calculation\n   */\n  DEFAULT_INITIAL_DELAY_MS: 1000,\n\n  /**\n   * Maximum delay between retries (milliseconds)\n   * Prevents exponential backoff from growing too large\n   */\n  MAX_DELAY_MS: 30000,\n\n  /**\n   * Backoff multiplier for exponential backoff\n   * Each retry delay = previous delay * multiplier\n   */\n  BACKOFF_MULTIPLIER: 2,\n} as const;\n\n/**\n * Attachment Configuration\n */\nexport const ATTACHMENT_CONFIG = {\n  /**\n   * Default maximum number of attachments per notification\n   */\n  DEFAULT_MAX_ATTACHMENTS: 10,\n\n  /**\n   * Default maximum size per attachment (bytes)\n   * 25MB - Common limit across providers\n   */\n  DEFAULT_MAX_SIZE_PER_ATTACHMENT: SIZE_25_MB * NUMBER_SYSTEM.BYTES_PER_MB,\n\n  /**\n   * Default maximum total size of all attachments (bytes)\n   * 25MB - Ensures we don't exceed provider limits\n   */\n  DEFAULT_MAX_TOTAL_SIZE: SIZE_25_MB * NUMBER_SYSTEM.BYTES_PER_MB,\n\n  /**\n   * Maximum attachment size for SendGrid (bytes)\n   * 30MB per SendGrid documentation\n   */\n  SENDGRID_MAX_SIZE: SIZE_30_MB * NUMBER_SYSTEM.BYTES_PER_MB,\n\n  /**\n   * Maximum total attachment size for SendGrid (bytes)\n   * 30MB per SendGrid documentation\n   */\n  SENDGRID_MAX_TOTAL_SIZE: SIZE_30_MB * NUMBER_SYSTEM.BYTES_PER_MB,\n\n  /**\n   * Maximum attachment size for Infobip (bytes)\n   * 30MB - matching SendGrid for consistency\n   */\n  INFOBIP_MAX_SIZE: SIZE_30_MB * NUMBER_SYSTEM.BYTES_PER_MB,\n\n  /**\n   * Maximum total attachment size for Infobip (bytes)\n   * 30MB - matching SendGrid for consistency\n   */\n  INFOBIP_MAX_TOTAL_SIZE: SIZE_30_MB * NUMBER_SYSTEM.BYTES_PER_MB,\n\n  /**\n   * Default timeout for URL attachment fetching (milliseconds)\n   */\n  URL_FETCH_TIMEOUT_MS: 30000,\n\n  /**\n   * Maximum number of retry attempts for failed URL fetches\n   */\n  URL_FETCH_MAX_RETRIES: 3,\n} as const;\n\n/**\n * Circuit Breaker Configuration\n */\nexport const CIRCUIT_BREAKER_CONFIG = {\n  /**\n   * Default failure threshold before opening circuit\n   * Circuit opens after this many consecutive failures\n   */\n  DEFAULT_FAILURE_THRESHOLD: 5,\n\n  /**\n   * Default timeout before attempting half-open state (milliseconds)\n   * How long to wait before testing if provider has recovered\n   */\n  DEFAULT_TIMEOUT_MS: 60000,\n\n  /**\n   * Default success threshold in half-open state\n   * Number of successful requests needed to close circuit\n   */\n  DEFAULT_SUCCESS_THRESHOLD: 2,\n} as const;\n\n/**\n * Queue Configuration\n */\nexport const QUEUE_CONFIG = {\n  /**\n   * Default maximum queue size\n   */\n  DEFAULT_MAX_SIZE: 10000,\n\n  /**\n   * Default number of concurrent workers\n   */\n  DEFAULT_CONCURRENCY: 5,\n\n  /**\n   * Default queue processing interval (milliseconds)\n   */\n  DEFAULT_PROCESSING_INTERVAL_MS: 100,\n} as const;\n\n/**\n * Rate Limiting Configuration\n */\nexport const RATE_LIMIT_CONFIG = {\n  /**\n   * Default requests per second per provider\n   */\n  DEFAULT_REQUESTS_PER_SECOND: 10,\n\n  /**\n   * Default burst allowance\n   * Number of requests that can be sent in a burst\n   */\n  DEFAULT_BURST_ALLOWANCE: 20,\n\n  /**\n   * Default window size for rate limiting (milliseconds)\n   */\n  DEFAULT_WINDOW_MS: 1000,\n} as const;\n\n/**\n * Template Configuration\n */\nexport const TEMPLATE_CONFIG = {\n  /**\n   * Default locale for templates\n   */\n  DEFAULT_LOCALE: 'en',\n\n  /**\n   * Fallback locale when requested locale not found\n   */\n  FALLBACK_LOCALE: 'en',\n\n  /**\n   * Template cache TTL (milliseconds)\n   * How long to cache compiled templates\n   */\n  CACHE_TTL_MS: 300000, // 5 minutes\n\n  /**\n   * Maximum template size (bytes)\n   */\n  MAX_TEMPLATE_SIZE: NUMBER_SYSTEM.BYTES_PER_MB, // 1MB\n} as const;\n\n/**\n * SMS Character Limits and Encoding\n * Based on GSM-7 and UCS-2 encoding standards\n */\nexport const SMS_CONFIG = {\n  /**\n   * Single SMS message limit for GSM-7 encoding (standard characters)\n   * Includes: A-Z, a-z, 0-9, and basic punctuation\n   */\n  GSM7_SINGLE_MESSAGE_LIMIT: 160,\n\n  /**\n   * Multi-part SMS message segment limit for GSM-7 encoding\n   * Each segment in a concatenated message is limited to 153 characters (7 chars for UDH)\n   */\n  GSM7_MULTI_PART_SEGMENT_LIMIT: 153,\n\n  /**\n   * Single SMS message limit for UCS-2 encoding (unicode characters)\n   * Used when message contains emoji, non-Latin characters, etc.\n   */\n  UCS2_SINGLE_MESSAGE_LIMIT: 70,\n\n  /**\n   * Multi-part SMS message segment limit for UCS-2 encoding\n   * Each segment in a concatenated message is limited to 67 characters\n   */\n  UCS2_MULTI_PART_SEGMENT_LIMIT: 67,\n\n  /**\n   * Maximum number of SMS segments to allow\n   * Prevents accidentally sending very expensive multi-part messages\n   */\n  DEFAULT_MAX_SEGMENTS: 10,\n\n  /**\n   * Warning threshold (percentage of limit)\n   * Emit warning when message reaches this percentage of the limit\n   */\n  WARNING_THRESHOLD_PERCENTAGE: 90,\n} as const;\n\n/**\n * Notification Configuration\n */\nexport const NOTIFICATION_CONFIG = {\n  /**\n   * Default notification priority\n   */\n  DEFAULT_PRIORITY: 'normal' as const,\n\n  /**\n   * Maximum subject line length\n   */\n  MAX_SUBJECT_LENGTH: 255,\n\n  /**\n   * Maximum push notification title length\n   */\n  MAX_PUSH_TITLE_LENGTH: 100,\n\n  /**\n   * Maximum push notification body length\n   */\n  MAX_PUSH_BODY_LENGTH: 500,\n} as const;\n\n/**\n * Logging Configuration\n */\nexport const LOGGING_CONFIG = {\n  /**\n   * Default log level\n   */\n  DEFAULT_LEVEL: 'info' as const,\n\n  /**\n   * Maximum log message size (bytes)\n   * Prevents excessive log sizes\n   */\n  MAX_LOG_SIZE: 10000,\n} as const;\n\n/**\n * Health Check Configuration\n */\nexport const HEALTH_CHECK_CONFIG = {\n  /**\n   * Default health check interval (milliseconds)\n   */\n  DEFAULT_INTERVAL_MS: 30000,\n\n  /**\n   * Default health check timeout (milliseconds)\n   */\n  DEFAULT_TIMEOUT_MS: 5000,\n\n  /**\n   * Maximum acceptable latency (milliseconds)\n   * Health check fails if latency exceeds this\n   */\n  MAX_ACCEPTABLE_LATENCY_MS: 2000,\n} as const;\n\n/**\n * Export all configuration as a single object for convenience\n */\nexport const NOTIFICATION_PACKAGE_CONFIG = {\n  RETRY: RETRY_CONFIG,\n  ATTACHMENT: ATTACHMENT_CONFIG,\n  CIRCUIT_BREAKER: CIRCUIT_BREAKER_CONFIG,\n  QUEUE: QUEUE_CONFIG,\n  RATE_LIMIT: RATE_LIMIT_CONFIG,\n  TEMPLATE: TEMPLATE_CONFIG,\n  SMS: SMS_CONFIG,\n  NOTIFICATION: NOTIFICATION_CONFIG,\n  LOGGING: LOGGING_CONFIG,\n  HEALTH_CHECK: HEALTH_CHECK_CONFIG,\n} as const;\n","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","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  /** **Can accept Pix instant payments (Brazil).** */\n  canAcceptPix: true,\n  /** **Can accept Boleto Bancário payments (Brazil).** */\n  canAcceptBoleto: true,\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","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","/**\n * Storage Configuration Constants\n *\n * Default configuration values for the storage system.\n * These can be overridden at runtime through configuration objects.\n *\n * @module src/storage/constants\n */\n\n// Import type-level constants from @plyaz/types\nimport {\n  ADAPTER_HEALTH_STATUS,\n  FILE_ACCESS_LEVEL,\n  PATH_GENERATION_STRATEGY,\n  STORAGE_QUEUE_PRIORITY,\n  RETRY_STRATEGY,\n} from '@plyaz/types';\n\n// Import byte calculation constants from @plyaz/config/math\nimport { NUMBER_SYSTEM } from '../math/constants';\n\n// Common size values in MB and GB\nconst SIZE_5_MB = 5;\nconst SIZE_10_MB = 10;\nconst SIZE_25_MB = 25;\nconst SIZE_50_MB = 50;\nconst SIZE_100_MB = 100;\nconst SIZE_500_MB = 500;\nconst SIZE_1_GB = 1;\n/**\n * File Validation Configuration\n */\nexport const FILE_VALIDATION_CONFIG = {\n  /**\n   * Default maximum file size (bytes)\n   * 100MB - reasonable default for most applications\n   */\n  DEFAULT_MAX_FILE_SIZE: SIZE_100_MB * NUMBER_SYSTEM.BYTES_PER_MB,\n\n  /**\n   * Default minimum file size (bytes)\n   * 1 byte - allow any non-empty file\n   */\n  DEFAULT_MIN_FILE_SIZE: 1,\n\n  /**\n   * Maximum file size for images (bytes)\n   * 25MB - covers high-resolution images\n   */\n  IMAGE_MAX_SIZE: SIZE_25_MB * NUMBER_SYSTEM.BYTES_PER_MB,\n\n  /**\n   * Maximum file size for videos (bytes)\n   * 500MB - allows reasonable quality videos\n   */\n  VIDEO_MAX_SIZE: SIZE_500_MB * NUMBER_SYSTEM.BYTES_PER_MB,\n\n  /**\n   * Maximum file size for documents (bytes)\n   * 50MB - covers most document types including PDFs\n   */\n  DOCUMENT_MAX_SIZE: SIZE_50_MB * NUMBER_SYSTEM.BYTES_PER_MB,\n\n  /**\n   * Maximum file size for audio (bytes)\n   * 100MB - allows high-quality audio files\n   */\n  AUDIO_MAX_SIZE: SIZE_100_MB * NUMBER_SYSTEM.BYTES_PER_MB,\n\n  /**\n   * Maximum file size for archives (bytes)\n   * 1GB - allows compressed collections\n   */\n  ARCHIVE_MAX_SIZE: SIZE_1_GB * NUMBER_SYSTEM.BYTES_PER_GB,\n\n  /**\n   * Default allowed MIME types for images\n   */\n  DEFAULT_ALLOWED_IMAGE_TYPES: [\n    'image/jpeg',\n    'image/jpg',\n    'image/png',\n    'image/gif',\n    'image/webp',\n    'image/avif',\n    'image/svg+xml',\n  ],\n\n  /**\n   * Default allowed MIME types for videos\n   */\n  DEFAULT_ALLOWED_VIDEO_TYPES: [\n    'video/mp4',\n    'video/mpeg',\n    'video/quicktime',\n    'video/x-msvideo',\n    'video/webm',\n  ],\n\n  /**\n   * Default allowed MIME types for documents\n   */\n  DEFAULT_ALLOWED_DOCUMENT_TYPES: [\n    'application/pdf',\n    'application/msword',\n    'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n    'application/vnd.ms-excel',\n    'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n    'text/plain',\n    'text/csv',\n  ],\n\n  /**\n   * Default allowed MIME types for audio\n   */\n  DEFAULT_ALLOWED_AUDIO_TYPES: ['audio/mpeg', 'audio/mp3', 'audio/wav', 'audio/ogg', 'audio/webm'],\n\n  /**\n   * Blocked executable extensions\n   */\n  BLOCKED_EXECUTABLE_EXTENSIONS: [\n    '.exe',\n    '.bat',\n    '.cmd',\n    '.com',\n    '.sh',\n    '.bash',\n    '.ps1',\n    '.app',\n    '.deb',\n    '.rpm',\n    '.dmg',\n    '.pkg',\n    '.msi',\n  ],\n} as const;\n\n/**\n * Storage Retry Configuration\n */\nexport const STORAGE_RETRY_CONFIG = {\n  /**\n   * Default retry strategy\n   */\n  DEFAULT_STRATEGY: RETRY_STRATEGY.ExponentialBackoff,\n\n  /**\n   * Default maximum number of retry attempts\n   */\n  DEFAULT_MAX_ATTEMPTS: 3,\n\n  /**\n   * Default initial delay between retries (milliseconds)\n   */\n  DEFAULT_INITIAL_DELAY_MS: 1000,\n\n  /**\n   * Maximum delay between retries (milliseconds)\n   */\n  MAX_DELAY_MS: 30000,\n\n  /**\n   * Backoff multiplier for exponential backoff\n   */\n  BACKOFF_MULTIPLIER: 2,\n} as const;\n\n/**\n * Path Generation Configuration\n */\nexport const PATH_GENERATION_CONFIG = {\n  /**\n   * Default path generation strategy\n   */\n  DEFAULT_STRATEGY: PATH_GENERATION_STRATEGY.HashBased,\n\n  /**\n   * Whether to include hash in path by default\n   */\n  DEFAULT_INCLUDE_HASH: true,\n\n  /**\n   * Whether to include timestamp in path by default\n   */\n  DEFAULT_INCLUDE_TIMESTAMP: false,\n\n  /**\n   * Default path template for entity-based strategy\n   * Supports: {entityType}, {entityId}, {category}, {filename}, {hash}, {timestamp}\n   */\n  DEFAULT_ENTITY_TEMPLATE: '{entityType}/{entityId}/{category}/{filename}',\n\n  /**\n   * Default path template for date-based strategy\n   */\n  DEFAULT_DATE_TEMPLATE: '{year}/{month}/{day}/{filename}',\n\n  /**\n   * Default path template for category-based strategy\n   */\n  DEFAULT_CATEGORY_TEMPLATE: '{category}/{filename}',\n} as const;\n\n/**\n * Storage Queue Configuration\n */\nexport const STORAGE_QUEUE_CONFIG = {\n  /**\n   * Default maximum queue size\n   */\n  DEFAULT_MAX_SIZE: 10000,\n\n  /**\n   * Default number of concurrent workers\n   */\n  DEFAULT_CONCURRENCY: 5,\n\n  /**\n   * Default queue priority\n   */\n  DEFAULT_PRIORITY: STORAGE_QUEUE_PRIORITY.NORMAL,\n\n  /**\n   * Default maximum retries for queue items\n   */\n  DEFAULT_MAX_RETRIES: 3,\n\n  /**\n   * Default retry delay for failed queue items (milliseconds)\n   */\n  DEFAULT_RETRY_DELAY_MS: 5000,\n} as const;\n\n/**\n * Adapter Configuration\n */\nexport const ADAPTER_CONFIG = {\n  /**\n   * Default adapter priority\n   */\n  DEFAULT_PRIORITY: 1,\n\n  /**\n   * Default health check interval (milliseconds)\n   */\n  DEFAULT_HEALTH_CHECK_INTERVAL_MS: 30000,\n\n  /**\n   * Default health check timeout (milliseconds)\n   */\n  DEFAULT_HEALTH_CHECK_TIMEOUT_MS: 5000,\n\n  /**\n   * Default healthy status\n   */\n  DEFAULT_HEALTH_STATUS: ADAPTER_HEALTH_STATUS.UNKNOWN,\n\n  /**\n   * Maximum acceptable health check response time (milliseconds)\n   */\n  MAX_ACCEPTABLE_RESPONSE_TIME_MS: 2000,\n} as const;\n\n/**\n * Upload Configuration\n */\nexport const UPLOAD_CONFIG = {\n  /**\n   * Default maximum concurrent uploads\n   */\n  DEFAULT_MAX_CONCURRENT: 3,\n\n  /**\n   * Maximum allowed concurrent uploads (hard limit)\n   */\n  MAX_CONCURRENT: 10,\n\n  /**\n   * Default upload timeout (milliseconds)\n   * 5 minutes for large files\n   */\n  DEFAULT_TIMEOUT_MS: 300000,\n\n  /**\n   * Default chunk size for chunked uploads (bytes)\n   * 5MB per chunk\n   */\n  DEFAULT_CHUNK_SIZE: SIZE_5_MB * NUMBER_SYSTEM.BYTES_PER_MB,\n\n  /**\n   * Minimum file size to trigger chunked upload (bytes)\n   * 50MB - files larger than this use chunked upload\n   */\n  CHUNKED_UPLOAD_THRESHOLD: SIZE_50_MB * NUMBER_SYSTEM.BYTES_PER_MB,\n\n  /**\n   * Maximum number of upload retries\n   */\n  MAX_UPLOAD_RETRIES: 3,\n\n  /**\n   * Whether to extract metadata by default\n   */\n  DEFAULT_EXTRACT_METADATA: true,\n\n  /**\n   * Whether to scan for viruses by default\n   */\n  DEFAULT_VIRUS_SCAN: false,\n\n  /**\n   * Default file access level\n   */\n  DEFAULT_ACCESS_LEVEL: FILE_ACCESS_LEVEL.PRIVATE,\n} as const;\n\n/**\n * Download Configuration\n */\nexport const DOWNLOAD_CONFIG = {\n  /**\n   * Default download timeout (milliseconds)\n   */\n  DEFAULT_TIMEOUT_MS: 120000, // 2 minutes\n\n  /**\n   * Default signed URL expiry (seconds)\n   * 1 hour\n   */\n  DEFAULT_SIGNED_URL_EXPIRY_SECONDS: 3600,\n\n  /**\n   * Maximum signed URL expiry (seconds)\n   * 7 days\n   */\n  MAX_SIGNED_URL_EXPIRY_SECONDS: 604800,\n\n  /**\n   * Minimum signed URL expiry (seconds)\n   * 5 minutes\n   */\n  MIN_SIGNED_URL_EXPIRY_SECONDS: 300,\n} as const;\n\n/**\n * Media Processing Configuration\n */\nexport const MEDIA_PROCESSING_CONFIG = {\n  /**\n   * Default image quality (1-100)\n   */\n  DEFAULT_IMAGE_QUALITY: 85,\n\n  /**\n   * Default thumbnail width (pixels)\n   */\n  DEFAULT_THUMBNAIL_WIDTH: 200,\n\n  /**\n   * Default thumbnail height (pixels)\n   */\n  DEFAULT_THUMBNAIL_HEIGHT: 200,\n\n  /**\n   * Default image format for conversion\n   */\n  DEFAULT_IMAGE_FORMAT: 'jpeg' as const,\n\n  /**\n   * Maximum processing timeout (milliseconds)\n   * 10 minutes for complex media processing\n   */\n  MAX_PROCESSING_TIMEOUT_MS: 600000,\n\n  /**\n   * Maximum image dimensions (pixels)\n   */\n  MAX_IMAGE_DIMENSIONS: 10000,\n\n  /**\n   * Whether to generate thumbnails by default\n   */\n  DEFAULT_GENERATE_THUMBNAIL: true,\n} as const;\n\n/**\n * Virus Scan Configuration\n */\nexport const VIRUS_SCAN_CONFIG = {\n  /**\n   * Maximum file size to scan (bytes)\n   * 100MB - VirusTotal free tier limit\n   */\n  MAX_SCAN_SIZE: SIZE_100_MB * NUMBER_SYSTEM.BYTES_PER_MB,\n\n  /**\n   * Whether to fail upload on virus detection\n   */\n  FAIL_ON_DETECTION: true,\n\n  /**\n   * Scan timeout (milliseconds)\n   */\n  SCAN_TIMEOUT_MS: 60000, // 1 minute\n} as const;\n\n/**\n * Compliance Configuration\n */\nexport const COMPLIANCE_CONFIG = {\n  /**\n   * Default retention period (days)\n   */\n  DEFAULT_RETENTION_DAYS: 365,\n\n  /**\n   * Whether files are immutable by default\n   */\n  DEFAULT_IMMUTABLE: false,\n\n  /**\n   * Whether to auto-delete after retention expires\n   */\n  DEFAULT_AUTO_DELETE: false,\n\n  /**\n   * Retention check interval (milliseconds)\n   * Check daily\n   */\n  RETENTION_CHECK_INTERVAL_MS: 86400000, // 24 hours\n} as const;\n\n/**\n * Storage Template & PDF Configuration\n */\nexport const STORAGE_TEMPLATE_CONFIG = {\n  /**\n   * Default PDF format\n   */\n  DEFAULT_PDF_FORMAT: 'A4' as const,\n\n  /**\n   * Default PDF orientation\n   */\n  DEFAULT_PDF_ORIENTATION: 'portrait' as const,\n\n  /**\n   * Default PDF margin\n   */\n  DEFAULT_PDF_MARGIN: {\n    top: '20mm',\n    right: '15mm',\n    bottom: '20mm',\n    left: '15mm',\n  },\n\n  /**\n   * Whether to print background by default\n   */\n  DEFAULT_PRINT_BACKGROUND: true,\n\n  /**\n   * Default PDF scale\n   */\n  DEFAULT_PDF_SCALE: 1,\n\n  /**\n   * Minimum PDF scale factor\n   */\n  PDF_SCALE_MIN: 0.1,\n\n  /**\n   * Maximum PDF scale factor\n   */\n  PDF_SCALE_MAX: 2,\n\n  /**\n   * PDF generation timeout (milliseconds)\n   */\n  PDF_GENERATION_TIMEOUT_MS: 60000, // 1 minute\n\n  /**\n   * Maximum template size (bytes)\n   */\n  MAX_TEMPLATE_SIZE: NUMBER_SYSTEM.BYTES_PER_MB, // 1MB\n} as const;\n\n/**\n * Share Link Configuration\n */\nexport const SHARE_LINK_CONFIG = {\n  /**\n   * Default share link expiry (seconds)\n   * 7 days\n   */\n  DEFAULT_EXPIRY_SECONDS: 604800,\n\n  /**\n   * Maximum share link expiry (seconds)\n   * 30 days\n   */\n  MAX_EXPIRY_SECONDS: 2592000,\n\n  /**\n   * Default maximum downloads per share link\n   */\n  DEFAULT_MAX_DOWNLOADS: 100,\n\n  /**\n   * Whether to require password by default\n   */\n  DEFAULT_REQUIRE_PASSWORD: false,\n} as const;\n\n/**\n * TTL Configuration\n */\nexport const TTL_CONFIG = {\n  /**\n   * Default TTL for temporary files (seconds)\n   * 24 hours\n   */\n  DEFAULT_TTL_SECONDS: 86400,\n\n  /**\n   * TTL cleanup interval (milliseconds)\n   * Check every hour\n   */\n  CLEANUP_INTERVAL_MS: 3600000,\n\n  /**\n   * Grace period before actual deletion (milliseconds)\n   * 1 hour buffer\n   */\n  DELETION_GRACE_PERIOD_MS: 3600000,\n} as const;\n\n/**\n * CORS Configuration\n */\nexport const CORS_CONFIG = {\n  /**\n   * Default allowed origins\n   */\n  DEFAULT_ALLOWED_ORIGINS: ['*'],\n\n  /**\n   * Default allowed methods\n   */\n  DEFAULT_ALLOWED_METHODS: ['GET', 'POST', 'PUT', 'DELETE', 'HEAD'],\n\n  /**\n   * Default allowed headers\n   */\n  DEFAULT_ALLOWED_HEADERS: [\n    'Content-Type',\n    'Authorization',\n    'X-Requested-With',\n    'X-Upload-Content-Type',\n    'X-Upload-Content-Length',\n  ],\n\n  /**\n   * Default exposed headers\n   */\n  DEFAULT_EXPOSED_HEADERS: ['ETag', 'Content-Length', 'Content-Type', 'Last-Modified'],\n\n  /**\n   * Default max age (seconds)\n   */\n  DEFAULT_MAX_AGE_SECONDS: 3600,\n\n  /**\n   * Whether to allow credentials by default\n   */\n  DEFAULT_ALLOW_CREDENTIALS: false,\n} as const;\n\n/**\n * Audit Log Configuration\n */\nexport const AUDIT_CONFIG = {\n  /**\n   * Whether to log uploads by default\n   */\n  DEFAULT_LOG_UPLOADS: true,\n\n  /**\n   * Whether to log downloads by default\n   */\n  DEFAULT_LOG_DOWNLOADS: true,\n\n  /**\n   * Whether to log deletes by default\n   */\n  DEFAULT_LOG_DELETES: true,\n\n  /**\n   * Audit log retention period (days)\n   */\n  LOG_RETENTION_DAYS: 365,\n\n  /**\n   * Maximum audit log size per file (bytes)\n   */\n  MAX_LOG_SIZE: SIZE_10_MB * NUMBER_SYSTEM.BYTES_PER_MB,\n} as const;\n\n/**\n * CDN Invalidation Configuration\n */\nexport const CDN_CONFIG = {\n  /**\n   * Default invalidation timeout (milliseconds)\n   */\n  DEFAULT_INVALIDATION_TIMEOUT_MS: 30000,\n\n  /**\n   * Maximum batch size for invalidation\n   */\n  MAX_INVALIDATION_BATCH_SIZE: 100,\n\n  /**\n   * Invalidation retry attempts\n   */\n  INVALIDATION_MAX_RETRIES: 3,\n} as const;\n\n/**\n * Monitoring Configuration\n */\nexport const MONITORING_CONFIG = {\n  /**\n   * Metrics collection interval (milliseconds)\n   */\n  METRICS_INTERVAL_MS: 60000, // 1 minute\n\n  /**\n   * Whether to track upload progress by default\n   */\n  DEFAULT_TRACK_PROGRESS: true,\n\n  /**\n   * Progress update interval (milliseconds)\n   */\n  PROGRESS_UPDATE_INTERVAL_MS: 500,\n} as const;\n\n/**\n * Cloudflare R2 Configuration\n */\nexport const CLOUDFLARE_R2_CONFIG = {\n  /**\n   * Default region\n   */\n  DEFAULT_REGION: 'auto' as const,\n\n  /**\n   * Default endpoint format\n   */\n  DEFAULT_ENDPOINT_FORMAT: 'https://{accountId}.r2.cloudflarestorage.com',\n} as const;\n\n/**\n * Supabase Storage Configuration\n */\nexport const SUPABASE_STORAGE_CONFIG = {\n  /**\n   * Default bucket name\n   */\n  DEFAULT_BUCKET: 'uploads',\n\n  /**\n   * Upload upsert by default\n   */\n  DEFAULT_UPSERT: false,\n} as const;\n\n/**\n * Export all configuration as a single object for convenience\n */\nexport const STORAGE_PACKAGE_CONFIG = {\n  FILE_VALIDATION: FILE_VALIDATION_CONFIG,\n  RETRY: STORAGE_RETRY_CONFIG,\n  PATH_GENERATION: PATH_GENERATION_CONFIG,\n  QUEUE: STORAGE_QUEUE_CONFIG,\n  ADAPTER: ADAPTER_CONFIG,\n  UPLOAD: UPLOAD_CONFIG,\n  DOWNLOAD: DOWNLOAD_CONFIG,\n  MEDIA_PROCESSING: MEDIA_PROCESSING_CONFIG,\n  VIRUS_SCAN: VIRUS_SCAN_CONFIG,\n  COMPLIANCE: COMPLIANCE_CONFIG,\n  TEMPLATE: STORAGE_TEMPLATE_CONFIG,\n  SHARE_LINK: SHARE_LINK_CONFIG,\n  TTL: TTL_CONFIG,\n  CORS: CORS_CONFIG,\n  AUDIT: AUDIT_CONFIG,\n  CDN: CDN_CONFIG,\n  MONITORING: MONITORING_CONFIG,\n  CLOUDFLARE_R2: CLOUDFLARE_R2_CONFIG,\n  SUPABASE_STORAGE: SUPABASE_STORAGE_CONFIG,\n} as const;\n","/**\n * Storage Default Configurations\n *\n * Sensible default configurations for the storage system.\n * These defaults provide production-ready compliance and operational behavior.\n *\n * @module src/storage/defaults\n */\n\nimport type {\n  StorageComplianceConfig,\n  StorageRetentionPolicy,\n  StoragePresetConfig,\n  StorageVariantConfig,\n} from '@plyaz/types';\nimport {\n  STORAGE_JURISDICTION,\n  STORAGE_REGULATORY_FRAMEWORK,\n  FILE_CATEGORY,\n  STORAGE_VARIANT_NAME,\n  STORAGE_DEVICE_TYPE,\n} from '@plyaz/types';\n\n/**\n * Default retention policy - FINANCE/CRYPTO FOCUSED\n *\n * - 7 years retention (financial/tax compliance requirement)\n * - Soft delete enabled with 60-day grace period\n * - Not immutable by default (allows correction of errors)\n * - Financial industry standard retention\n *\n * This policy is designed for crypto/blockchain platforms and provides:\n * - IRS/SEC compliance (7-year retention)\n * - Extended grace period for financial data recovery (60 days)\n * - Audit trail for regulatory requirements\n * - Transaction record preservation\n *\n * Suitable for: Crypto wallets, blockchain platforms, financial services\n */\nexport const DEFAULT_RETENTION_POLICY: StorageRetentionPolicy = {\n  type: 'regulatory',\n  retentionYears: 7, // Financial/tax compliance (IRS/SEC requirement)\n  immutable: false, // Can be corrected if needed\n  softDelete: true, // Use soft delete for safety\n  gracePeriodDays: 60, // Extended grace period for financial data\n  name: 'financial-default',\n  description: 'Financial/crypto platform default: 7-year retention with 60-day grace period',\n  jurisdictions: [STORAGE_JURISDICTION.US, STORAGE_JURISDICTION.EU],\n  regulatoryFrameworks: [\n    STORAGE_REGULATORY_FRAMEWORK.IRS,\n    STORAGE_REGULATORY_FRAMEWORK.SEC,\n    STORAGE_REGULATORY_FRAMEWORK.FINCEN,\n    STORAGE_REGULATORY_FRAMEWORK.GDPR,\n  ],\n};\n\n/**\n * Default compliance configuration - CRYPTO/FINANCE PLATFORM\n *\n * Compliance is enabled by default with finance-focused defaults:\n * - 7-year retention (IRS/SEC/FinCEN compliance)\n * - Soft delete with 60-day grace period\n * - Financial transaction audit trails\n * - Not in strict mode (warnings instead of errors)\n *\n * Designed for crypto wallets, blockchain platforms, and financial services.\n *\n * Override this configuration for specific categories:\n * - Transaction records: 7+ years retention, audit trail\n * - Wallet backups: 7+ years retention, immutable\n * - KYC/AML documents: 5-7 years retention per jurisdiction\n * - Tax documents: 7+ years retention, immutable\n * - Audit logs: 7+ years retention, immutable\n * - Legal documents: 7+ years retention, immutable\n * - Personal data: GDPR/CCPA-compliant deletion (user request)\n */\nexport const DEFAULT_COMPLIANCE_CONFIG: StorageComplianceConfig = {\n  enabled: true,\n  strictMode: true, // Enforce compliance by throwing errors on violations\n  // ⚠️ For crypto/finance platforms, compliance violations are legal violations.\n  // Set to false in development/testing only: { strictMode: false }\n\n  // ⭐ DEFAULT RETENTION: 7 years for ALL files (IRS/SEC/FinCEN compliance)\n  // This policy applies to EVERY uploaded file unless overridden per category below\n  defaultRetentionPolicy: DEFAULT_RETENTION_POLICY,\n\n  // 📋 CATEGORY-SPECIFIC OVERRIDES (Empty by default)\n  //\n  // By design, retentionPolicies is empty. The defaultRetentionPolicy (7 years)\n  // already applies to ALL files automatically.\n  //\n  // ✅ RECOMMENDED: Use PRESET_RETENTION_POLICIES for category-specific rules:\n  //\n  // import { FileCategory } from '@plyaz/types';\n  // import { PRESET_RETENTION_POLICIES } from '@plyaz/config';\n  //\n  // const service = new StorageService({\n  //   compliance: {\n  //     retentionPolicies: {\n  //       [FILE_CATEGORY.KYC_DOCUMENT]: PRESET_RETENTION_POLICIES.KYC_AML,\n  //       [FILE_CATEGORY.TaxDocument]: PRESET_RETENTION_POLICIES.TAX,\n  //       [FILE_CATEGORY.PROFILE_DATA]: PRESET_RETENTION_POLICIES.PERSONAL_DATA,\n  //     },\n  //   },\n  // });\n  //\n  // Available presets:\n  // - CRYPTO_TRANSACTION: 7 years, immutable (IRS/SEC/FinCEN/MiCA/FATF)\n  // - KYC_AML: 7 years, immutable (FinCEN/BSA/AML/5AMLD/MiCA/FATF)\n  // - WALLET_BACKUP: 7 years, immutable (security best practice)\n  // - FINANCIAL: 7 years, immutable (IRS/SEC/SOX)\n  // - TAX: 7 years, immutable (IRS)\n  // - LEGAL: 7 years, immutable (SOX/GDPR/SEC)\n  // - MEDICAL: 10 years, immutable (HIPAA/GDPR)\n  // - AUDIT: 1 year, immutable (SOC2/ISO27001)\n  // - TEMPORARY: 0 years, 7-day grace period\n  // - PERSONAL_DATA: 0 years, GDPR/CCPA compliant\n  retentionPolicies: {},\n\n  // 🔒 IMMUTABLE PATTERNS (Empty by default)\n  //\n  // Add regex patterns to protect critical files from deletion/modification:\n  //\n  // immutablePatterns: [\n  //   /^transactions\\//,   // Blockchain transaction records\n  //   /^audit\\//,          // Audit logs\n  //   /^kyc\\//,            // KYC/AML documents\n  //   /^legal\\//,          // Legal documents\n  //   /^compliance\\//,     // Compliance records\n  //   /^wallet-backups\\//, // Wallet backups\n  // ],\n  immutablePatterns: [],\n};\n\n/**\n * Preset retention policies for common use cases\n *\n * These can be used as templates or applied directly to file categories.\n */\nexport const PRESET_RETENTION_POLICIES = {\n  /**\n   * Legal document retention\n   * - 7 years retention (common legal requirement)\n   * - Immutable during retention period\n   * - Soft delete with grace period\n   * - Compliant with SOX, GDPR, and other frameworks\n   */\n  LEGAL: {\n    type: 'legal',\n    retentionYears: 7,\n    immutable: true,\n    softDelete: true,\n    gracePeriodDays: 30,\n    name: 'legal-retention',\n    description: 'Legal documents with 7-year retention',\n    jurisdictions: [STORAGE_JURISDICTION.US, STORAGE_JURISDICTION.EU],\n    regulatoryFrameworks: [\n      STORAGE_REGULATORY_FRAMEWORK.SOX,\n      STORAGE_REGULATORY_FRAMEWORK.GDPR,\n      STORAGE_REGULATORY_FRAMEWORK.SEC,\n    ],\n  } as StorageRetentionPolicy,\n\n  /**\n   * Financial document retention\n   * - 7 years retention (IRS, SEC requirements)\n   * - Immutable during retention period\n   * - Soft delete with extended grace period\n   */\n  FINANCIAL: {\n    type: 'regulatory',\n    retentionYears: 7,\n    immutable: true,\n    softDelete: true,\n    gracePeriodDays: 60,\n    name: 'financial-retention',\n    description: 'Financial records with 7-year retention',\n    jurisdictions: [STORAGE_JURISDICTION.US],\n    regulatoryFrameworks: [\n      STORAGE_REGULATORY_FRAMEWORK.IRS,\n      STORAGE_REGULATORY_FRAMEWORK.SEC,\n      STORAGE_REGULATORY_FRAMEWORK.SOX,\n    ],\n  } as StorageRetentionPolicy,\n\n  /**\n   * Tax document retention\n   * - 7 years retention (IRS requirement)\n   * - Immutable during retention period\n   * - Soft delete enabled\n   */\n  TAX: {\n    type: 'regulatory',\n    retentionYears: 7,\n    immutable: true,\n    softDelete: true,\n    gracePeriodDays: 60,\n    name: 'tax-retention',\n    description: 'Tax documents with 7-year retention',\n    jurisdictions: [STORAGE_JURISDICTION.US],\n    regulatoryFrameworks: [STORAGE_REGULATORY_FRAMEWORK.IRS],\n  } as StorageRetentionPolicy,\n\n  /**\n   * Medical/health record retention\n   * - 10 years retention (HIPAA recommendation)\n   * - Immutable during retention period\n   * - Strict soft delete\n   */\n  MEDICAL: {\n    type: 'regulatory',\n    retentionYears: 10,\n    immutable: true,\n    softDelete: true,\n    gracePeriodDays: 90,\n    name: 'medical-retention',\n    description: 'Medical records with 10-year retention',\n    jurisdictions: [STORAGE_JURISDICTION.US, STORAGE_JURISDICTION.EU],\n    regulatoryFrameworks: [STORAGE_REGULATORY_FRAMEWORK.HIPAA, STORAGE_REGULATORY_FRAMEWORK.GDPR],\n  } as StorageRetentionPolicy,\n\n  /**\n   * Audit log retention\n   * - 1 year retention (security best practice)\n   * - Immutable (cannot be modified or deleted)\n   * - No grace period (permanent)\n   */\n  AUDIT: {\n    type: 'regulatory',\n    retentionYears: 1,\n    immutable: true,\n    softDelete: false, // Audit logs shouldn't be soft-deleted\n    name: 'audit-retention',\n    description: 'Audit logs with 1-year immutable retention',\n    regulatoryFrameworks: [\n      STORAGE_REGULATORY_FRAMEWORK.SOC2,\n      STORAGE_REGULATORY_FRAMEWORK.ISO27001,\n    ],\n  } as StorageRetentionPolicy,\n\n  /**\n   * Temporary file retention\n   * - No retention requirement\n   * - Can be deleted immediately\n   * - 7-day grace period for recovery\n   */\n  TEMPORARY: {\n    type: 'time-based',\n    retentionYears: 0,\n    immutable: false,\n    softDelete: true,\n    gracePeriodDays: 7,\n    name: 'temporary-retention',\n    description: 'Temporary files with 7-day grace period',\n  } as StorageRetentionPolicy,\n\n  /**\n   * Personal data retention (GDPR/CCPA)\n   * - No mandatory retention\n   * - Can be deleted on user request\n   * - 30-day grace period for accidental deletion\n   */\n  PERSONAL_DATA: {\n    type: 'regulatory',\n    retentionYears: 0,\n    immutable: false,\n    softDelete: true,\n    gracePeriodDays: 30,\n    name: 'personal-data-retention',\n    description: 'Personal data compliant with GDPR/CCPA right to erasure',\n    jurisdictions: [STORAGE_JURISDICTION.EU, STORAGE_JURISDICTION.UsCa],\n    regulatoryFrameworks: [STORAGE_REGULATORY_FRAMEWORK.GDPR, STORAGE_REGULATORY_FRAMEWORK.CCPA],\n  } as StorageRetentionPolicy,\n\n  /**\n   * Crypto transaction records\n   * - 7 years retention (IRS/SEC/FinCEN requirement)\n   * - Immutable for audit trail integrity\n   * - Extended grace period for recovery\n   * - Blockchain transaction records, wallet operations, trades\n   */\n  CRYPTO_TRANSACTION: {\n    type: 'regulatory',\n    retentionYears: 7,\n    immutable: true,\n    softDelete: true,\n    gracePeriodDays: 60,\n    name: 'crypto-transaction-retention',\n    description: 'Blockchain transaction records with 7-year retention',\n    jurisdictions: [STORAGE_JURISDICTION.US, STORAGE_JURISDICTION.EU],\n    regulatoryFrameworks: [\n      STORAGE_REGULATORY_FRAMEWORK.IRS,\n      STORAGE_REGULATORY_FRAMEWORK.SEC,\n      STORAGE_REGULATORY_FRAMEWORK.FINCEN,\n      STORAGE_REGULATORY_FRAMEWORK.MICA,\n      STORAGE_REGULATORY_FRAMEWORK.FATF,\n    ],\n  } as StorageRetentionPolicy,\n\n  /**\n   * KYC/AML documents\n   * - 7 years retention (FinCEN/BSA requirement)\n   * - Immutable for regulatory audit\n   * - Extended grace period (90 days)\n   * - Identity verification, proof of address, source of funds\n   */\n  KYC_AML: {\n    type: 'regulatory',\n    retentionYears: 7,\n    immutable: true,\n    softDelete: true,\n    gracePeriodDays: 90,\n    name: 'kyc-aml-retention',\n    description: 'KYC/AML documents with 7-year retention',\n    jurisdictions: [STORAGE_JURISDICTION.US, STORAGE_JURISDICTION.EU, STORAGE_JURISDICTION.GLOBAL],\n    regulatoryFrameworks: [\n      STORAGE_REGULATORY_FRAMEWORK.FINCEN,\n      STORAGE_REGULATORY_FRAMEWORK.BSA,\n      STORAGE_REGULATORY_FRAMEWORK.AML,\n      STORAGE_REGULATORY_FRAMEWORK.AMLD5,\n      STORAGE_REGULATORY_FRAMEWORK.MICA,\n      STORAGE_REGULATORY_FRAMEWORK.FATF,\n    ],\n  } as StorageRetentionPolicy,\n\n  /**\n   * Wallet backups & recovery seeds\n   * - 7 years retention (security best practice)\n   * - Immutable for security\n   * - Extended grace period (90 days)\n   * - Encrypted wallet backups, recovery phrases, private key backups\n   */\n  WALLET_BACKUP: {\n    type: 'regulatory',\n    retentionYears: 7,\n    immutable: true,\n    softDelete: true,\n    gracePeriodDays: 90,\n    name: 'wallet-backup-retention',\n    description: 'Wallet backup files with 7-year retention',\n    jurisdictions: [STORAGE_JURISDICTION.GLOBAL],\n    regulatoryFrameworks: [\n      STORAGE_REGULATORY_FRAMEWORK.InternalSecurity,\n      STORAGE_REGULATORY_FRAMEWORK.IndustryBestPractices,\n    ],\n  } as StorageRetentionPolicy,\n};\n\n// ============================================================================\n// PRESET SYSTEM - Device-aware variant optimization\n// ============================================================================\n\n/**\n * Built-in Variant Presets\n *\n * Standard transformation presets optimized for common use cases.\n * Each preset includes device-aware variants for optimal performance\n * across mobile, tablet, desktop, and 4K displays.\n *\n * Available presets:\n * - profile-picture: Square images for user profiles (1:1)\n * - post-image: Feed/content images with flexible aspect ratios\n * - hero-banner: Large banner images with 16:9 aspect ratio\n * - video-streaming: Multi-resolution video transcoding\n * - social-share: Optimized for social media platforms\n * - product-image: E-commerce product photos\n */\nexport const BUILT_IN_PRESETS: StoragePresetConfig[] = [\n  // Profile Picture Preset\n  {\n    name: 'profile-picture',\n    description: 'Square images for user profiles (1:1 aspect ratio)',\n    variants: [\n      {\n        name: 'thumbnail',\n        width: 150,\n        height: 150,\n        format: 'webp',\n        quality: 80,\n        aspectRatio: '1:1',\n        fit: 'cover',\n        position: 'center',\n        devices: [\n          STORAGE_DEVICE_TYPE.MOBILE,\n          STORAGE_DEVICE_TYPE.TABLET,\n          STORAGE_DEVICE_TYPE.DESKTOP,\n          STORAGE_DEVICE_TYPE.FourK,\n        ],\n      },\n      {\n        name: 'small',\n        width: 300,\n        height: 300,\n        format: 'webp',\n        quality: 85,\n        aspectRatio: '1:1',\n        fit: 'cover',\n        position: 'center',\n        devices: [\n          STORAGE_DEVICE_TYPE.MOBILE,\n          STORAGE_DEVICE_TYPE.TABLET,\n          STORAGE_DEVICE_TYPE.DESKTOP,\n        ],\n      },\n      {\n        name: 'medium',\n        width: 600,\n        height: 600,\n        format: 'webp',\n        quality: 85,\n        aspectRatio: '1:1',\n        fit: 'cover',\n        position: 'center',\n        devices: [\n          STORAGE_DEVICE_TYPE.TABLET,\n          STORAGE_DEVICE_TYPE.DESKTOP,\n          STORAGE_DEVICE_TYPE.FourK,\n        ],\n      },\n      {\n        name: 'large',\n        width: 1024,\n        height: 1024,\n        format: 'webp',\n        quality: 90,\n        aspectRatio: '1:1',\n        fit: 'cover',\n        position: 'center',\n        devices: [STORAGE_DEVICE_TYPE.DESKTOP, STORAGE_DEVICE_TYPE.FourK],\n      },\n    ] as StorageVariantConfig[],\n    format: 'webp',\n    quality: 85,\n    aspectRatio: '1:1',\n    categories: [FILE_CATEGORY.ProfileImage],\n    devices: [\n      STORAGE_DEVICE_TYPE.MOBILE,\n      STORAGE_DEVICE_TYPE.TABLET,\n      STORAGE_DEVICE_TYPE.DESKTOP,\n      STORAGE_DEVICE_TYPE.FourK,\n    ],\n    priority: 1,\n    enabled: true,\n  },\n\n  // Post Image Preset\n  {\n    name: 'post-image',\n    description: 'Flexible images for content feeds (preserve aspect ratio)',\n    variants: [\n      {\n        name: 'thumbnail',\n        width: 400,\n        height: 225,\n        format: 'webp',\n        quality: 80,\n        aspectRatio: 'preserve',\n        fit: 'inside',\n        devices: [\n          STORAGE_DEVICE_TYPE.MOBILE,\n          STORAGE_DEVICE_TYPE.TABLET,\n          STORAGE_DEVICE_TYPE.DESKTOP,\n        ],\n      },\n      {\n        name: 'mobile',\n        width: 640,\n        height: 360,\n        format: 'webp',\n        quality: 82,\n        aspectRatio: 'preserve',\n        fit: 'inside',\n        devices: [STORAGE_DEVICE_TYPE.MOBILE],\n      },\n      {\n        name: 'tablet',\n        width: 1024,\n        height: 576,\n        format: 'webp',\n        quality: 85,\n        aspectRatio: 'preserve',\n        fit: 'inside',\n        devices: [STORAGE_DEVICE_TYPE.TABLET],\n      },\n      {\n        name: 'desktop',\n        width: 1920,\n        height: 1080,\n        format: 'webp',\n        quality: 85,\n        aspectRatio: 'preserve',\n        fit: 'inside',\n        devices: [STORAGE_DEVICE_TYPE.DESKTOP, STORAGE_DEVICE_TYPE.FourK],\n      },\n      {\n        name: 'hd',\n        width: 2560,\n        height: 1440,\n        format: 'webp',\n        quality: 90,\n        aspectRatio: 'preserve',\n        fit: 'inside',\n        devices: [STORAGE_DEVICE_TYPE.FourK],\n      },\n    ] as StorageVariantConfig[],\n    format: 'webp',\n    quality: 85,\n    aspectRatio: 'preserve',\n    categories: [FILE_CATEGORY.PostImage, FILE_CATEGORY.GalleryImage],\n    devices: [\n      STORAGE_DEVICE_TYPE.MOBILE,\n      STORAGE_DEVICE_TYPE.TABLET,\n      STORAGE_DEVICE_TYPE.DESKTOP,\n      STORAGE_DEVICE_TYPE.FourK,\n    ],\n    priority: 2,\n    enabled: true,\n  },\n\n  // Hero Banner Preset\n  {\n    name: 'hero-banner',\n    description: 'Large banner images for hero sections (16:9 aspect ratio)',\n    variants: [\n      {\n        name: 'mobile',\n        width: 800,\n        height: 450,\n        format: 'webp',\n        quality: 82,\n        aspectRatio: '16:9',\n        fit: 'cover',\n        position: 'center',\n        devices: [STORAGE_DEVICE_TYPE.MOBILE],\n      },\n      {\n        name: 'tablet',\n        width: 1280,\n        height: 720,\n        format: 'webp',\n        quality: 85,\n        aspectRatio: '16:9',\n        fit: 'cover',\n        position: 'center',\n        devices: [STORAGE_DEVICE_TYPE.TABLET],\n      },\n      {\n        name: 'desktop',\n        width: 1920,\n        height: 1080,\n        format: 'webp',\n        quality: 88,\n        aspectRatio: '16:9',\n        fit: 'cover',\n        position: 'center',\n        devices: [STORAGE_DEVICE_TYPE.DESKTOP],\n      },\n      {\n        name: '4k',\n        width: 3840,\n        height: 2160,\n        format: 'webp',\n        quality: 90,\n        aspectRatio: '16:9',\n        fit: 'cover',\n        position: 'center',\n        devices: [STORAGE_DEVICE_TYPE.FourK, STORAGE_DEVICE_TYPE.TV],\n      },\n    ] as StorageVariantConfig[],\n    format: 'webp',\n    quality: 88,\n    aspectRatio: '16:9',\n    categories: [FILE_CATEGORY.BrandAsset, FILE_CATEGORY.MarketingAsset, FILE_CATEGORY.PostImage],\n    devices: [\n      STORAGE_DEVICE_TYPE.MOBILE,\n      STORAGE_DEVICE_TYPE.TABLET,\n      STORAGE_DEVICE_TYPE.DESKTOP,\n      STORAGE_DEVICE_TYPE.FourK,\n      STORAGE_DEVICE_TYPE.TV,\n    ],\n    priority: 3,\n    enabled: true,\n  },\n\n  // Video Streaming Preset\n  {\n    name: 'video-streaming',\n    description: 'Multi-resolution video transcoding for adaptive streaming',\n    variants: [\n      {\n        name: '360p',\n        width: 640,\n        height: 360,\n        format: 'mp4',\n        quality: 75,\n        codec: 'h264',\n        bitrate: '800k',\n        devices: [STORAGE_DEVICE_TYPE.MOBILE, STORAGE_DEVICE_TYPE.WATCH],\n      },\n      {\n        name: '480p',\n        width: 854,\n        height: 480,\n        format: 'mp4',\n        quality: 80,\n        codec: 'h264',\n        bitrate: '1200k',\n        devices: [STORAGE_DEVICE_TYPE.MOBILE, STORAGE_DEVICE_TYPE.TABLET],\n      },\n      {\n        name: '720p',\n        width: 1280,\n        height: 720,\n        format: 'mp4',\n        quality: 85,\n        codec: 'h264',\n        bitrate: '2500k',\n        devices: [\n          STORAGE_DEVICE_TYPE.MOBILE,\n          STORAGE_DEVICE_TYPE.TABLET,\n          STORAGE_DEVICE_TYPE.DESKTOP,\n        ],\n      },\n      {\n        name: '1080p',\n        width: 1920,\n        height: 1080,\n        format: 'mp4',\n        quality: 88,\n        codec: 'h264',\n        bitrate: '5000k',\n        devices: [\n          STORAGE_DEVICE_TYPE.TABLET,\n          STORAGE_DEVICE_TYPE.DESKTOP,\n          STORAGE_DEVICE_TYPE.FourK,\n        ],\n      },\n      {\n        name: '4k',\n        width: 3840,\n        height: 2160,\n        format: 'mp4',\n        quality: 90,\n        codec: 'h265',\n        bitrate: '15000k',\n        devices: [STORAGE_DEVICE_TYPE.FourK, STORAGE_DEVICE_TYPE.TV],\n      },\n    ] as StorageVariantConfig[],\n    format: 'mp4',\n    quality: 85,\n    codec: 'h264',\n    categories: [FILE_CATEGORY.PostVideo, FILE_CATEGORY.ProductVideo, FILE_CATEGORY.GalleryVideo],\n    devices: [\n      STORAGE_DEVICE_TYPE.MOBILE,\n      STORAGE_DEVICE_TYPE.TABLET,\n      STORAGE_DEVICE_TYPE.DESKTOP,\n      STORAGE_DEVICE_TYPE.FourK,\n      STORAGE_DEVICE_TYPE.TV,\n    ],\n    priority: 4,\n    enabled: true,\n  },\n\n  // Social Share Preset\n  {\n    name: 'social-share',\n    description: 'Optimized for social media sharing (Open Graph, Twitter Card)',\n    variants: [\n      {\n        name: 'og-image',\n        width: 1200,\n        height: 630,\n        format: 'jpeg',\n        quality: 85,\n        aspectRatio: '1.91:1',\n        fit: 'cover',\n        position: 'center',\n        devices: [\n          STORAGE_DEVICE_TYPE.MOBILE,\n          STORAGE_DEVICE_TYPE.TABLET,\n          STORAGE_DEVICE_TYPE.DESKTOP,\n        ],\n      },\n      {\n        name: 'twitter-card',\n        width: 1200,\n        height: 675,\n        format: 'jpeg',\n        quality: 85,\n        aspectRatio: '16:9',\n        fit: 'cover',\n        position: 'center',\n        devices: [\n          STORAGE_DEVICE_TYPE.MOBILE,\n          STORAGE_DEVICE_TYPE.TABLET,\n          STORAGE_DEVICE_TYPE.DESKTOP,\n        ],\n      },\n      {\n        name: 'linkedin-share',\n        width: 1200,\n        height: 627,\n        format: 'jpeg',\n        quality: 85,\n        aspectRatio: '1.91:1',\n        fit: 'cover',\n        position: 'center',\n        devices: [\n          STORAGE_DEVICE_TYPE.MOBILE,\n          STORAGE_DEVICE_TYPE.TABLET,\n          STORAGE_DEVICE_TYPE.DESKTOP,\n        ],\n      },\n    ] as StorageVariantConfig[],\n    format: 'jpeg',\n    quality: 85,\n    categories: [FILE_CATEGORY.PostImage, FILE_CATEGORY.BrandAsset, FILE_CATEGORY.MarketingAsset],\n    devices: [STORAGE_DEVICE_TYPE.MOBILE, STORAGE_DEVICE_TYPE.TABLET, STORAGE_DEVICE_TYPE.DESKTOP],\n    priority: 5,\n    enabled: true,\n  },\n\n  // Product Image Preset\n  {\n    name: 'product-image',\n    description: 'E-commerce product photos with zoom capability',\n    variants: [\n      {\n        name: 'thumbnail',\n        width: 200,\n        height: 200,\n        format: 'webp',\n        quality: 80,\n        aspectRatio: '1:1',\n        fit: 'cover',\n        position: 'center',\n        devices: [\n          STORAGE_DEVICE_TYPE.MOBILE,\n          STORAGE_DEVICE_TYPE.TABLET,\n          STORAGE_DEVICE_TYPE.DESKTOP,\n        ],\n      },\n      {\n        name: 'small',\n        width: 400,\n        height: 400,\n        format: 'webp',\n        quality: 85,\n        aspectRatio: '1:1',\n        fit: 'contain',\n        position: 'center',\n        devices: [STORAGE_DEVICE_TYPE.MOBILE, STORAGE_DEVICE_TYPE.TABLET],\n      },\n      {\n        name: 'medium',\n        width: 800,\n        height: 800,\n        format: 'webp',\n        quality: 88,\n        aspectRatio: '1:1',\n        fit: 'contain',\n        position: 'center',\n        devices: [STORAGE_DEVICE_TYPE.TABLET, STORAGE_DEVICE_TYPE.DESKTOP],\n      },\n      {\n        name: 'large',\n        width: 1500,\n        height: 1500,\n        format: 'webp',\n        quality: 90,\n        aspectRatio: '1:1',\n        fit: 'contain',\n        position: 'center',\n        devices: [STORAGE_DEVICE_TYPE.DESKTOP, STORAGE_DEVICE_TYPE.FourK],\n      },\n      {\n        name: 'zoom',\n        width: 2500,\n        height: 2500,\n        format: 'webp',\n        quality: 92,\n        aspectRatio: '1:1',\n        fit: 'contain',\n        position: 'center',\n        devices: [STORAGE_DEVICE_TYPE.DESKTOP, STORAGE_DEVICE_TYPE.FourK],\n      },\n    ] as StorageVariantConfig[],\n    format: 'webp',\n    quality: 88,\n    aspectRatio: '1:1',\n    categories: [FILE_CATEGORY.PostImage],\n    devices: [\n      STORAGE_DEVICE_TYPE.MOBILE,\n      STORAGE_DEVICE_TYPE.TABLET,\n      STORAGE_DEVICE_TYPE.DESKTOP,\n      STORAGE_DEVICE_TYPE.FourK,\n    ],\n    priority: 6,\n    enabled: true,\n  },\n];\n\n/**\n * Default Variants by File Category\n *\n * Automatic variant generation based on file category.\n * When no preset is specified, these defaults are applied.\n *\n * Device-aware: Variants are automatically filtered based on target device\n * to avoid generating unnecessary files and reduce storage costs.\n */\nexport const DEFAULT_VARIANTS_BY_CATEGORY: Partial<Record<FILE_CATEGORY, string[]>> = {\n  // Profile and avatar images - Square 1:1 ratio\n  [FILE_CATEGORY.ProfileImage]: ['thumbnail', 'small', 'medium', 'large'],\n\n  // Post and content images - Flexible aspect ratio\n  [FILE_CATEGORY.PostImage]: ['thumbnail', 'mobile', 'tablet', 'desktop'],\n\n  // Brand logos - Multiple sizes for different contexts\n  [FILE_CATEGORY.BrandLogo]: ['small', 'medium', 'large', 'xlarge'],\n\n  // Brand assets and marketing - Wide format\n  [FILE_CATEGORY.BrandAsset]: ['mobile', 'tablet', 'desktop', '4k'],\n  [FILE_CATEGORY.MarketingAsset]: ['mobile', 'tablet', 'desktop', '4k'],\n\n  // Gallery images - Small preview images\n  [FILE_CATEGORY.GalleryImage]: ['thumbnail', 'small', 'medium'],\n\n  // Videos - Multi-resolution for adaptive streaming\n  [FILE_CATEGORY.PostVideo]: ['360p', '480p', '720p', '1080p'],\n  [FILE_CATEGORY.ProductVideo]: ['480p', '720p', '1080p', '4k-video'],\n  [FILE_CATEGORY.GalleryVideo]: ['480p', '720p', '1080p'],\n\n  // Documents - Typically no variants needed (PDFs, etc.)\n  [FILE_CATEGORY.InvoiceDocument]: [],\n  [FILE_CATEGORY.ReceiptDocument]: [],\n  [FILE_CATEGORY.TaxDocument]: [],\n\n  // Attachments - No variants by default\n  [FILE_CATEGORY.ATTACHMENT]: [],\n\n  // Archives - No variants (ZIP, RAR, etc.)\n  [FILE_CATEGORY.PostArchive]: [],\n\n  // Audio - Could add different bitrates in future\n  [FILE_CATEGORY.PostAudio]: [],\n\n  // Other categories without specific defaults\n  [FILE_CATEGORY.OTHER]: [],\n};\n\n/**\n * Device-specific Variant Overrides\n *\n * These mappings override the category defaults when a specific device is targeted.\n * Useful for mobile-first or desktop-first optimizations.\n */\nexport const DEVICE_SPECIFIC_VARIANT_OVERRIDES: Partial<\n  Record<string, Partial<Record<FILE_CATEGORY, string[]>>>\n> = {\n  // Mobile - Prioritize smaller variants\n  mobile: {\n    [FILE_CATEGORY.ProfileImage]: ['thumbnail', 'small'],\n    [FILE_CATEGORY.PostImage]: ['thumbnail', 'mobile'],\n    [FILE_CATEGORY.BrandAsset]: ['mobile'],\n    [FILE_CATEGORY.MarketingAsset]: ['mobile'],\n    [FILE_CATEGORY.PostVideo]: ['360p', '480p', '720p'],\n  },\n\n  // Tablet - Balanced variants\n  tablet: {\n    [FILE_CATEGORY.ProfileImage]: ['thumbnail', 'small', 'medium'],\n    [FILE_CATEGORY.PostImage]: ['thumbnail', 'mobile', 'tablet'],\n    [FILE_CATEGORY.BrandAsset]: ['tablet', 'desktop'],\n    [FILE_CATEGORY.MarketingAsset]: ['tablet', 'desktop'],\n    [FILE_CATEGORY.PostVideo]: ['480p', '720p', '1080p'],\n  },\n\n  // Desktop - Full quality variants\n  desktop: {\n    [FILE_CATEGORY.ProfileImage]: ['small', 'medium', 'large'],\n    [FILE_CATEGORY.PostImage]: ['mobile', 'tablet', 'desktop', 'hd'],\n    [FILE_CATEGORY.BrandAsset]: ['desktop', '4k'],\n    [FILE_CATEGORY.MarketingAsset]: ['desktop', '4k'],\n    [FILE_CATEGORY.PostVideo]: ['720p', '1080p'],\n  },\n\n  // 4K displays - Highest quality\n  '4k': {\n    [FILE_CATEGORY.ProfileImage]: ['medium', 'large', 'xlarge'],\n    [FILE_CATEGORY.PostImage]: ['desktop', 'hd', '4k'],\n    [FILE_CATEGORY.BrandAsset]: ['4k'],\n    [FILE_CATEGORY.MarketingAsset]: ['4k'],\n    [FILE_CATEGORY.PostVideo]: ['1080p', '4k-video'],\n  },\n\n  // TV - Optimized for large screens\n  tv: {\n    [FILE_CATEGORY.BrandAsset]: ['4k'],\n    [FILE_CATEGORY.MarketingAsset]: ['4k'],\n    [FILE_CATEGORY.PostVideo]: ['1080p', '4k-video'],\n  },\n\n  // Watch/Wearables - Minimal variants\n  watch: {\n    [FILE_CATEGORY.ProfileImage]: ['thumbnail'],\n    [FILE_CATEGORY.PostImage]: ['thumbnail'],\n    [FILE_CATEGORY.PostVideo]: ['360p'],\n  },\n};\n\n/**\n * Minimum Variant Requirements\n *\n * These categories must always generate at least these variants,\n * regardless of device targeting, for fallback compatibility.\n */\nexport const MINIMUM_VARIANTS_BY_CATEGORY: Partial<Record<FILE_CATEGORY, string[]>> = {\n  [FILE_CATEGORY.ProfileImage]: ['thumbnail'], // Always need thumbnail\n  [FILE_CATEGORY.PostImage]: ['thumbnail'], // Always need thumbnail\n  [FILE_CATEGORY.BrandLogo]: ['small'], // Always need at least small logo\n};\n\n/**\n * Standard Variant Definitions\n *\n * Maps variant names to their configuration.\n * Used by PresetManager to resolve variant names like 'thumbnail', 'mobile', '720p'\n * to actual variant configurations with dimensions, format, quality, etc.\n *\n * This is the source of truth for all standard variant names across the platform.\n */\nexport const STANDARD_VARIANT_DEFINITIONS: Record<\n  STORAGE_VARIANT_NAME,\n  Partial<StorageVariantConfig>\n> = {\n  // Image variants - Square/standard sizes\n  [STORAGE_VARIANT_NAME.THUMBNAIL]: {\n    width: 150,\n    height: 150,\n    format: 'webp',\n    quality: 80,\n    devices: [\n      STORAGE_DEVICE_TYPE.MOBILE,\n      STORAGE_DEVICE_TYPE.TABLET,\n      STORAGE_DEVICE_TYPE.DESKTOP,\n      STORAGE_DEVICE_TYPE.FourK,\n    ],\n  },\n  [STORAGE_VARIANT_NAME.SMALL]: {\n    width: 400,\n    height: 400,\n    format: 'webp',\n    quality: 85,\n    devices: [STORAGE_DEVICE_TYPE.MOBILE, STORAGE_DEVICE_TYPE.TABLET, STORAGE_DEVICE_TYPE.DESKTOP],\n  },\n  [STORAGE_VARIANT_NAME.MEDIUM]: {\n    width: 800,\n    height: 800,\n    format: 'webp',\n    quality: 85,\n    devices: [STORAGE_DEVICE_TYPE.TABLET, STORAGE_DEVICE_TYPE.DESKTOP, STORAGE_DEVICE_TYPE.FourK],\n  },\n  [STORAGE_VARIANT_NAME.LARGE]: {\n    width: 1200,\n    height: 1200,\n    format: 'webp',\n    quality: 85,\n    devices: [STORAGE_DEVICE_TYPE.DESKTOP, STORAGE_DEVICE_TYPE.FourK, STORAGE_DEVICE_TYPE.TV],\n  },\n  [STORAGE_VARIANT_NAME.XLARGE]: {\n    width: 1920,\n    height: 1920,\n    format: 'webp',\n    quality: 90,\n    devices: [STORAGE_DEVICE_TYPE.FourK, STORAGE_DEVICE_TYPE.TV],\n  },\n\n  // Device-specific image variants\n  [STORAGE_VARIANT_NAME.MOBILE]: {\n    width: 480,\n    height: 854,\n    format: 'webp',\n    quality: 80,\n    devices: [STORAGE_DEVICE_TYPE.MOBILE],\n  },\n  [STORAGE_VARIANT_NAME.TABLET]: {\n    width: 768,\n    height: 1024,\n    format: 'webp',\n    quality: 85,\n    devices: [STORAGE_DEVICE_TYPE.TABLET],\n  },\n  [STORAGE_VARIANT_NAME.DESKTOP]: {\n    width: 1920,\n    height: 1080,\n    format: 'webp',\n    quality: 85,\n    devices: [STORAGE_DEVICE_TYPE.DESKTOP],\n  },\n  [STORAGE_VARIANT_NAME.HD]: {\n    width: 1920,\n    height: 1080,\n    format: 'webp',\n    quality: 90,\n    devices: [STORAGE_DEVICE_TYPE.DESKTOP, STORAGE_DEVICE_TYPE.FourK],\n  },\n  [STORAGE_VARIANT_NAME.FourK]: {\n    width: 3840,\n    height: 2160,\n    format: 'webp',\n    quality: 90,\n    devices: [STORAGE_DEVICE_TYPE.FourK, STORAGE_DEVICE_TYPE.TV],\n  },\n  [STORAGE_VARIANT_NAME.RETINA]: {\n    width: 2880,\n    height: 1800,\n    format: 'webp',\n    quality: 90,\n    devices: [STORAGE_DEVICE_TYPE.DESKTOP, STORAGE_DEVICE_TYPE.FourK],\n  },\n\n  // Video variants - Standard resolutions\n  [STORAGE_VARIANT_NAME.Video360p]: {\n    width: 640,\n    height: 360,\n    format: 'mp4',\n    bitrate: '800k',\n    codec: 'h264',\n    devices: [STORAGE_DEVICE_TYPE.MOBILE],\n  },\n  [STORAGE_VARIANT_NAME.Video480p]: {\n    width: 854,\n    height: 480,\n    format: 'mp4',\n    bitrate: '1200k',\n    codec: 'h264',\n    devices: [STORAGE_DEVICE_TYPE.MOBILE, STORAGE_DEVICE_TYPE.TABLET],\n  },\n  [STORAGE_VARIANT_NAME.Video720p]: {\n    width: 1280,\n    height: 720,\n    format: 'mp4',\n    bitrate: '2500k',\n    codec: 'h264',\n    devices: [STORAGE_DEVICE_TYPE.MOBILE, STORAGE_DEVICE_TYPE.TABLET, STORAGE_DEVICE_TYPE.DESKTOP],\n  },\n  [STORAGE_VARIANT_NAME.Video1080p]: {\n    width: 1920,\n    height: 1080,\n    format: 'mp4',\n    bitrate: '5000k',\n    codec: 'h264',\n    devices: [STORAGE_DEVICE_TYPE.TABLET, STORAGE_DEVICE_TYPE.DESKTOP, STORAGE_DEVICE_TYPE.FourK],\n  },\n  [STORAGE_VARIANT_NAME.Video4k]: {\n    width: 3840,\n    height: 2160,\n    format: 'mp4',\n    bitrate: '15000k',\n    codec: 'h265',\n    devices: [STORAGE_DEVICE_TYPE.FourK, STORAGE_DEVICE_TYPE.TV],\n  },\n};\n","/**\n * Storage Validation Configuration\n *\n * Defines file size limits and MIME type restrictions per bucket purpose.\n * Centralized configuration for storage validation across backend and frontend.\n *\n * @module @plyaz/config/storage/validation\n */\n\nimport type { StorageValidationConfig } from '@plyaz/types';\nimport { BUCKET_PURPOSE } from '@plyaz/types';\nimport { NUMBER_SYSTEM } from '../math/constants';\n\n// File size limits (in MB/GB)\nconst STORAGE_FILE_SIZE_LIMITS = {\n  IMAGE_MAX_MB: 50,\n  VIDEO_MAX_GB: 5,\n  COMPLIANCE_MAX_MB: 100,\n  USER_UPLOAD_MAX_MB: 100,\n  STATIC_MAX_MB: 10,\n  TEMPORARY_MAX_MB: 500,\n  ARCHIVE_MAX_GB: 10,\n  BACKUP_MAX_GB: 50,\n  DEFAULT_MAX_MB: 100,\n} as const;\n\n/**\n * Default storage validation configuration\n * Used when adapter config doesn't specify validation rules\n */\nexport const STORAGE_DEFAULT_VALIDATION_CONFIG: StorageValidationConfig = {\n  rules: {\n    [BUCKET_PURPOSE.MediaImages]: {\n      maxFileSize: STORAGE_FILE_SIZE_LIMITS.IMAGE_MAX_MB * NUMBER_SYSTEM.BYTES_PER_MB, // 50MB for images\n      allowedMimeTypes: ['image/jpeg', 'image/png', 'image/gif', 'image/webp', 'image/svg+xml'],\n      allowExecutables: false,\n    },\n\n    [BUCKET_PURPOSE.MediaVideos]: {\n      maxFileSize: STORAGE_FILE_SIZE_LIMITS.VIDEO_MAX_GB * NUMBER_SYSTEM.BYTES_PER_GB, // 5GB for videos\n      allowedMimeTypes: ['video/mp4', 'video/webm', 'video/ogg', 'video/quicktime'],\n      allowExecutables: false,\n    },\n\n    [BUCKET_PURPOSE.COMPLIANCE]: {\n      maxFileSize: STORAGE_FILE_SIZE_LIMITS.COMPLIANCE_MAX_MB * NUMBER_SYSTEM.BYTES_PER_MB, // 100MB for compliance docs\n      allowedMimeTypes: [\n        'application/pdf',\n        'application/json',\n        'text/csv',\n        // Excel formats\n        'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', // .xlsx\n        'application/vnd.ms-excel', // .xls\n        // Word formats\n        'application/vnd.openxmlformats-officedocument.wordprocessingml.document', // .docx\n        'application/msword', // .doc\n      ],\n      allowExecutables: false,\n    },\n\n    [BUCKET_PURPOSE.UserUploads]: {\n      maxFileSize: STORAGE_FILE_SIZE_LIMITS.USER_UPLOAD_MAX_MB * NUMBER_SYSTEM.BYTES_PER_MB, // 100MB for general user uploads\n      allowExecutables: false, // Block executables for security\n    },\n\n    [BUCKET_PURPOSE.MediaStatic]: {\n      maxFileSize: STORAGE_FILE_SIZE_LIMITS.STATIC_MAX_MB * NUMBER_SYSTEM.BYTES_PER_MB, // 10MB for static assets\n      allowedMimeTypes: [\n        'text/css',\n        'text/javascript',\n        'application/javascript',\n        'font/woff',\n        'font/woff2',\n        'font/ttf',\n        'font/otf',\n        'image/svg+xml',\n      ],\n      allowExecutables: false,\n    },\n\n    [BUCKET_PURPOSE.TEMPORARY]: {\n      maxFileSize: STORAGE_FILE_SIZE_LIMITS.TEMPORARY_MAX_MB * NUMBER_SYSTEM.BYTES_PER_MB, // 500MB for temporary files\n      allowExecutables: false, // Block executables for security\n    },\n\n    [BUCKET_PURPOSE.ARCHIVES]: {\n      maxFileSize: STORAGE_FILE_SIZE_LIMITS.ARCHIVE_MAX_GB * NUMBER_SYSTEM.BYTES_PER_GB, // 10GB for archives\n      allowedMimeTypes: [\n        'application/zip',\n        'application/x-tar',\n        'application/gzip',\n        'application/x-7z-compressed',\n        'application/x-rar-compressed',\n      ],\n      allowExecutables: false,\n    },\n\n    [BUCKET_PURPOSE.BACKUPS]: {\n      maxFileSize: STORAGE_FILE_SIZE_LIMITS.BACKUP_MAX_GB * NUMBER_SYSTEM.BYTES_PER_GB, // 50GB for backups\n      allowedMimeTypes: [\n        'application/zip',\n        'application/x-tar',\n        'application/gzip',\n        'application/octet-stream',\n        'application/sql',\n      ],\n      allowExecutables: false,\n    },\n  },\n\n  defaultRules: {\n    maxFileSize: STORAGE_FILE_SIZE_LIMITS.DEFAULT_MAX_MB * NUMBER_SYSTEM.BYTES_PER_MB, // 100MB default\n    allowExecutables: false, // Always block executables by default\n  },\n} as const;\n\n/**\n * Get validation rules for a specific bucket purpose\n * Falls back to default rules if purpose-specific rules not defined\n *\n * @param purpose - Bucket purpose\n * @param config - Optional custom validation config (overrides defaults)\n * @returns Validation rules for the purpose\n */\n// eslint-disable-next-line complexity\nexport function getStorageValidationRulesForPurpose(\n  purpose: BUCKET_PURPOSE,\n  config?: StorageValidationConfig\n): {\n  maxFileSize?: number;\n  allowedMimeTypes?: string[];\n  allowExecutables?: boolean;\n} {\n  // Use custom config if provided, otherwise use defaults\n  const validationConfig = config ?? STORAGE_DEFAULT_VALIDATION_CONFIG;\n\n  // Get purpose-specific rules\n  const purposeRules = validationConfig.rules?.[purpose];\n  const defaultRules =\n    validationConfig.defaultRules ?? STORAGE_DEFAULT_VALIDATION_CONFIG.defaultRules;\n\n  // Merge purpose rules with defaults\n  return {\n    maxFileSize: purposeRules?.maxFileSize ?? defaultRules?.maxFileSize,\n    allowedMimeTypes: purposeRules?.allowedMimeTypes ?? defaultRules?.allowedMimeTypes,\n    allowExecutables: purposeRules?.allowExecutables ?? defaultRules?.allowExecutables,\n  };\n}\n","/**\n * Storage MIME Type Mappings\n *\n * Centralized mapping between output formats, file extensions, and MIME types.\n * Used for file generation, validation, and content-type handling.\n *\n * @module @plyaz/config/storage/mime-types\n */\n\nimport type { OUTPUT_FORMAT } from '@plyaz/types';\n\n/**\n * Map of output formats to file extensions\n */\nexport const STORAGE_OUTPUT_FORMAT_TO_EXTENSION: Record<OUTPUT_FORMAT, string> = {\n  pdf: 'pdf',\n  excel: 'xlsx',\n  word: 'docx',\n  png: 'png',\n  jpeg: 'jpeg',\n  html: 'html',\n  csv: 'csv',\n  json: 'json',\n};\n\n/**\n * Map of output formats to MIME types\n */\nexport const STORAGE_OUTPUT_FORMAT_TO_MIME_TYPE: Record<OUTPUT_FORMAT, string> = {\n  pdf: 'application/pdf',\n  excel: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n  word: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n  png: 'image/png',\n  jpeg: 'image/jpeg',\n  html: 'text/html',\n  csv: 'text/csv',\n  json: 'application/json',\n};\n\n/**\n * Get file extension for output format\n */\nexport function getStorageExtensionForFormat(format: OUTPUT_FORMAT): string {\n  return STORAGE_OUTPUT_FORMAT_TO_EXTENSION[format];\n}\n\n/**\n * Get MIME type for output format\n */\nexport function getStorageMimeTypeForFormat(format: OUTPUT_FORMAT): string {\n  return STORAGE_OUTPUT_FORMAT_TO_MIME_TYPE[format];\n}\n\n/**\n * Get both extension and MIME type for output format\n */\nexport function getStorageFormatInfo(format: OUTPUT_FORMAT): {\n  extension: string;\n  mimeType: string;\n} {\n  return {\n    extension: STORAGE_OUTPUT_FORMAT_TO_EXTENSION[format],\n    mimeType: STORAGE_OUTPUT_FORMAT_TO_MIME_TYPE[format],\n  };\n}\n","/**\n * Storage Categories & Bucket Organization\n *\n * Provider-agnostic storage organization by PURPOSE and CONTENT TYPE.\n * Adapters internally translate these purposes to their naming conventions.\n *\n * Universal approach:\n * - Define buckets by PURPOSE (compliance, media-images, backups, etc.)\n * - Paths are universal across all providers\n * - Adapters handle their own naming rules internally\n *\n * @module @plyaz/config/storage/categories\n */\n\nimport type { StorageCategory } from '@plyaz/types';\nimport { BUCKET_PURPOSE, STORAGE_VISIBILITY } from '@plyaz/types';\n\n/**\n * Constants for storage retention policies (in days)\n */\nexport const STORAGE_RETENTION_DAYS = {\n  DAYS_PER_YEAR: 365,\n  COMPLIANCE_YEARS: 7,\n  TEMPORARY_DAYS: 7,\n  BACKUP_DAYS: 90,\n} as const;\n\n/**\n * Constants for TTL calculations\n */\nexport const STORAGE_TTL_CONSTANTS = {\n  SECONDS_PER_DAY: 86400,\n} as const;\n\n/**\n * Storage category definitions\n * Provider-agnostic organization by purpose\n */\nexport const STORAGE_CATEGORIES: Record<BUCKET_PURPOSE, StorageCategory> = {\n  [BUCKET_PURPOSE.COMPLIANCE]: {\n    purpose: BUCKET_PURPOSE.COMPLIANCE,\n    description: 'Financial and legal documents requiring audit trail',\n    useCases: ['Invoices', 'Receipts', 'Tax documents', 'Contracts', 'Certificates'],\n    recommendedRetention:\n      STORAGE_RETENTION_DAYS.DAYS_PER_YEAR * STORAGE_RETENTION_DAYS.COMPLIANCE_YEARS, // 7 years\n    requiresCompliance: true,\n    supportsPublicAccess: false,\n    defaultVisibility: STORAGE_VISIBILITY.PRIVATE,\n  },\n\n  [BUCKET_PURPOSE.MediaImages]: {\n    purpose: BUCKET_PURPOSE.MediaImages,\n    description: 'Image files with optimization variants',\n    useCases: ['Profile pictures', 'Product photos', 'Banners', 'Logos'],\n    requiresCompliance: false,\n    supportsPublicAccess: true,\n    defaultVisibility: STORAGE_VISIBILITY.PUBLIC,\n  },\n\n  [BUCKET_PURPOSE.MediaVideos]: {\n    purpose: BUCKET_PURPOSE.MediaVideos,\n    description: 'Video files with transcoding variants',\n    useCases: ['Match highlights', 'Training videos', 'Promotional content'],\n    requiresCompliance: false,\n    supportsPublicAccess: true,\n    defaultVisibility: STORAGE_VISIBILITY.PUBLIC,\n  },\n\n  [BUCKET_PURPOSE.MediaStatic]: {\n    purpose: BUCKET_PURPOSE.MediaStatic,\n    description: 'Static assets and general files',\n    useCases: ['CSS files', 'JavaScript', 'Fonts', 'Icons', 'PDFs'],\n    requiresCompliance: false,\n    supportsPublicAccess: true,\n    defaultVisibility: STORAGE_VISIBILITY.PUBLIC,\n  },\n\n  [BUCKET_PURPOSE.UserUploads]: {\n    purpose: BUCKET_PURPOSE.UserUploads,\n    description: 'User-uploaded files and attachments',\n    useCases: ['Document uploads', 'Attachments', 'User-generated content'],\n    requiresCompliance: false,\n    supportsPublicAccess: false,\n    defaultVisibility: STORAGE_VISIBILITY.PRIVATE,\n  },\n\n  [BUCKET_PURPOSE.TEMPORARY]: {\n    purpose: BUCKET_PURPOSE.TEMPORARY,\n    description: 'Temporary files for processing',\n    useCases: ['Upload staging', 'Processing queue', 'Temporary exports'],\n    recommendedRetention: STORAGE_RETENTION_DAYS.TEMPORARY_DAYS, // 7 days\n    requiresCompliance: false,\n    supportsPublicAccess: false,\n    defaultVisibility: STORAGE_VISIBILITY.PRIVATE,\n  },\n\n  [BUCKET_PURPOSE.ARCHIVES]: {\n    purpose: BUCKET_PURPOSE.ARCHIVES,\n    description: 'Long-term archived files (cold storage)',\n    useCases: ['Historical records', 'Old documents', 'Compliance archives'],\n    requiresCompliance: true,\n    supportsPublicAccess: false,\n    defaultVisibility: STORAGE_VISIBILITY.PRIVATE,\n  },\n\n  [BUCKET_PURPOSE.BACKUPS]: {\n    purpose: BUCKET_PURPOSE.BACKUPS,\n    description: 'System and database backups',\n    useCases: ['Database dumps', 'Configuration backups', 'Disaster recovery'],\n    recommendedRetention: STORAGE_RETENTION_DAYS.BACKUP_DAYS, // 90 days\n    requiresCompliance: true,\n    supportsPublicAccess: false,\n    defaultVisibility: STORAGE_VISIBILITY.PRIVATE,\n  },\n};\n\n/**\n * Example adapter bucket name translation:\n *\n * Identifier: \"compliance:enterprise:acme-corp:prod\"\n *\n * CloudflareR2Adapter translates to:\n * → plyaz-prod-weur-enterprise-acme-corp-records-vault\n *\n * SupabaseStorageAdapter translates to:\n * → compliance-acme-corp (projects handle env)\n *\n * S3Adapter translates to:\n * → plyaz-compliance-enterprise-acme-corp-prod-us-east-1\n *\n * All use the SAME paths internally!\n */\n","/**\n * Storage Chunked Upload Configuration\n *\n * Configuration constants for multipart/chunked file uploads.\n * Used by adapters that support chunked uploads (R2, Supabase, S3).\n *\n * @module @plyaz/config/storage/chunked-upload\n */\n\nimport { NUMBER_SYSTEM } from '../math/constants';\n\n// Multipliers for chunk sizes (in MB/GB)\nconst STORAGE_CHUNK_MULTIPLIERS = {\n  MIN_MB: 5,\n  MAX_GB: 5,\n  SMALL_MB: 5,\n  MEDIUM_MB: 10,\n  LARGE_MB: 50,\n  HUGE_MB: 100,\n  THRESHOLD_SMALL_MB: 100,\n  THRESHOLD_LARGE_GB: 10,\n} as const;\n\n/**\n * Chunk size configuration for multipart uploads\n * Based on S3/R2 limits: 5MB min, 5GB max per part, 10,000 parts max\n */\nexport const STORAGE_CHUNK_SIZE = {\n  MIN: STORAGE_CHUNK_MULTIPLIERS.MIN_MB * NUMBER_SYSTEM.BYTES_PER_MB, // S3/R2 minimum part size\n  MAX: STORAGE_CHUNK_MULTIPLIERS.MAX_GB * NUMBER_SYSTEM.BYTES_PER_GB, // S3/R2 maximum part size\n  DEFAULT_SMALL: STORAGE_CHUNK_MULTIPLIERS.SMALL_MB * NUMBER_SYSTEM.BYTES_PER_MB, // For files < 100MB\n  DEFAULT_MEDIUM: STORAGE_CHUNK_MULTIPLIERS.MEDIUM_MB * NUMBER_SYSTEM.BYTES_PER_MB, // For files < 1GB\n  DEFAULT_LARGE: STORAGE_CHUNK_MULTIPLIERS.LARGE_MB * NUMBER_SYSTEM.BYTES_PER_MB, // For files < 10GB\n  DEFAULT_HUGE: STORAGE_CHUNK_MULTIPLIERS.HUGE_MB * NUMBER_SYSTEM.BYTES_PER_MB, // For files > 10GB\n} as const;\n\n/**\n * File size thresholds for determining chunk strategy\n */\nexport const STORAGE_FILE_SIZE_THRESHOLDS = {\n  SMALL: STORAGE_CHUNK_MULTIPLIERS.THRESHOLD_SMALL_MB * NUMBER_SYSTEM.BYTES_PER_MB,\n  MEDIUM: NUMBER_SYSTEM.BYTES_PER_GB,\n  LARGE: STORAGE_CHUNK_MULTIPLIERS.THRESHOLD_LARGE_GB * NUMBER_SYSTEM.BYTES_PER_GB,\n  CHUNKED_UPLOAD: STORAGE_CHUNK_MULTIPLIERS.THRESHOLD_SMALL_MB * NUMBER_SYSTEM.BYTES_PER_MB, // Default threshold for switching to chunked upload\n} as const;\n\n/**\n * Check if file should use chunked upload based on size\n *\n * @param file - File buffer or stream\n * @param threshold - Size threshold in bytes (defaults to 100MB)\n * @returns True if file should use chunked upload\n *\n * @example\n * ```typescript\n * const shouldChunk = shouldUseStorageChunkedUpload(fileBuffer);\n * const shouldChunkCustom = shouldUseStorageChunkedUpload(fileBuffer, 50 * 1024 * 1024);\n * ```\n */\nexport function shouldUseStorageChunkedUpload(\n  file: globalThis.Buffer | globalThis.NodeJS.ReadableStream | null | undefined,\n  threshold: number = STORAGE_FILE_SIZE_THRESHOLDS.CHUNKED_UPLOAD\n): boolean {\n  if (!file || !globalThis.Buffer.isBuffer(file)) {\n    return false;\n  }\n  return file.length > threshold;\n}\n\n/**\n * Get optimal chunk size based on file size\n * Follows S3/R2 limits: 5MB min, 5GB max per part, 10,000 parts max\n *\n * @param totalSize - Total file size in bytes\n * @returns Optimal chunk size in bytes\n *\n * @example\n * ```typescript\n * const chunkSize = getStorageOptimalChunkSize(50 * 1024 * 1024); // 50MB file\n * console.log(chunkSize); // 5242880 (5MB)\n * ```\n */\nexport function getStorageOptimalChunkSize(totalSize: number): number {\n  if (totalSize < STORAGE_FILE_SIZE_THRESHOLDS.SMALL) {\n    return STORAGE_CHUNK_SIZE.DEFAULT_SMALL; // 5MB for < 100MB\n  }\n\n  if (totalSize < STORAGE_FILE_SIZE_THRESHOLDS.MEDIUM) {\n    return STORAGE_CHUNK_SIZE.DEFAULT_MEDIUM; // 10MB for < 1GB\n  }\n\n  if (totalSize < STORAGE_FILE_SIZE_THRESHOLDS.LARGE) {\n    return STORAGE_CHUNK_SIZE.DEFAULT_LARGE; // 50MB for < 10GB\n  }\n\n  return STORAGE_CHUNK_SIZE.DEFAULT_HUGE; // 100MB for huge files\n}\n","/**\n * Streaming Configuration Constants\n *\n * Default configuration values for the SSE/WebSocket streaming system.\n * These can be overridden at runtime through configuration objects.\n *\n * @module src/streaming/constants\n */\n\nimport type { StreamChannel } from '@plyaz/types/core';\n\n/**\n * Server Configuration\n *\n * Default values for StreamServer and transport adapters\n */\nexport const STREAMING_SERVER_CONFIG = {\n  /**\n   * Default heartbeat interval in milliseconds\n   * Keeps connections alive and detects stale clients\n   */\n  HEARTBEAT_INTERVAL_MS: 30000,\n\n  /**\n   * Maximum number of concurrent connections per server\n   */\n  MAX_CONNECTIONS: 1000,\n\n  /**\n   * Default channels to subscribe new connections to\n   */\n  DEFAULT_CHANNELS: ['uploads', 'system'] as StreamChannel[],\n} as const;\n\n/**\n * Client Configuration\n *\n * Default values for client-side streaming hooks\n */\nexport const STREAMING_CLIENT_CONFIG = {\n  /**\n   * Delay before attempting to reconnect after disconnect\n   */\n  RECONNECT_DELAY_MS: 1000,\n\n  /**\n   * Maximum reconnection attempts before giving up\n   */\n  MAX_RECONNECT_ATTEMPTS: 10,\n\n  /**\n   * Default SSE endpoint path\n   */\n  SSE_ENDPOINT: '/api/events/stream',\n} as const;\n\n/**\n * Buffer Configuration\n *\n * Default values for message buffering\n */\nexport const STREAMING_BUFFER_CONFIG = {\n  /**\n   * Default buffer size for queued messages (1KB)\n   */\n  DEFAULT_BUFFER_SIZE: 1024,\n\n  /**\n   * Flush interval for buffered messages\n   */\n  FLUSH_INTERVAL_MS: 1000,\n\n  /**\n   * Maximum buffer size before forced flush (10MB)\n   */\n  // eslint-disable-next-line no-magic-numbers\n  MAX_BUFFER_SIZE: 10 * 1024 * 1024,\n} as const;\n\n/**\n * Streaming Package Configuration\n *\n * Aggregated configuration object for streaming system\n */\nexport const STREAMING_PACKAGE_CONFIG = {\n  SERVER: STREAMING_SERVER_CONFIG,\n  CLIENT: STREAMING_CLIENT_CONFIG,\n  BUFFER: STREAMING_BUFFER_CONFIG,\n} as const;\n\n/**\n * Streaming Defaults (Flat)\n *\n * Flattened defaults for direct import compatibility\n * with existing code using STREAMING_DEFAULTS\n */\nexport const STREAMING_DEFAULTS = {\n  HEARTBEAT_INTERVAL_MS: STREAMING_SERVER_CONFIG.HEARTBEAT_INTERVAL_MS,\n  MAX_CONNECTIONS: STREAMING_SERVER_CONFIG.MAX_CONNECTIONS,\n  DEFAULT_CHANNELS: STREAMING_SERVER_CONFIG.DEFAULT_CHANNELS,\n  RECONNECT_DELAY_MS: STREAMING_CLIENT_CONFIG.RECONNECT_DELAY_MS,\n  MAX_RECONNECT_ATTEMPTS: STREAMING_CLIENT_CONFIG.MAX_RECONNECT_ATTEMPTS,\n  SSE_ENDPOINT: STREAMING_CLIENT_CONFIG.SSE_ENDPOINT,\n} as const;\n\n/**\n * Type for streaming defaults\n */\nexport type StreamingDefaults = typeof STREAMING_DEFAULTS;\n","/**\n * AWS Configuration Constants\n * Centralized source of truth for AWS service configurations\n */\n\n/**\n * AWS Default Regions\n */\nexport const AWS_DEFAULT_REGIONS = {\n  /** Default region for most AWS services */\n  DEFAULT: 'us-east-1',\n  /** CloudFront distributions are global but use us-east-1 for API calls */\n  CLOUDFRONT: 'us-east-1',\n  /** S3 default region */\n  S3: 'us-east-1',\n} as const;\n\n/**\n * AWS Service Names (used for AWS Signature V4)\n */\nexport const AWS_SERVICE_NAMES = {\n  CLOUDFRONT: 'cloudfront',\n  S3: 's3',\n  LAMBDA: 'lambda',\n  DYNAMODB: 'dynamodb',\n  SQS: 'sqs',\n  SNS: 'sns',\n  SES: 'ses',\n} as const;\n\n/**\n * AWS Service Hosts/Endpoints\n */\nexport const AWS_SERVICE_HOSTS = {\n  /** CloudFront API endpoint (global) */\n  CLOUDFRONT: 'cloudfront.amazonaws.com',\n  /** S3 endpoint pattern - use with region substitution */\n  S3: 's3.amazonaws.com',\n  /** SES endpoint pattern - use with region substitution */\n  SES: 'email.{region}.amazonaws.com',\n} as const;\n\n/**\n * AWS CloudFront Configuration\n */\nexport const AWS_CLOUDFRONT_CONFIG = {\n  /** Default region for CloudFront API calls */\n  DEFAULT_REGION: AWS_DEFAULT_REGIONS.CLOUDFRONT,\n  /** Service name for AWS Signature V4 */\n  SERVICE_NAME: AWS_SERVICE_NAMES.CLOUDFRONT,\n  /** API endpoint host */\n  HOST: AWS_SERVICE_HOSTS.CLOUDFRONT,\n  /** API version used in paths */\n  API_VERSION: '2020-05-31',\n  /** Maximum paths per invalidation request */\n  MAX_PATHS_PER_INVALIDATION: 1000,\n  /** Free tier invalidation limit per month */\n  FREE_TIER_INVALIDATIONS_PER_MONTH: 3000,\n} as const;\n\n/**\n * AWS S3 Configuration\n */\nexport const AWS_S3_CONFIG = {\n  /** Default region for S3 operations */\n  DEFAULT_REGION: AWS_DEFAULT_REGIONS.S3,\n  /** Service name for AWS Signature V4 */\n  SERVICE_NAME: AWS_SERVICE_NAMES.S3,\n  /** API endpoint host */\n  HOST: AWS_SERVICE_HOSTS.S3,\n} as const;\n\n/**\n * Helper function to get AWS service endpoint with region\n * @param service - AWS service name\n * @param region - AWS region\n * @returns Formatted endpoint URL\n *\n * @example\n * ```typescript\n * const s3Endpoint = getAWSServiceEndpoint('s3', 'us-west-2');\n * console.log(s3Endpoint); // 's3.us-west-2.amazonaws.com'\n *\n * const dynamoEndpoint = getAWSServiceEndpoint('dynamodb', 'eu-central-1');\n * console.log(dynamoEndpoint); // 'dynamodb.eu-central-1.amazonaws.com'\n * ```\n */\nexport function getAWSServiceEndpoint(service: string, region: string): string {\n  return `${service}.${region}.amazonaws.com`;\n}\n","/**\n * Campaign Configuration Constants\n *\n * Centralized configuration for campaign-related constants.\n * Used across the application for consistent campaign behavior.\n */\n\nimport { CAMPAIGN_TITLE_DENYLIST } from '../security/denylist';\n\n/** Campaign duration constants */\nexport const CAMPAIGN_DURATION = {\n  SHORT: 30,\n  MEDIUM: 60,\n  LONG: 90,\n} as const;\n\n/** Valid campaign durations */\nexport const VALID_DURATIONS = [\n  CAMPAIGN_DURATION.SHORT,\n  CAMPAIGN_DURATION.MEDIUM,\n  CAMPAIGN_DURATION.LONG,\n] as const;\n\n/** Campaign funding limits */\nexport const CAMPAIGN_FUNDING = {\n  MIN_TARGET: 100,\n  MAX_TARGET: 1000000,\n  DEFAULT_TARGET: 5000,\n} as const;\n\n/** Reserved campaign titles */\nexport const RESERVED_TITLES = CAMPAIGN_TITLE_DENYLIST;\n"]}