@metamask-previews/perps-controller 11.0.0-preview-9c0f91815 → 11.0.0-preview-e57e5c3dc

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.
Files changed (82) hide show
  1. package/CHANGELOG.md +0 -49
  2. package/dist/PerpsController.cjs.map +1 -1
  3. package/dist/PerpsController.d.cts +1 -1
  4. package/dist/PerpsController.d.cts.map +1 -1
  5. package/dist/PerpsController.d.mts +1 -1
  6. package/dist/PerpsController.d.mts.map +1 -1
  7. package/dist/PerpsController.mjs.map +1 -1
  8. package/dist/constants/eventNames.cjs +0 -4
  9. package/dist/constants/eventNames.cjs.map +1 -1
  10. package/dist/constants/eventNames.d.cts +0 -3
  11. package/dist/constants/eventNames.d.cts.map +1 -1
  12. package/dist/constants/eventNames.d.mts +0 -3
  13. package/dist/constants/eventNames.d.mts.map +1 -1
  14. package/dist/constants/eventNames.mjs +0 -4
  15. package/dist/constants/eventNames.mjs.map +1 -1
  16. package/dist/constants/perpsConfig.cjs +1 -54
  17. package/dist/constants/perpsConfig.cjs.map +1 -1
  18. package/dist/constants/perpsConfig.d.cts +2 -71
  19. package/dist/constants/perpsConfig.d.cts.map +1 -1
  20. package/dist/constants/perpsConfig.d.mts +2 -71
  21. package/dist/constants/perpsConfig.d.mts.map +1 -1
  22. package/dist/constants/perpsConfig.mjs +0 -53
  23. package/dist/constants/perpsConfig.mjs.map +1 -1
  24. package/dist/index.cjs +3 -12
  25. package/dist/index.cjs.map +1 -1
  26. package/dist/index.d.cts +4 -4
  27. package/dist/index.d.cts.map +1 -1
  28. package/dist/index.d.mts +4 -4
  29. package/dist/index.d.mts.map +1 -1
  30. package/dist/index.mjs +2 -2
  31. package/dist/index.mjs.map +1 -1
  32. package/dist/perpsErrorCodes.cjs +0 -20
  33. package/dist/perpsErrorCodes.cjs.map +1 -1
  34. package/dist/perpsErrorCodes.d.cts +0 -19
  35. package/dist/perpsErrorCodes.d.cts.map +1 -1
  36. package/dist/perpsErrorCodes.d.mts +0 -19
  37. package/dist/perpsErrorCodes.d.mts.map +1 -1
  38. package/dist/perpsErrorCodes.mjs +0 -20
  39. package/dist/perpsErrorCodes.mjs.map +1 -1
  40. package/dist/providers/HyperLiquidProvider.cjs +14 -1276
  41. package/dist/providers/HyperLiquidProvider.cjs.map +1 -1
  42. package/dist/providers/HyperLiquidProvider.d.cts.map +1 -1
  43. package/dist/providers/HyperLiquidProvider.d.mts.map +1 -1
  44. package/dist/providers/HyperLiquidProvider.mjs +17 -1279
  45. package/dist/providers/HyperLiquidProvider.mjs.map +1 -1
  46. package/dist/types/index.cjs.map +1 -1
  47. package/dist/types/index.d.cts +2 -40
  48. package/dist/types/index.d.cts.map +1 -1
  49. package/dist/types/index.d.mts +2 -40
  50. package/dist/types/index.d.mts.map +1 -1
  51. package/dist/types/index.mjs.map +1 -1
  52. package/dist/types/perps-types.cjs.map +1 -1
  53. package/dist/types/perps-types.d.cts +2 -33
  54. package/dist/types/perps-types.d.cts.map +1 -1
  55. package/dist/types/perps-types.d.mts +2 -33
  56. package/dist/types/perps-types.d.mts.map +1 -1
  57. package/dist/types/perps-types.mjs.map +1 -1
  58. package/dist/utils/hyperLiquidValidation.cjs +3 -192
  59. package/dist/utils/hyperLiquidValidation.cjs.map +1 -1
  60. package/dist/utils/hyperLiquidValidation.d.cts +3 -30
  61. package/dist/utils/hyperLiquidValidation.d.cts.map +1 -1
  62. package/dist/utils/hyperLiquidValidation.d.mts +3 -30
  63. package/dist/utils/hyperLiquidValidation.d.mts.map +1 -1
  64. package/dist/utils/hyperLiquidValidation.mjs +5 -194
  65. package/dist/utils/hyperLiquidValidation.mjs.map +1 -1
  66. package/dist/utils/orderCalculations.cjs +1 -131
  67. package/dist/utils/orderCalculations.cjs.map +1 -1
  68. package/dist/utils/orderCalculations.d.cts +3 -88
  69. package/dist/utils/orderCalculations.d.cts.map +1 -1
  70. package/dist/utils/orderCalculations.d.mts +3 -88
  71. package/dist/utils/orderCalculations.d.mts.map +1 -1
  72. package/dist/utils/orderCalculations.mjs +2 -128
  73. package/dist/utils/orderCalculations.mjs.map +1 -1
  74. package/dist/utils/orderTypes.cjs +4 -56
  75. package/dist/utils/orderTypes.cjs.map +1 -1
  76. package/dist/utils/orderTypes.d.cts +3 -32
  77. package/dist/utils/orderTypes.d.cts.map +1 -1
  78. package/dist/utils/orderTypes.d.mts +3 -32
  79. package/dist/utils/orderTypes.d.mts.map +1 -1
  80. package/dist/utils/orderTypes.mjs +3 -54
  81. package/dist/utils/orderTypes.mjs.map +1 -1
  82. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"perpsConfig.cjs","sourceRoot":"","sources":["../../src/constants/perpsConfig.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Perps feature constants - Controller layer (portable)\n *\n * This file contains only controller-portable configuration:\n * - Constants used by controller logic, providers, and services\n * - Calculation thresholds, API configs, and protocol constants\n *\n * UI-only constants (layout, display, navigation) live in:\n * app/components/UI/Perps/constants/perpsConfig.ts\n */\nexport const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000';\nexport const ZERO_BALANCE = '0x0';\n\nexport const PERPS_CONSTANTS = {\n FeatureFlagKey: 'perpsEnabled',\n FeatureName: 'perps', // Constant for Sentry error filtering - enables \"feature:perps\" dashboard queries\n /** Token description used to identify the synthetic \"Perps balance\" option in pay-with token lists */\n PerpsBalanceTokenDescription: 'perps-balance',\n /** Symbol displayed for the synthetic \"Perps balance\" token in pay-with token lists */\n PerpsBalanceTokenSymbol: 'USD',\n WebsocketTimeout: 5000, // 5 seconds\n WebsocketCleanupDelay: 1000, // 1 second\n BackgroundDisconnectDelay: 20_000, // 20 seconds delay before disconnecting when app is backgrounded or when user exits perps UX\n ConnectionTimeoutMs: 10_000, // 10 seconds timeout for connection and position loading states\n DefaultMonitoringTimeoutMs: 10_000, // 10 seconds default timeout for data monitoring operations\n\n // Connection timing constants\n ConnectionGracePeriodMs: 20_000, // 20 seconds grace period before actual disconnection (same as BackgroundDisconnectDelay for semantic clarity)\n ConnectionAttemptTimeoutMs: 30_000, // 30 seconds timeout for connection attempts to prevent indefinite hanging\n WebsocketPingTimeoutMs: 5_000, // 5 seconds timeout for WebSocket health check ping\n ConnectRetryDelayMs: 200, // Delay before retrying connect() when connection isn't ready yet\n ForegroundPingRetryDelayMs: 500, // Delay before retrying ping in resumeFromForeground — JS thread may be sluggish right after foregrounding\n ReconnectionCleanupDelayMs: 500, // Platform-agnostic delay to ensure WebSocket is ready\n ReconnectionDelayAndroidMs: 300, // Android-specific reconnection delay for better reliability on slower devices\n ReconnectionDelayIosMs: 100, // iOS-specific reconnection delay for optimal performance\n ReconnectionRetryDelayMs: 5_000, // 5 seconds delay between reconnection attempts\n NetworkRestoreMaxRetries: 8, // Max retry attempts when reconnecting after WiFi/network restore\n NetworkRestoreRetryBaseMs: 1_500, // Base delay (ms) between network restore retries (multiplied by attempt number)\n\n // Connection manager timing constants\n BalanceUpdateThrottleMs: 15000, // Update at most every 15 seconds to reduce state updates in PerpsConnectionManager\n InitialDataDelayMs: 100, // Delay to allow initial data to load after connection establishment\n\n // Order submission timing\n PlaceOrderTimeoutMs: 60_000, // Hard timeout for provider round-trip in TradingService.placeOrder\n\n // Deposit toast timing\n DepositTakingLongerToastDelayMs: 30_000, // Delay before showing \"Deposit taking longer than usual\" toast\n\n DefaultAssetPreviewLimit: 5,\n DefaultMaxLeverage: 3 as number, // Default fallback max leverage when market data is unavailable - conservative default\n FallbackPriceDisplay: '$---', // Display when price data is unavailable\n FallbackPercentageDisplay: '--%', // Display when change data is unavailable\n FallbackDataDisplay: '--', // Display when non-price data is unavailable\n ZeroAmountDisplay: '$0', // Display for zero dollar amounts (e.g., no volume)\n ZeroAmountDetailedDisplay: '$0.00', // Display for zero dollar amounts with decimals\n\n RecentActivityLimit: 3,\n\n // Historical data fetching constants\n FillsLookbackMs: 90 * 24 * 60 * 60 * 1000, // 3 months in milliseconds - limits REST API fills fetch\n\n // Recently viewed markets\n RecentlyViewedMarketsTtlMs: 24 * 60 * 60 * 1000, // 24 hours TTL for recently viewed market entries\n RecentlyViewedMarketsLimit: 10, // Maximum number of recently viewed markets to track\n} as const;\n\n/**\n * Withdrawal-specific constants (protocol-agnostic)\n * Note: Protocol-specific values like estimated time should be defined in each protocol's config\n */\nexport const WITHDRAWAL_CONSTANTS = {\n DefaultMinAmount: '1.01', // Default minimum withdrawal amount in USDC\n DefaultFeeAmount: 1, // Default withdrawal fee in USDC\n DefaultFeeToken: 'USDC', // Default fee token\n} as const;\n\n/**\n * Validation thresholds for UI warnings and checks\n * These values control when warnings are shown to users\n */\nexport const VALIDATION_THRESHOLDS = {\n // Leverage threshold for warning users about high leverage\n HighLeverageWarning: 20, // Show warning when leverage > 20x\n\n // Limit price difference threshold (as decimal, 0.1 = 10%)\n LimitPriceDifferenceWarning: 0.1, // Warn if limit price differs by >10% from current price\n\n // Price deviation threshold (as decimal, 0.1 = 10%)\n PriceDeviation: 0.1, // Warn if perps price deviates by >10% from spot price\n} as const;\n\n/**\n * Order slippage configuration\n * Controls default slippage tolerance for different order types\n * Conservative defaults based on HyperLiquid platform interface\n * See: docs/perps/hyperliquid/ORDER-MATCHING-ERRORS.md\n */\nexport const ORDER_SLIPPAGE_CONFIG = {\n // Market order slippage (basis points)\n // 300 basis points = 3% = 0.03 decimal\n // Conservative default for measured rollout, prevents most IOC failures\n DefaultMarketSlippageBps: 300,\n\n // TP/SL order slippage (basis points)\n // 1000 basis points = 10% = 0.10 decimal\n // Aligns with HyperLiquid platform default for triggered orders\n DefaultTpslSlippageBps: 1000,\n\n // Limit order slippage (basis points)\n // 100 basis points = 1% = 0.01 decimal\n // Kept conservative as limit orders rest on book (not IOC/immediate execution)\n DefaultLimitSlippageBps: 100,\n} as const;\n\n/**\n * Defaults and bounds for the emulated `chase` placement.\n *\n * No supported venue exposes a chase as an API action — HyperLiquid documents it\n * as running client-side — so the strategy is run here: a post-only order rests\n * one tick inside the spread and is cancelled and re-placed as the touch moves.\n * The poll floor and the repricing cap exist to keep a chase from turning into a\n * cancel/replace loop against a venue's rate limits. Protocol-agnostic — a\n * provider that gains a native chase ignores these entirely.\n */\nexport const CHASE_ORDER_CONFIG = {\n /** How often the touch is re-read when the caller does not say. */\n DefaultIntervalMs: 3000,\n /** Floor on the poll interval, whatever the caller asks for. */\n MinIntervalMs: 1000,\n /** How long a chase runs before it stops re-pricing and rests. */\n DefaultMaxDurationMs: 60_000,\n /** How many cancel/replace cycles a single chase may perform. */\n DefaultMaxRepricings: 20,\n /**\n * How many chases may run at once.\n *\n * HyperLiquid documents a cap of five simultaneously active chase orders. It\n * is a venue rule rather than controller policy, but it is spelled here\n * alongside the rest of the chase configuration because an emulated chase is\n * the only thing that can enforce it.\n */\n MaxActiveSessions: 5,\n} as const;\n\n/**\n * Bounds and step for the user-configurable max slippage preference (basis points).\n * Shared by the controller (`setMaxSlippage`) and UI (`slippageConfig.ts`).\n */\nexport const MAX_SLIPPAGE_BOUNDS = {\n MinBps: 10,\n MaxBps: 1000,\n StepBps: 10,\n} as const;\n\n/**\n * Max order amount buffer to reduce \"Insufficient margin\" rejections from the exchange.\n * When the user selects 100% (slider or Max), we cap the order at (1 - this) of the\n * theoretical max so that fees, rounding, and exchange-side margin checks are covered.\n * Value as decimal (e.g. 0.005 = 0.5%).\n */\nexport const MAX_ORDER_MARGIN_BUFFER = 0.005; // 0.5%\n\n/**\n * Performance optimization constants\n * These values control debouncing and throttling for better performance\n */\nexport const PERFORMANCE_CONFIG = {\n // Price updates debounce delay (milliseconds)\n // Batches rapid WebSocket price updates to reduce re-renders\n PriceUpdateDebounceMs: 1000,\n\n // Order validation debounce delay (milliseconds)\n // Prevents excessive validation calls during rapid form input changes\n ValidationDebounceMs: 300,\n\n // Liquidation price debounce delay (milliseconds)\n // Prevents excessive liquidation price calls during rapid form input changes\n LiquidationPriceDebounceMs: 500,\n\n // Candle subscription debounce delay (milliseconds)\n // Prevents WS subscription churn during rapid market switching (#28141)\n CandleConnectDebounceMs: 500,\n\n // Order-form slippage estimate throttle (milliseconds)\n // Updates the estimated-slippage value derived from the live L2 order book\n // no more than once per window. Aggressive enough to keep the row reactive\n // while the user edits the amount, conservative enough to avoid re-render\n // pressure on every book tick.\n SlippageEstimateThrottleMs: 250,\n\n // Order-book levels sampled when estimating slippage\n // Number of price levels (per side) walked by `calculateEstimatedSlippageBps`\n // to fill the requested USD notional. Matches the L2 sample size used by the\n // order-book panel and is enough depth for the typical order sizes we\n // surface in the order form.\n SlippageEstimateBookLevels: 10,\n\n // Candle WS teardown delay (milliseconds)\n // When the last subscriber for a cacheKey unsubscribes, wait this long before\n // tearing down the WS. A subsequent subscribe inside the window cancels the\n // teardown so rapid back-and-forth switches do not churn the connection.\n CandleTeardownDelayMs: 150,\n\n // Perps REST coalesce TTL (milliseconds)\n //\n // Window in which identical GET-style REST calls (getOrderFills, getOrders,\n // getFunding, historicalOrders) share a single in-flight promise / cached\n // result. `forceRefresh` still bypasses the cache end-to-end (hooks →\n // controller → MarketDataService → provider → HyperLiquidClientService), so\n // pull-to-refresh always hits the network.\n //\n // Why 60 s: HyperLiquid's documented rate limit is 1200 weight / IP /\n // rolling 60 s window. Sizing TTL = window length caps each endpoint-per-\n // account at ≤1 REST hit per window under any UI activity pattern — rapid\n // market switching, re-mounts (usePerpsMarketFills, usePerpsTransactionHistory),\n // and multi-tab scans all share a single request. Live fills/orders/prices\n // still flow via WS subscriptions, so REST is seed/backfill only — cache\n // staleness inside the 60 s window is never user-visible.\n PerpsRestCoalesceTtlMs: 60_000,\n\n // Candle snapshot REST coalesce TTL (milliseconds).\n // Longer than PerpsRestCoalesceTtlMs because WS stream keeps live candles\n // fresh — the REST snapshot only seeds the chart on initial subscribe. A\n // 30 s window lets rapid market switching (pass 1 → pass 2 of a stress\n // loop) share the same snapshot per (symbol, interval), cutting\n // candleSnapshot REST weight roughly in half.\n PerpsCandleCoalesceTtlMs: 30_000,\n\n // Navigation params delay (milliseconds)\n // Required for React Navigation to complete state transitions before setting params\n // This ensures navigation context is available when programmatically selecting tabs\n NavigationParamsDelayMs: 200,\n\n // Tab control reset delay (milliseconds)\n // Delay to reset programmatic tab control after tab switching to prevent render loops\n TabControlResetDelayMs: 500,\n\n // Market data cache duration (milliseconds)\n // How long to cache market list data before fetching fresh data\n MarketDataCacheDurationMs: 5 * 60 * 1000, // 5 minutes\n\n // Asset metadata cache duration (milliseconds)\n // How long to cache asset icon validation results\n AssetMetadataCacheDurationMs: 60 * 60 * 1000, // 1 hour\n\n // Max leverage cache duration (milliseconds)\n // How long to cache max leverage values per asset (leverage rarely changes)\n MaxLeverageCacheDurationMs: 60 * 60 * 1000, // 1 hour\n\n // Rewards cache durations (milliseconds)\n // How long to cache fee discount data from rewards API\n FeeDiscountCacheDurationMs: 5 * 60 * 1000, // 5 minutes\n // How long to cache points calculation parameters from rewards API\n PointsCalculationCacheDurationMs: 5 * 60 * 1000, // 5 minutes\n\n /**\n * Performance logging markers for filtering logs during development and debugging\n * These markers help isolate performance-related logs from general application logs\n * Usage: Use in DevLogger calls to easily filter specific performance areas\n * Impact: Development only (uses DevLogger) - zero production performance cost\n *\n * Examples:\n * - Filter Sentry performance logs: `adb logcat | grep PERPSMARK_SENTRY`\n * - Filter MetaMetrics events: `adb logcat | grep PERPSMARK_METRICS`\n * - Filter WebSocket performance: `adb logcat | grep PERPSMARK_WS`\n * - Filter all Perps performance: `adb logcat | grep PERPSMARK_`\n */\n LoggingMarkers: {\n // Sentry performance measurement logs (screen loads, bottom sheets, API timing)\n SentryPerformance: 'PERPSMARK_SENTRY',\n\n // MetaMetrics event tracking logs (user interactions, business analytics)\n MetametricsEvents: 'PERPSMARK_METRICS',\n\n // WebSocket performance logs (connection timing, data flow, reconnections)\n WebsocketPerformance: 'PERPSMARK_SENTRY_WS',\n } as const,\n} as const;\n\nexport const TP_SL_CONFIG = {\n UsePositionBoundTpsl: true,\n} as const;\n\n/**\n * Bounds applied to a HyperLiquid TWAP placement.\n *\n * The pinned HyperLiquid SDK (0.33.1) validates the TWAP duration as a safe\n * integer in `[5, 1440]` before signing, although the venue currently documents\n * a maximum of seven days (`10080` minutes). The controller exposes the SDK's\n * narrower cap until that dependency supports the venue limit, avoiding an\n * opaque SDK error. `MinNotionalUsd` is the venue's documented minimum *total*\n * order size for a TWAP, which it enforces instead of the per-order minimum —\n * its suborders are its own business.\n *\n * Carries the venue prefix, like `HYPERLIQUID_ORDER_LIMITS`, because these are\n * venue/SDK constraints rather than controller policy.\n *\n * From: https://hyperliquid.gitbook.io/hyperliquid-docs/trading/order-types\n */\nexport const HYPERLIQUID_TWAP_LIMITS = {\n MinDurationMinutes: 5,\n MaxDurationMinutes: 1440,\n MinNotionalUsd: 100,\n} as const;\n\n/**\n * HyperLiquid order limits based on leverage\n * From: https://hyperliquid.gitbook.io/hyperliquid-docs/trading/contract-specifications\n */\nexport const HYPERLIQUID_ORDER_LIMITS = {\n // Market orders\n MarketOrderLimits: {\n // $15,000,000 for max leverage >= 25\n HighLeverage: 15_000_000,\n // $5,000,000 for max leverage in [20, 25)\n MediumHighLeverage: 5_000_000,\n // $2,000,000 for max leverage in [10, 20)\n MediumLeverage: 2_000_000,\n // $500,000 for max leverage < 10\n LowLeverage: 500_000,\n },\n // Limit orders are 10x market order limits\n LimitOrderMultiplier: 10,\n} as const;\n\n/**\n * Close position configuration\n * Controls behavior and constants specific to position closing\n */\nexport const CLOSE_POSITION_CONFIG = {\n // Decimal places for USD amount input display\n UsdDecimalPlaces: 2,\n\n // Default close percentage when opening the close position view\n DefaultClosePercentage: 100,\n\n // Precision for position size calculations to prevent rounding errors\n AmountCalculationPrecision: 6,\n\n // Throttle delay for real-time price updates during position closing\n PriceThrottleMs: 3000,\n\n // Fallback decimal places for tokens without metadata\n FallbackTokenDecimals: 18,\n} as const;\n\n/**\n * Margin adjustment configuration\n * Controls behavior for adding/removing margin from positions\n */\nexport const MARGIN_ADJUSTMENT_CONFIG = {\n // Risk thresholds for margin removal warnings\n // Threshold values represent ratio of (price distance to liquidation) / (liquidation price)\n // Values < 1.0 mean price is dangerously close to liquidation\n LiquidationRiskThreshold: 1.2, // 20% buffer before liquidation - triggers danger state\n LiquidationWarningThreshold: 1.5, // 50% buffer before liquidation - triggers warning state\n\n // Minimum margin adjustment amount (USD)\n // Prevents dust adjustments and ensures meaningful position changes\n MinAdjustmentAmount: 1,\n\n // Precision for margin calculations\n // Ensures accurate decimal handling in margin/leverage calculations\n CalculationPrecision: 6,\n\n // Safety buffer for margin removal to account for HyperLiquid's transfer margin requirement\n // HyperLiquid enforces: transfer_margin_required = max(initial_margin_required, 0.1 * total_position_value)\n // See: https://hyperliquid.gitbook.io/hyperliquid-docs/trading/margin-and-pnl\n MarginRemovalSafetyBuffer: 0.1,\n\n // Fallback max leverage when market data is unavailable\n // Conservative value to prevent over-removal of margin\n // Most HyperLiquid assets support at least 50x leverage\n FallbackMaxLeverage: 50,\n} as const;\n\n/**\n * Data Lake API configuration\n * Endpoints for reporting perps trading activity for notifications\n */\nexport const DATA_LAKE_API_CONFIG = {\n // Order reporting endpoint - only used for mainnet perps trading\n OrdersEndpoint: 'https://perps.api.cx.metamask.io/api/v1/orders',\n} as const;\n\n/**\n * Terminal API configuration.\n * The full endpoint URL is injected at runtime via\n * `PerpsPlatformDependencies.terminalApiUrl` from each client build\n * (dev/uat/prd); only cache settings live here.\n */\nexport const TERMINAL_API_CONFIG = {\n CacheTtlMs: 5 * 60 * 1000, // 5 minutes\n FetchTimeoutMs: 10_000, // 10 seconds – degrade to provider on slow Terminal\n} as const;\n\n/**\n * Decimal precision configuration\n * Controls maximum decimal places for price and input validation\n */\nexport const DECIMAL_PRECISION_CONFIG = {\n // Maximum decimal places for price input (matches Hyperliquid limit)\n // Used in TP/SL forms, limit price inputs, and price validation\n MaxPriceDecimals: 6,\n // Maximum significant figures allowed by HyperLiquid API\n // Orders with more than 5 significant figures will be rejected\n MaxSignificantFigures: 5,\n // Defensive fallback for size decimals when market data fails to load\n // Real szDecimals should always come from market data API (varies by asset)\n // Using 6 as safe maximum to prevent crashes (covers most assets)\n // NOTE: This is NOT semantically correct - just a defensive measure\n FallbackSizeDecimals: 6,\n} as const;\n\n/**\n * Market sorting configuration\n * Controls sorting behavior and presets for the trending markets view\n */\nexport const MARKET_SORTING_CONFIG = {\n // Default sort settings\n DefaultSortOptionId: 'volume' as const,\n DefaultDirection: 'desc' as const,\n\n // Available sort fields (only includes fields supported by PerpsMarketData)\n SortFields: {\n Volume: 'volume',\n PriceChange: 'priceChange',\n OpenInterest: 'openInterest',\n FundingRate: 'fundingRate',\n } as const,\n\n // Sort button presets for filter chips (simplified buttons without direction)\n SortButtonPresets: [\n { field: 'volume', labelKey: 'perps.sort.volume' },\n { field: 'priceChange', labelKey: 'perps.sort.price_change' },\n { field: 'fundingRate', labelKey: 'perps.sort.funding_rate' },\n ] as const,\n\n // Sort options for the bottom sheet\n // All options support direction toggle (high-to-low / low-to-high)\n SortOptions: [\n {\n id: 'volume',\n labelKey: 'perps.sort.volume',\n field: 'volume',\n direction: 'desc',\n },\n {\n id: 'priceChange',\n labelKey: 'perps.sort.price_change',\n field: 'priceChange',\n direction: 'desc',\n },\n {\n id: 'openInterest',\n labelKey: 'perps.sort.open_interest',\n field: 'openInterest',\n direction: 'desc',\n },\n {\n id: 'fundingRate',\n labelKey: 'perps.sort.funding_rate',\n field: 'fundingRate',\n direction: 'desc',\n },\n ] as const,\n} as const;\n\n/**\n * Type for valid sort option IDs\n * Derived from SORT_OPTIONS to ensure type safety\n * Valid values: 'volume' | 'priceChange' | 'openInterest' | 'fundingRate'\n */\nexport type SortOptionId =\n (typeof MARKET_SORTING_CONFIG.SortOptions)[number]['id'];\n\n/**\n * Perps interface mode.\n *\n * `Lite` is the simplified default experience; `Pro` exposes the advanced\n * trading layout (chart, order book, inline order form).\n */\nexport enum PerpsMode {\n Lite = 'lite',\n Pro = 'pro',\n}\n\n/**\n * Side filter for the Pro Positions/Orders panel (long/short/all).\n *\n * Shared across markets via `proLayoutPreferences.positionsSideFilter`.\n */\nexport type ProPositionsSideFilter = 'all' | 'long' | 'short';\n\n/**\n * Sort fields available on the Pro Positions list.\n */\nexport type ProPositionsSortField =\n | 'positionValue'\n | 'unrealizedPnl'\n | 'fundingRate';\n\n/**\n * Sort direction for the Pro Positions list.\n */\nexport type ProPositionsSortDirection = 'asc' | 'desc';\n\n/**\n * Pro-mode layout preferences (network-independent).\n *\n * Flat object that persists across markets (unlike the per-market\n * `tradeConfigurations`). `chartExpanded` and the `*Position` fields are\n * reserved for future container-position UI. `positionsSideFilter` /\n * `positionsSortField` / `positionsSortDirection` back the Positions/Orders\n * panel sort and side filter so they survive market navigation and app\n * restarts.\n */\nexport type ProLayoutPreferences = {\n orderBookExpanded: boolean;\n chartExpanded: boolean;\n orderBookPosition: 'left' | 'right';\n orderFormPosition: 'left' | 'right';\n positionsSideFilter: ProPositionsSideFilter;\n positionsSortField: ProPositionsSortField;\n positionsSortDirection: ProPositionsSortDirection;\n};\n\n/**\n * Default pro-mode layout preferences.\n *\n * Shared by `getDefaultPerpsControllerState()`, the controller getter, and the\n * selector so callers always receive a fully-populated object even when the\n * persisted state predates this field.\n */\nexport const DEFAULT_PRO_LAYOUT_PREFERENCES: ProLayoutPreferences = {\n orderBookExpanded: false,\n chartExpanded: false,\n orderBookPosition: 'left',\n orderFormPosition: 'right',\n positionsSideFilter: 'all',\n positionsSortField: 'positionValue',\n positionsSortDirection: 'desc',\n};\n\n/**\n * Default Perps interface mode.\n */\nexport const DEFAULT_PERPS_MODE: PerpsMode = PerpsMode.Lite;\n\n/**\n * Funding rate display configuration\n * Controls how funding rates are formatted and displayed\n */\nexport const FUNDING_RATE_CONFIG = {\n // Number of decimal places to display for funding rates\n Decimals: 4,\n // Default display value when funding rate is zero or unavailable\n ZeroDisplay: '0.0000%',\n // Multiplier to convert decimal funding rate to percentage\n PercentageMultiplier: 100,\n} as const;\n\n/**\n * Provider configuration for multi-provider support\n */\nexport const PROVIDER_CONFIG = {\n /** Default perpetual DEX provider when no explicit selection exists */\n DefaultProvider: 'hyperliquid' as const,\n /** Force MYX to testnet only (mainnet credentials not yet available) */\n MYX_TESTNET_ONLY: false,\n} as const;\n\n// Disk-backed cold-start cache keys and throttle interval.\n// The user-data key ends in _V2 because the AccountState balance contract\n// changed (TAT-3047) and has no in-payload version field. Bumping the key\n// forces a one-time empty cache on upgrade — consumers fall through to\n// skeleton/fallback until the first WS tick, avoiding stale legacy-shape\n// reads that would surface as $0 balances.\nexport const PERPS_DISK_CACHE_MARKETS = 'PERPS_DISK_CACHE_MARKETS';\nexport const PERPS_DISK_CACHE_USER_DATA = 'PERPS_DISK_CACHE_USER_DATA_V2';\nexport const PERPS_DISK_CACHE_THROTTLE_MS = 30_000;\n\n/**\n * Minimum interval between WebSocket-triggered HL `userAbstraction`\n * refreshes. Balances picking up HL-web mode flips (Unified ↔ Standard)\n * promptly against burning REST quota on every spot tick. Covers the\n * observed user pattern of flipping mode once per session at most.\n */\nexport const ABSTRACTION_MODE_REFRESH_THROTTLE_MS = 60_000;\n\n/**\n * Build the standard provider:network cache key from controller state.\n *\n * @param state - Controller state containing provider and network info.\n * @param state.activeProvider - Active perps provider name.\n * @param state.isTestnet - Whether testnet mode is active.\n * @returns Cache key in the format \"provider:mainnet\" or \"provider:testnet\".\n */\nexport function getProviderNetworkKey(state: {\n activeProvider?: string;\n isTestnet?: boolean;\n}): string {\n return `${state.activeProvider ?? PROVIDER_CONFIG.DefaultProvider}:${state.isTestnet ? 'testnet' : 'mainnet'}`;\n}\n\n/**\n * Build a provider:network cache key for a specific provider id.\n * Accounts for MYX_TESTNET_ONLY: MYX is always on testnet regardless of the\n * global network flag.\n *\n * @param providerId - The provider identifier (e.g. \"hyperliquid\", \"myx\").\n * @param isTestnet - Global testnet flag from controller state.\n * @returns Cache key in the format \"provider:mainnet\" or \"provider:testnet\".\n */\nexport function buildProviderCacheKey(\n providerId: string,\n isTestnet: boolean,\n): string {\n const effectiveTestnet =\n providerId === 'myx'\n ? PROVIDER_CONFIG.MYX_TESTNET_ONLY || isTestnet\n : isTestnet;\n return `${providerId}:${effectiveTestnet ? 'testnet' : 'mainnet'}`;\n}\n"]}
