@plyaz/config 1.7.2 → 1.7.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/env.ts","../src/providers/alchemy.ts","../src/providers/oauth.ts","../src/chains/contracts.ts","../src/chains/supportedChains.ts","../src/features.ts","../src/domains.ts","../src/locales.ts","../src/app.ts","../src/security.ts","../src/utils/string/constants.ts","../src/utils/collection/constants.ts","../src/utils/hash/constants.ts","../src/http/constants.ts","../src/time/constants.ts","../src/math/constants.ts","../src/performance/index.ts","../src/network/constants.ts","../src/display/constants.ts","../src/social.ts","../src/a11y/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/errors/constants.ts","../src/logger/constants.ts","../src/api/environments.ts","../src/api/package/defaults.ts","../src/auth/constants.ts","../src/payments/error-messages.ts","../src/payments/events.ts","../src/payments/gateway.ts","../src/payments/providers/stripe/constant.ts","../src/payments/providers/base-messages.ts","../src/payments/validators.ts","../src/db/constants.ts"],"names":["isServer","isDev","isProd","isTest","ALCHEMY_CONFIG","OAUTH_PROVIDERS","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","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","HTTP_STATUS","TIME_CONSTANTS","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","SOCIAL_LINKS","PRODUCT_LINKS","BLOG","A11Y_CONSTANTS","ARIA_ROLES","ARIA_ATTRIBUTES","KEYBOARD_CODES","ANNOUNCEMENT_PRIORITY","FOCUS_TRAP","ISO_STANDARDS","LOCALE_FORMATS","DATE_FORMATS","TEXT_DIRECTION","PHONE_FORMATS","PHONE_PATTERNS","ADDRESS_FORMATS","ADDRESS_FIELDS","CURRENCY_CODES","CURRENCY_INFO","COUNTRY_CODES","COUNTRY_CALLING_CODES","COUNTRY_REGIONS","COUNTRY_REGIONS_DETAILED","LOCALE_REGIONS","LOCALE_REGIONS_DETAILED","TIMEZONE_REGIONS","ERRORS_CODES","BASE_ERRORS_RESPONSE","LOGGER_LEVELS","SENSITIVE_DATA","LOGGER_TRANSPORT_CONFIGURATION","PRODUCTION_CONFIG","STAGING_CONFIG","DEVELOPMENT_CONFIG","DEFAULT_API_CONFIG","DEFAULT_API_CLIENT_OPTIONS","SUPABASE_CONFIG","CLERK_PUBLISHABLE_KEY","DEFAULT_HMAC_ALGORITHM","DEFAULT_ENVIRONMENT","ADAPTER_ERROR_CODE","ADAPTER_LOG_MESSAGE","THRESHOLDS","SENSITIVE_KEYS","RISK_SCORE","LOG_LEVELS","REFUND_DEFAULT_REASONS","REDACTED","COMPONENTS","PAYMENT_ERROR_CODES","PAYMENT_ERROR_MESSAGES","PAYMENT_RESOLUTION_STEPS","PAYMENT_ALERT_SEVERITY","ERROR_SEVERITY","PROCESSING_ERROR_MESSAGES","WEBHOOK_CONSTANTS","PAYMENT_ERROR_CATEGORY","RECOMMENDATION_MESSAGES","RECOVERY_STEPS","REFUND_ERROR_MESSAGES","REFUND_ERROR_CODES","DEFAULT_REFUND_LEVELS","COMPLIANCE_ERROR_MESSAGES","FACTORY_MESSAGES","PAYLOAD_KEYS","STRIPE_ERROR_TYPES","PROVIDER_ERROR_MESSAGES","SECURITY_ERROR_MESSAGES","VALIDATION_CONSTANTS","DEFAULT_PAYEMNT_PRIORITY","DEFAULT_URGENT","DEFAULT_MAX_LISTENERS","DEFAULT_HANDLER_TIMEOUT_MS","DEFAULT_EVENT_COUNT","DEFAULT_SUCCESS_THRESHOLD","DEFAULT_PARTIAL_SUCCESS_THRESHOLD","EVENT_DEFAULTS","EVENT_COMPONENT","EVENT_ERROR_CODE","EVENT_ERROR_MESSAGE","EVENT_ENVIRONMENT","PHASE_NONE","PHASE_CAPTURING","PHASE_AT_TARGET","PHASE_BUBBLING","EVENT_PHASE","EVENT_META_KEY","EVENT_SOURCE_FIELD","EVENT_RESULT_STATUS","EmptyArray","__name","CurrentTimestamp","SETTLED_PROMISE_STATUS","EVENT_NORMALIZER_MESSAGES","field","DEFAULT_RETRY_DELAY_MS","MAX_CIRCUIT_OPEN_MS","DEFAULT_CIRCUIT_BREAKER_FAILURE_THRESHOLD","FALLBACK_REASON","FALLBACK_NEXT_STEPS","RISK_LEVEL","SECURITY_FLAGS","CUSTOM_RULE_FIELD","CUSTOM_RULE_OPERATER","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","DEFAULT_PROCESSING_TIME","DEFAULT_SETTLEMENT_TIME","STRIPE_PAYMENT_INTENT_STATUS","STRIPE_DATA_PATHS","PAYMENT_OPERATION","STRIPE_MESSAGES","PROVIDER_CONTEXT","PROVIDER_ENDPOINTS","PROVIDER_MESSAGES","provider","SUPPORTED_CURRENCIES","VALIDATION_MESSAGES","VALIDATOR_NAMES","CORE_FIELDS","VALID_BILLING_CYCLES","VALID_RISK_LEVELS","VALID_RECURRENCE_FREQUENCIES","MIN_POSITIVE_AMOUNT","CURRENCY_CODE_LENGTH","magicDigits"],"mappings":"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,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,KAGJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,KAGJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CAGJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CAGJ,GAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CAGJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CAGJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,IAAA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","file":"index.cjs","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","/**\n * OAuth provider configurations\n */\nexport const OAUTH_PROVIDERS = {\n /**\n * Google OAuth configuration\n */\n google: {\n /**\n * Google OAuth client ID\n */\n clientId: globalThis.process.env.NEXT_PUBLIC_GOOGLE_CLIENT_ID!,\n /**\n * Google OAuth client secret\n */\n clientSecret: globalThis.process.env.GOOGLE_CLIENT_SECRET!,\n /**\n * Google OAuth redirect URI\n */\n redirectUri: globalThis.process.env.NEXT_PUBLIC_GOOGLE_REDIRECT_URI!,\n /**\n * Google OAuth permission scopes\n */\n scopes: ['openid', 'profile', 'email'],\n },\n\n /**\n * Discord OAuth configuration\n */\n discord: {\n /**\n * Discord OAuth client ID\n */\n clientId: globalThis.process.env.NEXT_PUBLIC_DISCORD_CLIENT_ID!,\n /**\n * Discord OAuth client secret\n */\n clientSecret: globalThis.process.env.DISCORD_CLIENT_SECRET!,\n /**\n * Discord OAuth redirect URI\n */\n redirectUri: globalThis.process.env.NEXT_PUBLIC_DISCORD_REDIRECT_URI!,\n /**\n * Discord OAuth permission scopes\n */\n scopes: ['identify', 'email'],\n },\n\n /**\n * Facebook OAuth configuration\n */\n facebook: {\n /**\n * Facebook OAuth client ID\n */\n clientId: globalThis.process.env.NEXT_PUBLIC_FACEBOOK_CLIENT_ID!,\n /**\n * Facebook OAuth client secret\n */\n clientSecret: globalThis.process.env.FACEBOOK_CLIENT_SECRET!,\n /**\n * Facebook OAuth redirect URI\n */\n redirectUri: globalThis.process.env.NEXT_PUBLIC_FACEBOOK_REDIRECT_URI!,\n /**\n * Facebook OAuth permission scopes\n */\n scopes: ['public_profile', 'email'],\n },\n} as const;\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 * 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 * 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 * HTTP Status Code Constants\n *\n * Common HTTP status codes used throughout the application.\n * Based on RFC 9110 (HTTP Semantics) and common usage patterns.\n *\n * @module http/constants\n */\n\n/**\n * Standard HTTP status codes\n */\nexport const HTTP_STATUS = {\n // 1xx Informational\n /**\n * 100 Continue - The initial part of a request has been received\n */\n CONTINUE: 100,\n\n /**\n * 101 Switching Protocols - The server is switching protocols\n */\n SWITCHING_PROTOCOLS: 101,\n\n /**\n * 102 Processing - The server has received and is processing the request\n */\n PROCESSING: 102,\n\n /**\n * 103 Early Hints - Used to return some response headers before final HTTP message\n */\n EARLY_HINTS: 103,\n\n // 2xx Success\n /**\n * 200 OK - The request succeeded\n */\n OK: 200,\n\n /**\n * 201 Created - The request succeeded and a new resource was created\n */\n CREATED: 201,\n\n /**\n * 202 Accepted - The request has been received but not yet acted upon\n */\n ACCEPTED: 202,\n\n /**\n * 203 Non-Authoritative Information - The returned metadata is not from the origin server\n */\n NON_AUTHORITATIVE_INFORMATION: 203,\n\n /**\n * 204 No Content - There is no content to send for this request\n */\n NO_CONTENT: 204,\n\n /**\n * 205 Reset Content - Tells the user agent to reset the document\n */\n RESET_CONTENT: 205,\n\n /**\n * 206 Partial Content - The server is delivering only part of the resource\n */\n PARTIAL_CONTENT: 206,\n\n /**\n * 207 Multi-Status - Conveys information about multiple resources\n */\n MULTI_STATUS: 207,\n\n /**\n * 208 Already Reported - The members of a DAV binding have already been enumerated\n */\n ALREADY_REPORTED: 208,\n\n /**\n * 226 IM Used - The server has fulfilled a request for the resource\n */\n IM_USED: 226,\n\n // 3xx Redirection\n /**\n * 300 Multiple Choices - Multiple options for the resource are available\n */\n MULTIPLE_CHOICES: 300,\n\n /**\n * 301 Moved Permanently - The URL of the requested resource has been changed permanently\n */\n MOVED_PERMANENTLY: 301,\n\n /**\n * 302 Found - The resource resides temporarily under a different URI\n */\n FOUND: 302,\n\n /**\n * 303 See Other - Direct the client to get the resource at another URI\n */\n SEE_OTHER: 303,\n\n /**\n * 304 Not Modified - The cached version is still valid\n */\n NOT_MODIFIED: 304,\n\n /**\n * 305 Use Proxy - Defined in a previous version of the HTTP specification\n */\n USE_PROXY: 305,\n\n /**\n * 307 Temporary Redirect - The request should be repeated with another URI\n */\n TEMPORARY_REDIRECT: 307,\n\n /**\n * 308 Permanent Redirect - The resource is permanently located at another URI\n */\n PERMANENT_REDIRECT: 308,\n\n // 4xx Client Errors\n /**\n * 400 Bad Request - The server cannot process the request due to client error\n */\n BAD_REQUEST: 400,\n\n /**\n * 401 Unauthorized - Authentication is required and has failed or not been provided\n */\n UNAUTHORIZED: 401,\n\n /**\n * 402 Payment Required - Reserved for future use\n */\n PAYMENT_REQUIRED: 402,\n\n /**\n * 403 Forbidden - The server understood the request but refuses to authorize it\n */\n FORBIDDEN: 403,\n\n /**\n * 404 Not Found - The server cannot find the requested resource\n */\n NOT_FOUND: 404,\n\n /**\n * 405 Method Not Allowed - The request method is not supported for the requested resource\n */\n METHOD_NOT_ALLOWED: 405,\n\n /**\n * 406 Not Acceptable - The requested resource is not available in a format acceptable to the client\n */\n NOT_ACCEPTABLE: 406,\n\n /**\n * 407 Proxy Authentication Required - The client must authenticate itself with the proxy\n */\n PROXY_AUTHENTICATION_REQUIRED: 407,\n\n /**\n * 408 Request Timeout - The server timed out waiting for the request\n */\n REQUEST_TIMEOUT: 408,\n\n /**\n * 409 Conflict - The request conflicts with the current state of the server\n */\n CONFLICT: 409,\n\n /**\n * 410 Gone - The requested resource is no longer available and will not be available again\n */\n GONE: 410,\n\n /**\n * 411 Length Required - The request did not specify the length of its content\n */\n LENGTH_REQUIRED: 411,\n\n /**\n * 412 Precondition Failed - The server does not meet one of the preconditions\n */\n PRECONDITION_FAILED: 412,\n\n /**\n * 413 Payload Too Large - The request is larger than the server is willing to process\n */\n PAYLOAD_TOO_LARGE: 413,\n\n /**\n * 414 URI Too Long - The URI provided was too long for the server to process\n */\n URI_TOO_LONG: 414,\n\n /**\n * 415 Unsupported Media Type - The request entity has a media type not supported by the server\n */\n UNSUPPORTED_MEDIA_TYPE: 415,\n\n /**\n * 416 Range Not Satisfiable - The client has asked for a portion of the file that the server cannot supply\n */\n RANGE_NOT_SATISFIABLE: 416,\n\n /**\n * 417 Expectation Failed - The server cannot meet the requirements of the Expect request-header field\n */\n EXPECTATION_FAILED: 417,\n\n /**\n * 418 I'm a teapot - The server refuses to brew coffee because it is a teapot\n */\n IM_A_TEAPOT: 418,\n\n /**\n * 421 Misdirected Request - The request was directed at a server that is not able to produce a response\n */\n MISDIRECTED_REQUEST: 421,\n\n /**\n * 422 Unprocessable Entity - The request was well-formed but was unable to be followed due to semantic errors\n */\n UNPROCESSABLE_ENTITY: 422,\n\n /**\n * 423 Locked - The resource that is being accessed is locked\n */\n LOCKED: 423,\n\n /**\n * 424 Failed Dependency - The request failed due to failure of a previous request\n */\n FAILED_DEPENDENCY: 424,\n\n /**\n * 425 Too Early - The server is unwilling to risk processing a request that might be replayed\n */\n TOO_EARLY: 425,\n\n /**\n * 426 Upgrade Required - The client should switch to a different protocol\n */\n UPGRADE_REQUIRED: 426,\n\n /**\n * 428 Precondition Required - The origin server requires the request to be conditional\n */\n PRECONDITION_REQUIRED: 428,\n\n /**\n * 429 Too Many Requests - The user has sent too many requests in a given amount of time\n */\n TOO_MANY_REQUESTS: 429,\n\n /**\n * 431 Request Header Fields Too Large - The server is unwilling to process the request because its header fields are too large\n */\n REQUEST_HEADER_FIELDS_TOO_LARGE: 431,\n\n /**\n * 451 Unavailable For Legal Reasons - The user requested a resource that cannot legally be provided\n */\n UNAVAILABLE_FOR_LEGAL_REASONS: 451,\n\n // 5xx Server Errors\n /**\n * 500 Internal Server Error - The server encountered an unexpected condition\n */\n INTERNAL_SERVER_ERROR: 500,\n\n /**\n * 501 Not Implemented - The server does not support the functionality required to fulfill the request\n */\n NOT_IMPLEMENTED: 501,\n\n /**\n * 502 Bad Gateway - The server received an invalid response from the upstream server\n */\n BAD_GATEWAY: 502,\n\n /**\n * 503 Service Unavailable - The server is not ready to handle the request\n */\n SERVICE_UNAVAILABLE: 503,\n\n /**\n * 504 Gateway Timeout - The server did not get a response in time from the upstream server\n */\n GATEWAY_TIMEOUT: 504,\n\n /**\n * 505 HTTP Version Not Supported - The HTTP version used in the request is not supported by the server\n */\n HTTP_VERSION_NOT_SUPPORTED: 505,\n\n /**\n * 506 Variant Also Negotiates - The server has an internal configuration error\n */\n VARIANT_ALSO_NEGOTIATES: 506,\n\n /**\n * 507 Insufficient Storage - The server is unable to store the representation needed to complete the request\n */\n INSUFFICIENT_STORAGE: 507,\n\n /**\n * 508 Loop Detected - The server detected an infinite loop while processing the request\n */\n LOOP_DETECTED: 508,\n\n /**\n * 510 Not Extended - Further extensions to the request are required for the server to fulfill it\n */\n NOT_EXTENDED: 510,\n\n /**\n * 511 Network Authentication Required - The client needs to authenticate to gain network access\n */\n NETWORK_AUTHENTICATION_REQUIRED: 511,\n} as const;\n\n/**\n * Type for HTTP status codes\n */\nexport type HttpStatusCode = (typeof HTTP_STATUS)[keyof typeof HTTP_STATUS];\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\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 * 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} 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 * 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","/**\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 * 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","// 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","// 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 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 = globalThis.process.env.NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY ?? '';\n","import { ERROR_SEVERITY, PAYMENT_ERROR_CATEGORY } from '@plyaz/types';\n\nexport const DEFAULT_HMAC_ALGORITHM = 'sha256';\nexport const DEFAULT_ENVIRONMENT = 'unknown';\n\nexport const ADAPTER_ERROR_CODE = {\n AdapterInitFailed: 'ADAPTER_INIT_FAILED',\n MissingProviderType: 'MISSING_PROVIDER_TYPE',\n MissingEnvironment: 'MISSING_ENVIRONMENT',\n MissingCredentials: 'MISSING_CREDENTIALS',\n MissingWebhookUrl: 'MISSING_WEBHOOK_URL',\n MissingUnregisterEndpoint: 'MISSING_UNREGISTER_ENDPOINT',\n HmacComputationFailed: 'HMAC_COMPUTATION_FAILED',\n AdapterShutdownError: 'ADAPTER_SHUTDOWN_ERROR',\n} as const;\n\nexport const ADAPTER_LOG_MESSAGE = {\n InitSuccess: 'Adapter initialized successfully',\n InitFail: 'Adapter initialization failed:',\n ShutdownStart: 'Shutdown started',\n ShutdownComplete: 'Shutdown completed',\n ShutdownError: 'Error during shutdown:',\n NotInitialized: 'Adapter is not initialized',\n HealthFail: 'Health check failed: missing config/credentials',\n HealthError: 'quickHealthCheck error:',\n WebhookNoopRegister: '(noop) register webhook at',\n WebhookNoopUnregister: '(noop) unregister webhook:',\n ReadinessError: 'Error during readiness check:',\n} as const;\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// Refund error default reasons\nexport const REFUND_DEFAULT_REASONS = {\n PROVIDER_RESTRICTION: 'ProviderRestriction',\n GENERIC: 'An unexpected error occurred while processing refund',\n};\n\n// Webhook redacted placeholders\nexport const REDACTED = {\n RAW_BODY: '[REDACTED_RAW_BODY]',\n SENSITIVE: '[REDACTED]',\n};\n\nexport const COMPONENTS = {\n PAYMENTS: 'payments',\n VALIDATION: 'validation',\n FRAUD: 'fraud-detector',\n WEBHOOK_PROCESSOR: 'webhook-processor',\n FRAUD_DETECTED_ERROR: 'FraudDetectedError',\n ROUTER_STRATEGY: 'RouterStrategy',\n PAYMENT_GATEWAY: 'PaymentGateway',\n PAYMENT_PROCESSOR: 'PaymentProcessor',\n CAPTURE_PROCESSOR: 'CaptureProcessor',\n CANCEL_PROCESSOR: 'CancelProcessor',\n STATUS_PROCESSOR: 'StatusProcessor',\n} as const;\n\nexport const PAYMENT_ERROR_CODES = {\n PAYMENTS_PACKAGE_ERROR: 'PAYMENTS_PACKAGE_ERROR',\n VALIDATION_ERROR: 'VALIDATION_ERROR',\n AUTH_ERROR: 'AUTH_ERROR',\n PROVIDER_ERROR: 'PROVIDER_ERROR',\n REFUND_AUTHORIZATION_ERROR: 'REFUND_AUTHORIZATION_ERROR',\n REFUND_PROCESSING_ERROR: 'REFUND_PROCESSING_ERROR',\n WEBHOOK_ERROR: 'WEBHOOK_ERROR',\n FRAUD_DETECTED: 'FRAUD_DETECTED',\n} as const;\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\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_RESOLUTION_STEPS = {\n CONFIG_VERIFICATION: 'Verify payment configuration settings.',\n CREDENTIALS_CHECK: 'Check payment provider API credentials.',\n DEPLOYMENT_REVIEW: 'Review recent deployment or configuration changes.',\n RETRY_OPERATION: 'Retry the operation after a short delay.',\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 RESOLUTION_STEPS: ['Check the payment provider status.', 'Retry the operation if appropriate.'],\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_CATEGORY: PAYMENT_ERROR_CATEGORY.Webhook,\n DEFAULT_CODE: PAYMENT_ERROR_CODES.WEBHOOK_ERROR,\n DEFAULT_USER_MESSAGE: 'An error occurred while handling the webhook.',\n DEFAULT_RESOLUTION_STEPS: [\n 'Verify webhook configuration and endpoint URL.',\n 'Check webhook payload and signature.',\n 'Ensure retry logic handles transient errors.',\n ],\n};\n\nexport const RECOMMENDATION_MESSAGES = {\n RETRY_LOGIC: 'Review retry logic — too many retryable errors.',\n CHECK_PROVIDER: 'Check payment provider connectivity or credentials.',\n CRITICAL_ALERT: 'Trigger alert — critical payment errors detected.',\n USER_FACING: 'Improve user-facing error handling for better UX.',\n SYSTEM_STABLE: 'System stable — continue monitoring.',\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 RESOLUTION_STEPS: [\n 'Verify refund eligibility.',\n 'Check transaction status and history.',\n 'Ensure sufficient balance for refunds.',\n 'Retry after resolving any issues.',\n ],\n};\n\nexport const REFUND_ERROR_CODES = {\n NOT_ALLOWED: 'REFUND_NOT_ALLOWED',\n AUTHORIZATION: 'REFUND_AUTHORIZATION_ERROR',\n PROCESSING: 'REFUND_PROCESSING_ERROR',\n WEBHOOK_ERROR: 'WEBHOOK_ERROR',\n};\n\nexport const DEFAULT_REFUND_LEVELS = {\n REQUIRED: 'manager',\n CURRENT: 'user',\n};\n\nexport const COMPLIANCE_ERROR_MESSAGES = {\n API_MESSAGE: 'A compliance error occurred.',\n USER_MESSAGE: 'A compliance or regulatory restriction prevented this action.',\n KYC_REQUIRED: 'KYC verification is required to proceed.',\n GEO_RESTRICTED: 'This transaction is not permitted in your region.',\n RESOLUTION_STEPS: [\n 'Review regulatory and compliance requirements.',\n 'Ensure KYC/AML verification is completed.',\n 'Verify geographic and provider restrictions.',\n ],\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 RESOLUTION_STEPS: [\n 'Check the payment provider status and logs.',\n 'Verify network connectivity.',\n 'Retry the operation if safe to do so.',\n ],\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 RESOLUTION_STEPS: [\n 'Verify fraud detection rules and thresholds.',\n 'Review flagged transactions.',\n 'Ensure user identity and payment method verification.',\n ],\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 RESOLUTION_STEPS: [\n 'Review fraud detection logs for triggered rules.',\n 'Verify customer identity and payment method legitimacy.',\n 'If false positive, adjust fraud rule thresholds.',\n 'Escalate to manual fraud review team if necessary.',\n ],\n RISK_THRESHOLDS: {\n HIGH: 70,\n CRITICAL: 90,\n },\n },\n};\n\nexport const VALIDATION_CONSTANTS = {\n DEFAULT_MESSAGE: PAYMENT_ERROR_MESSAGES.VALIDATION,\n DEFAULT_CODE: PAYMENT_ERROR_CODES.VALIDATION_ERROR,\n DEFAULT_CATEGORY: PAYMENT_ERROR_CATEGORY.Validation,\n DEFAULT_USER_MESSAGE: 'Invalid payment input. Please check your data.',\n DEFAULT_RESOLUTION_STEPS: ['Review the input values and retry the operation.'],\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 fields for custom rule evaluation */\nexport const CUSTOM_RULE_FIELD = {\n AMOUNT: 'request.amount',\n CURRENCY: 'request.currency',\n USER_TYPE: 'request.userType',\n REGION: 'request.metadata.geoInfo.region',\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","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 // Payment lifecycle\n PAYMENT_INTENT_CREATED: 'payment_intent.created',\n PAYMENT_INTENT_PROCESSING: 'payment_intent.processing',\n PAYMENT_INTENT_REQUIRES_ACTION: 'payment_intent.requires_action',\n PAYMENT_INTENT_SUCCEEDED: 'payment_intent.succeeded',\n PAYMENT_INTENT_FAILED: 'payment_intent.payment_failed',\n PAYMENT_INTENT_CANCELED: 'payment_intent.canceled',\n PAYMENT_INTENT_EXPIRED: 'payment_intent.expired',\n PAYMENT_INTENT_AUTHORIZED: 'payment_intent.authorized',\n PAYMENT_INTENT_CAPTURED: 'payment_intent.captured',\n PAYMENT_INTENT_HELD: 'payment_intent.held',\n PAYMENT_INTENT_RELEASED: 'payment_intent.released',\n\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\n // Invoice events\n INVOICE_PAYMENT_SUCCEEDED: 'invoice.payment_succeeded',\n INVOICE_PAYMENT_FAILED: 'invoice.payment_failed',\n} as const;\n\n/** Default processing time estimate */\nexport const DEFAULT_PROCESSING_TIME = {\n MINIMUM_MINUTES: 1,\n MAXIMUM_MINUTES: 60,\n TYPICAL_MINUTES: 10,\n FACTORS: ['default estimate'],\n};\n\n/** Default settlement time estimate */\nexport const DEFAULT_SETTLEMENT_TIME = {\n MINIMUM_DAYS: 1,\n MAXIMUM_DAYS: 7,\n TYPICAL_DAYS: 3,\n AFFECTED_BY_HOLIDAYS: true,\n};\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\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} as const;\n","/**\n * Shared constants for ProviderRegistry and PaymentAdapterFactory.\n * ESLint naming convention compliant (camelCase keys).\n */\n\nexport const PROVIDER_CONTEXT = {\n REGISTRY: 'ProviderRegistry',\n FACTORY: 'ProviderFactory',\n FALLBACK: 'FallbackHandler',\n AB_TESTING: 'ABTesting',\n} as const;\n\nexport const PROVIDER_ENDPOINTS = {\n REGISTRY_GET_FACTORY: `${PROVIDER_CONTEXT.REGISTRY}.getFactory`,\n FACTORY_CREATE_ADAPTER: `${PROVIDER_CONTEXT.FACTORY}.createAdapter`,\n FACTORY_GET_CONFIG: `${PROVIDER_CONTEXT.FALLBACK}.getProviderConfig`,\n FACTORY_GET_OPTIMAL_ADAPTER: `${PROVIDER_CONTEXT.AB_TESTING}.getOptimalAdapter`,\n} as const;\n\nexport const PROVIDER_MESSAGES = {\n // Registry messages\n providerAlreadyRegistered: (provider: string): string =>\n `[${PROVIDER_CONTEXT.REGISTRY}] Provider '${provider}' is already registered. Overwriting.`,\n providerRegistered: (provider: string): string =>\n `[${PROVIDER_CONTEXT.FACTORY}] Registered provider: ${provider}`,\n providerNotRegistered: (provider: string): string =>\n `[${PROVIDER_CONTEXT.REGISTRY}] Provider '${provider}' is not registered.`,\n\n // Factory messages\n adapterInitFailed: (provider: string): string =>\n `[${PROVIDER_CONTEXT.FACTORY}] Failed to initialize adapter for ${provider}`,\n optimalAdapterFailed: (provider: string): string =>\n `[${PROVIDER_CONTEXT.FACTORY}] Failed to get optimal adapter for: ${provider}`,\n} as const;\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 * 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 magicDigits = {\n TWO: 2,\n FIVE: 5,\n NINE: 9,\n TEN: 10,\n TWENTY_FOUR: 24,\n THIRTY_SIX: 36,\n SIXTY: 60,\n NINETY: 90,\n HUNDERD: 100,\n FIVE_THOUSAND: 5000,\n THOUSAND: 1000,\n THIRTY_SIX_HUNDERD: 3600,\n THREE_HUNDERD:300,\n SIXTEEN: 16,\n THIRTY_THOUSAND: 30000\n};"]}
1
+ {"version":3,"sources":["../src/env.ts","../src/providers/alchemy.ts","../src/providers/oauth.ts","../src/chains/contracts.ts","../src/chains/supportedChains.ts","../src/features.ts","../src/domains.ts","../src/locales.ts","../src/app.ts","../src/security.ts","../src/utils/string/constants.ts","../src/utils/collection/constants.ts","../src/utils/hash/constants.ts","../src/http/constants.ts","../src/time/constants.ts","../src/math/constants.ts","../src/performance/index.ts","../src/network/constants.ts","../src/display/constants.ts","../src/social.ts","../src/a11y/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/errors/constants.ts","../src/logger/constants.ts","../src/api/environments.ts","../src/api/package/defaults.ts","../src/auth/constants.ts","../src/payments/error-messages.ts","../src/payments/events.ts","../src/payments/gateway.ts","../src/payments/providers/stripe/constant.ts","../src/payments/providers/base-messages.ts","../src/payments/validators.ts","../src/payments/routers.ts","../src/payments/processor.ts","../src/db/constants.ts"],"names":["isServer","isDev","isProd","isTest","ALCHEMY_CONFIG","OAUTH_PROVIDERS","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","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","HTTP_STATUS","TIME_CONSTANTS","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","SOCIAL_LINKS","PRODUCT_LINKS","BLOG","A11Y_CONSTANTS","ARIA_ROLES","ARIA_ATTRIBUTES","KEYBOARD_CODES","ANNOUNCEMENT_PRIORITY","FOCUS_TRAP","ISO_STANDARDS","LOCALE_FORMATS","DATE_FORMATS","TEXT_DIRECTION","PHONE_FORMATS","PHONE_PATTERNS","ADDRESS_FORMATS","ADDRESS_FIELDS","CURRENCY_CODES","CURRENCY_INFO","COUNTRY_CODES","COUNTRY_CALLING_CODES","COUNTRY_REGIONS","COUNTRY_REGIONS_DETAILED","LOCALE_REGIONS","LOCALE_REGIONS_DETAILED","TIMEZONE_REGIONS","ERRORS_CODES","BASE_ERRORS_RESPONSE","LOGGER_LEVELS","SENSITIVE_DATA","LOGGER_TRANSPORT_CONFIGURATION","PRODUCTION_CONFIG","STAGING_CONFIG","DEVELOPMENT_CONFIG","DEFAULT_API_CONFIG","DEFAULT_API_CLIENT_OPTIONS","SUPABASE_CONFIG","CLERK_PUBLISHABLE_KEY","DEFAULT_HMAC_ALGORITHM","DEFAULT_ENVIRONMENT","ADAPTER_ERROR_CODE","ADAPTER_LOG_MESSAGE","THRESHOLDS","SENSITIVE_KEYS","RISK_SCORE","LOG_LEVELS","REFUND_DEFAULT_REASONS","REDACTED","COMPONENTS","PAYMENT_ERROR_CODES","PAYMENT_ERROR_MESSAGES","PAYMENT_RESOLUTION_STEPS","PAYMENT_ALERT_SEVERITY","ERROR_SEVERITY","PROCESSING_ERROR_MESSAGES","WEBHOOK_CONSTANTS","PAYMENT_ERROR_CATEGORY","RECOMMENDATION_MESSAGES","RECOVERY_STEPS","REFUND_ERROR_MESSAGES","REFUND_ERROR_CODES","DEFAULT_REFUND_LEVELS","COMPLIANCE_ERROR_MESSAGES","FACTORY_MESSAGES","PAYLOAD_KEYS","STRIPE_ERROR_TYPES","PROVIDER_ERROR_MESSAGES","SECURITY_ERROR_MESSAGES","VALIDATION_CONSTANTS","DEFAULT_PAYEMNT_PRIORITY","DEFAULT_URGENT","DEFAULT_MAX_LISTENERS","DEFAULT_HANDLER_TIMEOUT_MS","DEFAULT_EVENT_COUNT","DEFAULT_SUCCESS_THRESHOLD","DEFAULT_PARTIAL_SUCCESS_THRESHOLD","EVENT_DEFAULTS","EVENT_COMPONENT","EVENT_ERROR_CODE","EVENT_ERROR_MESSAGE","EVENT_ENVIRONMENT","PHASE_NONE","PHASE_CAPTURING","PHASE_AT_TARGET","PHASE_BUBBLING","EVENT_PHASE","EVENT_META_KEY","EVENT_SOURCE_FIELD","EVENT_RESULT_STATUS","EmptyArray","__name","CurrentTimestamp","SETTLED_PROMISE_STATUS","EVENT_NORMALIZER_MESSAGES","field","DEFAULT_RETRY_DELAY_MS","MAX_CIRCUIT_OPEN_MS","DEFAULT_CIRCUIT_BREAKER_FAILURE_THRESHOLD","FALLBACK_REASON","FALLBACK_NEXT_STEPS","RISK_LEVEL","SECURITY_FLAGS","CUSTOM_RULE_FIELD","CUSTOM_RULE_OPERATER","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","DEFAULT_PROCESSING_TIME","DEFAULT_SETTLEMENT_TIME","STRIPE_PAYMENT_INTENT_STATUS","STRIPE_DATA_PATHS","PAYMENT_OPERATION","STRIPE_MESSAGES","PROVIDER_CONTEXT","PROVIDER_ENDPOINTS","PROVIDER_MESSAGES","provider","SUPPORTED_CURRENCIES","VALIDATION_MESSAGES","VALIDATOR_NAMES","CORE_FIELDS","VALID_BILLING_CYCLES","VALID_RISK_LEVELS","VALID_RECURRENCE_FREQUENCIES","MIN_POSITIVE_AMOUNT","CURRENCY_CODE_LENGTH","ROUTER_CONTEXT","routerMessages","err","ruleId","ruleName","region","REFUND_MESSAGES","RECONCILIATION_MESSAGES","PAYMENT_PROCESSOR_PATTERN","PROCESSOR_MESSAGES","NUMERIX"],"mappings":"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,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CAGJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CAGJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CAGJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CAGJ,GAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CAGJ,EAAA,CAAI,IACN,EAKaC,EAAAA,CAAwB,CAInC,IAAA,CAAM,CAAC,IAAA,CAAM,IAAI,EAIjB,KAAA,CAAO,CAAC,IAAI,CAAA,CAIZ,KAAA,CAAO,CAAC,IAAI,CAAA,CAIZ,KAAA,CAAO,CAAC,IAAI,CAAA,CAIZ,MAAO,CAAC,IAAI,CAAA,CAIZ,KAAA,CAAO,CAAC,IAAI,EAIZ,KAAA,CAAO,CAAC,IAAI,CAAA,CAIZ,KAAA,CAAO,CAAC,IAAI,CAAA,CAIZ,KAAA,CAAO,CAAC,IAAI,CAAA,CAIZ,KAAA,CAAO,CAAC,IAAI,CAAA,CAIZ,MAAO,CAAC,IAAI,EAIZ,KAAA,CAAO,CAAC,IAAI,CAAA,CAIZ,KAAA,CAAO,CAAC,IAAI,CAAA,CAIZ,KAAA,CAAO,CAAC,IAAI,CAAA,CAIZ,MAAO,CAAC,IAAI,CAAA,CAIZ,KAAA,CAAO,CAAC,IAAI,EAIZ,KAAA,CAAO,CAAC,IAAI,CAAA,CAIZ,KAAA,CAAO,CAAC,IAAI,CAAA,CAIZ,KAAA,CAAO,CAAC,IAAI,CAAA,CAIZ,MAAO,CAAC,IAAI,CAAA,CAIZ,KAAA,CAAO,CAAC,IAAI,EAIZ,KAAA,CAAO,CAAC,IAAI,CAAA,CAIZ,KAAA,CAAO,CAAC,IAAI,CAAA,CAIZ,KAAA,CAAO,CAAC,IAAI,CAAA,CAIZ,MAAO,CAAC,IAAI,CAAA,CAIZ,KAAA,CAAO,CAAC,IAAI,EAIZ,KAAA,CAAO,CAAC,IAAI,CAAA,CAIZ,KAAA,CAAO,CAAC,IAAI,CAAA,CAIZ,KAAA,CAAO,CAAC,IAAI,CAAA,CAIZ,MAAO,CAAC,IAAI,EAIZ,KAAA,CAAO,CAAC,IAAI,CAAA,CAIZ,KAAA,CAAO,CAAC,IAAI,CAAA,CAIZ,KAAA,CAAO,CAAC,IAAI,CAAA,CAIZ,KAAA,CAAO,CAAC,IAAI,CAAA,CAIZ,KAAM,CAAC,IAAA,CAAM,IAAI,CAAA,CAIjB,KAAA,CAAO,CAAC,IAAI,CAAA,CAIZ,KAAA,CAAO,CAAC,IAAI,CAAA,CAIZ,MAAO,CAAC,IAAI,CAAA,CAIZ,KAAA,CAAO,CAAC,IAAI,EAIZ,KAAA,CAAO,CAAC,IAAI,CAAA,CAIZ,KAAA,CAAO,CAAC,IAAI,CAAA,CAIZ,KAAA,CAAO,CAAC,IAAI,CAAA,CAIZ,MAAO,CAAC,IAAI,EAIZ,KAAA,CAAO,CAAC,IAAI,CAAA,CAIZ,KAAA,CAAO,CAAC,IAAI,CAAA,CAIZ,KAAA,CAAO,CAAC,IAAI,CAAA,CAIZ,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,OAAQ,CAAC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IAAI,EAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,OAAQ,CAAC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IAAI,EAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,OAAQ,CAAC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IAAI,EAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,OAAQ,CAAC,IAAI,EAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,OAAQ,CAAC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IAAI,EAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,OAAQ,CAAC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IAAI,EAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,OAAQ,CAAC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IAAI,EAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,OAAQ,CAAC,IAAI,EAIb,MAAA,CAAQ,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,CAAA,CAIb,OAAQ,CAAC,IAAI,EAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,OAAQ,CAAC,IAAI,EAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,OAAQ,CAAC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IAAI,EAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,OAAQ,CAAC,IAAI,EAIb,MAAA,CAAQ,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,CAAA,CAIb,OAAQ,CAAC,IAAI,EAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAIb,OAAQ,CAAC,IAAI,CAAA,CAIb,MAAA,CAAQ,CAAC,IAAI,EAIb,MAAA,CAAQ,CAAC,IAAI,CAAA,CAI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","file":"index.cjs","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","/**\n * OAuth provider configurations\n */\nexport const OAUTH_PROVIDERS = {\n /**\n * Google OAuth configuration\n */\n google: {\n /**\n * Google OAuth client ID\n */\n clientId: globalThis.process.env.NEXT_PUBLIC_GOOGLE_CLIENT_ID!,\n /**\n * Google OAuth client secret\n */\n clientSecret: globalThis.process.env.GOOGLE_CLIENT_SECRET!,\n /**\n * Google OAuth redirect URI\n */\n redirectUri: globalThis.process.env.NEXT_PUBLIC_GOOGLE_REDIRECT_URI!,\n /**\n * Google OAuth permission scopes\n */\n scopes: ['openid', 'profile', 'email'],\n },\n\n /**\n * Discord OAuth configuration\n */\n discord: {\n /**\n * Discord OAuth client ID\n */\n clientId: globalThis.process.env.NEXT_PUBLIC_DISCORD_CLIENT_ID!,\n /**\n * Discord OAuth client secret\n */\n clientSecret: globalThis.process.env.DISCORD_CLIENT_SECRET!,\n /**\n * Discord OAuth redirect URI\n */\n redirectUri: globalThis.process.env.NEXT_PUBLIC_DISCORD_REDIRECT_URI!,\n /**\n * Discord OAuth permission scopes\n */\n scopes: ['identify', 'email'],\n },\n\n /**\n * Facebook OAuth configuration\n */\n facebook: {\n /**\n * Facebook OAuth client ID\n */\n clientId: globalThis.process.env.NEXT_PUBLIC_FACEBOOK_CLIENT_ID!,\n /**\n * Facebook OAuth client secret\n */\n clientSecret: globalThis.process.env.FACEBOOK_CLIENT_SECRET!,\n /**\n * Facebook OAuth redirect URI\n */\n redirectUri: globalThis.process.env.NEXT_PUBLIC_FACEBOOK_REDIRECT_URI!,\n /**\n * Facebook OAuth permission scopes\n */\n scopes: ['public_profile', 'email'],\n },\n} as const;\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 * 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 * 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 * HTTP Status Code Constants\n *\n * Common HTTP status codes used throughout the application.\n * Based on RFC 9110 (HTTP Semantics) and common usage patterns.\n *\n * @module http/constants\n */\n\n/**\n * Standard HTTP status codes\n */\nexport const HTTP_STATUS = {\n // 1xx Informational\n /**\n * 100 Continue - The initial part of a request has been received\n */\n CONTINUE: 100,\n\n /**\n * 101 Switching Protocols - The server is switching protocols\n */\n SWITCHING_PROTOCOLS: 101,\n\n /**\n * 102 Processing - The server has received and is processing the request\n */\n PROCESSING: 102,\n\n /**\n * 103 Early Hints - Used to return some response headers before final HTTP message\n */\n EARLY_HINTS: 103,\n\n // 2xx Success\n /**\n * 200 OK - The request succeeded\n */\n OK: 200,\n\n /**\n * 201 Created - The request succeeded and a new resource was created\n */\n CREATED: 201,\n\n /**\n * 202 Accepted - The request has been received but not yet acted upon\n */\n ACCEPTED: 202,\n\n /**\n * 203 Non-Authoritative Information - The returned metadata is not from the origin server\n */\n NON_AUTHORITATIVE_INFORMATION: 203,\n\n /**\n * 204 No Content - There is no content to send for this request\n */\n NO_CONTENT: 204,\n\n /**\n * 205 Reset Content - Tells the user agent to reset the document\n */\n RESET_CONTENT: 205,\n\n /**\n * 206 Partial Content - The server is delivering only part of the resource\n */\n PARTIAL_CONTENT: 206,\n\n /**\n * 207 Multi-Status - Conveys information about multiple resources\n */\n MULTI_STATUS: 207,\n\n /**\n * 208 Already Reported - The members of a DAV binding have already been enumerated\n */\n ALREADY_REPORTED: 208,\n\n /**\n * 226 IM Used - The server has fulfilled a request for the resource\n */\n IM_USED: 226,\n\n // 3xx Redirection\n /**\n * 300 Multiple Choices - Multiple options for the resource are available\n */\n MULTIPLE_CHOICES: 300,\n\n /**\n * 301 Moved Permanently - The URL of the requested resource has been changed permanently\n */\n MOVED_PERMANENTLY: 301,\n\n /**\n * 302 Found - The resource resides temporarily under a different URI\n */\n FOUND: 302,\n\n /**\n * 303 See Other - Direct the client to get the resource at another URI\n */\n SEE_OTHER: 303,\n\n /**\n * 304 Not Modified - The cached version is still valid\n */\n NOT_MODIFIED: 304,\n\n /**\n * 305 Use Proxy - Defined in a previous version of the HTTP specification\n */\n USE_PROXY: 305,\n\n /**\n * 307 Temporary Redirect - The request should be repeated with another URI\n */\n TEMPORARY_REDIRECT: 307,\n\n /**\n * 308 Permanent Redirect - The resource is permanently located at another URI\n */\n PERMANENT_REDIRECT: 308,\n\n // 4xx Client Errors\n /**\n * 400 Bad Request - The server cannot process the request due to client error\n */\n BAD_REQUEST: 400,\n\n /**\n * 401 Unauthorized - Authentication is required and has failed or not been provided\n */\n UNAUTHORIZED: 401,\n\n /**\n * 402 Payment Required - Reserved for future use\n */\n PAYMENT_REQUIRED: 402,\n\n /**\n * 403 Forbidden - The server understood the request but refuses to authorize it\n */\n FORBIDDEN: 403,\n\n /**\n * 404 Not Found - The server cannot find the requested resource\n */\n NOT_FOUND: 404,\n\n /**\n * 405 Method Not Allowed - The request method is not supported for the requested resource\n */\n METHOD_NOT_ALLOWED: 405,\n\n /**\n * 406 Not Acceptable - The requested resource is not available in a format acceptable to the client\n */\n NOT_ACCEPTABLE: 406,\n\n /**\n * 407 Proxy Authentication Required - The client must authenticate itself with the proxy\n */\n PROXY_AUTHENTICATION_REQUIRED: 407,\n\n /**\n * 408 Request Timeout - The server timed out waiting for the request\n */\n REQUEST_TIMEOUT: 408,\n\n /**\n * 409 Conflict - The request conflicts with the current state of the server\n */\n CONFLICT: 409,\n\n /**\n * 410 Gone - The requested resource is no longer available and will not be available again\n */\n GONE: 410,\n\n /**\n * 411 Length Required - The request did not specify the length of its content\n */\n LENGTH_REQUIRED: 411,\n\n /**\n * 412 Precondition Failed - The server does not meet one of the preconditions\n */\n PRECONDITION_FAILED: 412,\n\n /**\n * 413 Payload Too Large - The request is larger than the server is willing to process\n */\n PAYLOAD_TOO_LARGE: 413,\n\n /**\n * 414 URI Too Long - The URI provided was too long for the server to process\n */\n URI_TOO_LONG: 414,\n\n /**\n * 415 Unsupported Media Type - The request entity has a media type not supported by the server\n */\n UNSUPPORTED_MEDIA_TYPE: 415,\n\n /**\n * 416 Range Not Satisfiable - The client has asked for a portion of the file that the server cannot supply\n */\n RANGE_NOT_SATISFIABLE: 416,\n\n /**\n * 417 Expectation Failed - The server cannot meet the requirements of the Expect request-header field\n */\n EXPECTATION_FAILED: 417,\n\n /**\n * 418 I'm a teapot - The server refuses to brew coffee because it is a teapot\n */\n IM_A_TEAPOT: 418,\n\n /**\n * 421 Misdirected Request - The request was directed at a server that is not able to produce a response\n */\n MISDIRECTED_REQUEST: 421,\n\n /**\n * 422 Unprocessable Entity - The request was well-formed but was unable to be followed due to semantic errors\n */\n UNPROCESSABLE_ENTITY: 422,\n\n /**\n * 423 Locked - The resource that is being accessed is locked\n */\n LOCKED: 423,\n\n /**\n * 424 Failed Dependency - The request failed due to failure of a previous request\n */\n FAILED_DEPENDENCY: 424,\n\n /**\n * 425 Too Early - The server is unwilling to risk processing a request that might be replayed\n */\n TOO_EARLY: 425,\n\n /**\n * 426 Upgrade Required - The client should switch to a different protocol\n */\n UPGRADE_REQUIRED: 426,\n\n /**\n * 428 Precondition Required - The origin server requires the request to be conditional\n */\n PRECONDITION_REQUIRED: 428,\n\n /**\n * 429 Too Many Requests - The user has sent too many requests in a given amount of time\n */\n TOO_MANY_REQUESTS: 429,\n\n /**\n * 431 Request Header Fields Too Large - The server is unwilling to process the request because its header fields are too large\n */\n REQUEST_HEADER_FIELDS_TOO_LARGE: 431,\n\n /**\n * 451 Unavailable For Legal Reasons - The user requested a resource that cannot legally be provided\n */\n UNAVAILABLE_FOR_LEGAL_REASONS: 451,\n\n // 5xx Server Errors\n /**\n * 500 Internal Server Error - The server encountered an unexpected condition\n */\n INTERNAL_SERVER_ERROR: 500,\n\n /**\n * 501 Not Implemented - The server does not support the functionality required to fulfill the request\n */\n NOT_IMPLEMENTED: 501,\n\n /**\n * 502 Bad Gateway - The server received an invalid response from the upstream server\n */\n BAD_GATEWAY: 502,\n\n /**\n * 503 Service Unavailable - The server is not ready to handle the request\n */\n SERVICE_UNAVAILABLE: 503,\n\n /**\n * 504 Gateway Timeout - The server did not get a response in time from the upstream server\n */\n GATEWAY_TIMEOUT: 504,\n\n /**\n * 505 HTTP Version Not Supported - The HTTP version used in the request is not supported by the server\n */\n HTTP_VERSION_NOT_SUPPORTED: 505,\n\n /**\n * 506 Variant Also Negotiates - The server has an internal configuration error\n */\n VARIANT_ALSO_NEGOTIATES: 506,\n\n /**\n * 507 Insufficient Storage - The server is unable to store the representation needed to complete the request\n */\n INSUFFICIENT_STORAGE: 507,\n\n /**\n * 508 Loop Detected - The server detected an infinite loop while processing the request\n */\n LOOP_DETECTED: 508,\n\n /**\n * 510 Not Extended - Further extensions to the request are required for the server to fulfill it\n */\n NOT_EXTENDED: 510,\n\n /**\n * 511 Network Authentication Required - The client needs to authenticate to gain network access\n */\n NETWORK_AUTHENTICATION_REQUIRED: 511,\n} as const;\n\n/**\n * Type for HTTP status codes\n */\nexport type HttpStatusCode = (typeof HTTP_STATUS)[keyof typeof HTTP_STATUS];\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\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 * 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} 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 * 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","/**\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 * 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","// 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","// 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 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 = globalThis.process.env.NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY ?? '';\n","import { ERROR_SEVERITY, PAYMENT_ERROR_CATEGORY } from '@plyaz/types';\n\nexport const DEFAULT_HMAC_ALGORITHM = 'sha256';\nexport const DEFAULT_ENVIRONMENT = 'unknown';\n\nexport const ADAPTER_ERROR_CODE = {\n AdapterInitFailed: 'ADAPTER_INIT_FAILED',\n MissingProviderType: 'MISSING_PROVIDER_TYPE',\n MissingEnvironment: 'MISSING_ENVIRONMENT',\n MissingCredentials: 'MISSING_CREDENTIALS',\n MissingWebhookUrl: 'MISSING_WEBHOOK_URL',\n MissingUnregisterEndpoint: 'MISSING_UNREGISTER_ENDPOINT',\n HmacComputationFailed: 'HMAC_COMPUTATION_FAILED',\n AdapterShutdownError: 'ADAPTER_SHUTDOWN_ERROR',\n} as const;\n\nexport const ADAPTER_LOG_MESSAGE = {\n InitSuccess: 'Adapter initialized successfully',\n InitFail: 'Adapter initialization failed:',\n ShutdownStart: 'Shutdown started',\n ShutdownComplete: 'Shutdown completed',\n ShutdownError: 'Error during shutdown:',\n NotInitialized: 'Adapter is not initialized',\n HealthFail: 'Health check failed: missing config/credentials',\n HealthError: 'quickHealthCheck error:',\n WebhookNoopRegister: '(noop) register webhook at',\n WebhookNoopUnregister: '(noop) unregister webhook:',\n ReadinessError: 'Error during readiness check:',\n} as const;\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// Refund error default reasons\nexport const REFUND_DEFAULT_REASONS = {\n PROVIDER_RESTRICTION: 'ProviderRestriction',\n GENERIC: 'An unexpected error occurred while processing refund',\n};\n\n// Webhook redacted placeholders\nexport const REDACTED = {\n RAW_BODY: '[REDACTED_RAW_BODY]',\n SENSITIVE: '[REDACTED]',\n};\n\nexport const COMPONENTS = {\n PAYMENTS: 'payments',\n VALIDATION: 'validation',\n FRAUD: 'fraud-detector',\n WEBHOOK_PROCESSOR: 'webhook-processor',\n FRAUD_DETECTED_ERROR: 'FraudDetectedError',\n ROUTER_STRATEGY: 'RouterStrategy',\n PAYMENT_GATEWAY: 'PaymentGateway',\n PAYMENT_PROCESSOR: 'PaymentProcessor',\n CAPTURE_PROCESSOR: 'CaptureProcessor',\n CANCEL_PROCESSOR: 'CancelProcessor',\n STATUS_PROCESSOR: 'StatusProcessor',\n} as const;\n\nexport const PAYMENT_ERROR_CODES = {\n PAYMENTS_PACKAGE_ERROR: 'PAYMENTS_PACKAGE_ERROR',\n VALIDATION_ERROR: 'VALIDATION_ERROR',\n AUTH_ERROR: 'AUTH_ERROR',\n PROVIDER_ERROR: 'PROVIDER_ERROR',\n REFUND_AUTHORIZATION_ERROR: 'REFUND_AUTHORIZATION_ERROR',\n REFUND_PROCESSING_ERROR: 'REFUND_PROCESSING_ERROR',\n WEBHOOK_ERROR: 'WEBHOOK_ERROR',\n FRAUD_DETECTED: 'FRAUD_DETECTED',\n} as const;\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\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_RESOLUTION_STEPS = {\n CONFIG_VERIFICATION: 'Verify payment configuration settings.',\n CREDENTIALS_CHECK: 'Check payment provider API credentials.',\n DEPLOYMENT_REVIEW: 'Review recent deployment or configuration changes.',\n RETRY_OPERATION: 'Retry the operation after a short delay.',\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 RESOLUTION_STEPS: ['Check the payment provider status.', 'Retry the operation if appropriate.'],\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_CATEGORY: PAYMENT_ERROR_CATEGORY.Webhook,\n DEFAULT_CODE: PAYMENT_ERROR_CODES.WEBHOOK_ERROR,\n DEFAULT_USER_MESSAGE: 'An error occurred while handling the webhook.',\n DEFAULT_RESOLUTION_STEPS: [\n 'Verify webhook configuration and endpoint URL.',\n 'Check webhook payload and signature.',\n 'Ensure retry logic handles transient errors.',\n ],\n};\n\nexport const RECOMMENDATION_MESSAGES = {\n RETRY_LOGIC: 'Review retry logic — too many retryable errors.',\n CHECK_PROVIDER: 'Check payment provider connectivity or credentials.',\n CRITICAL_ALERT: 'Trigger alert — critical payment errors detected.',\n USER_FACING: 'Improve user-facing error handling for better UX.',\n SYSTEM_STABLE: 'System stable — continue monitoring.',\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 RESOLUTION_STEPS: [\n 'Verify refund eligibility.',\n 'Check transaction status and history.',\n 'Ensure sufficient balance for refunds.',\n 'Retry after resolving any issues.',\n ],\n};\n\nexport const REFUND_ERROR_CODES = {\n NOT_ALLOWED: 'REFUND_NOT_ALLOWED',\n AUTHORIZATION: 'REFUND_AUTHORIZATION_ERROR',\n PROCESSING: 'REFUND_PROCESSING_ERROR',\n WEBHOOK_ERROR: 'WEBHOOK_ERROR',\n};\n\nexport const DEFAULT_REFUND_LEVELS = {\n REQUIRED: 'manager',\n CURRENT: 'user',\n};\n\nexport const COMPLIANCE_ERROR_MESSAGES = {\n API_MESSAGE: 'A compliance error occurred.',\n USER_MESSAGE: 'A compliance or regulatory restriction prevented this action.',\n KYC_REQUIRED: 'KYC verification is required to proceed.',\n GEO_RESTRICTED: 'This transaction is not permitted in your region.',\n RESOLUTION_STEPS: [\n 'Review regulatory and compliance requirements.',\n 'Ensure KYC/AML verification is completed.',\n 'Verify geographic and provider restrictions.',\n ],\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 RESOLUTION_STEPS: [\n 'Check the payment provider status and logs.',\n 'Verify network connectivity.',\n 'Retry the operation if safe to do so.',\n ],\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 RESOLUTION_STEPS: [\n 'Verify fraud detection rules and thresholds.',\n 'Review flagged transactions.',\n 'Ensure user identity and payment method verification.',\n ],\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 RESOLUTION_STEPS: [\n 'Review fraud detection logs for triggered rules.',\n 'Verify customer identity and payment method legitimacy.',\n 'If false positive, adjust fraud rule thresholds.',\n 'Escalate to manual fraud review team if necessary.',\n ],\n RISK_THRESHOLDS: {\n HIGH: 70,\n CRITICAL: 90,\n },\n },\n};\n\nexport const VALIDATION_CONSTANTS = {\n DEFAULT_MESSAGE: PAYMENT_ERROR_MESSAGES.VALIDATION,\n DEFAULT_CODE: PAYMENT_ERROR_CODES.VALIDATION_ERROR,\n DEFAULT_CATEGORY: PAYMENT_ERROR_CATEGORY.Validation,\n DEFAULT_USER_MESSAGE: 'Invalid payment input. Please check your data.',\n DEFAULT_RESOLUTION_STEPS: ['Review the input values and retry the operation.'],\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 fields for custom rule evaluation */\nexport const CUSTOM_RULE_FIELD = {\n AMOUNT: 'request.amount',\n CURRENCY: 'request.currency',\n USER_TYPE: 'request.userType',\n REGION: 'request.metadata.geoInfo.region',\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","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 // Payment lifecycle\n PAYMENT_INTENT_CREATED: 'payment_intent.created',\n PAYMENT_INTENT_PROCESSING: 'payment_intent.processing',\n PAYMENT_INTENT_REQUIRES_ACTION: 'payment_intent.requires_action',\n PAYMENT_INTENT_SUCCEEDED: 'payment_intent.succeeded',\n PAYMENT_INTENT_FAILED: 'payment_intent.payment_failed',\n PAYMENT_INTENT_CANCELED: 'payment_intent.canceled',\n PAYMENT_INTENT_EXPIRED: 'payment_intent.expired',\n PAYMENT_INTENT_AUTHORIZED: 'payment_intent.authorized',\n PAYMENT_INTENT_CAPTURED: 'payment_intent.captured',\n PAYMENT_INTENT_HELD: 'payment_intent.held',\n PAYMENT_INTENT_RELEASED: 'payment_intent.released',\n\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\n // Invoice events\n INVOICE_PAYMENT_SUCCEEDED: 'invoice.payment_succeeded',\n INVOICE_PAYMENT_FAILED: 'invoice.payment_failed',\n} as const;\n\n/** Default processing time estimate */\nexport const DEFAULT_PROCESSING_TIME = {\n MINIMUM_MINUTES: 1,\n MAXIMUM_MINUTES: 60,\n TYPICAL_MINUTES: 10,\n FACTORS: ['default estimate'],\n};\n\n/** Default settlement time estimate */\nexport const DEFAULT_SETTLEMENT_TIME = {\n MINIMUM_DAYS: 1,\n MAXIMUM_DAYS: 7,\n TYPICAL_DAYS: 3,\n AFFECTED_BY_HOLIDAYS: true,\n};\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\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} as const;\n","/**\n * Shared constants for ProviderRegistry and PaymentAdapterFactory.\n * ESLint naming convention compliant (camelCase keys).\n */\n\nexport const PROVIDER_CONTEXT = {\n REGISTRY: 'ProviderRegistry',\n FACTORY: 'ProviderFactory',\n FALLBACK: 'FallbackHandler',\n AB_TESTING: 'ABTesting',\n} as const;\n\nexport const PROVIDER_ENDPOINTS = {\n REGISTRY_GET_FACTORY: `${PROVIDER_CONTEXT.REGISTRY}.getFactory`,\n FACTORY_CREATE_ADAPTER: `${PROVIDER_CONTEXT.FACTORY}.createAdapter`,\n FACTORY_GET_CONFIG: `${PROVIDER_CONTEXT.FALLBACK}.getProviderConfig`,\n FACTORY_GET_OPTIMAL_ADAPTER: `${PROVIDER_CONTEXT.AB_TESTING}.getOptimalAdapter`,\n} as const;\n\nexport const PROVIDER_MESSAGES = {\n // Registry messages\n providerAlreadyRegistered: (provider: string): string =>\n `[${PROVIDER_CONTEXT.REGISTRY}] Provider '${provider}' is already registered. Overwriting.`,\n providerRegistered: (provider: string): string =>\n `[${PROVIDER_CONTEXT.FACTORY}] Registered provider: ${provider}`,\n providerNotRegistered: (provider: string): string =>\n `[${PROVIDER_CONTEXT.REGISTRY}] Provider '${provider}' is not registered.`,\n\n // Factory messages\n adapterInitFailed: (provider: string): string =>\n `[${PROVIDER_CONTEXT.FACTORY}] Failed to initialize adapter for ${provider}`,\n optimalAdapterFailed: (provider: string): string =>\n `[${PROVIDER_CONTEXT.FACTORY}] Failed to get optimal adapter for: ${provider}`,\n} as const;\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 * Logical context identifiers for all router-related components.\n * These are used for consistent structured logging and error context.\n */\nexport const ROUTER_CONTEXT = {\n core: 'RouterStrategy',\n rules: 'RuleEvaluator',\n config: 'RoutingConfig',\n factory: 'AdapterFactory',\n cache: 'AdapterCache',\n provider: 'ProviderSelector',\n region: 'RegionResolver',\n compliance: 'ComplianceChecker',\n abtest: 'ABTestingModule',\n default: 'DefaultProviderSelector',\n} as const;\n\nexport type RouterContextKey = keyof typeof ROUTER_CONTEXT;\n\n/**\n * Router-specific log and error messages\n */\nexport const routerMessages = {\n // Core Routing Messages\n invalidProvider: (): string => `[${ROUTER_CONTEXT.core}] No valid provider found during routing.`,\n\n providerSelected: (provider: string): string =>\n `[${ROUTER_CONTEXT.provider}] Selected provider: ${provider}`,\n\n fallbackToDefault: (): string => `[${ROUTER_CONTEXT.default}] Falling back to default provider.`,\n\n // Adapter Creation Messages\n adapterCached: (provider: string): string =>\n `[${ROUTER_CONTEXT.cache}] Using cached adapter for ${provider}`,\n\n adapterCreated: (provider: string): string =>\n `[${ROUTER_CONTEXT.factory}] Created new adapter for ${provider}`,\n\n adapterCreationFailed: (err: unknown): string =>\n `[${ROUTER_CONTEXT.factory}] Failed to create adapter: ${String(err)}`,\n\n // Provider Selection Messages\n providerSelectionFailed: (err: unknown): string =>\n `[${ROUTER_CONTEXT.provider}] Provider selection failed: ${String(err)}`,\n\n // Rule Evaluation Messages\n invalidRuleExpression: (ruleId: string, err: unknown): string =>\n `[${ROUTER_CONTEXT.rules}] Custom rule '${ruleId}' evaluation failed: ${String(err)}`,\n\n ruleFailed: (ruleName: string, err: unknown): string =>\n `[${ROUTER_CONTEXT.rules}] Rule '${ruleName}' evaluation failed: ${String(err)}`,\n\n //Configuration & Validation Messages\n invalidRoutingConfig: (err: unknown): string =>\n `[${ROUTER_CONTEXT.config}] Invalid routing configuration detected: ${String(err)}`,\n\n missingRegionConfig: (region?: string): string =>\n `[${ROUTER_CONTEXT.region}] Missing region configuration for '${region ?? 'unknown'}'.`,\n\n complianceCheckFailed: (region?: string, err?: unknown): string =>\n `[${ROUTER_CONTEXT.compliance}] Compliance check failed for region '${region ?? 'unknown'}': ${String(err)}`,\n} as const;\n\nexport type RouterMessageKey = keyof typeof routerMessages;\n","export const REFUND_MESSAGES = {\n validationFailedPrefix: 'refund-validation-failed',\n} as const;\n\nexport const RECONCILIATION_MESSAGES = {\n invalidInput: 'Invalid provider or transaction ID',\n unknownError: 'Unknown reconciliation error',\n descriptionFailed: 'Reconciliation failed',\n} as const;\n\nexport const PAYMENT_PROCESSOR_PATTERN = {\n validationErrorPattern: /^\\[(.*?)\\]\\s(.*)$/,\n} as const;\n\nexport const PROCESSOR_MESSAGES = {\n cancelProcessor: 'Invalid input for cancellation',\n captureProcessor: 'Invalid input for capture',\n statusProcessor: 'Invalid input for payment status',\n} as const;\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 SIXTY: 60,\n NINETY: 90,\n HUNDERD: 100,\n FIVE_THOUSAND: 5000,\n THOUSAND: 1000,\n THIRTY_SIX_HUNDERD: 3600,\n THREE_HUNDERD:300,\n SIXTEEN: 16,\n THIRTY_THOUSAND: 30000\n};"]}