@metamask-previews/perps-controller 1.3.0-preview-a0caca0c0 → 1.3.0-preview-afe010990
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +9 -0
- package/dist/PerpsController-method-action-types.cjs +3 -0
- package/dist/PerpsController-method-action-types.cjs.map +1 -0
- package/dist/PerpsController-method-action-types.d.cts +147 -0
- package/dist/PerpsController-method-action-types.d.cts.map +1 -0
- package/dist/PerpsController-method-action-types.d.mts +147 -0
- package/dist/PerpsController-method-action-types.d.mts.map +1 -0
- package/dist/PerpsController-method-action-types.mjs +2 -0
- package/dist/PerpsController-method-action-types.mjs.map +1 -0
- package/dist/PerpsController.cjs +488 -183
- package/dist/PerpsController.cjs.map +1 -1
- package/dist/PerpsController.d.cts +91 -131
- package/dist/PerpsController.d.cts.map +1 -1
- package/dist/PerpsController.d.mts +91 -131
- package/dist/PerpsController.d.mts.map +1 -1
- package/dist/PerpsController.mjs +485 -182
- package/dist/PerpsController.mjs.map +1 -1
- package/dist/constants/eventNames.cjs +26 -0
- package/dist/constants/eventNames.cjs.map +1 -1
- package/dist/constants/eventNames.d.cts +19 -0
- package/dist/constants/eventNames.d.cts.map +1 -1
- package/dist/constants/eventNames.d.mts +19 -0
- package/dist/constants/eventNames.d.mts.map +1 -1
- package/dist/constants/eventNames.mjs +26 -0
- package/dist/constants/eventNames.mjs.map +1 -1
- package/dist/constants/hyperLiquidConfig.cjs +24 -4
- package/dist/constants/hyperLiquidConfig.cjs.map +1 -1
- package/dist/constants/hyperLiquidConfig.d.cts +8 -3
- package/dist/constants/hyperLiquidConfig.d.cts.map +1 -1
- package/dist/constants/hyperLiquidConfig.d.mts +8 -3
- package/dist/constants/hyperLiquidConfig.d.mts.map +1 -1
- package/dist/constants/hyperLiquidConfig.mjs +23 -3
- package/dist/constants/hyperLiquidConfig.mjs.map +1 -1
- package/dist/constants/myxConfig.cjs +75 -51
- package/dist/constants/myxConfig.cjs.map +1 -1
- package/dist/constants/myxConfig.d.cts +58 -19
- package/dist/constants/myxConfig.d.cts.map +1 -1
- package/dist/constants/myxConfig.d.mts +58 -19
- package/dist/constants/myxConfig.d.mts.map +1 -1
- package/dist/constants/myxConfig.mjs +74 -50
- package/dist/constants/myxConfig.mjs.map +1 -1
- package/dist/constants/perpsConfig.cjs +6 -2
- package/dist/constants/perpsConfig.cjs.map +1 -1
- package/dist/constants/perpsConfig.d.cts +5 -1
- package/dist/constants/perpsConfig.d.cts.map +1 -1
- package/dist/constants/perpsConfig.d.mts +5 -1
- package/dist/constants/perpsConfig.d.mts.map +1 -1
- package/dist/constants/perpsConfig.mjs +5 -1
- package/dist/constants/perpsConfig.mjs.map +1 -1
- package/dist/index.cjs +243 -25
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +48 -5
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +48 -5
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +36 -10
- package/dist/index.mjs.map +1 -1
- package/dist/providers/AggregatedPerpsProvider.cjs +24 -0
- package/dist/providers/AggregatedPerpsProvider.cjs.map +1 -1
- package/dist/providers/AggregatedPerpsProvider.d.cts +4 -0
- package/dist/providers/AggregatedPerpsProvider.d.cts.map +1 -1
- package/dist/providers/AggregatedPerpsProvider.d.mts +4 -0
- package/dist/providers/AggregatedPerpsProvider.d.mts.map +1 -1
- package/dist/providers/AggregatedPerpsProvider.mjs +24 -0
- package/dist/providers/AggregatedPerpsProvider.mjs.map +1 -1
- package/dist/providers/HyperLiquidProvider.cjs +470 -154
- package/dist/providers/HyperLiquidProvider.cjs.map +1 -1
- package/dist/providers/HyperLiquidProvider.d.cts +11 -2
- package/dist/providers/HyperLiquidProvider.d.cts.map +1 -1
- package/dist/providers/HyperLiquidProvider.d.mts +11 -2
- package/dist/providers/HyperLiquidProvider.d.mts.map +1 -1
- package/dist/providers/HyperLiquidProvider.mjs +471 -155
- package/dist/providers/HyperLiquidProvider.mjs.map +1 -1
- package/dist/selectors.cjs +1 -1
- package/dist/selectors.cjs.map +1 -1
- package/dist/selectors.mjs +1 -1
- package/dist/selectors.mjs.map +1 -1
- package/dist/services/AccountService.cjs +1 -1
- package/dist/services/AccountService.cjs.map +1 -1
- package/dist/services/AccountService.d.cts.map +1 -1
- package/dist/services/AccountService.d.mts.map +1 -1
- package/dist/services/AccountService.mjs +2 -2
- package/dist/services/AccountService.mjs.map +1 -1
- package/dist/services/DepositService.cjs +2 -1
- package/dist/services/DepositService.cjs.map +1 -1
- package/dist/services/DepositService.d.cts.map +1 -1
- package/dist/services/DepositService.d.mts.map +1 -1
- package/dist/services/DepositService.mjs +2 -1
- package/dist/services/DepositService.mjs.map +1 -1
- package/dist/services/EligibilityService.cjs +8 -103
- package/dist/services/EligibilityService.cjs.map +1 -1
- package/dist/services/EligibilityService.d.cts +4 -15
- package/dist/services/EligibilityService.d.cts.map +1 -1
- package/dist/services/EligibilityService.d.mts +4 -15
- package/dist/services/EligibilityService.d.mts.map +1 -1
- package/dist/services/EligibilityService.mjs +8 -103
- package/dist/services/EligibilityService.mjs.map +1 -1
- package/dist/services/HyperLiquidSubscriptionService.cjs +252 -46
- package/dist/services/HyperLiquidSubscriptionService.cjs.map +1 -1
- package/dist/services/HyperLiquidSubscriptionService.d.cts +1 -0
- package/dist/services/HyperLiquidSubscriptionService.d.cts.map +1 -1
- package/dist/services/HyperLiquidSubscriptionService.d.mts +1 -0
- package/dist/services/HyperLiquidSubscriptionService.d.mts.map +1 -1
- package/dist/services/HyperLiquidSubscriptionService.mjs +252 -46
- package/dist/services/HyperLiquidSubscriptionService.mjs.map +1 -1
- package/dist/services/MarketDataService.cjs +2 -4
- package/dist/services/MarketDataService.cjs.map +1 -1
- package/dist/services/MarketDataService.d.cts.map +1 -1
- package/dist/services/MarketDataService.d.mts.map +1 -1
- package/dist/services/MarketDataService.mjs +2 -4
- package/dist/services/MarketDataService.mjs.map +1 -1
- package/dist/services/TradingService.cjs +72 -6
- package/dist/services/TradingService.cjs.map +1 -1
- package/dist/services/TradingService.d.cts.map +1 -1
- package/dist/services/TradingService.d.mts.map +1 -1
- package/dist/services/TradingService.mjs +72 -6
- package/dist/services/TradingService.mjs.map +1 -1
- package/dist/types/index.cjs.map +1 -1
- package/dist/types/index.d.cts +51 -3
- package/dist/types/index.d.cts.map +1 -1
- package/dist/types/index.d.mts +51 -3
- package/dist/types/index.d.mts.map +1 -1
- package/dist/types/index.mjs.map +1 -1
- package/dist/types/messenger.cjs.map +1 -1
- package/dist/types/messenger.d.cts +2 -1
- package/dist/types/messenger.d.cts.map +1 -1
- package/dist/types/messenger.d.mts +2 -1
- package/dist/types/messenger.d.mts.map +1 -1
- package/dist/types/messenger.mjs.map +1 -1
- package/dist/types/myx-types.cjs +19 -3
- package/dist/types/myx-types.cjs.map +1 -1
- package/dist/types/myx-types.d.cts +33 -2
- package/dist/types/myx-types.d.cts.map +1 -1
- package/dist/types/myx-types.d.mts +33 -2
- package/dist/types/myx-types.d.mts.map +1 -1
- package/dist/types/myx-types.mjs +6 -2
- package/dist/types/myx-types.mjs.map +1 -1
- package/dist/types/perps-types.cjs +3 -0
- package/dist/types/perps-types.cjs.map +1 -1
- package/dist/types/perps-types.d.cts +3 -3
- package/dist/types/perps-types.d.cts.map +1 -1
- package/dist/types/perps-types.d.mts +3 -3
- package/dist/types/perps-types.d.mts.map +1 -1
- package/dist/types/perps-types.mjs +3 -0
- package/dist/types/perps-types.mjs.map +1 -1
- package/dist/utils/accountUtils.cjs.map +1 -1
- package/dist/utils/accountUtils.d.cts.map +1 -1
- package/dist/utils/accountUtils.d.mts.map +1 -1
- package/dist/utils/accountUtils.mjs.map +1 -1
- package/dist/utils/myxAdapter.cjs +360 -15
- package/dist/utils/myxAdapter.cjs.map +1 -1
- package/dist/utils/myxAdapter.d.cts +94 -7
- package/dist/utils/myxAdapter.d.cts.map +1 -1
- package/dist/utils/myxAdapter.d.mts +94 -7
- package/dist/utils/myxAdapter.d.mts.map +1 -1
- package/dist/utils/myxAdapter.mjs +351 -16
- package/dist/utils/myxAdapter.mjs.map +1 -1
- package/package.json +4 -2
package/dist/index.mjs
CHANGED
|
@@ -30,16 +30,42 @@
|
|
|
30
30
|
export { PerpsController, getDefaultPerpsControllerState, InitializationState } from "./PerpsController.mjs";
|
|
31
31
|
// Provider interfaces and implementations
|
|
32
32
|
export { HyperLiquidProvider } from "./providers/HyperLiquidProvider.mjs";
|
|
33
|
-
//
|
|
34
|
-
export
|
|
35
|
-
|
|
36
|
-
export
|
|
37
|
-
//
|
|
38
|
-
export
|
|
39
|
-
|
|
40
|
-
export
|
|
41
|
-
|
|
42
|
-
export
|
|
33
|
+
// Type definitions (explicit named exports)
|
|
34
|
+
export { WebSocketConnectionState, PerpsAnalyticsEvent } from "./types/index.mjs";
|
|
35
|
+
export { PerpsTraceNames, PerpsTraceOperations, isVersionGatedFeatureFlag } from "./types/index.mjs";
|
|
36
|
+
export { isTransactionRecord, isLastTransactionResult } from "./types/index.mjs";
|
|
37
|
+
// Constants (explicit named exports)
|
|
38
|
+
export { CandlePeriod, TimeDuration, ChartInterval, MAX_CANDLE_COUNT, DURATION_CANDLE_PERIODS, CANDLE_PERIODS, DEFAULT_CANDLE_PERIOD, getCandlePeriodsForDuration, getDefaultCandlePeriodForDuration, calculateCandleCount } from "./constants/index.mjs";
|
|
39
|
+
export { PERPS_EVENT_PROPERTY, PERPS_EVENT_VALUE } from "./constants/index.mjs";
|
|
40
|
+
export { DETAILED_ORDER_TYPES, isTPSLOrder } from "./constants/index.mjs";
|
|
41
|
+
export { PERPS_TRANSACTIONS_HISTORY_CONSTANTS } from "./constants/index.mjs";
|
|
42
|
+
export { ARBITRUM_MAINNET_CHAIN_ID_HEX, ARBITRUM_MAINNET_CHAIN_ID, ARBITRUM_TESTNET_CHAIN_ID, ARBITRUM_MAINNET_CAIP_CHAIN_ID, ARBITRUM_TESTNET_CAIP_CHAIN_ID, HYPERLIQUID_MAINNET_CHAIN_ID, HYPERLIQUID_TESTNET_CHAIN_ID, HYPERLIQUID_MAINNET_CAIP_CHAIN_ID, HYPERLIQUID_TESTNET_CAIP_CHAIN_ID, HYPERLIQUID_NETWORK_NAME, USDC_SYMBOL, USDC_NAME, USDC_DECIMALS, TOKEN_DECIMALS, ZERO_ADDRESS, ZERO_BALANCE, ARBITRUM_SEPOLIA_CHAIN_ID, USDC_ETHEREUM_MAINNET_ADDRESS, USDC_ARBITRUM_MAINNET_ADDRESS, USDC_ARBITRUM_TESTNET_ADDRESS, USDC_TOKEN_ICON_URL, HYPERLIQUID_ENDPOINTS, HYPERLIQUID_ASSET_ICONS_BASE_URL, METAMASK_PERPS_ICONS_BASE_URL, HYPERLIQUID_ASSET_CONFIGS, HYPERLIQUID_BRIDGE_CONTRACTS, HYPERLIQUID_TRANSPORT_CONFIG, TRADING_DEFAULTS, FEE_RATES, HIP3_FEE_CONFIG, BUILDER_FEE_CONFIG, REFERRAL_CONFIG, DEPOSIT_CONFIG, HYPERLIQUID_WITHDRAWAL_MINUTES, getWebSocketEndpoint, getChainId, getCaipChainId, getBridgeInfo, getSupportedAssets, CAIP_ASSET_NAMESPACES, HYPERLIQUID_CONFIG, HIP3_ASSET_ID_CONFIG, BASIS_POINTS_DIVISOR, SPOT_ASSET_ID_OFFSET, HIP3_ASSET_MARKET_TYPES, TESTNET_HIP3_CONFIG, MAINNET_HIP3_CONFIG, HIP3_MARGIN_CONFIG, USDH_CONFIG, INITIAL_AMOUNT_UI_PROGRESS, WITHDRAWAL_PROGRESS_STAGES, PROGRESS_BAR_COMPLETION_DELAY_MS } from "./constants/index.mjs";
|
|
43
|
+
export { PerpsMeasurementName } from "./constants/index.mjs";
|
|
44
|
+
export { MYX_MAINNET_CHAIN_ID, MYX_TESTNET_CHAIN_ID, MYX_MAINNET_CAIP_CHAIN_ID, MYX_TESTNET_CAIP_CHAIN_ID, getMYXChainId, MYX_ENDPOINTS, getMYXHttpEndpoint, MYX_PRICE_DECIMALS, MYX_SIZE_DECIMALS, MYX_COLLATERAL_DECIMALS, USDT_BNB_TESTNET, USDT_BNB_MAINNET, MYX_ASSET_CONFIGS, fromMYXPrice, toMYXPrice, fromMYXSize, toMYXSize, fromMYXCollateral, MYX_PRICE_POLLING_INTERVAL_MS, MYX_HTTP_TIMEOUT_MS, MYX_MAX_RETRIES, MYX_MAX_LEVERAGE, MYX_FEE_RATE, MYX_PROTOCOL_FEE_RATE, MYX_DEFAULT_SLIPPAGE_BPS, MYX_MINIMUM_ORDER_SIZE_USD, MYX_EXECUTION_FEE_TOKEN } from "./constants/index.mjs";
|
|
45
|
+
export { PERPS_CONSTANTS, WITHDRAWAL_CONSTANTS, VALIDATION_THRESHOLDS, ORDER_SLIPPAGE_CONFIG, PERFORMANCE_CONFIG, TP_SL_CONFIG, HYPERLIQUID_ORDER_LIMITS, CLOSE_POSITION_CONFIG, MARGIN_ADJUSTMENT_CONFIG, DATA_LAKE_API_CONFIG, DECIMAL_PRECISION_CONFIG, MARKET_SORTING_CONFIG, PROVIDER_CONFIG } from "./constants/index.mjs";
|
|
46
|
+
// Utilities (explicit named exports)
|
|
47
|
+
export { findEvmAccount, getEvmAccountFromAccountGroup, getSelectedEvmAccount, calculateWeightedReturnOnEquity, aggregateAccountStates } from "./utils/index.mjs";
|
|
48
|
+
export { ensureError } from "./utils/index.mjs";
|
|
49
|
+
export { processL2BookData, processBboData } from "./utils/index.mjs";
|
|
50
|
+
export { createErrorResult, validateWithdrawalParams, validateDepositParams, validateAssetSupport, validateBalance, applyPathFilters, getSupportedPaths, getMaxOrderValue, validateOrderParams, validateCoinExists } from "./utils/index.mjs";
|
|
51
|
+
export { generatePerpsId, generateDepositId, generateWithdrawalId, generateOrderId, generateTransactionId } from "./utils/index.mjs";
|
|
52
|
+
export { calculateOpenInterestUSD, transformMarketData, formatChange } from "./utils/index.mjs";
|
|
53
|
+
export { adaptMarketFromMYX, adaptPriceFromMYX, adaptMarketDataFromMYX, filterMYXExclusiveMarkets, isOverlappingMarket, buildPoolSymbolMap, buildSymbolPoolsMap, extractSymbolFromPoolId } from "./utils/index.mjs";
|
|
54
|
+
export { MAX_MARKET_PATTERN_LENGTH, escapeRegex, validateMarketPattern, compileMarketPattern, matchesMarketPattern, shouldIncludeMarket, getPerpsDisplaySymbol, getPerpsDexFromSymbol, calculateFundingCountdown, calculate24hHighLow, filterMarketsByQuery } from "./utils/index.mjs";
|
|
55
|
+
export { calculatePositionSize, calculateMarginRequired, getMaxAllowedAmount, calculateFinalPositionSize, calculateOrderPriceAndSize, buildOrdersArray } from "./utils/index.mjs";
|
|
56
|
+
export { formatAccountToCaipAccountId, isCaipAccountId, handleRewardsError } from "./utils/index.mjs";
|
|
57
|
+
export { countSignificantFigures, hasExceededSignificantFigures, roundToSignificantFigures } from "./utils/index.mjs";
|
|
58
|
+
export { parseVolume, sortMarkets } from "./utils/index.mjs";
|
|
59
|
+
export { createStandaloneInfoClient, queryStandaloneClearinghouseStates, queryStandaloneOpenOrders } from "./utils/index.mjs";
|
|
60
|
+
export { stripQuotes, parseCommaSeparatedString } from "./utils/index.mjs";
|
|
61
|
+
export { generateERC20TransferData } from "./utils/index.mjs";
|
|
62
|
+
export { wait } from "./utils/index.mjs";
|
|
63
|
+
export { adaptOrderToSDK, adaptPositionFromSDK, adaptOrderFromSDK, adaptMarketFromSDK, adaptAccountStateFromSDK, buildAssetMapping, formatHyperLiquidPrice, formatHyperLiquidSize, calculateHip3AssetId, parseAssetName, adaptHyperLiquidLedgerUpdateToUserHistoryItem } from "./utils/index.mjs";
|
|
64
|
+
export { getEnvironment } from "./utils/index.mjs";
|
|
65
|
+
// Error codes (explicit named exports)
|
|
66
|
+
export { PERPS_ERROR_CODES } from "./perpsErrorCodes.mjs";
|
|
67
|
+
// Selectors (explicit named exports)
|
|
68
|
+
export { selectIsFirstTimeUser, selectHasPlacedFirstOrder, selectWatchlistMarkets, selectIsWatchlistMarket, selectTradeConfiguration, selectPendingTradeConfiguration, selectMarketFilterPreferences, selectOrderBookGrouping } from "./selectors.mjs";
|
|
43
69
|
// Services (only externally consumed items)
|
|
44
70
|
export { TradingReadinessCache } from "./services/TradingReadinessCache.mjs";
|
|
45
71
|
// Removed with Live Market Prices component:
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,4BAA4B;AAC5B,OAAO,EACL,eAAe,EACf,8BAA8B,EAC9B,mBAAmB,EACpB,8BAA0B;AAS3B,0CAA0C;AAC1C,OAAO,EAAE,mBAAmB,EAAE,4CAAwC;AAEtE,uBAAuB;AACvB,kCAAwB;AAExB,gBAAgB;AAChB,sCAA4B;AAE5B,gBAAgB;AAChB,kCAAwB;AAExB,cAAc;AACd,sCAAkC;AAElC,YAAY;AACZ,gCAA4B;AAE5B,4CAA4C;AAC5C,OAAO,EAAE,qBAAqB,EAAE,6CAAyC;AAGzE,6CAA6C;AAC7C,mBAAmB","sourcesContent":["/**\n * PerpsController - Protocol-agnostic perpetuals trading controller\n *\n * This module provides a unified interface for perpetual futures trading\n * across multiple protocols with high-performance real-time data handling.\n *\n * Key Features:\n * - Protocol abstraction (HyperLiquid first, extensible to GMX, dYdX, etc.)\n * - Dual data flow: Redux for persistence, direct callbacks for live data\n * - MetaMask native integration with BaseController pattern\n * - Mobile-optimized with throttling and performance considerations\n *\n * Usage:\n * ```typescript\n * import { usePerpsController } from './controllers';\n *\n * const { placeOrder, getPositions } = usePerpsController();\n * // Live prices hooks removed with Live Market Prices component\n *\n * // Place a market order\n * await placeOrder({\n * coin: 'ETH',\n * is_buy: true,\n * sz: '0.1',\n * order_type: 'market'\n * });\n * ```\n */\n\n// Core controller and types\nexport {\n PerpsController,\n getDefaultPerpsControllerState,\n InitializationState,\n} from './PerpsController';\nexport type {\n PerpsControllerState,\n PerpsControllerOptions,\n PerpsControllerMessenger,\n PerpsControllerActions,\n PerpsControllerEvents,\n} from './PerpsController';\n\n// Provider interfaces and implementations\nexport { HyperLiquidProvider } from './providers/HyperLiquidProvider';\n\n// All type definitions\nexport * from './types';\n\n// All constants\nexport * from './constants';\n\n// All utilities\nexport * from './utils';\n\n// Error codes\nexport * from './perpsErrorCodes';\n\n// Selectors\nexport * from './selectors';\n\n// Services (only externally consumed items)\nexport { TradingReadinessCache } from './services/TradingReadinessCache';\nexport type { ServiceContext } from './services/ServiceContext';\n\n// Removed with Live Market Prices component:\n// - usePerpsPrices\n"]}
|
|
1
|
+
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,4BAA4B;AAC5B,OAAO,EACL,eAAe,EACf,8BAA8B,EAC9B,mBAAmB,EACpB,8BAA0B;AAS3B,0CAA0C;AAC1C,OAAO,EAAE,mBAAmB,EAAE,4CAAwC;AAEtE,4CAA4C;AAC5C,OAAO,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,0BAAgB;AA+GxE,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,yBAAyB,EAC1B,0BAAgB;AAsBjB,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,0BAAgB;AAkCvE,qCAAqC;AACrC,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,uBAAuB,EACvB,cAAc,EACd,qBAAqB,EACrB,2BAA2B,EAC3B,iCAAiC,EACjC,oBAAoB,EACrB,8BAAoB;AACrB,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,8BAAoB;AACtE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,8BAAoB;AAChE,OAAO,EAAE,oCAAoC,EAAE,8BAAoB;AACnE,OAAO,EACL,6BAA6B,EAC7B,yBAAyB,EACzB,yBAAyB,EACzB,8BAA8B,EAC9B,8BAA8B,EAC9B,4BAA4B,EAC5B,4BAA4B,EAC5B,iCAAiC,EACjC,iCAAiC,EACjC,wBAAwB,EACxB,WAAW,EACX,SAAS,EACT,aAAa,EACb,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,yBAAyB,EACzB,6BAA6B,EAC7B,6BAA6B,EAC7B,6BAA6B,EAC7B,mBAAmB,EACnB,qBAAqB,EACrB,gCAAgC,EAChC,6BAA6B,EAC7B,yBAAyB,EACzB,4BAA4B,EAC5B,4BAA4B,EAC5B,gBAAgB,EAChB,SAAS,EACT,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,8BAA8B,EAC9B,oBAAoB,EACpB,UAAU,EACV,cAAc,EACd,aAAa,EACb,kBAAkB,EAClB,qBAAqB,EACrB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,uBAAuB,EACvB,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,WAAW,EACX,0BAA0B,EAC1B,0BAA0B,EAC1B,gCAAgC,EACjC,8BAAoB;AAErB,OAAO,EAAE,oBAAoB,EAAE,8BAAoB;AACnD,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,yBAAyB,EACzB,yBAAyB,EACzB,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,uBAAuB,EACvB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,UAAU,EACV,WAAW,EACX,SAAS,EACT,iBAAiB,EACjB,6BAA6B,EAC7B,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,qBAAqB,EACrB,wBAAwB,EACxB,0BAA0B,EAC1B,uBAAuB,EACxB,8BAAoB;AACrB,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EACrB,kBAAkB,EAClB,YAAY,EACZ,wBAAwB,EACxB,qBAAqB,EACrB,wBAAwB,EACxB,oBAAoB,EACpB,wBAAwB,EACxB,qBAAqB,EACrB,eAAe,EAChB,8BAAoB;AAGrB,qCAAqC;AACrC,OAAO,EACL,cAAc,EACd,6BAA6B,EAC7B,qBAAqB,EACrB,+BAA+B,EAC/B,sBAAsB,EACvB,0BAAgB;AAEjB,OAAO,EAAE,WAAW,EAAE,0BAAgB;AAMtC,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,0BAAgB;AAE5D,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,qBAAqB,EACrB,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EACnB,0BAAgB;AACjB,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACpB,eAAe,EACf,qBAAqB,EACtB,0BAAgB;AACjB,OAAO,EACL,wBAAwB,EACxB,mBAAmB,EACnB,YAAY,EACb,0BAAgB;AAEjB,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,sBAAsB,EACtB,yBAAyB,EACzB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,EACxB,0BAAgB;AACjB,OAAO,EACL,yBAAyB,EACzB,WAAW,EACX,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,yBAAyB,EACzB,mBAAmB,EACnB,oBAAoB,EACrB,0BAAgB;AAWjB,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,mBAAmB,EACnB,0BAA0B,EAC1B,0BAA0B,EAC1B,gBAAgB,EACjB,0BAAgB;AACjB,OAAO,EACL,4BAA4B,EAC5B,eAAe,EACf,kBAAkB,EACnB,0BAAgB;AACjB,OAAO,EACL,uBAAuB,EACvB,6BAA6B,EAC7B,yBAAyB,EAC1B,0BAAgB;AAEjB,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,0BAAgB;AAEnD,OAAO,EACL,0BAA0B,EAC1B,kCAAkC,EAClC,yBAAyB,EAC1B,0BAAgB;AACjB,OAAO,EAAE,WAAW,EAAE,yBAAyB,EAAE,0BAAgB;AACjE,OAAO,EAAE,yBAAyB,EAAE,0BAAgB;AACpD,OAAO,EAAE,IAAI,EAAE,0BAAgB;AAC/B,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,EAClB,wBAAwB,EACxB,iBAAiB,EACjB,sBAAsB,EACtB,qBAAqB,EACrB,oBAAoB,EACpB,cAAc,EACd,6CAA6C,EAC9C,0BAAgB;AACjB,OAAO,EAAE,cAAc,EAAE,0BAAgB;AAEzC,uCAAuC;AACvC,OAAO,EAAE,iBAAiB,EAAE,8BAA0B;AAGtD,qCAAqC;AACrC,OAAO,EACL,qBAAqB,EACrB,yBAAyB,EACzB,sBAAsB,EACtB,uBAAuB,EACvB,wBAAwB,EACxB,+BAA+B,EAC/B,6BAA6B,EAC7B,uBAAuB,EACxB,wBAAoB;AAErB,4CAA4C;AAC5C,OAAO,EAAE,qBAAqB,EAAE,6CAAyC;AAGzE,6CAA6C;AAC7C,mBAAmB","sourcesContent":["/**\n * PerpsController - Protocol-agnostic perpetuals trading controller\n *\n * This module provides a unified interface for perpetual futures trading\n * across multiple protocols with high-performance real-time data handling.\n *\n * Key Features:\n * - Protocol abstraction (HyperLiquid first, extensible to GMX, dYdX, etc.)\n * - Dual data flow: Redux for persistence, direct callbacks for live data\n * - MetaMask native integration with BaseController pattern\n * - Mobile-optimized with throttling and performance considerations\n *\n * Usage:\n * ```typescript\n * import { usePerpsController } from './controllers';\n *\n * const { placeOrder, getPositions } = usePerpsController();\n * // Live prices hooks removed with Live Market Prices component\n *\n * // Place a market order\n * await placeOrder({\n * coin: 'ETH',\n * is_buy: true,\n * sz: '0.1',\n * order_type: 'market'\n * });\n * ```\n */\n\n// Core controller and types\nexport {\n PerpsController,\n getDefaultPerpsControllerState,\n InitializationState,\n} from './PerpsController';\nexport type {\n PerpsControllerState,\n PerpsControllerOptions,\n PerpsControllerMessenger,\n PerpsControllerActions,\n PerpsControllerEvents,\n} from './PerpsController';\n\n// Provider interfaces and implementations\nexport { HyperLiquidProvider } from './providers/HyperLiquidProvider';\n\n// Type definitions (explicit named exports)\nexport { WebSocketConnectionState, PerpsAnalyticsEvent } from './types';\nexport type {\n RawLedgerUpdate,\n UserHistoryItem,\n GetUserHistoryParams,\n TradeConfiguration,\n OrderType,\n MarketType,\n MarketTypeFilter,\n InputMethod,\n TradeAction,\n TrackingData,\n TPSLTrackingData,\n OrderParams,\n OrderResult,\n Position,\n AccountState,\n ClosePositionParams,\n ClosePositionsParams,\n ClosePositionsResult,\n UpdateMarginParams,\n MarginResult,\n FlipPositionParams,\n InitializeResult,\n ReadyToTradeResult,\n DisconnectResult,\n MarketInfo,\n PerpsMarketData,\n ToggleTestnetResult,\n AssetRoute,\n SwitchProviderResult,\n CancelOrderParams,\n CancelOrderResult,\n BatchCancelOrdersParams,\n CancelOrdersParams,\n CancelOrdersResult,\n EditOrderParams,\n DepositParams,\n DepositWithConfirmationParams,\n DepositResult,\n DepositStatus,\n DepositFlowType,\n DepositStepInfo,\n WithdrawParams,\n WithdrawResult,\n TransferBetweenDexsParams,\n TransferBetweenDexsResult,\n GetHistoricalPortfolioParams,\n HistoricalPortfolioResult,\n LiveDataConfig,\n PerpsControllerConfig,\n PriceUpdate,\n OrderFill,\n CheckEligibilityParams,\n GetPositionsParams,\n GetAccountStateParams,\n GetOrderFillsParams,\n GetOrFetchFillsParams,\n GetOrdersParams,\n GetFundingParams,\n GetSupportedPathsParams,\n GetAvailableDexsParams,\n GetMarketsParams,\n SubscribePricesParams,\n SubscribePositionsParams,\n SubscribeOrderFillsParams,\n SubscribeOrdersParams,\n SubscribeAccountParams,\n SubscribeOICapsParams,\n SubscribeCandlesParams,\n OrderBookLevel,\n OrderBookData,\n SubscribeOrderBookParams,\n LiquidationPriceParams,\n MaintenanceMarginParams,\n FeeCalculationParams,\n FeeCalculationResult,\n UpdatePositionTPSLParams,\n Order,\n Funding,\n PerpsProvider,\n PerpsProviderType,\n PerpsActiveProviderMode,\n AggregationMode,\n RoutingStrategy,\n AggregatedProviderConfig,\n ProviderError,\n AggregatedAccountState,\n PerpsLogger,\n PerpsTraceName,\n PerpsTraceValue,\n PerpsAnalyticsProperties,\n PerpsMetrics,\n PerpsDebugLogger,\n PerpsStreamManager,\n PerpsPerformance,\n PerpsTracer,\n PerpsTypedMessageParams,\n PerpsTransactionParams,\n PerpsAddTransactionOptions,\n PerpsInternalAccount,\n PerpsRemoteFeatureFlagState,\n PerpsPlatformDependencies,\n PerpsCacheType,\n InvalidateCacheParams,\n PerpsCacheInvalidator,\n MarketDataFormatters,\n PaymentToken,\n PerpsSelectedPaymentToken,\n VersionGatedFeatureFlag,\n} from './types';\nexport {\n PerpsTraceNames,\n PerpsTraceOperations,\n isVersionGatedFeatureFlag,\n} from './types';\n\n// Types from sub-modules (re-exported via types/index.ts)\nexport type {\n TestResultStatus,\n TestResult,\n SDKTestType,\n HyperliquidAsset,\n CandleStick,\n CandleData,\n OrderFormState,\n OrderDirection,\n ReconnectOptions,\n ExtendedAssetMeta,\n ExtendedPerpDex,\n} from './types';\nexport type {\n BaseTransactionResult,\n LastTransactionResult,\n TransactionStatus,\n TransactionRecord,\n} from './types';\nexport { isTransactionRecord, isLastTransactionResult } from './types';\nexport type {\n AssetPosition,\n SpotBalance,\n PerpsUniverse,\n PerpsAssetCtx,\n PredictedFunding,\n FrontendOrder,\n SDKOrderParams,\n ClearinghouseStateResponse,\n SpotClearinghouseStateResponse,\n MetaResponse,\n FrontendOpenOrdersResponse,\n AllMidsResponse,\n MetaAndAssetCtxsResponse,\n PredictedFundingsResponse,\n SpotMetaResponse,\n} from './types';\nexport type {\n HyperLiquidEndpoints,\n AssetNetworkConfig,\n HyperLiquidAssetConfigs,\n BridgeContractConfig,\n HyperLiquidBridgeContracts,\n TransportReconnectConfig,\n TransportKeepAliveConfig,\n HyperLiquidTransportConfig,\n TradingAmountConfig,\n TradingDefaultsConfig,\n FeeRatesConfig,\n HyperLiquidNetwork,\n} from './types';\nexport type { PerpsToken } from './types';\n\n// Constants (explicit named exports)\nexport {\n CandlePeriod,\n TimeDuration,\n ChartInterval,\n MAX_CANDLE_COUNT,\n DURATION_CANDLE_PERIODS,\n CANDLE_PERIODS,\n DEFAULT_CANDLE_PERIOD,\n getCandlePeriodsForDuration,\n getDefaultCandlePeriodForDuration,\n calculateCandleCount,\n} from './constants';\nexport { PERPS_EVENT_PROPERTY, PERPS_EVENT_VALUE } from './constants';\nexport { DETAILED_ORDER_TYPES, isTPSLOrder } from './constants';\nexport { PERPS_TRANSACTIONS_HISTORY_CONSTANTS } from './constants';\nexport {\n ARBITRUM_MAINNET_CHAIN_ID_HEX,\n ARBITRUM_MAINNET_CHAIN_ID,\n ARBITRUM_TESTNET_CHAIN_ID,\n ARBITRUM_MAINNET_CAIP_CHAIN_ID,\n ARBITRUM_TESTNET_CAIP_CHAIN_ID,\n HYPERLIQUID_MAINNET_CHAIN_ID,\n HYPERLIQUID_TESTNET_CHAIN_ID,\n HYPERLIQUID_MAINNET_CAIP_CHAIN_ID,\n HYPERLIQUID_TESTNET_CAIP_CHAIN_ID,\n HYPERLIQUID_NETWORK_NAME,\n USDC_SYMBOL,\n USDC_NAME,\n USDC_DECIMALS,\n TOKEN_DECIMALS,\n ZERO_ADDRESS,\n ZERO_BALANCE,\n ARBITRUM_SEPOLIA_CHAIN_ID,\n USDC_ETHEREUM_MAINNET_ADDRESS,\n USDC_ARBITRUM_MAINNET_ADDRESS,\n USDC_ARBITRUM_TESTNET_ADDRESS,\n USDC_TOKEN_ICON_URL,\n HYPERLIQUID_ENDPOINTS,\n HYPERLIQUID_ASSET_ICONS_BASE_URL,\n METAMASK_PERPS_ICONS_BASE_URL,\n HYPERLIQUID_ASSET_CONFIGS,\n HYPERLIQUID_BRIDGE_CONTRACTS,\n HYPERLIQUID_TRANSPORT_CONFIG,\n TRADING_DEFAULTS,\n FEE_RATES,\n HIP3_FEE_CONFIG,\n BUILDER_FEE_CONFIG,\n REFERRAL_CONFIG,\n DEPOSIT_CONFIG,\n HYPERLIQUID_WITHDRAWAL_MINUTES,\n getWebSocketEndpoint,\n getChainId,\n getCaipChainId,\n getBridgeInfo,\n getSupportedAssets,\n CAIP_ASSET_NAMESPACES,\n HYPERLIQUID_CONFIG,\n HIP3_ASSET_ID_CONFIG,\n BASIS_POINTS_DIVISOR,\n SPOT_ASSET_ID_OFFSET,\n HIP3_ASSET_MARKET_TYPES,\n TESTNET_HIP3_CONFIG,\n MAINNET_HIP3_CONFIG,\n HIP3_MARGIN_CONFIG,\n USDH_CONFIG,\n INITIAL_AMOUNT_UI_PROGRESS,\n WITHDRAWAL_PROGRESS_STAGES,\n PROGRESS_BAR_COMPLETION_DELAY_MS,\n} from './constants';\nexport type { SupportedAsset } from './constants';\nexport { PerpsMeasurementName } from './constants';\nexport {\n MYX_MAINNET_CHAIN_ID,\n MYX_TESTNET_CHAIN_ID,\n MYX_MAINNET_CAIP_CHAIN_ID,\n MYX_TESTNET_CAIP_CHAIN_ID,\n getMYXChainId,\n MYX_ENDPOINTS,\n getMYXHttpEndpoint,\n MYX_PRICE_DECIMALS,\n MYX_SIZE_DECIMALS,\n MYX_COLLATERAL_DECIMALS,\n USDT_BNB_TESTNET,\n USDT_BNB_MAINNET,\n MYX_ASSET_CONFIGS,\n fromMYXPrice,\n toMYXPrice,\n fromMYXSize,\n toMYXSize,\n fromMYXCollateral,\n MYX_PRICE_POLLING_INTERVAL_MS,\n MYX_HTTP_TIMEOUT_MS,\n MYX_MAX_RETRIES,\n MYX_MAX_LEVERAGE,\n MYX_FEE_RATE,\n MYX_PROTOCOL_FEE_RATE,\n MYX_DEFAULT_SLIPPAGE_BPS,\n MYX_MINIMUM_ORDER_SIZE_USD,\n MYX_EXECUTION_FEE_TOKEN,\n} from './constants';\nexport {\n PERPS_CONSTANTS,\n WITHDRAWAL_CONSTANTS,\n VALIDATION_THRESHOLDS,\n ORDER_SLIPPAGE_CONFIG,\n PERFORMANCE_CONFIG,\n TP_SL_CONFIG,\n HYPERLIQUID_ORDER_LIMITS,\n CLOSE_POSITION_CONFIG,\n MARGIN_ADJUSTMENT_CONFIG,\n DATA_LAKE_API_CONFIG,\n DECIMAL_PRECISION_CONFIG,\n MARKET_SORTING_CONFIG,\n PROVIDER_CONFIG,\n} from './constants';\nexport type { SortOptionId } from './constants';\n\n// Utilities (explicit named exports)\nexport {\n findEvmAccount,\n getEvmAccountFromAccountGroup,\n getSelectedEvmAccount,\n calculateWeightedReturnOnEquity,\n aggregateAccountStates,\n} from './utils';\nexport type { ReturnOnEquityInput } from './utils';\nexport { ensureError } from './utils';\nexport type {\n OrderBookCacheEntry,\n ProcessL2BookDataParams,\n ProcessBboDataParams,\n} from './utils';\nexport { processL2BookData, processBboData } from './utils';\nexport type { ValidationDebugLogger } from './utils';\nexport {\n createErrorResult,\n validateWithdrawalParams,\n validateDepositParams,\n validateAssetSupport,\n validateBalance,\n applyPathFilters,\n getSupportedPaths,\n getMaxOrderValue,\n validateOrderParams,\n validateCoinExists,\n} from './utils';\nexport {\n generatePerpsId,\n generateDepositId,\n generateWithdrawalId,\n generateOrderId,\n generateTransactionId,\n} from './utils';\nexport {\n calculateOpenInterestUSD,\n transformMarketData,\n formatChange,\n} from './utils';\nexport type { HyperLiquidMarketData } from './utils';\nexport {\n adaptMarketFromMYX,\n adaptPriceFromMYX,\n adaptMarketDataFromMYX,\n filterMYXExclusiveMarkets,\n isOverlappingMarket,\n buildPoolSymbolMap,\n buildSymbolPoolsMap,\n extractSymbolFromPoolId,\n} from './utils';\nexport {\n MAX_MARKET_PATTERN_LENGTH,\n escapeRegex,\n validateMarketPattern,\n compileMarketPattern,\n matchesMarketPattern,\n shouldIncludeMarket,\n getPerpsDisplaySymbol,\n getPerpsDexFromSymbol,\n calculateFundingCountdown,\n calculate24hHighLow,\n filterMarketsByQuery,\n} from './utils';\nexport type { MarketPatternMatcher, CompiledMarketPattern } from './utils';\nexport type {\n OrderCalculationsDebugLogger,\n CalculateFinalPositionSizeParams,\n CalculateFinalPositionSizeResult,\n CalculateOrderPriceAndSizeParams,\n CalculateOrderPriceAndSizeResult,\n BuildOrdersArrayParams,\n BuildOrdersArrayResult,\n} from './utils';\nexport {\n calculatePositionSize,\n calculateMarginRequired,\n getMaxAllowedAmount,\n calculateFinalPositionSize,\n calculateOrderPriceAndSize,\n buildOrdersArray,\n} from './utils';\nexport {\n formatAccountToCaipAccountId,\n isCaipAccountId,\n handleRewardsError,\n} from './utils';\nexport {\n countSignificantFigures,\n hasExceededSignificantFigures,\n roundToSignificantFigures,\n} from './utils';\nexport type { SortField, SortDirection, SortMarketsParams } from './utils';\nexport { parseVolume, sortMarkets } from './utils';\nexport type { StandaloneInfoClientOptions } from './utils';\nexport {\n createStandaloneInfoClient,\n queryStandaloneClearinghouseStates,\n queryStandaloneOpenOrders,\n} from './utils';\nexport { stripQuotes, parseCommaSeparatedString } from './utils';\nexport { generateERC20TransferData } from './utils';\nexport { wait } from './utils';\nexport {\n adaptOrderToSDK,\n adaptPositionFromSDK,\n adaptOrderFromSDK,\n adaptMarketFromSDK,\n adaptAccountStateFromSDK,\n buildAssetMapping,\n formatHyperLiquidPrice,\n formatHyperLiquidSize,\n calculateHip3AssetId,\n parseAssetName,\n adaptHyperLiquidLedgerUpdateToUserHistoryItem,\n} from './utils';\nexport { getEnvironment } from './utils';\n\n// Error codes (explicit named exports)\nexport { PERPS_ERROR_CODES } from './perpsErrorCodes';\nexport type { PerpsErrorCode } from './perpsErrorCodes';\n\n// Selectors (explicit named exports)\nexport {\n selectIsFirstTimeUser,\n selectHasPlacedFirstOrder,\n selectWatchlistMarkets,\n selectIsWatchlistMarket,\n selectTradeConfiguration,\n selectPendingTradeConfiguration,\n selectMarketFilterPreferences,\n selectOrderBookGrouping,\n} from './selectors';\n\n// Services (only externally consumed items)\nexport { TradingReadinessCache } from './services/TradingReadinessCache';\nexport type { ServiceContext } from './services/ServiceContext';\n\n// Removed with Live Market Prices component:\n// - usePerpsPrices\n"]}
|
|
@@ -30,6 +30,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
30
30
|
exports.AggregatedPerpsProvider = void 0;
|
|
31
31
|
const SubscriptionMultiplexer_1 = require("../aggregation/SubscriptionMultiplexer.cjs");
|
|
32
32
|
const ProviderRouter_1 = require("../routing/ProviderRouter.cjs");
|
|
33
|
+
const types_1 = require("../types/index.cjs");
|
|
33
34
|
/**
|
|
34
35
|
* AggregatedPerpsProvider implements PerpsProvider by coordinating
|
|
35
36
|
* multiple backend providers.
|
|
@@ -404,6 +405,29 @@ class AggregatedPerpsProvider {
|
|
|
404
405
|
async ping(timeoutMs) {
|
|
405
406
|
return __classPrivateFieldGet(this, _AggregatedPerpsProvider_instances, "m", _AggregatedPerpsProvider_getDefaultProvider).call(this).ping(timeoutMs);
|
|
406
407
|
}
|
|
408
|
+
getWebSocketConnectionState() {
|
|
409
|
+
const provider = __classPrivateFieldGet(this, _AggregatedPerpsProvider_instances, "m", _AggregatedPerpsProvider_getDefaultProvider).call(this);
|
|
410
|
+
if (provider.getWebSocketConnectionState) {
|
|
411
|
+
return provider.getWebSocketConnectionState();
|
|
412
|
+
}
|
|
413
|
+
return types_1.WebSocketConnectionState.Disconnected;
|
|
414
|
+
}
|
|
415
|
+
subscribeToConnectionState(listener) {
|
|
416
|
+
const provider = __classPrivateFieldGet(this, _AggregatedPerpsProvider_instances, "m", _AggregatedPerpsProvider_getDefaultProvider).call(this);
|
|
417
|
+
if (provider.subscribeToConnectionState) {
|
|
418
|
+
return provider.subscribeToConnectionState(listener);
|
|
419
|
+
}
|
|
420
|
+
listener(types_1.WebSocketConnectionState.Disconnected, 0);
|
|
421
|
+
return () => {
|
|
422
|
+
/* noop */
|
|
423
|
+
};
|
|
424
|
+
}
|
|
425
|
+
async reconnect() {
|
|
426
|
+
const provider = __classPrivateFieldGet(this, _AggregatedPerpsProvider_instances, "m", _AggregatedPerpsProvider_getDefaultProvider).call(this);
|
|
427
|
+
if (provider.reconnect) {
|
|
428
|
+
await provider.reconnect();
|
|
429
|
+
}
|
|
430
|
+
}
|
|
407
431
|
// ============================================================================
|
|
408
432
|
// Block Explorer
|
|
409
433
|
// ============================================================================
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AggregatedPerpsProvider.cjs","sourceRoot":"","sources":["../../src/providers/AggregatedPerpsProvider.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;;;;;;;;;;;;;AAIH,wFAAiF;AACjF,kEAA2D;AA+D3D;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAa,uBAAuB;IAelC,YAAY,MAAgC;;QAdnC,eAAU,GAAG,YAAY,CAAC;QAE1B,qDAAkD;QAElD,2DAAoC;QAEpC,2DAAkC;QAElC,gDAAiC;QAEjC,kDAAwB;QAExB,2DAA0C;QAGjD,uBAAA,IAAI,sCAAc,MAAM,CAAC,SAAS,MAAA,CAAC;QACnC,uBAAA,IAAI,4CAAoB,MAAM,CAAC,eAAe,MAAA,CAAC;QAC/C,uBAAA,IAAI,4CAAoB,MAAM,CAAC,eAAe,IAAI,KAAK,MAAA,CAAC;QACxD,uBAAA,IAAI,iCAAS,MAAM,CAAC,cAAc,MAAA,CAAC;QAEnC,0CAA0C;QAC1C,uBAAA,IAAI,mCAAW,IAAI,+BAAc,CAAC;YAChC,eAAe,EAAE,uBAAA,IAAI,gDAAiB;SACvC,CAAC,MAAA,CAAC;QAEH,sEAAsE;QACtE,uBAAA,IAAI,4CAAoB,IAAI,iDAAuB,CAAC;YAClD,MAAM,EAAE,uBAAA,IAAI,qCAAM,CAAC,MAAM;SAC1B,CAAC,MAAA,CAAC;QAEH,uBAAA,IAAI,qCAAM,CAAC,WAAW,CAAC,GAAG,CAAC,uCAAuC,EAAE;YAClE,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,uBAAA,IAAI,0CAAW,CAAC,IAAI,EAAE,CAAC;YAC7C,eAAe,EAAE,uBAAA,IAAI,gDAAiB;YACtC,eAAe,EAAE,uBAAA,IAAI,gDAAiB;SACvC,CAAC,CAAC;IACL,CAAC;IA8ED,+EAA+E;IAC/E,4DAA4D;IAC5D,+EAA+E;IAE/E,gBAAgB,CAAC,MAAgC;QAC/C,OAAO,uBAAA,IAAI,uFAAoB,MAAxB,IAAI,CAAsB,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC7D,CAAC;IAED,mBAAmB,CAAC,MAAgC;QAClD,OAAO,uBAAA,IAAI,uFAAoB,MAAxB,IAAI,CAAsB,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAChE,CAAC;IAED,+EAA+E;IAC/E,iDAAiD;IACjD,+EAA+E;IAE/E,KAAK,CAAC,YAAY,CAAC,MAA2B;QAC5C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CACtC,uBAAA,IAAI,uFAAoB,MAAxB,IAAI,CAAsB,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE;YACtD,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YACtD,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAC9D,CAAC,CAAC,CACH,CAAC;QAEF,OAAO,uBAAA,IAAI,6FAA0B,MAA9B,IAAI,EAA2B,OAAO,EAAE,cAAc,CAAC,CAAC,IAAI,EAAE,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,MAA8B;QAClD,sEAAsE;QACtE,MAAM,QAAQ,GAAG,uBAAA,IAAI,uFAAoB,MAAxB,IAAI,CAAsB,CAAC;QAC5C,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QACrD,OAAO,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,uBAAA,IAAI,gDAAiB,EAAE,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAyB;QACxC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CACtC,uBAAA,IAAI,uFAAoB,MAAxB,IAAI,CAAsB,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE;YACtD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAClD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAClE,CAAC,CAAC,CACH,CAAC;QAEF,MAAM,UAAU,GAAG,uBAAA,IAAI,6FAA0B,MAA9B,IAAI,EACrB,OAAO,EACP,YAAY,CACb,CAAC,IAAI,EAAE,CAAC;QAET,sDAAsD;QACtD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE;YAClC,kFAAkF;YAClF,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAClD,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAClB,OAAO,KAAK,CAAC;YACf,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACd,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,uBAAuB;QAC3B,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CACtC,uBAAA,IAAI,uFAAoB,MAAxB,IAAI,CAAsB,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE;YACtD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,uBAAuB,EAAE,CAAC;YACtD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAC3D,CAAC,CAAC,CACH,CAAC;QAEF,OAAO,uBAAA,IAAI,6FAA0B,MAA9B,IAAI,EACT,OAAO,EACP,yBAAyB,CAC1B,CAAC,IAAI,EAAE,CAAC;IACX,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,MAA4B;QAC9C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CACtC,uBAAA,IAAI,uFAAoB,MAAxB,IAAI,CAAsB,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE;YACtD,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YACnD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5D,CAAC,CAAC,CACH,CAAC;QAEF,OAAO,uBAAA,IAAI,6FAA0B,MAA9B,IAAI,EAA2B,OAAO,EAAE,eAAe,CAAC,CAAC,IAAI,EAAE,CAAC;IACzE,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,MAA8B;QAClD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CACtC,uBAAA,IAAI,uFAAoB,MAAxB,IAAI,CAAsB,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE;YACtD,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;YACrD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5D,CAAC,CAAC,CACH,CAAC;QAEF,OAAO,uBAAA,IAAI,6FAA0B,MAA9B,IAAI,EAA2B,OAAO,EAAE,iBAAiB,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,MAAwB;QACtC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CACtC,uBAAA,IAAI,uFAAoB,MAAxB,IAAI,CAAsB,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE;YACtD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAChD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAC/D,CAAC,CAAC,CACH,CAAC;QAEF,OAAO,uBAAA,IAAI,6FAA0B,MAA9B,IAAI,EAA2B,OAAO,EAAE,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC;IACrE,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,MAAwB;QAC1C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CACtC,uBAAA,IAAI,uFAAoB,MAAxB,IAAI,CAAsB,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE;YACtD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YACpD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAC/D,CAAC,CAAC,CACH,CAAC;QAEF,OAAO,uBAAA,IAAI,6FAA0B,MAA9B,IAAI,EAA2B,OAAO,EAAE,eAAe,CAAC,CAAC,IAAI,EAAE,CAAC;IACzE,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAyB;QACxC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CACtC,uBAAA,IAAI,uFAAoB,MAAxB,IAAI,CAAsB,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,EAAE;YAC/D,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAClD,mEAAmE;YACnE,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC,CACH,CAAC;QAEF,OAAO,uBAAA,IAAI,6FAA0B,MAA9B,IAAI,EAA2B,OAAO,EAAE,YAAY,CAAC,CAAC,IAAI,EAAE,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,sBAAsB,CAC1B,MAAqC;QAErC,+BAA+B;QAC/B,OAAO,uBAAA,IAAI,uFAAoB,MAAxB,IAAI,CAAsB,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;IACnE,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,8BAA8B,CAAC,MAIpC;QACC,mDAAmD;QACnD,OAAO,uBAAA,IAAI,uFAAoB,MAAxB,IAAI,CAAsB,CAAC,8BAA8B,CAAC,MAAM,CAAC,CAAC;IAC3E,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,cAAc,CAAC,MAIpB;QACC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CACtC,uBAAA,IAAI,uFAAoB,MAAxB,IAAI,CAAsB,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE;YACtD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YACtD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAC9D,CAAC,CAAC,CACH,CAAC;QAEF,OAAO,uBAAA,IAAI,6FAA0B,MAA9B,IAAI,EAA2B,OAAO,EAAE,gBAAgB,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1E,CAAC;IAED,+EAA+E;IAC/E,gDAAgD;IAChD,+EAA+E;IAE/E,KAAK,CAAC,UAAU,CAAC,MAAmB;QAClC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG,uBAAA,IAAI,yFAAsB,MAA1B,IAAI,EACjC,MAAM,CAAC,UAAU,CAClB,CAAC;QAEF,uBAAA,IAAI,qCAAM,CAAC,WAAW,CAAC,GAAG,CAAC,8CAA8C,EAAE;YACzE,iBAAiB,EAAE,MAAM,CAAC,UAAU;YACpC,cAAc,EAAE,UAAU;YAC1B,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACjD,OAAO,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,MAAuB;QACrC,6EAA6E;QAC7E,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG,uBAAA,IAAI,yFAAsB,MAA1B,IAAI,EACjC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAC3B,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAChD,OAAO,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAyB;QACzC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG,uBAAA,IAAI,yFAAsB,MAA1B,IAAI,EACjC,MAAM,CAAC,UAAU,CAClB,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAClD,OAAO,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,MAA+B;QAE/B,6CAA6C;QAC7C,MAAM,QAAQ,GAAG,uBAAA,IAAI,uFAAoB,MAAxB,IAAI,CAAsB,CAAC;QAC5C,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;YAC3B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,YAAY,EAAE,CAAC;gBACf,YAAY,EAAE,MAAM,CAAC,MAAM;gBAC3B,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;oBAC9B,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,4BAA4B;iBACpC,CAAC,CAAC;aACJ,CAAC;QACJ,CAAC;QACD,OAAO,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,MAA2B;QAC7C,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG,uBAAA,IAAI,yFAAsB,MAA1B,IAAI,EACjC,MAAM,CAAC,UAAU,CAClB,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACpD,OAAO,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,MAA4B;QAE5B,4CAA4C;QAC5C,MAAM,QAAQ,GAAG,uBAAA,IAAI,uFAAoB,MAAxB,IAAI,CAAsB,CAAC;QAC5C,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;YAC7B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,YAAY,EAAE,CAAC;gBACf,YAAY,EAAE,CAAC;gBACf,OAAO,EAAE,EAAE;aACZ,CAAC;QACJ,CAAC;QACD,OAAO,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,kBAAkB,CACtB,MAAgC;QAEhC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG,uBAAA,IAAI,yFAAsB,MAA1B,IAAI,EACjC,MAAM,CAAC,UAAU,CAClB,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACzD,OAAO,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAA0B;QAC3C,MAAM,CAAC,EAAE,QAAQ,CAAC,GAAG,uBAAA,IAAI,yFAAsB,MAA1B,IAAI,EAAuB,MAAM,CAAC,UAAU,CAAC,CAAC;QACnE,OAAO,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,MAAsB;QACnC,MAAM,CAAC,EAAE,QAAQ,CAAC,GAAG,uBAAA,IAAI,yFAAsB,MAA1B,IAAI,EAAuB,MAAM,CAAC,UAAU,CAAC,CAAC;QACnE,OAAO,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IAED,+EAA+E;IAC/E,0CAA0C;IAC1C,+EAA+E;IAE/E,KAAK,CAAC,eAAe,CACnB,MAAqB;QAErB,OAAO,uBAAA,IAAI,uFAAoB,MAAxB,IAAI,CAAsB,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,MAAmB;QAEnB,MAAM,CAAC,EAAE,QAAQ,CAAC,GAAG,uBAAA,IAAI,yFAAsB,MAA1B,IAAI,EAAuB,MAAM,CAAC,UAAU,CAAC,CAAC;QACnE,OAAO,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,qBAAqB,CACzB,MAA2B;QAE3B,MAAM,CAAC,EAAE,QAAQ,CAAC,GAAG,uBAAA,IAAI,yFAAsB,MAA1B,IAAI,EAAuB,MAAM,CAAC,UAAU,CAAC,CAAC;QACnE,OAAO,QAAQ,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,kBAAkB,CACtB,MAAsB;QAEtB,MAAM,CAAC,EAAE,QAAQ,CAAC,GAAG,uBAAA,IAAI,yFAAsB,MAA1B,IAAI,EAAuB,MAAM,CAAC,UAAU,CAAC,CAAC;QACnE,OAAO,QAAQ,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;IAED,+EAA+E;IAC/E,uDAAuD;IACvD,+EAA+E;IAE/E,KAAK,CAAC,yBAAyB,CAC7B,MAA8B;QAE9B,OAAO,uBAAA,IAAI,uFAAoB,MAAxB,IAAI,CAAsB,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,0BAA0B,CAC9B,MAA+B;QAE/B,OAAO,uBAAA,IAAI,uFAAoB,MAAxB,IAAI,CAAsB,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC;IACvE,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,KAAa;QAChC,OAAO,uBAAA,IAAI,uFAAoB,MAAxB,IAAI,CAAsB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,MAA4B;QAE5B,OAAO,uBAAA,IAAI,uFAAoB,MAAxB,IAAI,CAAsB,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAC1D,CAAC;IAED,+EAA+E;IAC/E,wDAAwD;IACxD,+EAA+E;IAE/E,iBAAiB,CAAC,MAA6B;QAC7C,OAAO,uBAAA,IAAI,gDAAiB,CAAC,iBAAiB,CAAC;YAC7C,GAAG,MAAM;YACT,SAAS,EAAE,uBAAA,IAAI,uFAAoB,MAAxB,IAAI,CAAsB;YACrC,eAAe,EAAE,OAAO;SACzB,CAAC,CAAC;IACL,CAAC;IAED,oBAAoB,CAAC,MAAgC;QACnD,OAAO,uBAAA,IAAI,gDAAiB,CAAC,oBAAoB,CAAC;YAChD,GAAG,MAAM;YACT,SAAS,EAAE,uBAAA,IAAI,uFAAoB,MAAxB,IAAI,CAAsB;SACtC,CAAC,CAAC;IACL,CAAC;IAED,qBAAqB,CAAC,MAAiC;QACrD,OAAO,uBAAA,IAAI,gDAAiB,CAAC,qBAAqB,CAAC;YACjD,GAAG,MAAM;YACT,SAAS,EAAE,uBAAA,IAAI,uFAAoB,MAAxB,IAAI,CAAsB;SACtC,CAAC,CAAC;IACL,CAAC;IAED,iBAAiB,CAAC,MAA6B;QAC7C,OAAO,uBAAA,IAAI,gDAAiB,CAAC,iBAAiB,CAAC;YAC7C,GAAG,MAAM;YACT,SAAS,EAAE,uBAAA,IAAI,uFAAoB,MAAxB,IAAI,CAAsB;SACtC,CAAC,CAAC;IACL,CAAC;IAED,kBAAkB,CAAC,MAA8B;QAC/C,iEAAiE;QACjE,+CAA+C;QAC/C,uCAAuC;QACvC,OAAO,uBAAA,IAAI,uFAAoB,MAAxB,IAAI,CAAsB,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC/D,CAAC;IAED,iBAAiB,CAAC,MAA6B;QAC7C,+BAA+B;QAC/B,OAAO,uBAAA,IAAI,uFAAoB,MAAxB,IAAI,CAAsB,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC9D,CAAC;IAED,kBAAkB,CAAC,MAA8B;QAC/C,+BAA+B;QAC/B,OAAO,uBAAA,IAAI,uFAAoB,MAAxB,IAAI,CAAsB,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC/D,CAAC;IAED,oBAAoB,CAAC,MAAgC;QACnD,+BAA+B;QAC/B,OAAO,uBAAA,IAAI,uFAAoB,MAAxB,IAAI,CAAsB,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;IACjE,CAAC;IAED,+EAA+E;IAC/E,gBAAgB;IAChB,+EAA+E;IAE/E,iBAAiB,CAAC,MAA+B;QAC/C,gCAAgC;QAChC,uBAAA,IAAI,0CAAW,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;YACnC,QAAQ,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,kBAAkB,CAAC,YAAgC;QACjD,yCAAyC;QACzC,uBAAA,IAAI,0CAAW,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;YACnC,IAAI,QAAQ,CAAC,kBAAkB,EAAE,CAAC;gBAChC,QAAQ,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,+EAA+E;IAC/E,2CAA2C;IAC3C,+EAA+E;IAE/E,KAAK,CAAC,aAAa;QACjB,OAAO,uBAAA,IAAI,uFAAoB,MAAxB,IAAI,CAAsB,CAAC,aAAa,EAAE,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,UAAU;QACd,8BAA8B;QAC9B,MAAM,MAAM,GAAG,MAAM,uBAAA,IAAI,uFAAoB,MAAxB,IAAI,CAAsB,CAAC,UAAU,EAAE,CAAC;QAE7D,sDAAsD;QACtD,mDAAmD;QACnD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,OAAO,uBAAA,IAAI,uFAAoB,MAAxB,IAAI,CAAsB,CAAC,cAAc,EAAE,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,UAAU;QACd,2BAA2B;QAC3B,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CACtC,uBAAA,IAAI,uFAAoB,MAAxB,IAAI,CAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CACxE,CAAC;QAEF,2BAA2B;QAC3B,uBAAA,IAAI,gDAAiB,CAAC,UAAU,EAAE,CAAC;QAEnC,2CAA2C;QAC3C,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CACjC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,WAAW,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CACzD,CAAC,MAAM,CAAC;QAET,OAAO;YACL,OAAO,EAAE,YAAY,GAAG,CAAC;SAC1B,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,SAAkB;QAC3B,OAAO,uBAAA,IAAI,uFAAoB,MAAxB,IAAI,CAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;IAED,+EAA+E;IAC/E,iBAAiB;IACjB,+EAA+E;IAE/E,mBAAmB,CAAC,OAAgB;QAClC,OAAO,uBAAA,IAAI,uFAAoB,MAAxB,IAAI,CAAsB,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACjE,CAAC;IAED,+EAA+E;IAC/E,mBAAmB;IACnB,+EAA+E;IAE/E,KAAK,CAAC,gBAAgB,CAAC,MAA+B;QACpD,MAAM,QAAQ,GAAG,uBAAA,IAAI,uFAAoB,MAAxB,IAAI,CAAsB,CAAC;QAC5C,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC;YAC/B,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,OAAO,QAAQ,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,+EAA+E;IAC/E,sBAAsB;IACtB,+EAA+E;IAE/E;;;;;OAKG;IACH,WAAW,CAAC,UAA6B,EAAE,QAAuB;QAChE,uBAAA,IAAI,0CAAW,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC1C,uBAAA,IAAI,qCAAM,CAAC,WAAW,CAAC,GAAG,CAAC,0CAA0C,EAAE;YACrE,UAAU;SACX,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,cAAc,CAAC,UAA6B;QAC1C,MAAM,OAAO,GAAG,uBAAA,IAAI,0CAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACnD,IAAI,OAAO,EAAE,CAAC;YACZ,uBAAA,IAAI,qCAAM,CAAC,WAAW,CAAC,GAAG,CAAC,4CAA4C,EAAE;gBACvE,UAAU;aACX,CAAC,CAAC;QACL,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;OAIG;IACH,cAAc;QACZ,OAAO,KAAK,CAAC,IAAI,CAAC,uBAAA,IAAI,0CAAW,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED;;;;;OAKG;IACH,WAAW,CAAC,UAA6B;QACvC,OAAO,uBAAA,IAAI,0CAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACzC,CAAC;IAED;;;;OAIG;IACH,SAAS;QACP,OAAO,uBAAA,IAAI,uCAAQ,CAAC;IACtB,CAAC;CACF;AA1oBD,0DA0oBC;;IAzlBG,OAAO,KAAK,CAAC,IAAI,CAAC,uBAAA,IAAI,0CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;AAC/C,CAAC;IASC,MAAM,QAAQ,GAAG,uBAAA,IAAI,0CAAW,CAAC,GAAG,CAAC,uBAAA,IAAI,gDAAiB,CAAC,CAAC;IAC5D,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CACb,+CAA+C,uBAAA,IAAI,gDAAiB,iBAAiB,CACtF,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC,yGASC,UAA8B;IAE9B,MAAM,EAAE,GAAG,UAAU,IAAI,uBAAA,IAAI,gDAAiB,CAAC;IAC/C,MAAM,QAAQ,GAAG,uBAAA,IAAI,0CAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACzC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,uBAAA,IAAI,qCAAM,CAAC,WAAW,CAAC,GAAG,CACxB,uCAAuC,EAAE,4BAA4B,CACtE,CAAC;QACF,OAAO,CAAC,uBAAA,IAAI,gDAAiB,EAAE,uBAAA,IAAI,uFAAoB,MAAxB,IAAI,CAAsB,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;AACxB,CAAC,iHAWC,OAAwC,EACxC,OAAe;IAEf,MAAM,UAAU,GAAc,EAAE,CAAC;IACjC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QAChC,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YAClC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,uBAAA,IAAI,qCAAM,CAAC,WAAW,CAAC,GAAG,CACxB,6BAA6B,OAAO,wBAAwB,KAAK,EAAE,EACnE,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CACzB,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,UAAU,CAAC;AACpB,CAAC","sourcesContent":["/**\n * AggregatedPerpsProvider - Multi-provider aggregation wrapper\n *\n * Implements PerpsProvider interface to enable seamless multi-provider support.\n * Aggregates read operations from all providers, routes write operations to specific\n * providers based on params.providerId or default provider.\n *\n * Phase 1 Implementation:\n * - Read operations: Aggregate from all providers using Promise.allSettled()\n * - Write operations: Route to params.providerId ?? defaultProvider\n * - Subscriptions: Multiplex via SubscriptionMultiplexer\n * - Lifecycle: Delegate to default provider\n *\n * All returned data includes providerId field for UI differentiation.\n */\n\nimport type { CaipAccountId } from '@metamask/utils';\n\nimport { SubscriptionMultiplexer } from '../aggregation/SubscriptionMultiplexer';\nimport { ProviderRouter } from '../routing/ProviderRouter';\nimport type {\n AccountState,\n AggregatedProviderConfig,\n AggregationMode,\n AssetRoute,\n BatchCancelOrdersParams,\n CancelOrderParams,\n CancelOrderResult,\n CancelOrdersResult,\n ClosePositionParams,\n ClosePositionsParams,\n ClosePositionsResult,\n DepositParams,\n DisconnectResult,\n EditOrderParams,\n FeeCalculationParams,\n FeeCalculationResult,\n Funding,\n GetAccountStateParams,\n GetAvailableDexsParams,\n GetFundingParams,\n GetHistoricalPortfolioParams,\n GetMarketsParams,\n GetOrderFillsParams,\n GetOrdersParams,\n GetOrFetchFillsParams,\n GetPositionsParams,\n GetSupportedPathsParams,\n HistoricalPortfolioResult,\n InitializeResult,\n PerpsPlatformDependencies,\n PerpsProvider,\n LiquidationPriceParams,\n LiveDataConfig,\n MaintenanceMarginParams,\n MarginResult,\n MarketInfo,\n Order,\n OrderFill,\n OrderParams,\n OrderResult,\n PerpsMarketData,\n PerpsProviderType,\n Position,\n ReadyToTradeResult,\n SubscribeAccountParams,\n SubscribeCandlesParams,\n SubscribeOICapsParams,\n SubscribeOrderBookParams,\n SubscribeOrderFillsParams,\n SubscribeOrdersParams,\n SubscribePositionsParams,\n SubscribePricesParams,\n ToggleTestnetResult,\n UpdateMarginParams,\n UpdatePositionTPSLParams,\n UserHistoryItem,\n WithdrawParams,\n WithdrawResult,\n RawLedgerUpdate,\n} from '../types';\n\n/**\n * AggregatedPerpsProvider implements PerpsProvider by coordinating\n * multiple backend providers.\n *\n * Design principles:\n * 1. Read operations aggregate from all providers (parallel)\n * 2. Write operations route to specific provider (explicit > default)\n * 3. Lifecycle operations delegate to default provider\n * 4. All returned data includes providerId for UI differentiation\n *\n * @example\n * ```typescript\n * const aggregated = new AggregatedPerpsProvider({\n * providers: new Map([\n * ['hyperliquid', hlProvider],\n * ['myx', myxProvider],\n * ]),\n * defaultProvider: 'hyperliquid',\n * infrastructure: deps,\n * });\n *\n * // Read: returns positions from all providers\n * const positions = await aggregated.getPositions();\n *\n * // Write: routes to specific or default provider\n * await aggregated.placeOrder({ symbol: 'BTC', providerId: 'myx', ... });\n * ```\n */\nexport class AggregatedPerpsProvider implements PerpsProvider {\n readonly protocolId = 'aggregated';\n\n readonly #providers: Map<PerpsProviderType, PerpsProvider>;\n\n readonly #defaultProvider: PerpsProviderType;\n\n readonly #aggregationMode: AggregationMode;\n\n readonly #deps: PerpsPlatformDependencies;\n\n readonly #router: ProviderRouter;\n\n readonly #subscriptionMux: SubscriptionMultiplexer;\n\n constructor(config: AggregatedProviderConfig) {\n this.#providers = config.providers;\n this.#defaultProvider = config.defaultProvider;\n this.#aggregationMode = config.aggregationMode ?? 'all';\n this.#deps = config.infrastructure;\n\n // Initialize router with default provider\n this.#router = new ProviderRouter({\n defaultProvider: this.#defaultProvider,\n });\n\n // Initialize subscription multiplexer with logger for error reporting\n this.#subscriptionMux = new SubscriptionMultiplexer({\n logger: this.#deps.logger,\n });\n\n this.#deps.debugLogger.log('[AggregatedPerpsProvider] Initialized', {\n providers: Array.from(this.#providers.keys()),\n defaultProvider: this.#defaultProvider,\n aggregationMode: this.#aggregationMode,\n });\n }\n\n // ============================================================================\n // Helper Methods\n // ============================================================================\n\n /**\n * Get list of active providers as tuples for iteration.\n * Returns array of [providerId, provider] pairs.\n *\n * @returns The result of the operation.\n */\n #getActiveProviders(): [PerpsProviderType, PerpsProvider][] {\n return Array.from(this.#providers.entries());\n }\n\n /**\n * Get the default provider instance.\n * Throws if default provider is not available.\n *\n * @returns The result of the operation.\n */\n #getDefaultProvider(): PerpsProvider {\n const provider = this.#providers.get(this.#defaultProvider);\n if (!provider) {\n throw new Error(\n `[AggregatedPerpsProvider] Default provider '${this.#defaultProvider}' not available`,\n );\n }\n return provider;\n }\n\n /**\n * Get provider by ID, falling back to default if not found.\n *\n * @param providerId - The provider id value.\n * @returns The result of the operation.\n */\n #getProviderOrDefault(\n providerId?: PerpsProviderType,\n ): [PerpsProviderType, PerpsProvider] {\n const id = providerId ?? this.#defaultProvider;\n const provider = this.#providers.get(id);\n if (!provider) {\n this.#deps.debugLogger.log(\n `[AggregatedPerpsProvider] Provider '${id}' not found, using default`,\n );\n return [this.#defaultProvider, this.#getDefaultProvider()];\n }\n return [id, provider];\n }\n\n /**\n * Extract successful results from Promise.allSettled.\n * Logs errors for failed promises.\n *\n * @param results - Results from Promise.allSettled\n * @param context - Context string for logging\n * @returns Array of successful values\n */\n #extractSuccessfulResults<TResult>(\n results: PromiseSettledResult<TResult>[],\n context: string,\n ): TResult[] {\n const successful: TResult[] = [];\n results.forEach((result, index) => {\n if (result.status === 'fulfilled') {\n successful.push(result.value);\n } else {\n this.#deps.debugLogger.log(\n `[AggregatedPerpsProvider] ${context} failed for provider ${index}`,\n { error: result.reason },\n );\n }\n });\n return successful;\n }\n\n // ============================================================================\n // Asset Routes (Synchronous - delegate to default provider)\n // ============================================================================\n\n getDepositRoutes(params?: GetSupportedPathsParams): AssetRoute[] {\n return this.#getDefaultProvider().getDepositRoutes(params);\n }\n\n getWithdrawalRoutes(params?: GetSupportedPathsParams): AssetRoute[] {\n return this.#getDefaultProvider().getWithdrawalRoutes(params);\n }\n\n // ============================================================================\n // Read Operations (Aggregate from all providers)\n // ============================================================================\n\n async getPositions(params?: GetPositionsParams): Promise<Position[]> {\n const results = await Promise.allSettled(\n this.#getActiveProviders().map(async ([id, provider]) => {\n const positions = await provider.getPositions(params);\n return positions.map((pos) => ({ ...pos, providerId: id }));\n }),\n );\n\n return this.#extractSuccessfulResults(results, 'getPositions').flat();\n }\n\n async getAccountState(params?: GetAccountStateParams): Promise<AccountState> {\n // Return account state from default provider with providerId injected\n const provider = this.#getDefaultProvider();\n const state = await provider.getAccountState(params);\n return { ...state, providerId: this.#defaultProvider };\n }\n\n async getMarkets(params?: GetMarketsParams): Promise<MarketInfo[]> {\n const results = await Promise.allSettled(\n this.#getActiveProviders().map(async ([id, provider]) => {\n const markets = await provider.getMarkets(params);\n return markets.map((market) => ({ ...market, providerId: id }));\n }),\n );\n\n const allMarkets = this.#extractSuccessfulResults(\n results,\n 'getMarkets',\n ).flat();\n\n // Deduplicate markets by name (keep first occurrence)\n const seen = new Set<string>();\n return allMarkets.filter((market) => {\n // Use providerId:name as unique key to allow same market from different providers\n const key = `${market.providerId}:${market.name}`;\n if (seen.has(key)) {\n return false;\n }\n seen.add(key);\n return true;\n });\n }\n\n async getMarketDataWithPrices(): Promise<PerpsMarketData[]> {\n const results = await Promise.allSettled(\n this.#getActiveProviders().map(async ([id, provider]) => {\n const data = await provider.getMarketDataWithPrices();\n return data.map((item) => ({ ...item, providerId: id }));\n }),\n );\n\n return this.#extractSuccessfulResults(\n results,\n 'getMarketDataWithPrices',\n ).flat();\n }\n\n async getOrderFills(params?: GetOrderFillsParams): Promise<OrderFill[]> {\n const results = await Promise.allSettled(\n this.#getActiveProviders().map(async ([id, provider]) => {\n const fills = await provider.getOrderFills(params);\n return fills.map((fill) => ({ ...fill, providerId: id }));\n }),\n );\n\n return this.#extractSuccessfulResults(results, 'getOrderFills').flat();\n }\n\n async getOrFetchFills(params?: GetOrFetchFillsParams): Promise<OrderFill[]> {\n const results = await Promise.allSettled(\n this.#getActiveProviders().map(async ([id, provider]) => {\n const fills = await provider.getOrFetchFills(params);\n return fills.map((fill) => ({ ...fill, providerId: id }));\n }),\n );\n\n return this.#extractSuccessfulResults(results, 'getOrFetchFills').flat();\n }\n\n async getOrders(params?: GetOrdersParams): Promise<Order[]> {\n const results = await Promise.allSettled(\n this.#getActiveProviders().map(async ([id, provider]) => {\n const orders = await provider.getOrders(params);\n return orders.map((order) => ({ ...order, providerId: id }));\n }),\n );\n\n return this.#extractSuccessfulResults(results, 'getOrders').flat();\n }\n\n async getOpenOrders(params?: GetOrdersParams): Promise<Order[]> {\n const results = await Promise.allSettled(\n this.#getActiveProviders().map(async ([id, provider]) => {\n const orders = await provider.getOpenOrders(params);\n return orders.map((order) => ({ ...order, providerId: id }));\n }),\n );\n\n return this.#extractSuccessfulResults(results, 'getOpenOrders').flat();\n }\n\n async getFunding(params?: GetFundingParams): Promise<Funding[]> {\n const results = await Promise.allSettled(\n this.#getActiveProviders().map(async ([_providerId, provider]) => {\n const funding = await provider.getFunding(params);\n // Funding type doesn't have providerId - we could add it if needed\n return funding;\n }),\n );\n\n return this.#extractSuccessfulResults(results, 'getFunding').flat();\n }\n\n async getHistoricalPortfolio(\n params?: GetHistoricalPortfolioParams,\n ): Promise<HistoricalPortfolioResult> {\n // Delegate to default provider\n return this.#getDefaultProvider().getHistoricalPortfolio(params);\n }\n\n /**\n * Get user non-funding ledger updates from default provider.\n *\n * @param params - Optional parameters\n * @param params.accountId - Account ID to filter by\n * @param params.startTime - Start time filter\n * @param params.endTime - End time filter\n * @returns Raw ledger updates\n */\n async getUserNonFundingLedgerUpdates(params?: {\n accountId?: string;\n startTime?: number;\n endTime?: number;\n }): Promise<RawLedgerUpdate[]> {\n // Delegate to default provider (protocol-specific)\n return this.#getDefaultProvider().getUserNonFundingLedgerUpdates(params);\n }\n\n /**\n * Get user history from all providers.\n *\n * @param params - Optional parameters\n * @param params.accountId - Account ID to filter by\n * @param params.startTime - Start time filter\n * @param params.endTime - End time filter\n * @returns Aggregated user history with providerId\n */\n async getUserHistory(params?: {\n accountId?: CaipAccountId;\n startTime?: number;\n endTime?: number;\n }): Promise<UserHistoryItem[]> {\n const results = await Promise.allSettled(\n this.#getActiveProviders().map(async ([id, provider]) => {\n const history = await provider.getUserHistory(params);\n return history.map((item) => ({ ...item, providerId: id }));\n }),\n );\n\n return this.#extractSuccessfulResults(results, 'getUserHistory').flat();\n }\n\n // ============================================================================\n // Write Operations (Route to specific provider)\n // ============================================================================\n\n async placeOrder(params: OrderParams): Promise<OrderResult> {\n const [providerId, provider] = this.#getProviderOrDefault(\n params.providerId,\n );\n\n this.#deps.debugLogger.log('[AggregatedPerpsProvider] placeOrder routing', {\n requestedProvider: params.providerId,\n actualProvider: providerId,\n symbol: params.symbol,\n });\n\n const result = await provider.placeOrder(params);\n return { ...result, providerId };\n }\n\n async editOrder(params: EditOrderParams): Promise<OrderResult> {\n // EditOrderParams contains OrderParams in newOrder which may have providerId\n const [providerId, provider] = this.#getProviderOrDefault(\n params.newOrder.providerId,\n );\n const result = await provider.editOrder(params);\n return { ...result, providerId };\n }\n\n async cancelOrder(params: CancelOrderParams): Promise<CancelOrderResult> {\n const [providerId, provider] = this.#getProviderOrDefault(\n params.providerId,\n );\n const result = await provider.cancelOrder(params);\n return { ...result, providerId };\n }\n\n async cancelOrders(\n params: BatchCancelOrdersParams,\n ): Promise<CancelOrdersResult> {\n // Batch cancel delegates to default provider\n const provider = this.#getDefaultProvider();\n if (!provider.cancelOrders) {\n return {\n success: false,\n successCount: 0,\n failureCount: params.length,\n results: params.map((param) => ({\n orderId: param.orderId,\n symbol: param.symbol,\n success: false,\n error: 'Batch cancel not supported',\n })),\n };\n }\n return provider.cancelOrders(params);\n }\n\n async closePosition(params: ClosePositionParams): Promise<OrderResult> {\n const [providerId, provider] = this.#getProviderOrDefault(\n params.providerId,\n );\n const result = await provider.closePosition(params);\n return { ...result, providerId };\n }\n\n async closePositions(\n params: ClosePositionsParams,\n ): Promise<ClosePositionsResult> {\n // Batch close delegates to default provider\n const provider = this.#getDefaultProvider();\n if (!provider.closePositions) {\n return {\n success: false,\n successCount: 0,\n failureCount: 0,\n results: [],\n };\n }\n return provider.closePositions(params);\n }\n\n async updatePositionTPSL(\n params: UpdatePositionTPSLParams,\n ): Promise<OrderResult> {\n const [providerId, provider] = this.#getProviderOrDefault(\n params.providerId,\n );\n const result = await provider.updatePositionTPSL(params);\n return { ...result, providerId };\n }\n\n async updateMargin(params: UpdateMarginParams): Promise<MarginResult> {\n const [, provider] = this.#getProviderOrDefault(params.providerId);\n return provider.updateMargin(params);\n }\n\n async withdraw(params: WithdrawParams): Promise<WithdrawResult> {\n const [, provider] = this.#getProviderOrDefault(params.providerId);\n return provider.withdraw(params);\n }\n\n // ============================================================================\n // Validation (Route to specific provider)\n // ============================================================================\n\n async validateDeposit(\n params: DepositParams,\n ): Promise<{ isValid: boolean; error?: string }> {\n return this.#getDefaultProvider().validateDeposit(params);\n }\n\n async validateOrder(\n params: OrderParams,\n ): Promise<{ isValid: boolean; error?: string }> {\n const [, provider] = this.#getProviderOrDefault(params.providerId);\n return provider.validateOrder(params);\n }\n\n async validateClosePosition(\n params: ClosePositionParams,\n ): Promise<{ isValid: boolean; error?: string }> {\n const [, provider] = this.#getProviderOrDefault(params.providerId);\n return provider.validateClosePosition(params);\n }\n\n async validateWithdrawal(\n params: WithdrawParams,\n ): Promise<{ isValid: boolean; error?: string }> {\n const [, provider] = this.#getProviderOrDefault(params.providerId);\n return provider.validateWithdrawal(params);\n }\n\n // ============================================================================\n // Protocol Calculations (Delegate to default or route)\n // ============================================================================\n\n async calculateLiquidationPrice(\n params: LiquidationPriceParams,\n ): Promise<string> {\n return this.#getDefaultProvider().calculateLiquidationPrice(params);\n }\n\n async calculateMaintenanceMargin(\n params: MaintenanceMarginParams,\n ): Promise<number> {\n return this.#getDefaultProvider().calculateMaintenanceMargin(params);\n }\n\n async getMaxLeverage(asset: string): Promise<number> {\n return this.#getDefaultProvider().getMaxLeverage(asset);\n }\n\n async calculateFees(\n params: FeeCalculationParams,\n ): Promise<FeeCalculationResult> {\n return this.#getDefaultProvider().calculateFees(params);\n }\n\n // ============================================================================\n // Subscriptions (Multiplex via SubscriptionMultiplexer)\n // ============================================================================\n\n subscribeToPrices(params: SubscribePricesParams): () => void {\n return this.#subscriptionMux.subscribeToPrices({\n ...params,\n providers: this.#getActiveProviders(),\n aggregationMode: 'merge',\n });\n }\n\n subscribeToPositions(params: SubscribePositionsParams): () => void {\n return this.#subscriptionMux.subscribeToPositions({\n ...params,\n providers: this.#getActiveProviders(),\n });\n }\n\n subscribeToOrderFills(params: SubscribeOrderFillsParams): () => void {\n return this.#subscriptionMux.subscribeToOrderFills({\n ...params,\n providers: this.#getActiveProviders(),\n });\n }\n\n subscribeToOrders(params: SubscribeOrdersParams): () => void {\n return this.#subscriptionMux.subscribeToOrders({\n ...params,\n providers: this.#getActiveProviders(),\n });\n }\n\n subscribeToAccount(params: SubscribeAccountParams): () => void {\n // For account subscriptions, we emit as array for multi-provider\n // but the callback expects single AccountState\n // Delegate to default provider for now\n return this.#getDefaultProvider().subscribeToAccount(params);\n }\n\n subscribeToOICaps(params: SubscribeOICapsParams): () => void {\n // Delegate to default provider\n return this.#getDefaultProvider().subscribeToOICaps(params);\n }\n\n subscribeToCandles(params: SubscribeCandlesParams): () => void {\n // Delegate to default provider\n return this.#getDefaultProvider().subscribeToCandles(params);\n }\n\n subscribeToOrderBook(params: SubscribeOrderBookParams): () => void {\n // Delegate to default provider\n return this.#getDefaultProvider().subscribeToOrderBook(params);\n }\n\n // ============================================================================\n // Configuration\n // ============================================================================\n\n setLiveDataConfig(config: Partial<LiveDataConfig>): void {\n // Apply config to all providers\n this.#providers.forEach((provider) => {\n provider.setLiveDataConfig(config);\n });\n }\n\n setUserFeeDiscount(discountBips: number | undefined): void {\n // Apply to all providers that support it\n this.#providers.forEach((provider) => {\n if (provider.setUserFeeDiscount) {\n provider.setUserFeeDiscount(discountBips);\n }\n });\n }\n\n // ============================================================================\n // Lifecycle (Delegate to default provider)\n // ============================================================================\n\n async toggleTestnet(): Promise<ToggleTestnetResult> {\n return this.#getDefaultProvider().toggleTestnet();\n }\n\n async initialize(): Promise<InitializeResult> {\n // Initialize default provider\n const result = await this.#getDefaultProvider().initialize();\n\n // Optionally initialize other providers in background\n // For Phase 1, we only initialize default provider\n return result;\n }\n\n async isReadyToTrade(): Promise<ReadyToTradeResult> {\n return this.#getDefaultProvider().isReadyToTrade();\n }\n\n async disconnect(): Promise<DisconnectResult> {\n // Disconnect all providers\n const results = await Promise.allSettled(\n this.#getActiveProviders().map(([, provider]) => provider.disconnect()),\n );\n\n // Clear subscription cache\n this.#subscriptionMux.clearCache();\n\n // Return success if at least one succeeded\n const successCount = results.filter(\n (res) => res.status === 'fulfilled' && res.value.success,\n ).length;\n\n return {\n success: successCount > 0,\n };\n }\n\n async ping(timeoutMs?: number): Promise<void> {\n return this.#getDefaultProvider().ping(timeoutMs);\n }\n\n // ============================================================================\n // Block Explorer\n // ============================================================================\n\n getBlockExplorerUrl(address?: string): string {\n return this.#getDefaultProvider().getBlockExplorerUrl(address);\n }\n\n // ============================================================================\n // HIP-3 (Optional)\n // ============================================================================\n\n async getAvailableDexs(params?: GetAvailableDexsParams): Promise<string[]> {\n const provider = this.#getDefaultProvider();\n if (!provider.getAvailableDexs) {\n return [];\n }\n return provider.getAvailableDexs(params);\n }\n\n // ============================================================================\n // Provider Management\n // ============================================================================\n\n /**\n * Add a new provider to the aggregated provider.\n *\n * @param providerId - Unique identifier for the provider\n * @param provider - Provider instance\n */\n addProvider(providerId: PerpsProviderType, provider: PerpsProvider): void {\n this.#providers.set(providerId, provider);\n this.#deps.debugLogger.log('[AggregatedPerpsProvider] Provider added', {\n providerId,\n });\n }\n\n /**\n * Remove a provider from the aggregated provider.\n *\n * @param providerId - Provider to remove\n * @returns true if removed, false if not found\n */\n removeProvider(providerId: PerpsProviderType): boolean {\n const removed = this.#providers.delete(providerId);\n if (removed) {\n this.#deps.debugLogger.log('[AggregatedPerpsProvider] Provider removed', {\n providerId,\n });\n }\n return removed;\n }\n\n /**\n * Get list of all registered provider IDs.\n *\n * @returns The result of the operation.\n */\n getProviderIds(): PerpsProviderType[] {\n return Array.from(this.#providers.keys());\n }\n\n /**\n * Check if a provider is registered.\n *\n * @param providerId - The provider id value.\n * @returns True if the condition is met.\n */\n hasProvider(providerId: PerpsProviderType): boolean {\n return this.#providers.has(providerId);\n }\n\n /**\n * Get the router instance for external configuration.\n *\n * @returns The result of the operation.\n */\n getRouter(): ProviderRouter {\n return this.#router;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"AggregatedPerpsProvider.cjs","sourceRoot":"","sources":["../../src/providers/AggregatedPerpsProvider.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * AggregatedPerpsProvider - Multi-provider aggregation wrapper\n *\n * Implements PerpsProvider interface to enable seamless multi-provider support.\n * Aggregates read operations from all providers, routes write operations to specific\n * providers based on params.providerId or default provider.\n *\n * Phase 1 Implementation:\n * - Read operations: Aggregate from all providers using Promise.allSettled()\n * - Write operations: Route to params.providerId ?? defaultProvider\n * - Subscriptions: Multiplex via SubscriptionMultiplexer\n * - Lifecycle: Delegate to default provider\n *\n * All returned data includes providerId field for UI differentiation.\n */\n\nimport type { CaipAccountId } from '@metamask/utils';\n\nimport { SubscriptionMultiplexer } from '../aggregation/SubscriptionMultiplexer';\nimport { ProviderRouter } from '../routing/ProviderRouter';\nimport { WebSocketConnectionState } from '../types';\nimport type {\n AccountState,\n AggregatedProviderConfig,\n AggregationMode,\n AssetRoute,\n BatchCancelOrdersParams,\n CancelOrderParams,\n CancelOrderResult,\n CancelOrdersResult,\n ClosePositionParams,\n ClosePositionsParams,\n ClosePositionsResult,\n DepositParams,\n DisconnectResult,\n EditOrderParams,\n FeeCalculationParams,\n FeeCalculationResult,\n Funding,\n GetAccountStateParams,\n GetAvailableDexsParams,\n GetFundingParams,\n GetHistoricalPortfolioParams,\n GetMarketsParams,\n GetOrderFillsParams,\n GetOrdersParams,\n GetOrFetchFillsParams,\n GetPositionsParams,\n GetSupportedPathsParams,\n HistoricalPortfolioResult,\n InitializeResult,\n PerpsPlatformDependencies,\n PerpsProvider,\n LiquidationPriceParams,\n LiveDataConfig,\n MaintenanceMarginParams,\n MarginResult,\n MarketInfo,\n Order,\n OrderFill,\n OrderParams,\n OrderResult,\n PerpsMarketData,\n PerpsProviderType,\n Position,\n ReadyToTradeResult,\n SubscribeAccountParams,\n SubscribeCandlesParams,\n SubscribeOICapsParams,\n SubscribeOrderBookParams,\n SubscribeOrderFillsParams,\n SubscribeOrdersParams,\n SubscribePositionsParams,\n SubscribePricesParams,\n ToggleTestnetResult,\n UpdateMarginParams,\n UpdatePositionTPSLParams,\n UserHistoryItem,\n WithdrawParams,\n WithdrawResult,\n RawLedgerUpdate,\n} from '../types';\n\n/**\n * AggregatedPerpsProvider implements PerpsProvider by coordinating\n * multiple backend providers.\n *\n * Design principles:\n * 1. Read operations aggregate from all providers (parallel)\n * 2. Write operations route to specific provider (explicit > default)\n * 3. Lifecycle operations delegate to default provider\n * 4. All returned data includes providerId for UI differentiation\n *\n * @example\n * ```typescript\n * const aggregated = new AggregatedPerpsProvider({\n * providers: new Map([\n * ['hyperliquid', hlProvider],\n * ['myx', myxProvider],\n * ]),\n * defaultProvider: 'hyperliquid',\n * infrastructure: deps,\n * });\n *\n * // Read: returns positions from all providers\n * const positions = await aggregated.getPositions();\n *\n * // Write: routes to specific or default provider\n * await aggregated.placeOrder({ symbol: 'BTC', providerId: 'myx', ... });\n * ```\n */\nexport class AggregatedPerpsProvider implements PerpsProvider {\n readonly protocolId = 'aggregated';\n\n readonly #providers: Map<PerpsProviderType, PerpsProvider>;\n\n readonly #defaultProvider: PerpsProviderType;\n\n readonly #aggregationMode: AggregationMode;\n\n readonly #deps: PerpsPlatformDependencies;\n\n readonly #router: ProviderRouter;\n\n readonly #subscriptionMux: SubscriptionMultiplexer;\n\n constructor(config: AggregatedProviderConfig) {\n this.#providers = config.providers;\n this.#defaultProvider = config.defaultProvider;\n this.#aggregationMode = config.aggregationMode ?? 'all';\n this.#deps = config.infrastructure;\n\n // Initialize router with default provider\n this.#router = new ProviderRouter({\n defaultProvider: this.#defaultProvider,\n });\n\n // Initialize subscription multiplexer with logger for error reporting\n this.#subscriptionMux = new SubscriptionMultiplexer({\n logger: this.#deps.logger,\n });\n\n this.#deps.debugLogger.log('[AggregatedPerpsProvider] Initialized', {\n providers: Array.from(this.#providers.keys()),\n defaultProvider: this.#defaultProvider,\n aggregationMode: this.#aggregationMode,\n });\n }\n\n // ============================================================================\n // Helper Methods\n // ============================================================================\n\n /**\n * Get list of active providers as tuples for iteration.\n * Returns array of [providerId, provider] pairs.\n *\n * @returns The result of the operation.\n */\n #getActiveProviders(): [PerpsProviderType, PerpsProvider][] {\n return Array.from(this.#providers.entries());\n }\n\n /**\n * Get the default provider instance.\n * Throws if default provider is not available.\n *\n * @returns The result of the operation.\n */\n #getDefaultProvider(): PerpsProvider {\n const provider = this.#providers.get(this.#defaultProvider);\n if (!provider) {\n throw new Error(\n `[AggregatedPerpsProvider] Default provider '${this.#defaultProvider}' not available`,\n );\n }\n return provider;\n }\n\n /**\n * Get provider by ID, falling back to default if not found.\n *\n * @param providerId - The provider id value.\n * @returns The result of the operation.\n */\n #getProviderOrDefault(\n providerId?: PerpsProviderType,\n ): [PerpsProviderType, PerpsProvider] {\n const id = providerId ?? this.#defaultProvider;\n const provider = this.#providers.get(id);\n if (!provider) {\n this.#deps.debugLogger.log(\n `[AggregatedPerpsProvider] Provider '${id}' not found, using default`,\n );\n return [this.#defaultProvider, this.#getDefaultProvider()];\n }\n return [id, provider];\n }\n\n /**\n * Extract successful results from Promise.allSettled.\n * Logs errors for failed promises.\n *\n * @param results - Results from Promise.allSettled\n * @param context - Context string for logging\n * @returns Array of successful values\n */\n #extractSuccessfulResults<TResult>(\n results: PromiseSettledResult<TResult>[],\n context: string,\n ): TResult[] {\n const successful: TResult[] = [];\n results.forEach((result, index) => {\n if (result.status === 'fulfilled') {\n successful.push(result.value);\n } else {\n this.#deps.debugLogger.log(\n `[AggregatedPerpsProvider] ${context} failed for provider ${index}`,\n { error: result.reason },\n );\n }\n });\n return successful;\n }\n\n // ============================================================================\n // Asset Routes (Synchronous - delegate to default provider)\n // ============================================================================\n\n getDepositRoutes(params?: GetSupportedPathsParams): AssetRoute[] {\n return this.#getDefaultProvider().getDepositRoutes(params);\n }\n\n getWithdrawalRoutes(params?: GetSupportedPathsParams): AssetRoute[] {\n return this.#getDefaultProvider().getWithdrawalRoutes(params);\n }\n\n // ============================================================================\n // Read Operations (Aggregate from all providers)\n // ============================================================================\n\n async getPositions(params?: GetPositionsParams): Promise<Position[]> {\n const results = await Promise.allSettled(\n this.#getActiveProviders().map(async ([id, provider]) => {\n const positions = await provider.getPositions(params);\n return positions.map((pos) => ({ ...pos, providerId: id }));\n }),\n );\n\n return this.#extractSuccessfulResults(results, 'getPositions').flat();\n }\n\n async getAccountState(params?: GetAccountStateParams): Promise<AccountState> {\n // Return account state from default provider with providerId injected\n const provider = this.#getDefaultProvider();\n const state = await provider.getAccountState(params);\n return { ...state, providerId: this.#defaultProvider };\n }\n\n async getMarkets(params?: GetMarketsParams): Promise<MarketInfo[]> {\n const results = await Promise.allSettled(\n this.#getActiveProviders().map(async ([id, provider]) => {\n const markets = await provider.getMarkets(params);\n return markets.map((market) => ({ ...market, providerId: id }));\n }),\n );\n\n const allMarkets = this.#extractSuccessfulResults(\n results,\n 'getMarkets',\n ).flat();\n\n // Deduplicate markets by name (keep first occurrence)\n const seen = new Set<string>();\n return allMarkets.filter((market) => {\n // Use providerId:name as unique key to allow same market from different providers\n const key = `${market.providerId}:${market.name}`;\n if (seen.has(key)) {\n return false;\n }\n seen.add(key);\n return true;\n });\n }\n\n async getMarketDataWithPrices(): Promise<PerpsMarketData[]> {\n const results = await Promise.allSettled(\n this.#getActiveProviders().map(async ([id, provider]) => {\n const data = await provider.getMarketDataWithPrices();\n return data.map((item) => ({ ...item, providerId: id }));\n }),\n );\n\n return this.#extractSuccessfulResults(\n results,\n 'getMarketDataWithPrices',\n ).flat();\n }\n\n async getOrderFills(params?: GetOrderFillsParams): Promise<OrderFill[]> {\n const results = await Promise.allSettled(\n this.#getActiveProviders().map(async ([id, provider]) => {\n const fills = await provider.getOrderFills(params);\n return fills.map((fill) => ({ ...fill, providerId: id }));\n }),\n );\n\n return this.#extractSuccessfulResults(results, 'getOrderFills').flat();\n }\n\n async getOrFetchFills(params?: GetOrFetchFillsParams): Promise<OrderFill[]> {\n const results = await Promise.allSettled(\n this.#getActiveProviders().map(async ([id, provider]) => {\n const fills = await provider.getOrFetchFills(params);\n return fills.map((fill) => ({ ...fill, providerId: id }));\n }),\n );\n\n return this.#extractSuccessfulResults(results, 'getOrFetchFills').flat();\n }\n\n async getOrders(params?: GetOrdersParams): Promise<Order[]> {\n const results = await Promise.allSettled(\n this.#getActiveProviders().map(async ([id, provider]) => {\n const orders = await provider.getOrders(params);\n return orders.map((order) => ({ ...order, providerId: id }));\n }),\n );\n\n return this.#extractSuccessfulResults(results, 'getOrders').flat();\n }\n\n async getOpenOrders(params?: GetOrdersParams): Promise<Order[]> {\n const results = await Promise.allSettled(\n this.#getActiveProviders().map(async ([id, provider]) => {\n const orders = await provider.getOpenOrders(params);\n return orders.map((order) => ({ ...order, providerId: id }));\n }),\n );\n\n return this.#extractSuccessfulResults(results, 'getOpenOrders').flat();\n }\n\n async getFunding(params?: GetFundingParams): Promise<Funding[]> {\n const results = await Promise.allSettled(\n this.#getActiveProviders().map(async ([_providerId, provider]) => {\n const funding = await provider.getFunding(params);\n // Funding type doesn't have providerId - we could add it if needed\n return funding;\n }),\n );\n\n return this.#extractSuccessfulResults(results, 'getFunding').flat();\n }\n\n async getHistoricalPortfolio(\n params?: GetHistoricalPortfolioParams,\n ): Promise<HistoricalPortfolioResult> {\n // Delegate to default provider\n return this.#getDefaultProvider().getHistoricalPortfolio(params);\n }\n\n /**\n * Get user non-funding ledger updates from default provider.\n *\n * @param params - Optional parameters\n * @param params.accountId - Account ID to filter by\n * @param params.startTime - Start time filter\n * @param params.endTime - End time filter\n * @returns Raw ledger updates\n */\n async getUserNonFundingLedgerUpdates(params?: {\n accountId?: string;\n startTime?: number;\n endTime?: number;\n }): Promise<RawLedgerUpdate[]> {\n // Delegate to default provider (protocol-specific)\n return this.#getDefaultProvider().getUserNonFundingLedgerUpdates(params);\n }\n\n /**\n * Get user history from all providers.\n *\n * @param params - Optional parameters\n * @param params.accountId - Account ID to filter by\n * @param params.startTime - Start time filter\n * @param params.endTime - End time filter\n * @returns Aggregated user history with providerId\n */\n async getUserHistory(params?: {\n accountId?: CaipAccountId;\n startTime?: number;\n endTime?: number;\n }): Promise<UserHistoryItem[]> {\n const results = await Promise.allSettled(\n this.#getActiveProviders().map(async ([id, provider]) => {\n const history = await provider.getUserHistory(params);\n return history.map((item) => ({ ...item, providerId: id }));\n }),\n );\n\n return this.#extractSuccessfulResults(results, 'getUserHistory').flat();\n }\n\n // ============================================================================\n // Write Operations (Route to specific provider)\n // ============================================================================\n\n async placeOrder(params: OrderParams): Promise<OrderResult> {\n const [providerId, provider] = this.#getProviderOrDefault(\n params.providerId,\n );\n\n this.#deps.debugLogger.log('[AggregatedPerpsProvider] placeOrder routing', {\n requestedProvider: params.providerId,\n actualProvider: providerId,\n symbol: params.symbol,\n });\n\n const result = await provider.placeOrder(params);\n return { ...result, providerId };\n }\n\n async editOrder(params: EditOrderParams): Promise<OrderResult> {\n // EditOrderParams contains OrderParams in newOrder which may have providerId\n const [providerId, provider] = this.#getProviderOrDefault(\n params.newOrder.providerId,\n );\n const result = await provider.editOrder(params);\n return { ...result, providerId };\n }\n\n async cancelOrder(params: CancelOrderParams): Promise<CancelOrderResult> {\n const [providerId, provider] = this.#getProviderOrDefault(\n params.providerId,\n );\n const result = await provider.cancelOrder(params);\n return { ...result, providerId };\n }\n\n async cancelOrders(\n params: BatchCancelOrdersParams,\n ): Promise<CancelOrdersResult> {\n // Batch cancel delegates to default provider\n const provider = this.#getDefaultProvider();\n if (!provider.cancelOrders) {\n return {\n success: false,\n successCount: 0,\n failureCount: params.length,\n results: params.map((param) => ({\n orderId: param.orderId,\n symbol: param.symbol,\n success: false,\n error: 'Batch cancel not supported',\n })),\n };\n }\n return provider.cancelOrders(params);\n }\n\n async closePosition(params: ClosePositionParams): Promise<OrderResult> {\n const [providerId, provider] = this.#getProviderOrDefault(\n params.providerId,\n );\n const result = await provider.closePosition(params);\n return { ...result, providerId };\n }\n\n async closePositions(\n params: ClosePositionsParams,\n ): Promise<ClosePositionsResult> {\n // Batch close delegates to default provider\n const provider = this.#getDefaultProvider();\n if (!provider.closePositions) {\n return {\n success: false,\n successCount: 0,\n failureCount: 0,\n results: [],\n };\n }\n return provider.closePositions(params);\n }\n\n async updatePositionTPSL(\n params: UpdatePositionTPSLParams,\n ): Promise<OrderResult> {\n const [providerId, provider] = this.#getProviderOrDefault(\n params.providerId,\n );\n const result = await provider.updatePositionTPSL(params);\n return { ...result, providerId };\n }\n\n async updateMargin(params: UpdateMarginParams): Promise<MarginResult> {\n const [, provider] = this.#getProviderOrDefault(params.providerId);\n return provider.updateMargin(params);\n }\n\n async withdraw(params: WithdrawParams): Promise<WithdrawResult> {\n const [, provider] = this.#getProviderOrDefault(params.providerId);\n return provider.withdraw(params);\n }\n\n // ============================================================================\n // Validation (Route to specific provider)\n // ============================================================================\n\n async validateDeposit(\n params: DepositParams,\n ): Promise<{ isValid: boolean; error?: string }> {\n return this.#getDefaultProvider().validateDeposit(params);\n }\n\n async validateOrder(\n params: OrderParams,\n ): Promise<{ isValid: boolean; error?: string }> {\n const [, provider] = this.#getProviderOrDefault(params.providerId);\n return provider.validateOrder(params);\n }\n\n async validateClosePosition(\n params: ClosePositionParams,\n ): Promise<{ isValid: boolean; error?: string }> {\n const [, provider] = this.#getProviderOrDefault(params.providerId);\n return provider.validateClosePosition(params);\n }\n\n async validateWithdrawal(\n params: WithdrawParams,\n ): Promise<{ isValid: boolean; error?: string }> {\n const [, provider] = this.#getProviderOrDefault(params.providerId);\n return provider.validateWithdrawal(params);\n }\n\n // ============================================================================\n // Protocol Calculations (Delegate to default or route)\n // ============================================================================\n\n async calculateLiquidationPrice(\n params: LiquidationPriceParams,\n ): Promise<string> {\n return this.#getDefaultProvider().calculateLiquidationPrice(params);\n }\n\n async calculateMaintenanceMargin(\n params: MaintenanceMarginParams,\n ): Promise<number> {\n return this.#getDefaultProvider().calculateMaintenanceMargin(params);\n }\n\n async getMaxLeverage(asset: string): Promise<number> {\n return this.#getDefaultProvider().getMaxLeverage(asset);\n }\n\n async calculateFees(\n params: FeeCalculationParams,\n ): Promise<FeeCalculationResult> {\n return this.#getDefaultProvider().calculateFees(params);\n }\n\n // ============================================================================\n // Subscriptions (Multiplex via SubscriptionMultiplexer)\n // ============================================================================\n\n subscribeToPrices(params: SubscribePricesParams): () => void {\n return this.#subscriptionMux.subscribeToPrices({\n ...params,\n providers: this.#getActiveProviders(),\n aggregationMode: 'merge',\n });\n }\n\n subscribeToPositions(params: SubscribePositionsParams): () => void {\n return this.#subscriptionMux.subscribeToPositions({\n ...params,\n providers: this.#getActiveProviders(),\n });\n }\n\n subscribeToOrderFills(params: SubscribeOrderFillsParams): () => void {\n return this.#subscriptionMux.subscribeToOrderFills({\n ...params,\n providers: this.#getActiveProviders(),\n });\n }\n\n subscribeToOrders(params: SubscribeOrdersParams): () => void {\n return this.#subscriptionMux.subscribeToOrders({\n ...params,\n providers: this.#getActiveProviders(),\n });\n }\n\n subscribeToAccount(params: SubscribeAccountParams): () => void {\n // For account subscriptions, we emit as array for multi-provider\n // but the callback expects single AccountState\n // Delegate to default provider for now\n return this.#getDefaultProvider().subscribeToAccount(params);\n }\n\n subscribeToOICaps(params: SubscribeOICapsParams): () => void {\n // Delegate to default provider\n return this.#getDefaultProvider().subscribeToOICaps(params);\n }\n\n subscribeToCandles(params: SubscribeCandlesParams): () => void {\n // Delegate to default provider\n return this.#getDefaultProvider().subscribeToCandles(params);\n }\n\n subscribeToOrderBook(params: SubscribeOrderBookParams): () => void {\n // Delegate to default provider\n return this.#getDefaultProvider().subscribeToOrderBook(params);\n }\n\n // ============================================================================\n // Configuration\n // ============================================================================\n\n setLiveDataConfig(config: Partial<LiveDataConfig>): void {\n // Apply config to all providers\n this.#providers.forEach((provider) => {\n provider.setLiveDataConfig(config);\n });\n }\n\n setUserFeeDiscount(discountBips: number | undefined): void {\n // Apply to all providers that support it\n this.#providers.forEach((provider) => {\n if (provider.setUserFeeDiscount) {\n provider.setUserFeeDiscount(discountBips);\n }\n });\n }\n\n // ============================================================================\n // Lifecycle (Delegate to default provider)\n // ============================================================================\n\n async toggleTestnet(): Promise<ToggleTestnetResult> {\n return this.#getDefaultProvider().toggleTestnet();\n }\n\n async initialize(): Promise<InitializeResult> {\n // Initialize default provider\n const result = await this.#getDefaultProvider().initialize();\n\n // Optionally initialize other providers in background\n // For Phase 1, we only initialize default provider\n return result;\n }\n\n async isReadyToTrade(): Promise<ReadyToTradeResult> {\n return this.#getDefaultProvider().isReadyToTrade();\n }\n\n async disconnect(): Promise<DisconnectResult> {\n // Disconnect all providers\n const results = await Promise.allSettled(\n this.#getActiveProviders().map(([, provider]) => provider.disconnect()),\n );\n\n // Clear subscription cache\n this.#subscriptionMux.clearCache();\n\n // Return success if at least one succeeded\n const successCount = results.filter(\n (res) => res.status === 'fulfilled' && res.value.success,\n ).length;\n\n return {\n success: successCount > 0,\n };\n }\n\n async ping(timeoutMs?: number): Promise<void> {\n return this.#getDefaultProvider().ping(timeoutMs);\n }\n\n getWebSocketConnectionState(): WebSocketConnectionState {\n const provider = this.#getDefaultProvider();\n if (provider.getWebSocketConnectionState) {\n return provider.getWebSocketConnectionState();\n }\n return WebSocketConnectionState.Disconnected;\n }\n\n subscribeToConnectionState(\n listener: (\n state: WebSocketConnectionState,\n reconnectionAttempt: number,\n ) => void,\n ): () => void {\n const provider = this.#getDefaultProvider();\n if (provider.subscribeToConnectionState) {\n return provider.subscribeToConnectionState(listener);\n }\n listener(WebSocketConnectionState.Disconnected, 0);\n return () => {\n /* noop */\n };\n }\n\n async reconnect(): Promise<void> {\n const provider = this.#getDefaultProvider();\n if (provider.reconnect) {\n await provider.reconnect();\n }\n }\n\n // ============================================================================\n // Block Explorer\n // ============================================================================\n\n getBlockExplorerUrl(address?: string): string {\n return this.#getDefaultProvider().getBlockExplorerUrl(address);\n }\n\n // ============================================================================\n // HIP-3 (Optional)\n // ============================================================================\n\n async getAvailableDexs(params?: GetAvailableDexsParams): Promise<string[]> {\n const provider = this.#getDefaultProvider();\n if (!provider.getAvailableDexs) {\n return [];\n }\n return provider.getAvailableDexs(params);\n }\n\n // ============================================================================\n // Provider Management\n // ============================================================================\n\n /**\n * Add a new provider to the aggregated provider.\n *\n * @param providerId - Unique identifier for the provider\n * @param provider - Provider instance\n */\n addProvider(providerId: PerpsProviderType, provider: PerpsProvider): void {\n this.#providers.set(providerId, provider);\n this.#deps.debugLogger.log('[AggregatedPerpsProvider] Provider added', {\n providerId,\n });\n }\n\n /**\n * Remove a provider from the aggregated provider.\n *\n * @param providerId - Provider to remove\n * @returns true if removed, false if not found\n */\n removeProvider(providerId: PerpsProviderType): boolean {\n const removed = this.#providers.delete(providerId);\n if (removed) {\n this.#deps.debugLogger.log('[AggregatedPerpsProvider] Provider removed', {\n providerId,\n });\n }\n return removed;\n }\n\n /**\n * Get list of all registered provider IDs.\n *\n * @returns The result of the operation.\n */\n getProviderIds(): PerpsProviderType[] {\n return Array.from(this.#providers.keys());\n }\n\n /**\n * Check if a provider is registered.\n *\n * @param providerId - The provider id value.\n * @returns True if the condition is met.\n */\n hasProvider(providerId: PerpsProviderType): boolean {\n return this.#providers.has(providerId);\n }\n\n /**\n * Get the router instance for external configuration.\n *\n * @returns The result of the operation.\n */\n getRouter(): ProviderRouter {\n return this.#router;\n }\n}\n"]}
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import type { CaipAccountId } from "@metamask/utils";
|
|
17
17
|
import { ProviderRouter } from "../routing/ProviderRouter.cjs";
|
|
18
|
+
import { WebSocketConnectionState } from "../types/index.cjs";
|
|
18
19
|
import type { AccountState, AggregatedProviderConfig, AssetRoute, BatchCancelOrdersParams, CancelOrderParams, CancelOrderResult, CancelOrdersResult, ClosePositionParams, ClosePositionsParams, ClosePositionsResult, DepositParams, DisconnectResult, EditOrderParams, FeeCalculationParams, FeeCalculationResult, Funding, GetAccountStateParams, GetAvailableDexsParams, GetFundingParams, GetHistoricalPortfolioParams, GetMarketsParams, GetOrderFillsParams, GetOrdersParams, GetOrFetchFillsParams, GetPositionsParams, GetSupportedPathsParams, HistoricalPortfolioResult, InitializeResult, PerpsProvider, LiquidationPriceParams, LiveDataConfig, MaintenanceMarginParams, MarginResult, MarketInfo, Order, OrderFill, OrderParams, OrderResult, PerpsMarketData, PerpsProviderType, Position, ReadyToTradeResult, SubscribeAccountParams, SubscribeCandlesParams, SubscribeOICapsParams, SubscribeOrderBookParams, SubscribeOrderFillsParams, SubscribeOrdersParams, SubscribePositionsParams, SubscribePricesParams, ToggleTestnetResult, UpdateMarginParams, UpdatePositionTPSLParams, UserHistoryItem, WithdrawParams, WithdrawResult, RawLedgerUpdate } from "../types/index.cjs";
|
|
19
20
|
/**
|
|
20
21
|
* AggregatedPerpsProvider implements PerpsProvider by coordinating
|
|
@@ -132,6 +133,9 @@ export declare class AggregatedPerpsProvider implements PerpsProvider {
|
|
|
132
133
|
isReadyToTrade(): Promise<ReadyToTradeResult>;
|
|
133
134
|
disconnect(): Promise<DisconnectResult>;
|
|
134
135
|
ping(timeoutMs?: number): Promise<void>;
|
|
136
|
+
getWebSocketConnectionState(): WebSocketConnectionState;
|
|
137
|
+
subscribeToConnectionState(listener: (state: WebSocketConnectionState, reconnectionAttempt: number) => void): () => void;
|
|
138
|
+
reconnect(): Promise<void>;
|
|
135
139
|
getBlockExplorerUrl(address?: string): string;
|
|
136
140
|
getAvailableDexs(params?: GetAvailableDexsParams): Promise<string[]>;
|
|
137
141
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AggregatedPerpsProvider.d.cts","sourceRoot":"","sources":["../../src/providers/AggregatedPerpsProvider.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"AggregatedPerpsProvider.d.cts","sourceRoot":"","sources":["../../src/providers/AggregatedPerpsProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import type { CaipAccountId } from "@metamask/utils";
|
|
17
17
|
import { ProviderRouter } from "../routing/ProviderRouter.mjs";
|
|
18
|
+
import { WebSocketConnectionState } from "../types/index.mjs";
|
|
18
19
|
import type { AccountState, AggregatedProviderConfig, AssetRoute, BatchCancelOrdersParams, CancelOrderParams, CancelOrderResult, CancelOrdersResult, ClosePositionParams, ClosePositionsParams, ClosePositionsResult, DepositParams, DisconnectResult, EditOrderParams, FeeCalculationParams, FeeCalculationResult, Funding, GetAccountStateParams, GetAvailableDexsParams, GetFundingParams, GetHistoricalPortfolioParams, GetMarketsParams, GetOrderFillsParams, GetOrdersParams, GetOrFetchFillsParams, GetPositionsParams, GetSupportedPathsParams, HistoricalPortfolioResult, InitializeResult, PerpsProvider, LiquidationPriceParams, LiveDataConfig, MaintenanceMarginParams, MarginResult, MarketInfo, Order, OrderFill, OrderParams, OrderResult, PerpsMarketData, PerpsProviderType, Position, ReadyToTradeResult, SubscribeAccountParams, SubscribeCandlesParams, SubscribeOICapsParams, SubscribeOrderBookParams, SubscribeOrderFillsParams, SubscribeOrdersParams, SubscribePositionsParams, SubscribePricesParams, ToggleTestnetResult, UpdateMarginParams, UpdatePositionTPSLParams, UserHistoryItem, WithdrawParams, WithdrawResult, RawLedgerUpdate } from "../types/index.mjs";
|
|
19
20
|
/**
|
|
20
21
|
* AggregatedPerpsProvider implements PerpsProvider by coordinating
|
|
@@ -132,6 +133,9 @@ export declare class AggregatedPerpsProvider implements PerpsProvider {
|
|
|
132
133
|
isReadyToTrade(): Promise<ReadyToTradeResult>;
|
|
133
134
|
disconnect(): Promise<DisconnectResult>;
|
|
134
135
|
ping(timeoutMs?: number): Promise<void>;
|
|
136
|
+
getWebSocketConnectionState(): WebSocketConnectionState;
|
|
137
|
+
subscribeToConnectionState(listener: (state: WebSocketConnectionState, reconnectionAttempt: number) => void): () => void;
|
|
138
|
+
reconnect(): Promise<void>;
|
|
135
139
|
getBlockExplorerUrl(address?: string): string;
|
|
136
140
|
getAvailableDexs(params?: GetAvailableDexsParams): Promise<string[]>;
|
|
137
141
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AggregatedPerpsProvider.d.mts","sourceRoot":"","sources":["../../src/providers/AggregatedPerpsProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,wBAAwB;AAGrD,OAAO,EAAE,cAAc,EAAE,sCAAkC;AAC3D,OAAO,KAAK,EACV,YAAY,EACZ,wBAAwB,EAExB,UAAU,EACV,uBAAuB,EACvB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACpB,OAAO,EACP,qBAAqB,EACrB,sBAAsB,EACtB,gBAAgB,EAChB,4BAA4B,EAC5B,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,qBAAqB,EACrB,kBAAkB,EAClB,uBAAuB,EACvB,yBAAyB,EACzB,gBAAgB,EAEhB,aAAa,EACb,sBAAsB,EACtB,cAAc,EACd,uBAAuB,EACvB,YAAY,EACZ,UAAU,EACV,KAAK,EACL,SAAS,EACT,WAAW,EACX,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,QAAQ,EACR,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,EACrB,wBAAwB,EACxB,yBAAyB,EACzB,qBAAqB,EACrB,wBAAwB,EACxB,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EAClB,wBAAwB,EACxB,eAAe,EACf,cAAc,EACd,cAAc,EACd,eAAe,EAChB,2BAAiB;AAElB;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,uBAAwB,YAAW,aAAa;;IAC3D,QAAQ,CAAC,UAAU,gBAAgB;gBAcvB,MAAM,EAAE,wBAAwB;IAuG5C,gBAAgB,CAAC,MAAM,CAAC,EAAE,uBAAuB,GAAG,UAAU,EAAE;IAIhE,mBAAmB,CAAC,MAAM,CAAC,EAAE,uBAAuB,GAAG,UAAU,EAAE;IAQ7D,YAAY,CAAC,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAW9D,eAAe,CAAC,MAAM,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,YAAY,CAAC;IAOtE,UAAU,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IA0B5D,uBAAuB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAcrD,aAAa,CAAC,MAAM,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAWjE,eAAe,CAAC,MAAM,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAWrE,SAAS,CAAC,MAAM,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAWrD,aAAa,CAAC,MAAM,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAWzD,UAAU,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAYzD,sBAAsB,CAC1B,MAAM,CAAC,EAAE,4BAA4B,GACpC,OAAO,CAAC,yBAAyB,CAAC;IAKrC;;;;;;;;OAQG;IACG,8BAA8B,CAAC,MAAM,CAAC,EAAE;QAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAK9B;;;;;;;;OAQG;IACG,cAAc,CAAC,MAAM,CAAC,EAAE;QAC5B,SAAS,CAAC,EAAE,aAAa,CAAC;QAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAexB,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAerD,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC;IASxD,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAQlE,YAAY,CAChB,MAAM,EAAE,uBAAuB,GAC9B,OAAO,CAAC,kBAAkB,CAAC;IAmBxB,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,WAAW,CAAC;IAQhE,cAAc,CAClB,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,oBAAoB,CAAC;IAc1B,kBAAkB,CACtB,MAAM,EAAE,wBAAwB,GAC/B,OAAO,CAAC,WAAW,CAAC;IAQjB,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,YAAY,CAAC;IAK/D,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;IASzD,eAAe,CACnB,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAI1C,aAAa,CACjB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAK1C,qBAAqB,CACzB,MAAM,EAAE,mBAAmB,GAC1B,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAK1C,kBAAkB,CACtB,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAS1C,yBAAyB,CAC7B,MAAM,EAAE,sBAAsB,GAC7B,OAAO,CAAC,MAAM,CAAC;IAIZ,0BAA0B,CAC9B,MAAM,EAAE,uBAAuB,GAC9B,OAAO,CAAC,MAAM,CAAC;IAIZ,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAI9C,aAAa,CACjB,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,oBAAoB,CAAC;IAQhC,iBAAiB,CAAC,MAAM,EAAE,qBAAqB,GAAG,MAAM,IAAI;IAQ5D,oBAAoB,CAAC,MAAM,EAAE,wBAAwB,GAAG,MAAM,IAAI;IAOlE,qBAAqB,CAAC,MAAM,EAAE,yBAAyB,GAAG,MAAM,IAAI;IAOpE,iBAAiB,CAAC,MAAM,EAAE,qBAAqB,GAAG,MAAM,IAAI;IAO5D,kBAAkB,CAAC,MAAM,EAAE,sBAAsB,GAAG,MAAM,IAAI;IAO9D,iBAAiB,CAAC,MAAM,EAAE,qBAAqB,GAAG,MAAM,IAAI;IAK5D,kBAAkB,CAAC,MAAM,EAAE,sBAAsB,GAAG,MAAM,IAAI;IAK9D,oBAAoB,CAAC,MAAM,EAAE,wBAAwB,GAAG,MAAM,IAAI;IASlE,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI;IAOxD,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAapD,aAAa,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAI7C,UAAU,IAAI,OAAO,CAAC,gBAAgB,CAAC;IASvC,cAAc,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAI7C,UAAU,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAmBvC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"AggregatedPerpsProvider.d.mts","sourceRoot":"","sources":["../../src/providers/AggregatedPerpsProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,6 +27,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
27
27
|
var _AggregatedPerpsProvider_instances, _AggregatedPerpsProvider_providers, _AggregatedPerpsProvider_defaultProvider, _AggregatedPerpsProvider_aggregationMode, _AggregatedPerpsProvider_deps, _AggregatedPerpsProvider_router, _AggregatedPerpsProvider_subscriptionMux, _AggregatedPerpsProvider_getActiveProviders, _AggregatedPerpsProvider_getDefaultProvider, _AggregatedPerpsProvider_getProviderOrDefault, _AggregatedPerpsProvider_extractSuccessfulResults;
|
|
28
28
|
import { SubscriptionMultiplexer } from "../aggregation/SubscriptionMultiplexer.mjs";
|
|
29
29
|
import { ProviderRouter } from "../routing/ProviderRouter.mjs";
|
|
30
|
+
import { WebSocketConnectionState } from "../types/index.mjs";
|
|
30
31
|
/**
|
|
31
32
|
* AggregatedPerpsProvider implements PerpsProvider by coordinating
|
|
32
33
|
* multiple backend providers.
|
|
@@ -401,6 +402,29 @@ export class AggregatedPerpsProvider {
|
|
|
401
402
|
async ping(timeoutMs) {
|
|
402
403
|
return __classPrivateFieldGet(this, _AggregatedPerpsProvider_instances, "m", _AggregatedPerpsProvider_getDefaultProvider).call(this).ping(timeoutMs);
|
|
403
404
|
}
|
|
405
|
+
getWebSocketConnectionState() {
|
|
406
|
+
const provider = __classPrivateFieldGet(this, _AggregatedPerpsProvider_instances, "m", _AggregatedPerpsProvider_getDefaultProvider).call(this);
|
|
407
|
+
if (provider.getWebSocketConnectionState) {
|
|
408
|
+
return provider.getWebSocketConnectionState();
|
|
409
|
+
}
|
|
410
|
+
return WebSocketConnectionState.Disconnected;
|
|
411
|
+
}
|
|
412
|
+
subscribeToConnectionState(listener) {
|
|
413
|
+
const provider = __classPrivateFieldGet(this, _AggregatedPerpsProvider_instances, "m", _AggregatedPerpsProvider_getDefaultProvider).call(this);
|
|
414
|
+
if (provider.subscribeToConnectionState) {
|
|
415
|
+
return provider.subscribeToConnectionState(listener);
|
|
416
|
+
}
|
|
417
|
+
listener(WebSocketConnectionState.Disconnected, 0);
|
|
418
|
+
return () => {
|
|
419
|
+
/* noop */
|
|
420
|
+
};
|
|
421
|
+
}
|
|
422
|
+
async reconnect() {
|
|
423
|
+
const provider = __classPrivateFieldGet(this, _AggregatedPerpsProvider_instances, "m", _AggregatedPerpsProvider_getDefaultProvider).call(this);
|
|
424
|
+
if (provider.reconnect) {
|
|
425
|
+
await provider.reconnect();
|
|
426
|
+
}
|
|
427
|
+
}
|
|
404
428
|
// ============================================================================
|
|
405
429
|
// Block Explorer
|
|
406
430
|
// ============================================================================
|