1
+ {"version":3,"file":"perpsConfig.cjs","sourceRoot":"","sources":["../../src/constants/perpsConfig.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;GASG;AACU,QAAA,YAAY,GAAG,4CAA4C,CAAC;AAC5D,QAAA,YAAY,GAAG,KAAK,CAAC;AAErB,QAAA,eAAe,GAAG;IAC7B,cAAc,EAAE,cAAc;IAC9B,WAAW,EAAE,OAAO,EAAE,kFAAkF;IACxG,sGAAsG;IACtG,4BAA4B,EAAE,eAAe;IAC7C,uFAAuF;IACvF,uBAAuB,EAAE,KAAK;IAC9B,gBAAgB,EAAE,IAAI,EAAE,YAAY;IACpC,qBAAqB,EAAE,IAAI,EAAE,WAAW;IACxC,yBAAyB,EAAE,KAAM,EAAE,6FAA6F;IAChI,mBAAmB,EAAE,KAAM,EAAE,gEAAgE;IAC7F,0BAA0B,EAAE,KAAM,EAAE,4DAA4D;IAEhG,8BAA8B;IAC9B,uBAAuB,EAAE,KAAM,EAAE,+GAA+G;IAChJ,0BAA0B,EAAE,KAAM,EAAE,2EAA2E;IAC/G,sBAAsB,EAAE,IAAK,EAAE,oDAAoD;IACnF,mBAAmB,EAAE,GAAG,EAAE,kEAAkE;IAC5F,0BAA0B,EAAE,GAAG,EAAE,2GAA2G;IAC5I,0BAA0B,EAAE,GAAG,EAAE,uDAAuD;IACxF,0BAA0B,EAAE,GAAG,EAAE,+EAA+E;IAChH,sBAAsB,EAAE,GAAG,EAAE,0DAA0D;IACvF,wBAAwB,EAAE,IAAK,EAAE,gDAAgD;IACjF,wBAAwB,EAAE,CAAC,EAAE,kEAAkE;IAC/F,yBAAyB,EAAE,IAAK,EAAE,iFAAiF;IAEnH,sCAAsC;IACtC,uBAAuB,EAAE,KAAK,EAAE,oFAAoF;IACpH,kBAAkB,EAAE,GAAG,EAAE,qEAAqE;IAE9F,0BAA0B;IAC1B,mBAAmB,EAAE,KAAM,EAAE,oEAAoE;IAEjG,uBAAuB;IACvB,+BAA+B,EAAE,KAAM,EAAE,gEAAgE;IAEzG,wBAAwB,EAAE,CAAC;IAC3B,kBAAkB,EAAE,CAAW,EAAE,uFAAuF;IACxH,oBAAoB,EAAE,MAAM,EAAE,yCAAyC;IACvE,yBAAyB,EAAE,KAAK,EAAE,0CAA0C;IAC5E,mBAAmB,EAAE,IAAI,EAAE,6CAA6C;IACxE,iBAAiB,EAAE,IAAI,EAAE,oDAAoD;IAC7E,yBAAyB,EAAE,OAAO,EAAE,gDAAgD;IAEpF,mBAAmB,EAAE,CAAC;IAEtB,qCAAqC;IACrC,eAAe,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,yDAAyD;IAEpG,0BAA0B;IAC1B,0BAA0B,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,kDAAkD;IACnG,0BAA0B,EAAE,EAAE,EAAE,qDAAqD;CAC7E,CAAC;AAEX;;;GAGG;AACU,QAAA,oBAAoB,GAAG;IAClC,gBAAgB,EAAE,MAAM,EAAE,4CAA4C;IACtE,gBAAgB,EAAE,CAAC,EAAE,iCAAiC;IACtD,eAAe,EAAE,MAAM,EAAE,oBAAoB;CACrC,CAAC;AAEX;;;GAGG;AACU,QAAA,qBAAqB,GAAG;IACnC,2DAA2D;IAC3D,mBAAmB,EAAE,EAAE,EAAE,mCAAmC;IAE5D,2DAA2D;IAC3D,2BAA2B,EAAE,GAAG,EAAE,yDAAyD;IAE3F,oDAAoD;IACpD,cAAc,EAAE,GAAG,EAAE,uDAAuD;CACpE,CAAC;AAEX;;;;;GAKG;AACU,QAAA,qBAAqB,GAAG;IACnC,uCAAuC;IACvC,uCAAuC;IACvC,wEAAwE;IACxE,wBAAwB,EAAE,GAAG;IAE7B,sCAAsC;IACtC,yCAAyC;IACzC,gEAAgE;IAChE,sBAAsB,EAAE,IAAI;IAE5B,sCAAsC;IACtC,uCAAuC;IACvC,+EAA+E;IAC/E,uBAAuB,EAAE,GAAG;CACpB,CAAC;AAEX;;;GAGG;AACU,QAAA,mBAAmB,GAAG;IACjC,MAAM,EAAE,EAAE;IACV,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,EAAE;CACH,CAAC;AAEX;;;;;GAKG;AACU,QAAA,uBAAuB,GAAG,KAAK,CAAC,CAAC,OAAO;AAErD;;;GAGG;AACU,QAAA,kBAAkB,GAAG;IAChC,8CAA8C;IAC9C,6DAA6D;IAC7D,qBAAqB,EAAE,IAAI;IAE3B,iDAAiD;IACjD,sEAAsE;IACtE,oBAAoB,EAAE,GAAG;IAEzB,kDAAkD;IAClD,6EAA6E;IAC7E,0BAA0B,EAAE,GAAG;IAE/B,oDAAoD;IACpD,wEAAwE;IACxE,uBAAuB,EAAE,GAAG;IAE5B,uDAAuD;IACvD,2EAA2E;IAC3E,2EAA2E;IAC3E,0EAA0E;IAC1E,+BAA+B;IAC/B,0BAA0B,EAAE,GAAG;IAE/B,qDAAqD;IACrD,8EAA8E;IAC9E,6EAA6E;IAC7E,sEAAsE;IACtE,6BAA6B;IAC7B,0BAA0B,EAAE,EAAE;IAE9B,0CAA0C;IAC1C,8EAA8E;IAC9E,4EAA4E;IAC5E,yEAAyE;IACzE,qBAAqB,EAAE,GAAG;IAE1B,yCAAyC;IACzC,EAAE;IACF,4EAA4E;IAC5E,0EAA0E;IAC1E,sEAAsE;IACtE,4EAA4E;IAC5E,2CAA2C;IAC3C,EAAE;IACF,sEAAsE;IACtE,0EAA0E;IAC1E,0EAA0E;IAC1E,iFAAiF;IACjF,2EAA2E;IAC3E,yEAAyE;IACzE,0DAA0D;IAC1D,sBAAsB,EAAE,KAAM;IAE9B,oDAAoD;IACpD,0EAA0E;IAC1E,yEAAyE;IACzE,uEAAuE;IACvE,gEAAgE;IAChE,8CAA8C;IAC9C,wBAAwB,EAAE,KAAM;IAEhC,yCAAyC;IACzC,oFAAoF;IACpF,oFAAoF;IACpF,uBAAuB,EAAE,GAAG;IAE5B,yCAAyC;IACzC,sFAAsF;IACtF,sBAAsB,EAAE,GAAG;IAE3B,4CAA4C;IAC5C,gEAAgE;IAChE,yBAAyB,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,YAAY;IAEtD,+CAA+C;IAC/C,kDAAkD;IAClD,4BAA4B,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,SAAS;IAEvD,6CAA6C;IAC7C,4EAA4E;IAC5E,0BAA0B,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,SAAS;IAErD,yCAAyC;IACzC,uDAAuD;IACvD,0BAA0B,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,YAAY;IACvD,mEAAmE;IACnE,gCAAgC,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,YAAY;IAE7D;;;;;;;;;;;OAWG;IACH,cAAc,EAAE;QACd,gFAAgF;QAChF,iBAAiB,EAAE,kBAAkB;QAErC,0EAA0E;QAC1E,iBAAiB,EAAE,mBAAmB;QAEtC,2EAA2E;QAC3E,oBAAoB,EAAE,qBAAqB;KACnC;CACF,CAAC;AAEE,QAAA,YAAY,GAAG;IAC1B,oBAAoB,EAAE,IAAI;CAClB,CAAC;AAEX;;;GAGG;AACU,QAAA,wBAAwB,GAAG;IACtC,gBAAgB;IAChB,iBAAiB,EAAE;QACjB,qCAAqC;QACrC,YAAY,EAAE,QAAU;QACxB,0CAA0C;QAC1C,kBAAkB,EAAE,OAAS;QAC7B,0CAA0C;QAC1C,cAAc,EAAE,OAAS;QACzB,iCAAiC;QACjC,WAAW,EAAE,MAAO;KACrB;IACD,2CAA2C;IAC3C,oBAAoB,EAAE,EAAE;CAChB,CAAC;AAEX;;;GAGG;AACU,QAAA,qBAAqB,GAAG;IACnC,8CAA8C;IAC9C,gBAAgB,EAAE,CAAC;IAEnB,gEAAgE;IAChE,sBAAsB,EAAE,GAAG;IAE3B,sEAAsE;IACtE,0BAA0B,EAAE,CAAC;IAE7B,qEAAqE;IACrE,eAAe,EAAE,IAAI;IAErB,sDAAsD;IACtD,qBAAqB,EAAE,EAAE;CACjB,CAAC;AAEX;;;GAGG;AACU,QAAA,wBAAwB,GAAG;IACtC,8CAA8C;IAC9C,4FAA4F;IAC5F,8DAA8D;IAC9D,wBAAwB,EAAE,GAAG,EAAE,wDAAwD;IACvF,2BAA2B,EAAE,GAAG,EAAE,yDAAyD;IAE3F,yCAAyC;IACzC,oEAAoE;IACpE,mBAAmB,EAAE,CAAC;IAEtB,oCAAoC;IACpC,oEAAoE;IACpE,oBAAoB,EAAE,CAAC;IAEvB,4FAA4F;IAC5F,4GAA4G;IAC5G,8EAA8E;IAC9E,yBAAyB,EAAE,GAAG;IAE9B,wDAAwD;IACxD,uDAAuD;IACvD,wDAAwD;IACxD,mBAAmB,EAAE,EAAE;CACf,CAAC;AAEX;;;GAGG;AACU,QAAA,oBAAoB,GAAG;IAClC,iEAAiE;IACjE,cAAc,EAAE,gDAAgD;CACxD,CAAC;AAEX;;;;;GAKG;AACU,QAAA,mBAAmB,GAAG;IACjC,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,YAAY;IACvC,cAAc,EAAE,KAAM,EAAE,oDAAoD;CACpE,CAAC;AAEX;;;GAGG;AACU,QAAA,wBAAwB,GAAG;IACtC,qEAAqE;IACrE,gEAAgE;IAChE,gBAAgB,EAAE,CAAC;IACnB,yDAAyD;IACzD,+DAA+D;IAC/D,qBAAqB,EAAE,CAAC;IACxB,sEAAsE;IACtE,4EAA4E;IAC5E,kEAAkE;IAClE,oEAAoE;IACpE,oBAAoB,EAAE,CAAC;CACf,CAAC;AAEX;;;GAGG;AACU,QAAA,qBAAqB,GAAG;IACnC,wBAAwB;IACxB,mBAAmB,EAAE,QAAiB;IACtC,gBAAgB,EAAE,MAAe;IAEjC,4EAA4E;IAC5E,UAAU,EAAE;QACV,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,aAAa;QAC1B,YAAY,EAAE,cAAc;QAC5B,WAAW,EAAE,aAAa;KAClB;IAEV,8EAA8E;IAC9E,iBAAiB,EAAE;QACjB,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,mBAAmB,EAAE;QAClD,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,yBAAyB,EAAE;QAC7D,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,yBAAyB,EAAE;KACrD;IAEV,oCAAoC;IACpC,mEAAmE;IACnE,WAAW,EAAE;QACX;YACE,EAAE,EAAE,QAAQ;YACZ,QAAQ,EAAE,mBAAmB;YAC7B,KAAK,EAAE,QAAQ;YACf,SAAS,EAAE,MAAM;SAClB;QACD;YACE,EAAE,EAAE,aAAa;YACjB,QAAQ,EAAE,yBAAyB;YACnC,KAAK,EAAE,aAAa;YACpB,SAAS,EAAE,MAAM;SAClB;QACD;YACE,EAAE,EAAE,cAAc;YAClB,QAAQ,EAAE,0BAA0B;YACpC,KAAK,EAAE,cAAc;YACrB,SAAS,EAAE,MAAM;SAClB;QACD;YACE,EAAE,EAAE,aAAa;YACjB,QAAQ,EAAE,yBAAyB;YACnC,KAAK,EAAE,aAAa;YACpB,SAAS,EAAE,MAAM;SAClB;KACO;CACF,CAAC;AAUX;;;;;GAKG;AACH,IAAY,SAGX;AAHD,WAAY,SAAS;IACnB,0BAAa,CAAA;IACb,wBAAW,CAAA;AACb,CAAC,EAHW,SAAS,yBAAT,SAAS,QAGpB;AAiBD;;;;;;GAMG;AACU,QAAA,8BAA8B,GAAyB;IAClE,iBAAiB,EAAE,KAAK;IACxB,aAAa,EAAE,KAAK;IACpB,iBAAiB,EAAE,MAAM;IACzB,iBAAiB,EAAE,OAAO;CAC3B,CAAC;AAEF;;GAEG;AACU,QAAA,kBAAkB,GAAc,SAAS,CAAC,IAAI,CAAC;AAE5D;;;GAGG;AACU,QAAA,mBAAmB,GAAG;IACjC,wDAAwD;IACxD,QAAQ,EAAE,CAAC;IACX,iEAAiE;IACjE,WAAW,EAAE,SAAS;IACtB,2DAA2D;IAC3D,oBAAoB,EAAE,GAAG;CACjB,CAAC;AAEX;;GAEG;AACU,QAAA,eAAe,GAAG;IAC7B,uEAAuE;IACvE,eAAe,EAAE,aAAsB;IACvC,wEAAwE;IACxE,gBAAgB,EAAE,KAAK;CACf,CAAC;AAEX,2DAA2D;AAC3D,0EAA0E;AAC1E,0EAA0E;AAC1E,uEAAuE;AACvE,yEAAyE;AACzE,2CAA2C;AAC9B,QAAA,wBAAwB,GAAG,0BAA0B,CAAC;AACtD,QAAA,0BAA0B,GAAG,+BAA+B,CAAC;AAC7D,QAAA,4BAA4B,GAAG,KAAM,CAAC;AAEnD;;;;;GAKG;AACU,QAAA,oCAAoC,GAAG,KAAM,CAAC;AAE3D;;;;;;;GAOG;AACH,SAAgB,qBAAqB,CAAC,KAGrC;IACC,OAAO,GAAG,KAAK,CAAC,cAAc,IAAI,uBAAe,CAAC,eAAe,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;AACjH,CAAC;AALD,sDAKC;AAED;;;;;;;;GAQG;AACH,SAAgB,qBAAqB,CACnC,UAAkB,EAClB,SAAkB;IAElB,MAAM,gBAAgB,GACpB,UAAU,KAAK,KAAK;QAClB,CAAC,CAAC,uBAAe,CAAC,gBAAgB,IAAI,SAAS;QAC/C,CAAC,CAAC,SAAS,CAAC;IAChB,OAAO,GAAG,UAAU,IAAI,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;AACrE,CAAC;AATD,sDASC","sourcesContent":["/**\n * Perps feature constants - Controller layer (portable)\n *\n * This file contains only controller-portable configuration:\n * - Constants used by controller logic, providers, and services\n * - Calculation thresholds, API configs, and protocol constants\n *\n * UI-only constants (layout, display, navigation) live in:\n * app/components/UI/Perps/constants/perpsConfig.ts\n */\nexport const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000';\nexport const ZERO_BALANCE = '0x0';\n\nexport const PERPS_CONSTANTS = {\n FeatureFlagKey: 'perpsEnabled',\n FeatureName: 'perps', // Constant for Sentry error filtering - enables \"feature:perps\" dashboard queries\n /** Token description used to identify the synthetic \"Perps balance\" option in pay-with token lists */\n PerpsBalanceTokenDescription: 'perps-balance',\n /** Symbol displayed for the synthetic \"Perps balance\" token in pay-with token lists */\n PerpsBalanceTokenSymbol: 'USD',\n WebsocketTimeout: 5000, // 5 seconds\n WebsocketCleanupDelay: 1000, // 1 second\n BackgroundDisconnectDelay: 20_000, // 20 seconds delay before disconnecting when app is backgrounded or when user exits perps UX\n ConnectionTimeoutMs: 10_000, // 10 seconds timeout for connection and position loading states\n DefaultMonitoringTimeoutMs: 10_000, // 10 seconds default timeout for data monitoring operations\n\n // Connection timing constants\n ConnectionGracePeriodMs: 20_000, // 20 seconds grace period before actual disconnection (same as BackgroundDisconnectDelay for semantic clarity)\n ConnectionAttemptTimeoutMs: 30_000, // 30 seconds timeout for connection attempts to prevent indefinite hanging\n WebsocketPingTimeoutMs: 5_000, // 5 seconds timeout for WebSocket health check ping\n ConnectRetryDelayMs: 200, // Delay before retrying connect() when connection isn't ready yet\n ForegroundPingRetryDelayMs: 500, // Delay before retrying ping in resumeFromForeground — JS thread may be sluggish right after foregrounding\n ReconnectionCleanupDelayMs: 500, // Platform-agnostic delay to ensure WebSocket is ready\n ReconnectionDelayAndroidMs: 300, // Android-specific reconnection delay for better reliability on slower devices\n ReconnectionDelayIosMs: 100, // iOS-specific reconnection delay for optimal performance\n ReconnectionRetryDelayMs: 5_000, // 5 seconds delay between reconnection attempts\n NetworkRestoreMaxRetries: 8, // Max retry attempts when reconnecting after WiFi/network restore\n NetworkRestoreRetryBaseMs: 1_500, // Base delay (ms) between network restore retries (multiplied by attempt number)\n\n // Connection manager timing constants\n BalanceUpdateThrottleMs: 15000, // Update at most every 15 seconds to reduce state updates in PerpsConnectionManager\n InitialDataDelayMs: 100, // Delay to allow initial data to load after connection establishment\n\n // Order submission timing\n PlaceOrderTimeoutMs: 60_000, // Hard timeout for provider round-trip in TradingService.placeOrder\n\n // Deposit toast timing\n DepositTakingLongerToastDelayMs: 30_000, // Delay before showing \"Deposit taking longer than usual\" toast\n\n DefaultAssetPreviewLimit: 5,\n DefaultMaxLeverage: 3 as number, // Default fallback max leverage when market data is unavailable - conservative default\n FallbackPriceDisplay: '$---', // Display when price data is unavailable\n FallbackPercentageDisplay: '--%', // Display when change data is unavailable\n FallbackDataDisplay: '--', // Display when non-price data is unavailable\n ZeroAmountDisplay: '$0', // Display for zero dollar amounts (e.g., no volume)\n ZeroAmountDetailedDisplay: '$0.00', // Display for zero dollar amounts with decimals\n\n RecentActivityLimit: 3,\n\n // Historical data fetching constants\n FillsLookbackMs: 90 * 24 * 60 * 60 * 1000, // 3 months in milliseconds - limits REST API fills fetch\n\n // Recently viewed markets\n RecentlyViewedMarketsTtlMs: 24 * 60 * 60 * 1000, // 24 hours TTL for recently viewed market entries\n RecentlyViewedMarketsLimit: 10, // Maximum number of recently viewed markets to track\n} as const;\n\n/**\n * Withdrawal-specific constants (protocol-agnostic)\n * Note: Protocol-specific values like estimated time should be defined in each protocol's config\n */\nexport const WITHDRAWAL_CONSTANTS = {\n DefaultMinAmount: '1.01', // Default minimum withdrawal amount in USDC\n DefaultFeeAmount: 1, // Default withdrawal fee in USDC\n DefaultFeeToken: 'USDC', // Default fee token\n} as const;\n\n/**\n * Validation thresholds for UI warnings and checks\n * These values control when warnings are shown to users\n */\nexport const VALIDATION_THRESHOLDS = {\n // Leverage threshold for warning users about high leverage\n HighLeverageWarning: 20, // Show warning when leverage > 20x\n\n // Limit price difference threshold (as decimal, 0.1 = 10%)\n LimitPriceDifferenceWarning: 0.1, // Warn if limit price differs by >10% from current price\n\n // Price deviation threshold (as decimal, 0.1 = 10%)\n PriceDeviation: 0.1, // Warn if perps price deviates by >10% from spot price\n} as const;\n\n/**\n * Order slippage configuration\n * Controls default slippage tolerance for different order types\n * Conservative defaults based on HyperLiquid platform interface\n * See: docs/perps/hyperliquid/ORDER-MATCHING-ERRORS.md\n */\nexport const ORDER_SLIPPAGE_CONFIG = {\n // Market order slippage (basis points)\n // 300 basis points = 3% = 0.03 decimal\n // Conservative default for measured rollout, prevents most IOC failures\n DefaultMarketSlippageBps: 300,\n\n // TP/SL order slippage (basis points)\n // 1000 basis points = 10% = 0.10 decimal\n // Aligns with HyperLiquid platform default for triggered orders\n DefaultTpslSlippageBps: 1000,\n\n // Limit order slippage (basis points)\n // 100 basis points = 1% = 0.01 decimal\n // Kept conservative as limit orders rest on book (not IOC/immediate execution)\n DefaultLimitSlippageBps: 100,\n} as const;\n\n/**\n * Bounds and step for the user-configurable max slippage preference (basis points).\n * Shared by the controller (`setMaxSlippage`) and UI (`slippageConfig.ts`).\n */\nexport const MAX_SLIPPAGE_BOUNDS = {\n MinBps: 10,\n MaxBps: 1000,\n StepBps: 10,\n} as const;\n\n/**\n * Max order amount buffer to reduce \"Insufficient margin\" rejections from the exchange.\n * When the user selects 100% (slider or Max), we cap the order at (1 - this) of the\n * theoretical max so that fees, rounding, and exchange-side margin checks are covered.\n * Value as decimal (e.g. 0.005 = 0.5%).\n */\nexport const MAX_ORDER_MARGIN_BUFFER = 0.005; // 0.5%\n\n/**\n * Performance optimization constants\n * These values control debouncing and throttling for better performance\n */\nexport const PERFORMANCE_CONFIG = {\n // Price updates debounce delay (milliseconds)\n // Batches rapid WebSocket price updates to reduce re-renders\n PriceUpdateDebounceMs: 1000,\n\n // Order validation debounce delay (milliseconds)\n // Prevents excessive validation calls during rapid form input changes\n ValidationDebounceMs: 300,\n\n // Liquidation price debounce delay (milliseconds)\n // Prevents excessive liquidation price calls during rapid form input changes\n LiquidationPriceDebounceMs: 500,\n\n // Candle subscription debounce delay (milliseconds)\n // Prevents WS subscription churn during rapid market switching (#28141)\n CandleConnectDebounceMs: 500,\n\n // Order-form slippage estimate throttle (milliseconds)\n // Updates the estimated-slippage value derived from the live L2 order book\n // no more than once per window. Aggressive enough to keep the row reactive\n // while the user edits the amount, conservative enough to avoid re-render\n // pressure on every book tick.\n SlippageEstimateThrottleMs: 250,\n\n // Order-book levels sampled when estimating slippage\n // Number of price levels (per side) walked by `calculateEstimatedSlippageBps`\n // to fill the requested USD notional. Matches the L2 sample size used by the\n // order-book panel and is enough depth for the typical order sizes we\n // surface in the order form.\n SlippageEstimateBookLevels: 10,\n\n // Candle WS teardown delay (milliseconds)\n // When the last subscriber for a cacheKey unsubscribes, wait this long before\n // tearing down the WS. A subsequent subscribe inside the window cancels the\n // teardown so rapid back-and-forth switches do not churn the connection.\n CandleTeardownDelayMs: 150,\n\n // Perps REST coalesce TTL (milliseconds)\n //\n // Window in which identical GET-style REST calls (getOrderFills, getOrders,\n // getFunding, historicalOrders) share a single in-flight promise / cached\n // result. `forceRefresh` still bypasses the cache end-to-end (hooks →\n // controller → MarketDataService → provider → HyperLiquidClientService), so\n // pull-to-refresh always hits the network.\n //\n // Why 60 s: HyperLiquid's documented rate limit is 1200 weight / IP /\n // rolling 60 s window. Sizing TTL = window length caps each endpoint-per-\n // account at ≤1 REST hit per window under any UI activity pattern — rapid\n // market switching, re-mounts (usePerpsMarketFills, usePerpsTransactionHistory),\n // and multi-tab scans all share a single request. Live fills/orders/prices\n // still flow via WS subscriptions, so REST is seed/backfill only — cache\n // staleness inside the 60 s window is never user-visible.\n PerpsRestCoalesceTtlMs: 60_000,\n\n // Candle snapshot REST coalesce TTL (milliseconds).\n // Longer than PerpsRestCoalesceTtlMs because WS stream keeps live candles\n // fresh — the REST snapshot only seeds the chart on initial subscribe. A\n // 30 s window lets rapid market switching (pass 1 → pass 2 of a stress\n // loop) share the same snapshot per (symbol, interval), cutting\n // candleSnapshot REST weight roughly in half.\n PerpsCandleCoalesceTtlMs: 30_000,\n\n // Navigation params delay (milliseconds)\n // Required for React Navigation to complete state transitions before setting params\n // This ensures navigation context is available when programmatically selecting tabs\n NavigationParamsDelayMs: 200,\n\n // Tab control reset delay (milliseconds)\n // Delay to reset programmatic tab control after tab switching to prevent render loops\n TabControlResetDelayMs: 500,\n\n // Market data cache duration (milliseconds)\n // How long to cache market list data before fetching fresh data\n MarketDataCacheDurationMs: 5 * 60 * 1000, // 5 minutes\n\n // Asset metadata cache duration (milliseconds)\n // How long to cache asset icon validation results\n AssetMetadataCacheDurationMs: 60 * 60 * 1000, // 1 hour\n\n // Max leverage cache duration (milliseconds)\n // How long to cache max leverage values per asset (leverage rarely changes)\n MaxLeverageCacheDurationMs: 60 * 60 * 1000, // 1 hour\n\n // Rewards cache durations (milliseconds)\n // How long to cache fee discount data from rewards API\n FeeDiscountCacheDurationMs: 5 * 60 * 1000, // 5 minutes\n // How long to cache points calculation parameters from rewards API\n PointsCalculationCacheDurationMs: 5 * 60 * 1000, // 5 minutes\n\n /**\n * Performance logging markers for filtering logs during development and debugging\n * These markers help isolate performance-related logs from general application logs\n * Usage: Use in DevLogger calls to easily filter specific performance areas\n * Impact: Development only (uses DevLogger) - zero production performance cost\n *\n * Examples:\n * - Filter Sentry performance logs: `adb logcat | grep PERPSMARK_SENTRY`\n * - Filter MetaMetrics events: `adb logcat | grep PERPSMARK_METRICS`\n * - Filter WebSocket performance: `adb logcat | grep PERPSMARK_WS`\n * - Filter all Perps performance: `adb logcat | grep PERPSMARK_`\n */\n LoggingMarkers: {\n // Sentry performance measurement logs (screen loads, bottom sheets, API timing)\n SentryPerformance: 'PERPSMARK_SENTRY',\n\n // MetaMetrics event tracking logs (user interactions, business analytics)\n MetametricsEvents: 'PERPSMARK_METRICS',\n\n // WebSocket performance logs (connection timing, data flow, reconnections)\n WebsocketPerformance: 'PERPSMARK_SENTRY_WS',\n } as const,\n} as const;\n\nexport const TP_SL_CONFIG = {\n UsePositionBoundTpsl: true,\n} as const;\n\n/**\n * HyperLiquid order limits based on leverage\n * From: https://hyperliquid.gitbook.io/hyperliquid-docs/trading/contract-specifications\n */\nexport const HYPERLIQUID_ORDER_LIMITS = {\n // Market orders\n MarketOrderLimits: {\n // $15,000,000 for max leverage >= 25\n HighLeverage: 15_000_000,\n // $5,000,000 for max leverage in [20, 25)\n MediumHighLeverage: 5_000_000,\n // $2,000,000 for max leverage in [10, 20)\n MediumLeverage: 2_000_000,\n // $500,000 for max leverage < 10\n LowLeverage: 500_000,\n },\n // Limit orders are 10x market order limits\n LimitOrderMultiplier: 10,\n} as const;\n\n/**\n * Close position configuration\n * Controls behavior and constants specific to position closing\n */\nexport const CLOSE_POSITION_CONFIG = {\n // Decimal places for USD amount input display\n UsdDecimalPlaces: 2,\n\n // Default close percentage when opening the close position view\n DefaultClosePercentage: 100,\n\n // Precision for position size calculations to prevent rounding errors\n AmountCalculationPrecision: 6,\n\n // Throttle delay for real-time price updates during position closing\n PriceThrottleMs: 3000,\n\n // Fallback decimal places for tokens without metadata\n FallbackTokenDecimals: 18,\n} as const;\n\n/**\n * Margin adjustment configuration\n * Controls behavior for adding/removing margin from positions\n */\nexport const MARGIN_ADJUSTMENT_CONFIG = {\n // Risk thresholds for margin removal warnings\n // Threshold values represent ratio of (price distance to liquidation) / (liquidation price)\n // Values < 1.0 mean price is dangerously close to liquidation\n LiquidationRiskThreshold: 1.2, // 20% buffer before liquidation - triggers danger state\n LiquidationWarningThreshold: 1.5, // 50% buffer before liquidation - triggers warning state\n\n // Minimum margin adjustment amount (USD)\n // Prevents dust adjustments and ensures meaningful position changes\n MinAdjustmentAmount: 1,\n\n // Precision for margin calculations\n // Ensures accurate decimal handling in margin/leverage calculations\n CalculationPrecision: 6,\n\n // Safety buffer for margin removal to account for HyperLiquid's transfer margin requirement\n // HyperLiquid enforces: transfer_margin_required = max(initial_margin_required, 0.1 * total_position_value)\n // See: https://hyperliquid.gitbook.io/hyperliquid-docs/trading/margin-and-pnl\n MarginRemovalSafetyBuffer: 0.1,\n\n // Fallback max leverage when market data is unavailable\n // Conservative value to prevent over-removal of margin\n // Most HyperLiquid assets support at least 50x leverage\n FallbackMaxLeverage: 50,\n} as const;\n\n/**\n * Data Lake API configuration\n * Endpoints for reporting perps trading activity for notifications\n */\nexport const DATA_LAKE_API_CONFIG = {\n // Order reporting endpoint - only used for mainnet perps trading\n OrdersEndpoint: 'https://perps.api.cx.metamask.io/api/v1/orders',\n} as const;\n\n/**\n * Terminal API configuration.\n * The full endpoint URL is injected at runtime via\n * `PerpsPlatformDependencies.terminalApiUrl` from each client build\n * (dev/uat/prd); only cache settings live here.\n */\nexport const TERMINAL_API_CONFIG = {\n CacheTtlMs: 5 * 60 * 1000, // 5 minutes\n FetchTimeoutMs: 10_000, // 10 seconds – degrade to provider on slow Terminal\n} as const;\n\n/**\n * Decimal precision configuration\n * Controls maximum decimal places for price and input validation\n */\nexport const DECIMAL_PRECISION_CONFIG = {\n // Maximum decimal places for price input (matches Hyperliquid limit)\n // Used in TP/SL forms, limit price inputs, and price validation\n MaxPriceDecimals: 6,\n // Maximum significant figures allowed by HyperLiquid API\n // Orders with more than 5 significant figures will be rejected\n MaxSignificantFigures: 5,\n // Defensive fallback for size decimals when market data fails to load\n // Real szDecimals should always come from market data API (varies by asset)\n // Using 6 as safe maximum to prevent crashes (covers most assets)\n // NOTE: This is NOT semantically correct - just a defensive measure\n FallbackSizeDecimals: 6,\n} as const;\n\n/**\n * Market sorting configuration\n * Controls sorting behavior and presets for the trending markets view\n */\nexport const MARKET_SORTING_CONFIG = {\n // Default sort settings\n DefaultSortOptionId: 'volume' as const,\n DefaultDirection: 'desc' as const,\n\n // Available sort fields (only includes fields supported by PerpsMarketData)\n SortFields: {\n Volume: 'volume',\n PriceChange: 'priceChange',\n OpenInterest: 'openInterest',\n FundingRate: 'fundingRate',\n } as const,\n\n // Sort button presets for filter chips (simplified buttons without direction)\n SortButtonPresets: [\n { field: 'volume', labelKey: 'perps.sort.volume' },\n { field: 'priceChange', labelKey: 'perps.sort.price_change' },\n { field: 'fundingRate', labelKey: 'perps.sort.funding_rate' },\n ] as const,\n\n // Sort options for the bottom sheet\n // All options support direction toggle (high-to-low / low-to-high)\n SortOptions: [\n {\n id: 'volume',\n labelKey: 'perps.sort.volume',\n field: 'volume',\n direction: 'desc',\n },\n {\n id: 'priceChange',\n labelKey: 'perps.sort.price_change',\n field: 'priceChange',\n direction: 'desc',\n },\n {\n id: 'openInterest',\n labelKey: 'perps.sort.open_interest',\n field: 'openInterest',\n direction: 'desc',\n },\n {\n id: 'fundingRate',\n labelKey: 'perps.sort.funding_rate',\n field: 'fundingRate',\n direction: 'desc',\n },\n ] as const,\n} as const;\n\n/**\n * Type for valid sort option IDs\n * Derived from SORT_OPTIONS to ensure type safety\n * Valid values: 'volume' | 'priceChange' | 'openInterest' | 'fundingRate'\n */\nexport type SortOptionId =\n (typeof MARKET_SORTING_CONFIG.SortOptions)[number]['id'];\n\n/**\n * Perps interface mode.\n *\n * `Lite` is the simplified default experience; `Pro` exposes the advanced\n * trading layout (chart, order book, inline order form).\n */\nexport enum PerpsMode {\n Lite = 'lite',\n Pro = 'pro',\n}\n\n/**\n * Pro-mode layout preferences (network-independent).\n *\n * Flat object that persists across markets (unlike the per-market\n * `tradeConfigurations`). `chartExpanded` and the `*Position` fields are\n * reserved for future container-position UI and are kept here now so no\n * state-shape migration is needed when that UI ships.\n */\nexport type ProLayoutPreferences = {\n orderBookExpanded: boolean;\n chartExpanded: boolean;\n orderBookPosition: 'left' | 'right';\n orderFormPosition: 'left' | 'right';\n};\n\n/**\n * Default pro-mode layout preferences.\n *\n * Shared by `getDefaultPerpsControllerState()`, the controller getter, and the\n * selector so callers always receive a fully-populated object even when the\n * persisted state predates this field.\n */\nexport const DEFAULT_PRO_LAYOUT_PREFERENCES: ProLayoutPreferences = {\n orderBookExpanded: false,\n chartExpanded: false,\n orderBookPosition: 'left',\n orderFormPosition: 'right',\n};\n\n/**\n * Default Perps interface mode.\n */\nexport const DEFAULT_PERPS_MODE: PerpsMode = PerpsMode.Lite;\n\n/**\n * Funding rate display configuration\n * Controls how funding rates are formatted and displayed\n */\nexport const FUNDING_RATE_CONFIG = {\n // Number of decimal places to display for funding rates\n Decimals: 4,\n // Default display value when funding rate is zero or unavailable\n ZeroDisplay: '0.0000%',\n // Multiplier to convert decimal funding rate to percentage\n PercentageMultiplier: 100,\n} as const;\n\n/**\n * Provider configuration for multi-provider support\n */\nexport const PROVIDER_CONFIG = {\n /** Default perpetual DEX provider when no explicit selection exists */\n DefaultProvider: 'hyperliquid' as const,\n /** Force MYX to testnet only (mainnet credentials not yet available) */\n MYX_TESTNET_ONLY: false,\n} as const;\n\n// Disk-backed cold-start cache keys and throttle interval.\n// The user-data key ends in _V2 because the AccountState balance contract\n// changed (TAT-3047) and has no in-payload version field. Bumping the key\n// forces a one-time empty cache on upgrade — consumers fall through to\n// skeleton/fallback until the first WS tick, avoiding stale legacy-shape\n// reads that would surface as $0 balances.\nexport const PERPS_DISK_CACHE_MARKETS = 'PERPS_DISK_CACHE_MARKETS';\nexport const PERPS_DISK_CACHE_USER_DATA = 'PERPS_DISK_CACHE_USER_DATA_V2';\nexport const PERPS_DISK_CACHE_THROTTLE_MS = 30_000;\n\n/**\n * Minimum interval between WebSocket-triggered HL `userAbstraction`\n * refreshes. Balances picking up HL-web mode flips (Unified ↔ Standard)\n * promptly against burning REST quota on every spot tick. Covers the\n * observed user pattern of flipping mode once per session at most.\n */\nexport const ABSTRACTION_MODE_REFRESH_THROTTLE_MS = 60_000;\n\n/**\n * Build the standard provider:network cache key from controller state.\n *\n * @param state - Controller state containing provider and network info.\n * @param state.activeProvider - Active perps provider name.\n * @param state.isTestnet - Whether testnet mode is active.\n * @returns Cache key in the format \"provider:mainnet\" or \"provider:testnet\".\n */\nexport function getProviderNetworkKey(state: {\n activeProvider?: string;\n isTestnet?: boolean;\n}): string {\n return `${state.activeProvider ?? PROVIDER_CONFIG.DefaultProvider}:${state.isTestnet ? 'testnet' : 'mainnet'}`;\n}\n\n/**\n * Build a provider:network cache key for a specific provider id.\n * Accounts for MYX_TESTNET_ONLY: MYX is always on testnet regardless of the\n * global network flag.\n *\n * @param providerId - The provider identifier (e.g. \"hyperliquid\", \"myx\").\n * @param isTestnet - Global testnet flag from controller state.\n * @returns Cache key in the format \"provider:mainnet\" or \"provider:testnet\".\n */\nexport function buildProviderCacheKey(\n providerId: string,\n isTestnet: boolean,\n): string {\n const effectiveTestnet =\n providerId === 'myx'\n ? PROVIDER_CONFIG.MYX_TESTNET_ONLY || isTestnet\n : isTestnet;\n return `${providerId}:${effectiveTestnet ? 'testnet' : 'mainnet'}`;\n}\n"]}
@@ -78,35 +78,6 @@ export declare const ORDER_SLIPPAGE_CONFIG: {
78
78
  readonly DefaultTpslSlippageBps: 1000;
79
79
  readonly DefaultLimitSlippageBps: 100;
80
80
  };
81
- /**
82
- * Defaults and bounds for the emulated `chase` placement.
83
- *
84
- * No supported venue exposes a chase as an API action — HyperLiquid documents it
85
- * as running client-side — so the strategy is run here: a post-only order rests
86
- * one tick inside the spread and is cancelled and re-placed as the touch moves.
87
- * The poll floor and the repricing cap exist to keep a chase from turning into a
88
- * cancel/replace loop against a venue's rate limits. Protocol-agnostic — a
89
- * provider that gains a native chase ignores these entirely.
90
- */
91
- export declare const CHASE_ORDER_CONFIG: {
92
- /** How often the touch is re-read when the caller does not say. */
93
- readonly DefaultIntervalMs: 3000;
94
- /** Floor on the poll interval, whatever the caller asks for. */
95
- readonly MinIntervalMs: 1000;
96
- /** How long a chase runs before it stops re-pricing and rests. */
97
- readonly DefaultMaxDurationMs: 60000;
98
- /** How many cancel/replace cycles a single chase may perform. */
99
- readonly DefaultMaxRepricings: 20;
100
- /**
101
- * How many chases may run at once.
102
- *
103
- * HyperLiquid documents a cap of five simultaneously active chase orders. It
104
- * is a venue rule rather than controller policy, but it is spelled here
105
- * alongside the rest of the chase configuration because an emulated chase is
106
- * the only thing that can enforce it.
107
- */
108
- readonly MaxActiveSessions: 5;
109
- };
110
81
  /**
111
82
  * Bounds and step for the user-configurable max slippage preference (basis points).
112
83
  * Shared by the controller (`setMaxSlippage`) and UI (`slippageConfig.ts`).
@@ -165,27 +136,6 @@ export declare const PERFORMANCE_CONFIG: {
165
136
  export declare const TP_SL_CONFIG: {
166
137
  readonly UsePositionBoundTpsl: true;
167
138
  };
168
- /**
169
- * Bounds applied to a HyperLiquid TWAP placement.
170
- *
171
- * The pinned HyperLiquid SDK (0.33.1) validates the TWAP duration as a safe
172
- * integer in `[5, 1440]` before signing, although the venue currently documents
173
- * a maximum of seven days (`10080` minutes). The controller exposes the SDK's
174
- * narrower cap until that dependency supports the venue limit, avoiding an
175
- * opaque SDK error. `MinNotionalUsd` is the venue's documented minimum *total*
176
- * order size for a TWAP, which it enforces instead of the per-order minimum —
177
- * its suborders are its own business.
178
- *
179
- * Carries the venue prefix, like `HYPERLIQUID_ORDER_LIMITS`, because these are
180
- * venue/SDK constraints rather than controller policy.
181
- *
182
- * From: https://hyperliquid.gitbook.io/hyperliquid-docs/trading/order-types
183
- */
184
- export declare const HYPERLIQUID_TWAP_LIMITS: {
185
- readonly MinDurationMinutes: 5;
186
- readonly MaxDurationMinutes: 1440;
187
- readonly MinNotionalUsd: 100;
188
- };
189
139
  /**
190
140
  * HyperLiquid order limits based on leverage
191
141
  * From: https://hyperliquid.gitbook.io/hyperliquid-docs/trading/contract-specifications
@@ -309,38 +259,19 @@ export declare enum PerpsMode {
309
259
  Lite = "lite",
310
260
  Pro = "pro"
311
261
  }
312
- /**
313
- * Side filter for the Pro Positions/Orders panel (long/short/all).
314
- *
315
- * Shared across markets via `proLayoutPreferences.positionsSideFilter`.
316
- */
317
- export type ProPositionsSideFilter = 'all' | 'long' | 'short';
318
- /**
319
- * Sort fields available on the Pro Positions list.
320
- */
321
- export type ProPositionsSortField = 'positionValue' | 'unrealizedPnl' | 'fundingRate';
322
- /**
323
- * Sort direction for the Pro Positions list.
324
- */
325
- export type ProPositionsSortDirection = 'asc' | 'desc';
326
262
  /**
327
263
  * Pro-mode layout preferences (network-independent).
328
264
  *
329
265
  * Flat object that persists across markets (unlike the per-market
330
266
  * `tradeConfigurations`). `chartExpanded` and the `*Position` fields are
331
- * reserved for future container-position UI. `positionsSideFilter` /
332
- * `positionsSortField` / `positionsSortDirection` back the Positions/Orders
333
- * panel sort and side filter so they survive market navigation and app
334
- * restarts.
267
+ * reserved for future container-position UI and are kept here now so no
268
+ * state-shape migration is needed when that UI ships.
335
269
  */
336
270
  export type ProLayoutPreferences = {
337
271
  orderBookExpanded: boolean;
338
272
  chartExpanded: boolean;
339
273
  orderBookPosition: 'left' | 'right';
340
274
  orderFormPosition: 'left' | 'right';
341
- positionsSideFilter: ProPositionsSideFilter;
342
- positionsSortField: ProPositionsSortField;
343
- positionsSortDirection: ProPositionsSortDirection;
344
275
  };
345
276
  /**
346
277
  * Default pro-mode layout preferences.
@@ -1 +1 @@
1
- {"version":3,"file":"perpsConfig.d.cts","sourceRoot":"","sources":["../../src/constants/perpsConfig.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"perpsConfig.d.cts","sourceRoot":"","sources":["../../src/constants/perpsConfig.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,eAAO,MAAM,YAAY,+CAA+C,CAAC;AACzE,eAAO,MAAM,YAAY,QAAQ,CAAC;AAElC,eAAO,MAAM,eAAe;;;IAG1B,sGAAsG;;IAEtG,uFAAuF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+C/E,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,oBAAoB;;;;CAIvB,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,qBAAqB;;;;CASxB,CAAC;AAEX;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB;;;;CAexB,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,mBAAmB;;;;CAItB,CAAC;AAEX;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,QAAQ,CAAC;AAE7C;;;GAGG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;IAyF7B;;;;;;;;;;;OAWG;;;;;;CAWK,CAAC;AAEX,eAAO,MAAM,YAAY;;CAEf,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;CAc3B,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,qBAAqB;;;;;;CAexB,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,wBAAwB;;;;;;;CAwB3B,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,oBAAoB;;CAGvB,CAAC;AAEX;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB;;;CAGtB,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,wBAAwB;;;;CAY3B,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgDxB,CAAC;AAEX;;;;GAIG;AACH,MAAM,MAAM,YAAY,GACtB,CAAC,OAAO,qBAAqB,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;AAE3D;;;;;GAKG;AACH,oBAAY,SAAS;IACnB,IAAI,SAAS;IACb,GAAG,QAAQ;CACZ;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,aAAa,EAAE,OAAO,CAAC;IACvB,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAAC;IACpC,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAAC;CACrC,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,8BAA8B,EAAE,oBAK5C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,SAA0B,CAAC;AAE5D;;;GAGG;AACH,eAAO,MAAM,mBAAmB;;;;CAOtB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,eAAe;IAC1B,uEAAuE;;IAEvE,wEAAwE;;CAEhE,CAAC;AAQX,eAAO,MAAM,wBAAwB,6BAA6B,CAAC;AACnE,eAAO,MAAM,0BAA0B,kCAAkC,CAAC;AAC1E,eAAO,MAAM,4BAA4B,QAAS,CAAC;AAEnD;;;;;GAKG;AACH,eAAO,MAAM,oCAAoC,QAAS,CAAC;AAE3D;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE;IAC3C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,GAAG,MAAM,CAET;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,OAAO,GACjB,MAAM,CAMR"}
@@ -78,35 +78,6 @@ export declare const ORDER_SLIPPAGE_CONFIG: {
78
78
  readonly DefaultTpslSlippageBps: 1000;
79
79
  readonly DefaultLimitSlippageBps: 100;
80
80
  };
81
- /**
82
- * Defaults and bounds for the emulated `chase` placement.
83
- *
84
- * No supported venue exposes a chase as an API action — HyperLiquid documents it
85
- * as running client-side — so the strategy is run here: a post-only order rests
86
- * one tick inside the spread and is cancelled and re-placed as the touch moves.
87
- * The poll floor and the repricing cap exist to keep a chase from turning into a
88
- * cancel/replace loop against a venue's rate limits. Protocol-agnostic — a
89
- * provider that gains a native chase ignores these entirely.
90
- */
91
- export declare const CHASE_ORDER_CONFIG: {
92
- /** How often the touch is re-read when the caller does not say. */
93
- readonly DefaultIntervalMs: 3000;
94
- /** Floor on the poll interval, whatever the caller asks for. */
95
- readonly MinIntervalMs: 1000;
96
- /** How long a chase runs before it stops re-pricing and rests. */
97
- readonly DefaultMaxDurationMs: 60000;
98
- /** How many cancel/replace cycles a single chase may perform. */
99
- readonly DefaultMaxRepricings: 20;
100
- /**
101
- * How many chases may run at once.
102
- *
103
- * HyperLiquid documents a cap of five simultaneously active chase orders. It
104
- * is a venue rule rather than controller policy, but it is spelled here
105
- * alongside the rest of the chase configuration because an emulated chase is
106
- * the only thing that can enforce it.
107
- */
108
- readonly MaxActiveSessions: 5;
109
- };
110
81
  /**
111
82
  * Bounds and step for the user-configurable max slippage preference (basis points).
112
83
  * Shared by the controller (`setMaxSlippage`) and UI (`slippageConfig.ts`).
@@ -165,27 +136,6 @@ export declare const PERFORMANCE_CONFIG: {
165
136
  export declare const TP_SL_CONFIG: {
166
137
  readonly UsePositionBoundTpsl: true;
167
138
  };
168
- /**
169
- * Bounds applied to a HyperLiquid TWAP placement.
170
- *
171
- * The pinned HyperLiquid SDK (0.33.1) validates the TWAP duration as a safe
172
- * integer in `[5, 1440]` before signing, although the venue currently documents
173
- * a maximum of seven days (`10080` minutes). The controller exposes the SDK's
174
- * narrower cap until that dependency supports the venue limit, avoiding an
175
- * opaque SDK error. `MinNotionalUsd` is the venue's documented minimum *total*
176
- * order size for a TWAP, which it enforces instead of the per-order minimum —
177
- * its suborders are its own business.
178
- *
179
- * Carries the venue prefix, like `HYPERLIQUID_ORDER_LIMITS`, because these are
180
- * venue/SDK constraints rather than controller policy.
181
- *
182
- * From: https://hyperliquid.gitbook.io/hyperliquid-docs/trading/order-types
183
- */
184
- export declare const HYPERLIQUID_TWAP_LIMITS: {
185
- readonly MinDurationMinutes: 5;
186
- readonly MaxDurationMinutes: 1440;
187
- readonly MinNotionalUsd: 100;
188
- };
189
139
  /**
190
140
  * HyperLiquid order limits based on leverage
191
141
  * From: https://hyperliquid.gitbook.io/hyperliquid-docs/trading/contract-specifications
@@ -309,38 +259,19 @@ export declare enum PerpsMode {
309
259
  Lite = "lite",
310
260
  Pro = "pro"
311
261
  }
312
- /**
313
- * Side filter for the Pro Positions/Orders panel (long/short/all).
314
- *
315
- * Shared across markets via `proLayoutPreferences.positionsSideFilter`.
316
- */
317
- export type ProPositionsSideFilter = 'all' | 'long' | 'short';
318
- /**
319
- * Sort fields available on the Pro Positions list.
320
- */
321
- export type ProPositionsSortField = 'positionValue' | 'unrealizedPnl' | 'fundingRate';
322
- /**
323
- * Sort direction for the Pro Positions list.
324
- */
325
- export type ProPositionsSortDirection = 'asc' | 'desc';
326
262
  /**
327
263
  * Pro-mode layout preferences (network-independent).
328
264
  *
329
265
  * Flat object that persists across markets (unlike the per-market
330
266
  * `tradeConfigurations`). `chartExpanded` and the `*Position` fields are
331
- * reserved for future container-position UI. `positionsSideFilter` /
332
- * `positionsSortField` / `positionsSortDirection` back the Positions/Orders
333
- * panel sort and side filter so they survive market navigation and app
334
- * restarts.
267
+ * reserved for future container-position UI and are kept here now so no
268
+ * state-shape migration is needed when that UI ships.
335
269
  */
336
270
  export type ProLayoutPreferences = {
337
271
  orderBookExpanded: boolean;
338
272
  chartExpanded: boolean;
339
273
  orderBookPosition: 'left' | 'right';
340
274
  orderFormPosition: 'left' | 'right';
341
- positionsSideFilter: ProPositionsSideFilter;
342
- positionsSortField: ProPositionsSortField;
343
- positionsSortDirection: ProPositionsSortDirection;
344
275
  };
345
276
  /**
346
277
  * Default pro-mode layout preferences.
@@ -1 +1 @@
1
- {"version":3,"file":"perpsConfig.d.mts","sourceRoot":"","sources":["../../src/constants/perpsConfig.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"perpsConfig.d.mts","sourceRoot":"","sources":["../../src/constants/perpsConfig.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,eAAO,MAAM,YAAY,+CAA+C,CAAC;AACzE,eAAO,MAAM,YAAY,QAAQ,CAAC;AAElC,eAAO,MAAM,eAAe;;;IAG1B,sGAAsG;;IAEtG,uFAAuF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+C/E,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,oBAAoB;;;;CAIvB,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,qBAAqB;;;;CASxB,CAAC;AAEX;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB;;;;CAexB,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,mBAAmB;;;;CAItB,CAAC;AAEX;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,QAAQ,CAAC;AAE7C;;;GAGG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;IAyF7B;;;;;;;;;;;OAWG;;;;;;CAWK,CAAC;AAEX,eAAO,MAAM,YAAY;;CAEf,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;CAc3B,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,qBAAqB;;;;;;CAexB,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,wBAAwB;;;;;;;CAwB3B,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,oBAAoB;;CAGvB,CAAC;AAEX;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB;;;CAGtB,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,wBAAwB;;;;CAY3B,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgDxB,CAAC;AAEX;;;;GAIG;AACH,MAAM,MAAM,YAAY,GACtB,CAAC,OAAO,qBAAqB,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;AAE3D;;;;;GAKG;AACH,oBAAY,SAAS;IACnB,IAAI,SAAS;IACb,GAAG,QAAQ;CACZ;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,aAAa,EAAE,OAAO,CAAC;IACvB,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAAC;IACpC,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAAC;CACrC,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,8BAA8B,EAAE,oBAK5C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,SAA0B,CAAC;AAE5D;;;GAGG;AACH,eAAO,MAAM,mBAAmB;;;;CAOtB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,eAAe;IAC1B,uEAAuE;;IAEvE,wEAAwE;;CAEhE,CAAC;AAQX,eAAO,MAAM,wBAAwB,6BAA6B,CAAC;AACnE,eAAO,MAAM,0BAA0B,kCAAkC,CAAC;AAC1E,eAAO,MAAM,4BAA4B,QAAS,CAAC;AAEnD;;;;;GAKG;AACH,eAAO,MAAM,oCAAoC,QAAS,CAAC;AAE3D;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE;IAC3C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,GAAG,MAAM,CAET;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,OAAO,GACjB,MAAM,CAMR"}
@@ -96,35 +96,6 @@ export const ORDER_SLIPPAGE_CONFIG = {
96
96
  // Kept conservative as limit orders rest on book (not IOC/immediate execution)
97
97
  DefaultLimitSlippageBps: 100,
98
98
  };
99
- /**
100
- * Defaults and bounds for the emulated `chase` placement.
101
- *
102
- * No supported venue exposes a chase as an API action — HyperLiquid documents it
103
- * as running client-side — so the strategy is run here: a post-only order rests
104
- * one tick inside the spread and is cancelled and re-placed as the touch moves.
105
- * The poll floor and the repricing cap exist to keep a chase from turning into a
106
- * cancel/replace loop against a venue's rate limits. Protocol-agnostic — a
107
- * provider that gains a native chase ignores these entirely.
108
- */
109
- export const CHASE_ORDER_CONFIG = {
110
- /** How often the touch is re-read when the caller does not say. */
111
- DefaultIntervalMs: 3000,
112
- /** Floor on the poll interval, whatever the caller asks for. */
113
- MinIntervalMs: 1000,
114
- /** How long a chase runs before it stops re-pricing and rests. */
115
- DefaultMaxDurationMs: 60000,
116
- /** How many cancel/replace cycles a single chase may perform. */
117
- DefaultMaxRepricings: 20,
118
- /**
119
- * How many chases may run at once.
120
- *
121
- * HyperLiquid documents a cap of five simultaneously active chase orders. It
122
- * is a venue rule rather than controller policy, but it is spelled here
123
- * alongside the rest of the chase configuration because an emulated chase is
124
- * the only thing that can enforce it.
125
- */
126
- MaxActiveSessions: 5,
127
- };
128
99
  /**
129
100
  * Bounds and step for the user-configurable max slippage preference (basis points).
130
101
  * Shared by the controller (`setMaxSlippage`) and UI (`slippageConfig.ts`).
@@ -243,27 +214,6 @@ export const PERFORMANCE_CONFIG = {
243
214
  export const TP_SL_CONFIG = {
244
215
  UsePositionBoundTpsl: true,
245
216
  };
246
- /**
247
- * Bounds applied to a HyperLiquid TWAP placement.
248
- *
249
- * The pinned HyperLiquid SDK (0.33.1) validates the TWAP duration as a safe
250
- * integer in `[5, 1440]` before signing, although the venue currently documents
251
- * a maximum of seven days (`10080` minutes). The controller exposes the SDK's
252
- * narrower cap until that dependency supports the venue limit, avoiding an
253
- * opaque SDK error. `MinNotionalUsd` is the venue's documented minimum *total*
254
- * order size for a TWAP, which it enforces instead of the per-order minimum —
255
- * its suborders are its own business.
256
- *
257
- * Carries the venue prefix, like `HYPERLIQUID_ORDER_LIMITS`, because these are
258
- * venue/SDK constraints rather than controller policy.
259
- *
260
- * From: https://hyperliquid.gitbook.io/hyperliquid-docs/trading/order-types
261
- */
262
- export const HYPERLIQUID_TWAP_LIMITS = {
263
- MinDurationMinutes: 5,
264
- MaxDurationMinutes: 1440,
265
- MinNotionalUsd: 100,
266
- };
267
217
  /**
268
218
  * HyperLiquid order limits based on leverage
269
219
  * From: https://hyperliquid.gitbook.io/hyperliquid-docs/trading/contract-specifications
@@ -432,9 +382,6 @@ export const DEFAULT_PRO_LAYOUT_PREFERENCES = {
432
382
  chartExpanded: false,
433
383
  orderBookPosition: 'left',
434
384
  orderFormPosition: 'right',
435
- positionsSideFilter: 'all',
436
- positionsSortField: 'positionValue',
437
- positionsSortDirection: 'desc',
438
385
  };
439
386
  /**
440
387
  * Default Perps interface mode.