@metamask-previews/perps-controller 0.0.0-preview-685dbf46b → 1.0.0-preview-bc00f2c
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 +30 -2
- package/dist/PerpsController.cjs +3077 -65
- package/dist/PerpsController.cjs.map +1 -1
- package/dist/PerpsController.d.cts +969 -82
- package/dist/PerpsController.d.cts.map +1 -1
- package/dist/PerpsController.d.mts +969 -82
- package/dist/PerpsController.d.mts.map +1 -1
- package/dist/PerpsController.mjs +3073 -62
- package/dist/PerpsController.mjs.map +1 -1
- package/dist/aggregation/SubscriptionMultiplexer.cjs +441 -0
- package/dist/aggregation/SubscriptionMultiplexer.cjs.map +1 -0
- package/dist/aggregation/SubscriptionMultiplexer.d.cts +171 -0
- package/dist/aggregation/SubscriptionMultiplexer.d.cts.map +1 -0
- package/dist/aggregation/SubscriptionMultiplexer.d.mts +171 -0
- package/dist/aggregation/SubscriptionMultiplexer.d.mts.map +1 -0
- package/dist/aggregation/SubscriptionMultiplexer.mjs +437 -0
- package/dist/aggregation/SubscriptionMultiplexer.mjs.map +1 -0
- package/dist/aggregation/index.cjs +9 -0
- package/dist/aggregation/index.cjs.map +1 -0
- package/dist/aggregation/index.d.cts +6 -0
- package/dist/aggregation/index.d.cts.map +1 -0
- package/dist/aggregation/index.d.mts +6 -0
- package/dist/aggregation/index.d.mts.map +1 -0
- package/dist/aggregation/index.mjs +5 -0
- package/dist/aggregation/index.mjs.map +1 -0
- package/dist/constants/chartConfig.cjs +227 -0
- package/dist/constants/chartConfig.cjs.map +1 -0
- package/dist/constants/chartConfig.d.cts +216 -0
- package/dist/constants/chartConfig.d.cts.map +1 -0
- package/dist/constants/chartConfig.d.mts +216 -0
- package/dist/constants/chartConfig.d.mts.map +1 -0
- package/dist/constants/chartConfig.mjs +221 -0
- package/dist/constants/chartConfig.mjs.map +1 -0
- package/dist/constants/eventNames.cjs +436 -0
- package/dist/constants/eventNames.cjs.map +1 -0
- package/dist/constants/eventNames.d.cts +387 -0
- package/dist/constants/eventNames.d.cts.map +1 -0
- package/dist/constants/eventNames.d.mts +387 -0
- package/dist/constants/eventNames.d.mts.map +1 -0
- package/dist/constants/eventNames.mjs +433 -0
- package/dist/constants/eventNames.mjs.map +1 -0
- package/dist/constants/hyperLiquidConfig.cjs +380 -0
- package/dist/constants/hyperLiquidConfig.cjs.map +1 -0
- package/dist/constants/hyperLiquidConfig.d.cts +236 -0
- package/dist/constants/hyperLiquidConfig.d.cts.map +1 -0
- package/dist/constants/hyperLiquidConfig.d.mts +236 -0
- package/dist/constants/hyperLiquidConfig.d.mts.map +1 -0
- package/dist/constants/hyperLiquidConfig.mjs +371 -0
- package/dist/constants/hyperLiquidConfig.mjs.map +1 -0
- package/dist/constants/index.cjs +28 -0
- package/dist/constants/index.cjs.map +1 -0
- package/dist/constants/index.d.cts +12 -0
- package/dist/constants/index.d.cts.map +1 -0
- package/dist/constants/index.d.mts +12 -0
- package/dist/constants/index.d.mts.map +1 -0
- package/dist/constants/index.mjs +12 -0
- package/dist/constants/index.mjs.map +1 -0
- package/dist/constants/myxConfig.cjs +229 -0
- package/dist/constants/myxConfig.cjs.map +1 -0
- package/dist/constants/myxConfig.d.cts +106 -0
- package/dist/constants/myxConfig.d.cts.map +1 -0
- package/dist/constants/myxConfig.d.mts +106 -0
- package/dist/constants/myxConfig.d.mts.map +1 -0
- package/dist/constants/myxConfig.mjs +219 -0
- package/dist/constants/myxConfig.mjs.map +1 -0
- package/dist/constants/orderTypes.cjs +31 -0
- package/dist/constants/orderTypes.cjs.map +1 -0
- package/dist/constants/orderTypes.d.cts +19 -0
- package/dist/constants/orderTypes.d.cts.map +1 -0
- package/dist/constants/orderTypes.d.mts +19 -0
- package/dist/constants/orderTypes.d.mts.map +1 -0
- package/dist/constants/orderTypes.mjs +27 -0
- package/dist/constants/orderTypes.mjs.map +1 -0
- package/dist/constants/performanceMetrics.cjs +63 -0
- package/dist/constants/performanceMetrics.cjs.map +1 -0
- package/dist/constants/performanceMetrics.d.cts +46 -0
- package/dist/constants/performanceMetrics.d.cts.map +1 -0
- package/dist/constants/performanceMetrics.d.mts +46 -0
- package/dist/constants/performanceMetrics.d.mts.map +1 -0
- package/dist/constants/performanceMetrics.mjs +60 -0
- package/dist/constants/performanceMetrics.mjs.map +1 -0
- package/dist/constants/perpsConfig.cjs +295 -0
- package/dist/constants/perpsConfig.cjs.map +1 -0
- package/dist/constants/perpsConfig.d.cts +221 -0
- package/dist/constants/perpsConfig.d.cts.map +1 -0
- package/dist/constants/perpsConfig.d.mts +221 -0
- package/dist/constants/perpsConfig.d.mts.map +1 -0
- package/dist/constants/perpsConfig.mjs +292 -0
- package/dist/constants/perpsConfig.mjs.map +1 -0
- package/dist/constants/transactionsHistoryConfig.cjs +19 -0
- package/dist/constants/transactionsHistoryConfig.cjs.map +1 -0
- package/dist/constants/transactionsHistoryConfig.d.cts +16 -0
- package/dist/constants/transactionsHistoryConfig.d.cts.map +1 -0
- package/dist/constants/transactionsHistoryConfig.d.mts +16 -0
- package/dist/constants/transactionsHistoryConfig.d.mts.map +1 -0
- package/dist/constants/transactionsHistoryConfig.mjs +16 -0
- package/dist/constants/transactionsHistoryConfig.mjs.map +1 -0
- package/dist/index.cjs +63 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +38 -2
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +38 -2
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +46 -1
- package/dist/index.mjs.map +1 -1
- package/dist/perpsErrorCodes.cjs +80 -0
- package/dist/perpsErrorCodes.cjs.map +1 -0
- package/dist/perpsErrorCodes.d.cts +65 -0
- package/dist/perpsErrorCodes.d.cts.map +1 -0
- package/dist/perpsErrorCodes.d.mts +65 -0
- package/dist/perpsErrorCodes.d.mts.map +1 -0
- package/dist/perpsErrorCodes.mjs +77 -0
- package/dist/perpsErrorCodes.mjs.map +1 -0
- package/dist/providers/AggregatedPerpsProvider.cjs +508 -0
- package/dist/providers/AggregatedPerpsProvider.cjs.map +1 -0
- package/dist/providers/AggregatedPerpsProvider.d.cts +171 -0
- package/dist/providers/AggregatedPerpsProvider.d.cts.map +1 -0
- package/dist/providers/AggregatedPerpsProvider.d.mts +171 -0
- package/dist/providers/AggregatedPerpsProvider.d.mts.map +1 -0
- package/dist/providers/AggregatedPerpsProvider.mjs +504 -0
- package/dist/providers/AggregatedPerpsProvider.mjs.map +1 -0
- package/dist/providers/HyperLiquidProvider.cjs +5679 -0
- package/dist/providers/HyperLiquidProvider.cjs.map +1 -0
- package/dist/providers/HyperLiquidProvider.d.cts +516 -0
- package/dist/providers/HyperLiquidProvider.d.cts.map +1 -0
- package/dist/providers/HyperLiquidProvider.d.mts +516 -0
- package/dist/providers/HyperLiquidProvider.d.mts.map +1 -0
- package/dist/providers/HyperLiquidProvider.mjs +5675 -0
- package/dist/providers/HyperLiquidProvider.mjs.map +1 -0
- package/dist/providers/MYXProvider.cjs +514 -0
- package/dist/providers/MYXProvider.cjs.map +1 -0
- package/dist/providers/MYXProvider.d.cts +105 -0
- package/dist/providers/MYXProvider.d.cts.map +1 -0
- package/dist/providers/MYXProvider.d.mts +105 -0
- package/dist/providers/MYXProvider.d.mts.map +1 -0
- package/dist/providers/MYXProvider.mjs +510 -0
- package/dist/providers/MYXProvider.mjs.map +1 -0
- package/dist/routing/ProviderRouter.cjs +154 -0
- package/dist/routing/ProviderRouter.cjs.map +1 -0
- package/dist/routing/ProviderRouter.d.cts +112 -0
- package/dist/routing/ProviderRouter.d.cts.map +1 -0
- package/dist/routing/ProviderRouter.d.mts +112 -0
- package/dist/routing/ProviderRouter.d.mts.map +1 -0
- package/dist/routing/ProviderRouter.mjs +150 -0
- package/dist/routing/ProviderRouter.mjs.map +1 -0
- package/dist/routing/index.cjs +9 -0
- package/dist/routing/index.cjs.map +1 -0
- package/dist/routing/index.d.cts +6 -0
- package/dist/routing/index.d.cts.map +1 -0
- package/dist/routing/index.d.mts +6 -0
- package/dist/routing/index.d.mts.map +1 -0
- package/dist/routing/index.mjs +5 -0
- package/dist/routing/index.mjs.map +1 -0
- package/dist/selectors.cjs +166 -0
- package/dist/selectors.cjs.map +1 -0
- package/dist/selectors.d.cts +362 -0
- package/dist/selectors.d.cts.map +1 -0
- package/dist/selectors.d.mts +362 -0
- package/dist/selectors.d.mts.map +1 -0
- package/dist/selectors.mjs +158 -0
- package/dist/selectors.mjs.map +1 -0
- package/dist/services/AccountService.cjs +324 -0
- package/dist/services/AccountService.cjs.map +1 -0
- package/dist/services/AccountService.d.cts +56 -0
- package/dist/services/AccountService.d.cts.map +1 -0
- package/dist/services/AccountService.d.mts +56 -0
- package/dist/services/AccountService.d.mts.map +1 -0
- package/dist/services/AccountService.mjs +320 -0
- package/dist/services/AccountService.mjs.map +1 -0
- package/dist/services/DataLakeService.cjs +233 -0
- package/dist/services/DataLakeService.cjs.map +1 -0
- package/dist/services/DataLakeService.d.cts +51 -0
- package/dist/services/DataLakeService.d.cts.map +1 -0
- package/dist/services/DataLakeService.d.mts +51 -0
- package/dist/services/DataLakeService.d.mts.map +1 -0
- package/dist/services/DataLakeService.mjs +229 -0
- package/dist/services/DataLakeService.mjs.map +1 -0
- package/dist/services/DepositService.cjs +98 -0
- package/dist/services/DepositService.cjs.map +1 -0
- package/dist/services/DepositService.d.cts +39 -0
- package/dist/services/DepositService.d.cts.map +1 -0
- package/dist/services/DepositService.d.mts +39 -0
- package/dist/services/DepositService.d.mts.map +1 -0
- package/dist/services/DepositService.mjs +94 -0
- package/dist/services/DepositService.mjs.map +1 -0
- package/dist/services/EligibilityService.cjs +173 -0
- package/dist/services/EligibilityService.cjs.map +1 -0
- package/dist/services/EligibilityService.d.cts +39 -0
- package/dist/services/EligibilityService.d.cts.map +1 -0
- package/dist/services/EligibilityService.d.mts +39 -0
- package/dist/services/EligibilityService.d.mts.map +1 -0
- package/dist/services/EligibilityService.mjs +169 -0
- package/dist/services/EligibilityService.mjs.map +1 -0
- package/dist/services/FeatureFlagConfigurationService.cjs +257 -0
- package/dist/services/FeatureFlagConfigurationService.cjs.map +1 -0
- package/dist/services/FeatureFlagConfigurationService.d.cts +73 -0
- package/dist/services/FeatureFlagConfigurationService.d.cts.map +1 -0
- package/dist/services/FeatureFlagConfigurationService.d.mts +73 -0
- package/dist/services/FeatureFlagConfigurationService.d.mts.map +1 -0
- package/dist/services/FeatureFlagConfigurationService.mjs +253 -0
- package/dist/services/FeatureFlagConfigurationService.mjs.map +1 -0
- package/dist/services/HyperLiquidClientService.cjs +867 -0
- package/dist/services/HyperLiquidClientService.cjs.map +1 -0
- package/dist/services/HyperLiquidClientService.d.cts +214 -0
- package/dist/services/HyperLiquidClientService.d.cts.map +1 -0
- package/dist/services/HyperLiquidClientService.d.mts +214 -0
- package/dist/services/HyperLiquidClientService.d.mts.map +1 -0
- package/dist/services/HyperLiquidClientService.mjs +862 -0
- package/dist/services/HyperLiquidClientService.mjs.map +1 -0
- package/dist/services/HyperLiquidSubscriptionService.cjs +2199 -0
- package/dist/services/HyperLiquidSubscriptionService.cjs.map +1 -0
- package/dist/services/HyperLiquidSubscriptionService.d.cts +187 -0
- package/dist/services/HyperLiquidSubscriptionService.d.cts.map +1 -0
- package/dist/services/HyperLiquidSubscriptionService.d.mts +187 -0
- package/dist/services/HyperLiquidSubscriptionService.d.mts.map +1 -0
- package/dist/services/HyperLiquidSubscriptionService.mjs +2195 -0
- package/dist/services/HyperLiquidSubscriptionService.mjs.map +1 -0
- package/dist/services/HyperLiquidWalletService.cjs +163 -0
- package/dist/services/HyperLiquidWalletService.cjs.map +1 -0
- package/dist/services/HyperLiquidWalletService.d.cts +78 -0
- package/dist/services/HyperLiquidWalletService.d.cts.map +1 -0
- package/dist/services/HyperLiquidWalletService.d.mts +78 -0
- package/dist/services/HyperLiquidWalletService.d.mts.map +1 -0
- package/dist/services/HyperLiquidWalletService.mjs +159 -0
- package/dist/services/HyperLiquidWalletService.mjs.map +1 -0
- package/dist/services/MYXClientService.cjs +304 -0
- package/dist/services/MYXClientService.cjs.map +1 -0
- package/dist/services/MYXClientService.d.cts +81 -0
- package/dist/services/MYXClientService.d.cts.map +1 -0
- package/dist/services/MYXClientService.d.mts +81 -0
- package/dist/services/MYXClientService.d.mts.map +1 -0
- package/dist/services/MYXClientService.mjs +300 -0
- package/dist/services/MYXClientService.mjs.map +1 -0
- package/dist/services/MarketDataService.cjs +848 -0
- package/dist/services/MarketDataService.cjs.map +1 -0
- package/dist/services/MarketDataService.d.cts +291 -0
- package/dist/services/MarketDataService.d.cts.map +1 -0
- package/dist/services/MarketDataService.d.mts +291 -0
- package/dist/services/MarketDataService.d.mts.map +1 -0
- package/dist/services/MarketDataService.mjs +844 -0
- package/dist/services/MarketDataService.mjs.map +1 -0
- package/dist/services/RewardsIntegrationService.cjs +120 -0
- package/dist/services/RewardsIntegrationService.cjs.map +1 -0
- package/dist/services/RewardsIntegrationService.d.cts +28 -0
- package/dist/services/RewardsIntegrationService.d.cts.map +1 -0
- package/dist/services/RewardsIntegrationService.d.mts +28 -0
- package/dist/services/RewardsIntegrationService.d.mts.map +1 -0
- package/dist/services/RewardsIntegrationService.mjs +116 -0
- package/dist/services/RewardsIntegrationService.mjs.map +1 -0
- package/dist/services/ServiceContext.cjs +3 -0
- package/dist/services/ServiceContext.cjs.map +1 -0
- package/dist/services/ServiceContext.d.cts +86 -0
- package/dist/services/ServiceContext.d.cts.map +1 -0
- package/dist/services/ServiceContext.d.mts +86 -0
- package/dist/services/ServiceContext.d.mts.map +1 -0
- package/dist/services/ServiceContext.mjs +2 -0
- package/dist/services/ServiceContext.mjs.map +1 -0
- package/dist/services/TradingReadinessCache.cjs +288 -0
- package/dist/services/TradingReadinessCache.cjs.map +1 -0
- package/dist/services/TradingReadinessCache.d.cts +174 -0
- package/dist/services/TradingReadinessCache.d.cts.map +1 -0
- package/dist/services/TradingReadinessCache.d.mts +174 -0
- package/dist/services/TradingReadinessCache.d.mts.map +1 -0
- package/dist/services/TradingReadinessCache.mjs +285 -0
- package/dist/services/TradingReadinessCache.mjs.map +1 -0
- package/dist/services/TradingService.cjs +1457 -0
- package/dist/services/TradingService.cjs.map +1 -0
- package/dist/services/TradingService.d.cts +195 -0
- package/dist/services/TradingService.d.cts.map +1 -0
- package/dist/services/TradingService.d.mts +195 -0
- package/dist/services/TradingService.d.mts.map +1 -0
- package/dist/services/TradingService.mjs +1453 -0
- package/dist/services/TradingService.mjs.map +1 -0
- package/dist/types/config.cjs +3 -0
- package/dist/types/config.cjs.map +1 -0
- package/dist/types/config.d.cts +49 -0
- package/dist/types/config.d.cts.map +1 -0
- package/dist/types/config.d.mts +49 -0
- package/dist/types/config.d.mts.map +1 -0
- package/dist/types/config.mjs +2 -0
- package/dist/types/config.mjs.map +1 -0
- package/dist/types/hyperliquid-types.cjs +3 -0
- package/dist/types/hyperliquid-types.cjs.map +1 -0
- package/dist/types/hyperliquid-types.d.cts +20 -0
- package/dist/types/hyperliquid-types.d.cts.map +1 -0
- package/dist/types/hyperliquid-types.d.mts +20 -0
- package/dist/types/hyperliquid-types.d.mts.map +1 -0
- package/dist/types/hyperliquid-types.mjs +2 -0
- package/dist/types/hyperliquid-types.mjs.map +1 -0
- package/dist/types/index.cjs +115 -0
- package/dist/types/index.cjs.map +1 -0
- package/dist/types/index.d.cts +1262 -0
- package/dist/types/index.d.cts.map +1 -0
- package/dist/types/index.d.mts +1262 -0
- package/dist/types/index.d.mts.map +1 -0
- package/dist/types/index.mjs +97 -0
- package/dist/types/index.mjs.map +1 -0
- package/dist/types/messenger.cjs +3 -0
- package/dist/types/messenger.cjs.map +1 -0
- package/dist/types/messenger.d.cts +27 -0
- package/dist/types/messenger.d.cts.map +1 -0
- package/dist/types/messenger.d.mts +27 -0
- package/dist/types/messenger.d.mts.map +1 -0
- package/dist/types/messenger.mjs +2 -0
- package/dist/types/messenger.mjs.map +1 -0
- package/dist/types/myx-types.cjs +25 -0
- package/dist/types/myx-types.cjs.map +1 -0
- package/dist/types/myx-types.d.cts +63 -0
- package/dist/types/myx-types.d.cts.map +1 -0
- package/dist/types/myx-types.d.mts +63 -0
- package/dist/types/myx-types.d.mts.map +1 -0
- package/dist/types/myx-types.mjs +22 -0
- package/dist/types/myx-types.mjs.map +1 -0
- package/dist/types/perps-types.cjs +4 -0
- package/dist/types/perps-types.cjs.map +1 -0
- package/dist/types/perps-types.d.cts +105 -0
- package/dist/types/perps-types.d.cts.map +1 -0
- package/dist/types/perps-types.d.mts +105 -0
- package/dist/types/perps-types.d.mts.map +1 -0
- package/dist/types/perps-types.mjs +2 -0
- package/dist/types/perps-types.mjs.map +1 -0
- package/dist/types/token.cjs +3 -0
- package/dist/types/token.cjs.map +1 -0
- package/dist/types/token.d.cts +25 -0
- package/dist/types/token.d.cts.map +1 -0
- package/dist/types/token.d.mts +25 -0
- package/dist/types/token.d.mts.map +1 -0
- package/dist/types/token.mjs +2 -0
- package/dist/types/token.mjs.map +1 -0
- package/dist/types/transactionTypes.cjs +28 -0
- package/dist/types/transactionTypes.cjs.map +1 -0
- package/dist/types/transactionTypes.d.cts +64 -0
- package/dist/types/transactionTypes.d.cts.map +1 -0
- package/dist/types/transactionTypes.d.mts +64 -0
- package/dist/types/transactionTypes.d.mts.map +1 -0
- package/dist/types/transactionTypes.mjs +23 -0
- package/dist/types/transactionTypes.mjs.map +1 -0
- package/dist/utils/accountUtils.cjs +100 -0
- package/dist/utils/accountUtils.cjs.map +1 -0
- package/dist/utils/accountUtils.d.cts +30 -0
- package/dist/utils/accountUtils.d.cts.map +1 -0
- package/dist/utils/accountUtils.d.mts +30 -0
- package/dist/utils/accountUtils.d.mts.map +1 -0
- package/dist/utils/accountUtils.mjs +92 -0
- package/dist/utils/accountUtils.mjs.map +1 -0
- package/dist/utils/errorUtils.cjs +35 -0
- package/dist/utils/errorUtils.cjs.map +1 -0
- package/dist/utils/errorUtils.d.cts +15 -0
- package/dist/utils/errorUtils.d.cts.map +1 -0
- package/dist/utils/errorUtils.d.mts +15 -0
- package/dist/utils/errorUtils.d.mts.map +1 -0
- package/dist/utils/errorUtils.mjs +31 -0
- package/dist/utils/errorUtils.mjs.map +1 -0
- package/dist/utils/hyperLiquidAdapter.cjs +331 -0
- package/dist/utils/hyperLiquidAdapter.cjs.map +1 -0
- package/dist/utils/hyperLiquidAdapter.d.cts +42 -0
- package/dist/utils/hyperLiquidAdapter.d.cts.map +1 -0
- package/dist/utils/hyperLiquidAdapter.d.mts +42 -0
- package/dist/utils/hyperLiquidAdapter.d.mts.map +1 -0
- package/dist/utils/hyperLiquidAdapter.mjs +316 -0
- package/dist/utils/hyperLiquidAdapter.mjs.map +1 -0
- package/dist/utils/hyperLiquidOrderBookProcessor.cjs +83 -0
- package/dist/utils/hyperLiquidOrderBookProcessor.cjs.map +1 -0
- package/dist/utils/hyperLiquidOrderBookProcessor.d.cts +55 -0
- package/dist/utils/hyperLiquidOrderBookProcessor.d.cts.map +1 -0
- package/dist/utils/hyperLiquidOrderBookProcessor.d.mts +55 -0
- package/dist/utils/hyperLiquidOrderBookProcessor.d.mts.map +1 -0
- package/dist/utils/hyperLiquidOrderBookProcessor.mjs +78 -0
- package/dist/utils/hyperLiquidOrderBookProcessor.mjs.map +1 -0
- package/dist/utils/hyperLiquidValidation.cjs +426 -0
- package/dist/utils/hyperLiquidValidation.cjs.map +1 -0
- package/dist/utils/hyperLiquidValidation.d.cts +143 -0
- package/dist/utils/hyperLiquidValidation.d.cts.map +1 -0
- package/dist/utils/hyperLiquidValidation.d.mts +143 -0
- package/dist/utils/hyperLiquidValidation.d.mts.map +1 -0
- package/dist/utils/hyperLiquidValidation.mjs +413 -0
- package/dist/utils/hyperLiquidValidation.mjs.map +1 -0
- package/dist/utils/idUtils.cjs +18 -0
- package/dist/utils/idUtils.cjs.map +1 -0
- package/dist/utils/idUtils.d.cts +6 -0
- package/dist/utils/idUtils.d.cts.map +1 -0
- package/dist/utils/idUtils.d.mts +6 -0
- package/dist/utils/idUtils.d.mts.map +1 -0
- package/dist/utils/idUtils.mjs +10 -0
- package/dist/utils/idUtils.mjs.map +1 -0
- package/dist/utils/index.cjs +59 -0
- package/dist/utils/index.cjs.map +1 -0
- package/dist/utils/index.d.cts +25 -0
- package/dist/utils/index.d.cts.map +1 -0
- package/dist/utils/index.d.mts +25 -0
- package/dist/utils/index.d.mts.map +1 -0
- package/dist/utils/index.mjs +30 -0
- package/dist/utils/index.mjs.map +1 -0
- package/dist/utils/marketDataTransform.cjs +211 -0
- package/dist/utils/marketDataTransform.cjs.map +1 -0
- package/dist/utils/marketDataTransform.d.cts +40 -0
- package/dist/utils/marketDataTransform.d.cts.map +1 -0
- package/dist/utils/marketDataTransform.d.mts +40 -0
- package/dist/utils/marketDataTransform.d.mts.map +1 -0
- package/dist/utils/marketDataTransform.mjs +205 -0
- package/dist/utils/marketDataTransform.mjs.map +1 -0
- package/dist/utils/marketUtils.cjs +151 -0
- package/dist/utils/marketUtils.cjs.map +1 -0
- package/dist/utils/marketUtils.d.cts +30 -0
- package/dist/utils/marketUtils.d.cts.map +1 -0
- package/dist/utils/marketUtils.d.mts +30 -0
- package/dist/utils/marketUtils.d.mts.map +1 -0
- package/dist/utils/marketUtils.mjs +138 -0
- package/dist/utils/marketUtils.mjs.map +1 -0
- package/dist/utils/myxAdapter.cjs +224 -0
- package/dist/utils/myxAdapter.cjs.map +1 -0
- package/dist/utils/myxAdapter.d.cts +81 -0
- package/dist/utils/myxAdapter.d.cts.map +1 -0
- package/dist/utils/myxAdapter.d.mts +81 -0
- package/dist/utils/myxAdapter.d.mts.map +1 -0
- package/dist/utils/myxAdapter.mjs +213 -0
- package/dist/utils/myxAdapter.mjs.map +1 -0
- package/dist/utils/orderCalculations.cjs +283 -0
- package/dist/utils/orderCalculations.cjs.map +1 -0
- package/dist/utils/orderCalculations.d.cts +107 -0
- package/dist/utils/orderCalculations.d.cts.map +1 -0
- package/dist/utils/orderCalculations.d.mts +107 -0
- package/dist/utils/orderCalculations.d.mts.map +1 -0
- package/dist/utils/orderCalculations.mjs +274 -0
- package/dist/utils/orderCalculations.mjs.map +1 -0
- package/dist/utils/rewardsUtils.cjs +98 -0
- package/dist/utils/rewardsUtils.cjs.map +1 -0
- package/dist/utils/rewardsUtils.d.cts +33 -0
- package/dist/utils/rewardsUtils.d.cts.map +1 -0
- package/dist/utils/rewardsUtils.d.mts +33 -0
- package/dist/utils/rewardsUtils.d.mts.map +1 -0
- package/dist/utils/rewardsUtils.mjs +92 -0
- package/dist/utils/rewardsUtils.mjs.map +1 -0
- package/dist/utils/significantFigures.cjs +88 -0
- package/dist/utils/significantFigures.cjs.map +1 -0
- package/dist/utils/significantFigures.d.cts +25 -0
- package/dist/utils/significantFigures.d.cts.map +1 -0
- package/dist/utils/significantFigures.d.mts +25 -0
- package/dist/utils/significantFigures.d.mts.map +1 -0
- package/dist/utils/significantFigures.mjs +82 -0
- package/dist/utils/significantFigures.mjs.map +1 -0
- package/dist/utils/sortMarkets.cjs +93 -0
- package/dist/utils/sortMarkets.cjs.map +1 -0
- package/dist/utils/sortMarkets.d.cts +27 -0
- package/dist/utils/sortMarkets.d.cts.map +1 -0
- package/dist/utils/sortMarkets.d.mts +27 -0
- package/dist/utils/sortMarkets.d.mts.map +1 -0
- package/dist/utils/sortMarkets.mjs +88 -0
- package/dist/utils/sortMarkets.mjs.map +1 -0
- package/dist/utils/standaloneInfoClient.cjs +70 -0
- package/dist/utils/standaloneInfoClient.cjs.map +1 -0
- package/dist/utils/standaloneInfoClient.d.cts +37 -0
- package/dist/utils/standaloneInfoClient.d.cts.map +1 -0
- package/dist/utils/standaloneInfoClient.d.mts +37 -0
- package/dist/utils/standaloneInfoClient.d.mts.map +1 -0
- package/dist/utils/standaloneInfoClient.mjs +64 -0
- package/dist/utils/standaloneInfoClient.mjs.map +1 -0
- package/dist/utils/stringParseUtils.cjs +18 -0
- package/dist/utils/stringParseUtils.cjs.map +1 -0
- package/dist/utils/stringParseUtils.d.cts +3 -0
- package/dist/utils/stringParseUtils.d.cts.map +1 -0
- package/dist/utils/stringParseUtils.d.mts +3 -0
- package/dist/utils/stringParseUtils.d.mts.map +1 -0
- package/dist/utils/stringParseUtils.mjs +13 -0
- package/dist/utils/stringParseUtils.mjs.map +1 -0
- package/dist/utils/transferData.cjs +33 -0
- package/dist/utils/transferData.cjs.map +1 -0
- package/dist/utils/transferData.d.cts +9 -0
- package/dist/utils/transferData.d.cts.map +1 -0
- package/dist/utils/transferData.d.mts +9 -0
- package/dist/utils/transferData.d.mts.map +1 -0
- package/dist/utils/transferData.mjs +29 -0
- package/dist/utils/transferData.mjs.map +1 -0
- package/dist/utils/wait.cjs +6 -0
- package/dist/utils/wait.cjs.map +1 -0
- package/dist/utils/wait.d.cts +2 -0
- package/dist/utils/wait.d.cts.map +1 -0
- package/dist/utils/wait.d.mts +2 -0
- package/dist/utils/wait.d.mts.map +1 -0
- package/dist/utils/wait.mjs +2 -0
- package/dist/utils/wait.mjs.map +1 -0
- package/package.json +16 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"myxAdapter.cjs","sourceRoot":"","sources":["../../src/utils/myxAdapter.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * MYX SDK Adapter Utilities\n *\n * Stage 1 adapters for transforming between MetaMask Perps API types and MYX SDK types.\n * Only includes adapters needed for market display and price fetching.\n *\n * Portable: no mobile-specific imports.\n * Formatters are injected via MarketDataFormatters interface (same pattern as marketDataTransform.ts).\n *\n * Key differences from HyperLiquid:\n * - Prices use 30 decimals\n * - Sizes use 18 decimals (vs HyperLiquid's szDecimals per asset)\n * - Multiple pools can exist per symbol (MPM model)\n * - USDT collateral (vs USDC)\n */\n\nimport { fromMYXPrice } from '../constants/myxConfig';\nimport type {\n MarketInfo,\n PerpsMarketData,\n MarketDataFormatters,\n} from '../types';\nimport { MYX_HL_OVERLAPPING_MARKETS } from '../types/myx-types';\nimport type { MYXPoolSymbol, MYXTicker } from '../types/myx-types';\n\n/**\n * Format a price change value with sign prefix.\n * Uses injected formatters (same pattern as marketDataTransform.ts formatChange).\n *\n * @param change - The price change value to format.\n * @param formatters - Injectable formatters for platform-agnostic formatting.\n * @returns The formatted change string with sign and dollar symbol.\n */\nfunction formatChange(\n change: number,\n formatters: MarketDataFormatters,\n): string {\n if (isNaN(change) || !isFinite(change)) {\n return '$0.00';\n }\n if (change === 0) {\n return '$0.00';\n }\n\n const formatted = formatters.formatPerpsFiat(Math.abs(change), {\n ranges: formatters.priceRangesUniversal,\n });\n\n const valueWithoutDollar = formatted.replace('$', '');\n return change > 0 ? `+$${valueWithoutDollar}` : `-$${valueWithoutDollar}`;\n}\n\n// ============================================================================\n// Market Transformation\n// ============================================================================\n\n/**\n * Transform MYX Pool/Market info to MetaMask Perps API MarketInfo format\n *\n * @param pool - Pool symbol data from MYX SDK (PoolSymbolAllResponse)\n * @returns MetaMask Perps API market info object\n */\nexport function adaptMarketFromMYX(pool: MYXPoolSymbol): MarketInfo {\n // Extract base symbol from pool data\n const symbol = pool.baseSymbol || extractSymbolFromPoolId(pool.poolId);\n\n // MYX uses fixed 18 decimals for sizes\n const szDecimals = 18;\n\n // Default max leverage - MYX supports up to 100x on most markets\n // Will be refined when pool level config is fetched\n const maxLeverage = 100;\n\n return {\n name: symbol,\n szDecimals,\n maxLeverage,\n marginTableId: 0, // MYX doesn't use margin tables like HyperLiquid\n minimumOrderSize: 10, // MYX minimum order size is $10\n providerId: 'myx',\n };\n}\n\n/**\n * Convert MYX ticker data to price and change values\n *\n * @param ticker - Ticker data from MYX SDK\n * @returns Object with price string and 24h change percentage\n */\nexport function adaptPriceFromMYX(ticker: MYXTicker): {\n price: string;\n change24h: number;\n} {\n // MYX ticker prices are in 30-decimal format\n const priceNum = fromMYXPrice(ticker.price);\n\n // Change is provided as a percentage string (e.g., \"2.5\" means 2.5%)\n const change24h = ticker.change ? parseFloat(ticker.change) : 0;\n\n return {\n price: priceNum.toString(),\n change24h,\n };\n}\n\n/**\n * Transform MYX pool and ticker to PerpsMarketData for UI display\n *\n * @param pool - Pool symbol data from MYX SDK\n * @param ticker - Optional ticker data for price info\n * @param formatters - Injectable formatters for platform-agnostic formatting\n * @returns Formatted market data for UI display\n */\nexport function adaptMarketDataFromMYX(\n pool: MYXPoolSymbol,\n ticker: MYXTicker | undefined,\n formatters: MarketDataFormatters,\n): PerpsMarketData {\n const symbol = pool.baseSymbol || extractSymbolFromPoolId(pool.poolId);\n\n // Get price data from ticker if available\n let price = '0';\n let change24h = 0;\n let volume = '0';\n\n if (ticker) {\n const priceData = adaptPriceFromMYX(ticker);\n price = priceData.price;\n change24h = priceData.change24h;\n // Volume is already in USD (not 30-decimal format)\n volume = ticker.volume || '0';\n }\n\n // Format using injected formatters (consistent with HyperLiquid via marketDataTransform.ts)\n const priceNum = parseFloat(price);\n const formattedPrice = formatters.formatPerpsFiat(priceNum);\n const priceChange = priceNum * (change24h / 100);\n const formattedChange = formatChange(priceChange, formatters);\n const formattedChangePercent = formatters.formatPercentage(change24h);\n const formattedVolume = formatters.formatVolume(parseFloat(volume));\n\n return {\n symbol,\n name: getTokenName(symbol),\n maxLeverage: '100x', // MYX default\n price: formattedPrice,\n change24h: formattedChange,\n change24hPercent: formattedChangePercent,\n volume: formattedVolume,\n providerId: 'myx',\n };\n}\n\n// ============================================================================\n// Market Filtering\n// ============================================================================\n\n/**\n * Filter MYX markets to only include MYX-exclusive markets\n * Removes markets that overlap with HyperLiquid\n *\n * @param pools - Array of MYX pool symbols\n * @returns Filtered array with only MYX-exclusive markets\n */\nexport function filterMYXExclusiveMarkets(\n pools: MYXPoolSymbol[],\n): MYXPoolSymbol[] {\n return pools.filter((pool) => {\n const symbol = pool.baseSymbol || extractSymbolFromPoolId(pool.poolId);\n // Exclude markets that overlap with HyperLiquid\n return !MYX_HL_OVERLAPPING_MARKETS.includes(\n symbol as (typeof MYX_HL_OVERLAPPING_MARKETS)[number],\n );\n });\n}\n\n/**\n * Check if a symbol overlaps with HyperLiquid markets\n *\n * @param symbol - Market symbol to check\n * @returns true if the symbol is available on both MYX and HyperLiquid\n */\nexport function isOverlappingMarket(symbol: string): boolean {\n return MYX_HL_OVERLAPPING_MARKETS.includes(\n symbol as (typeof MYX_HL_OVERLAPPING_MARKETS)[number],\n );\n}\n\n// ============================================================================\n// Pool ID Utilities\n// ============================================================================\n\n/**\n * Build a map of poolId to symbol for quick lookup\n *\n * @param pools - Array of MYX pool symbols\n * @returns Map of poolId to symbol\n */\nexport function buildPoolSymbolMap(\n pools: MYXPoolSymbol[],\n): Map<string, string> {\n const map = new Map<string, string>();\n for (const pool of pools) {\n const symbol = pool.baseSymbol || extractSymbolFromPoolId(pool.poolId);\n map.set(pool.poolId, symbol);\n }\n return map;\n}\n\n/**\n * Build a map of symbol to poolIds (for multi-pool support)\n *\n * @param pools - Array of MYX pool symbols\n * @returns Map of symbol to array of poolIds\n */\nexport function buildSymbolPoolsMap(\n pools: MYXPoolSymbol[],\n): Map<string, string[]> {\n const map = new Map<string, string[]>();\n for (const pool of pools) {\n const symbol = pool.baseSymbol || extractSymbolFromPoolId(pool.poolId);\n const existing = map.get(symbol) ?? [];\n existing.push(pool.poolId);\n map.set(symbol, existing);\n }\n return map;\n}\n\n/**\n * Extract symbol from pool ID\n * Pool IDs typically contain the symbol as a suffix or can be parsed\n *\n * @param poolId - MYX pool ID string\n * @returns Extracted symbol or poolId as fallback\n */\nexport function extractSymbolFromPoolId(poolId: string): string {\n // Pool IDs in MYX typically look like \"0x...\" hex addresses\n // The actual symbol comes from the pool's baseSymbol field\n // This is a fallback when baseSymbol is not available\n return poolId;\n}\n\n/**\n * Get full token name from symbol\n * Returns the symbol as name if not found (MYX-specific tokens)\n *\n * @param symbol - The market symbol to look up.\n * @returns The human-readable token name, or the symbol itself if not found.\n */\nfunction getTokenName(symbol: string): string {\n const tokenNames: Record<string, string> = {\n BTC: 'Bitcoin',\n ETH: 'Ethereum',\n BNB: 'BNB',\n MYX: 'MYX Protocol',\n RHEA: 'Rhea Finance',\n PARTI: 'Particle Network',\n SKYAI: 'SkyAI',\n PUMP: 'PumpFun',\n WLFI: 'World Liberty Financial',\n };\n\n return tokenNames[symbol] || symbol;\n}\n"]}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MYX SDK Adapter Utilities
|
|
3
|
+
*
|
|
4
|
+
* Stage 1 adapters for transforming between MetaMask Perps API types and MYX SDK types.
|
|
5
|
+
* Only includes adapters needed for market display and price fetching.
|
|
6
|
+
*
|
|
7
|
+
* Portable: no mobile-specific imports.
|
|
8
|
+
* Formatters are injected via MarketDataFormatters interface (same pattern as marketDataTransform.ts).
|
|
9
|
+
*
|
|
10
|
+
* Key differences from HyperLiquid:
|
|
11
|
+
* - Prices use 30 decimals
|
|
12
|
+
* - Sizes use 18 decimals (vs HyperLiquid's szDecimals per asset)
|
|
13
|
+
* - Multiple pools can exist per symbol (MPM model)
|
|
14
|
+
* - USDT collateral (vs USDC)
|
|
15
|
+
*/
|
|
16
|
+
import type { MarketInfo, PerpsMarketData, MarketDataFormatters } from "../types/index.cjs";
|
|
17
|
+
import type { MYXPoolSymbol, MYXTicker } from "../types/myx-types.cjs";
|
|
18
|
+
/**
|
|
19
|
+
* Transform MYX Pool/Market info to MetaMask Perps API MarketInfo format
|
|
20
|
+
*
|
|
21
|
+
* @param pool - Pool symbol data from MYX SDK (PoolSymbolAllResponse)
|
|
22
|
+
* @returns MetaMask Perps API market info object
|
|
23
|
+
*/
|
|
24
|
+
export declare function adaptMarketFromMYX(pool: MYXPoolSymbol): MarketInfo;
|
|
25
|
+
/**
|
|
26
|
+
* Convert MYX ticker data to price and change values
|
|
27
|
+
*
|
|
28
|
+
* @param ticker - Ticker data from MYX SDK
|
|
29
|
+
* @returns Object with price string and 24h change percentage
|
|
30
|
+
*/
|
|
31
|
+
export declare function adaptPriceFromMYX(ticker: MYXTicker): {
|
|
32
|
+
price: string;
|
|
33
|
+
change24h: number;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Transform MYX pool and ticker to PerpsMarketData for UI display
|
|
37
|
+
*
|
|
38
|
+
* @param pool - Pool symbol data from MYX SDK
|
|
39
|
+
* @param ticker - Optional ticker data for price info
|
|
40
|
+
* @param formatters - Injectable formatters for platform-agnostic formatting
|
|
41
|
+
* @returns Formatted market data for UI display
|
|
42
|
+
*/
|
|
43
|
+
export declare function adaptMarketDataFromMYX(pool: MYXPoolSymbol, ticker: MYXTicker | undefined, formatters: MarketDataFormatters): PerpsMarketData;
|
|
44
|
+
/**
|
|
45
|
+
* Filter MYX markets to only include MYX-exclusive markets
|
|
46
|
+
* Removes markets that overlap with HyperLiquid
|
|
47
|
+
*
|
|
48
|
+
* @param pools - Array of MYX pool symbols
|
|
49
|
+
* @returns Filtered array with only MYX-exclusive markets
|
|
50
|
+
*/
|
|
51
|
+
export declare function filterMYXExclusiveMarkets(pools: MYXPoolSymbol[]): MYXPoolSymbol[];
|
|
52
|
+
/**
|
|
53
|
+
* Check if a symbol overlaps with HyperLiquid markets
|
|
54
|
+
*
|
|
55
|
+
* @param symbol - Market symbol to check
|
|
56
|
+
* @returns true if the symbol is available on both MYX and HyperLiquid
|
|
57
|
+
*/
|
|
58
|
+
export declare function isOverlappingMarket(symbol: string): boolean;
|
|
59
|
+
/**
|
|
60
|
+
* Build a map of poolId to symbol for quick lookup
|
|
61
|
+
*
|
|
62
|
+
* @param pools - Array of MYX pool symbols
|
|
63
|
+
* @returns Map of poolId to symbol
|
|
64
|
+
*/
|
|
65
|
+
export declare function buildPoolSymbolMap(pools: MYXPoolSymbol[]): Map<string, string>;
|
|
66
|
+
/**
|
|
67
|
+
* Build a map of symbol to poolIds (for multi-pool support)
|
|
68
|
+
*
|
|
69
|
+
* @param pools - Array of MYX pool symbols
|
|
70
|
+
* @returns Map of symbol to array of poolIds
|
|
71
|
+
*/
|
|
72
|
+
export declare function buildSymbolPoolsMap(pools: MYXPoolSymbol[]): Map<string, string[]>;
|
|
73
|
+
/**
|
|
74
|
+
* Extract symbol from pool ID
|
|
75
|
+
* Pool IDs typically contain the symbol as a suffix or can be parsed
|
|
76
|
+
*
|
|
77
|
+
* @param poolId - MYX pool ID string
|
|
78
|
+
* @returns Extracted symbol or poolId as fallback
|
|
79
|
+
*/
|
|
80
|
+
export declare function extractSymbolFromPoolId(poolId: string): string;
|
|
81
|
+
//# sourceMappingURL=myxAdapter.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"myxAdapter.d.cts","sourceRoot":"","sources":["../../src/utils/myxAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,KAAK,EACV,UAAU,EACV,eAAe,EACf,oBAAoB,EACrB,2BAAiB;AAElB,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,+BAA2B;AAiCnE;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,aAAa,GAAG,UAAU,CAmBlE;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB,CAWA;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,SAAS,GAAG,SAAS,EAC7B,UAAU,EAAE,oBAAoB,GAC/B,eAAe,CAkCjB;AAMD;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,aAAa,EAAE,GACrB,aAAa,EAAE,CAQjB;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAI3D;AAMD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,aAAa,EAAE,GACrB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAOrB;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,aAAa,EAAE,GACrB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CASvB;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAK9D"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MYX SDK Adapter Utilities
|
|
3
|
+
*
|
|
4
|
+
* Stage 1 adapters for transforming between MetaMask Perps API types and MYX SDK types.
|
|
5
|
+
* Only includes adapters needed for market display and price fetching.
|
|
6
|
+
*
|
|
7
|
+
* Portable: no mobile-specific imports.
|
|
8
|
+
* Formatters are injected via MarketDataFormatters interface (same pattern as marketDataTransform.ts).
|
|
9
|
+
*
|
|
10
|
+
* Key differences from HyperLiquid:
|
|
11
|
+
* - Prices use 30 decimals
|
|
12
|
+
* - Sizes use 18 decimals (vs HyperLiquid's szDecimals per asset)
|
|
13
|
+
* - Multiple pools can exist per symbol (MPM model)
|
|
14
|
+
* - USDT collateral (vs USDC)
|
|
15
|
+
*/
|
|
16
|
+
import type { MarketInfo, PerpsMarketData, MarketDataFormatters } from "../types/index.mjs";
|
|
17
|
+
import type { MYXPoolSymbol, MYXTicker } from "../types/myx-types.mjs";
|
|
18
|
+
/**
|
|
19
|
+
* Transform MYX Pool/Market info to MetaMask Perps API MarketInfo format
|
|
20
|
+
*
|
|
21
|
+
* @param pool - Pool symbol data from MYX SDK (PoolSymbolAllResponse)
|
|
22
|
+
* @returns MetaMask Perps API market info object
|
|
23
|
+
*/
|
|
24
|
+
export declare function adaptMarketFromMYX(pool: MYXPoolSymbol): MarketInfo;
|
|
25
|
+
/**
|
|
26
|
+
* Convert MYX ticker data to price and change values
|
|
27
|
+
*
|
|
28
|
+
* @param ticker - Ticker data from MYX SDK
|
|
29
|
+
* @returns Object with price string and 24h change percentage
|
|
30
|
+
*/
|
|
31
|
+
export declare function adaptPriceFromMYX(ticker: MYXTicker): {
|
|
32
|
+
price: string;
|
|
33
|
+
change24h: number;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Transform MYX pool and ticker to PerpsMarketData for UI display
|
|
37
|
+
*
|
|
38
|
+
* @param pool - Pool symbol data from MYX SDK
|
|
39
|
+
* @param ticker - Optional ticker data for price info
|
|
40
|
+
* @param formatters - Injectable formatters for platform-agnostic formatting
|
|
41
|
+
* @returns Formatted market data for UI display
|
|
42
|
+
*/
|
|
43
|
+
export declare function adaptMarketDataFromMYX(pool: MYXPoolSymbol, ticker: MYXTicker | undefined, formatters: MarketDataFormatters): PerpsMarketData;
|
|
44
|
+
/**
|
|
45
|
+
* Filter MYX markets to only include MYX-exclusive markets
|
|
46
|
+
* Removes markets that overlap with HyperLiquid
|
|
47
|
+
*
|
|
48
|
+
* @param pools - Array of MYX pool symbols
|
|
49
|
+
* @returns Filtered array with only MYX-exclusive markets
|
|
50
|
+
*/
|
|
51
|
+
export declare function filterMYXExclusiveMarkets(pools: MYXPoolSymbol[]): MYXPoolSymbol[];
|
|
52
|
+
/**
|
|
53
|
+
* Check if a symbol overlaps with HyperLiquid markets
|
|
54
|
+
*
|
|
55
|
+
* @param symbol - Market symbol to check
|
|
56
|
+
* @returns true if the symbol is available on both MYX and HyperLiquid
|
|
57
|
+
*/
|
|
58
|
+
export declare function isOverlappingMarket(symbol: string): boolean;
|
|
59
|
+
/**
|
|
60
|
+
* Build a map of poolId to symbol for quick lookup
|
|
61
|
+
*
|
|
62
|
+
* @param pools - Array of MYX pool symbols
|
|
63
|
+
* @returns Map of poolId to symbol
|
|
64
|
+
*/
|
|
65
|
+
export declare function buildPoolSymbolMap(pools: MYXPoolSymbol[]): Map<string, string>;
|
|
66
|
+
/**
|
|
67
|
+
* Build a map of symbol to poolIds (for multi-pool support)
|
|
68
|
+
*
|
|
69
|
+
* @param pools - Array of MYX pool symbols
|
|
70
|
+
* @returns Map of symbol to array of poolIds
|
|
71
|
+
*/
|
|
72
|
+
export declare function buildSymbolPoolsMap(pools: MYXPoolSymbol[]): Map<string, string[]>;
|
|
73
|
+
/**
|
|
74
|
+
* Extract symbol from pool ID
|
|
75
|
+
* Pool IDs typically contain the symbol as a suffix or can be parsed
|
|
76
|
+
*
|
|
77
|
+
* @param poolId - MYX pool ID string
|
|
78
|
+
* @returns Extracted symbol or poolId as fallback
|
|
79
|
+
*/
|
|
80
|
+
export declare function extractSymbolFromPoolId(poolId: string): string;
|
|
81
|
+
//# sourceMappingURL=myxAdapter.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"myxAdapter.d.mts","sourceRoot":"","sources":["../../src/utils/myxAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,KAAK,EACV,UAAU,EACV,eAAe,EACf,oBAAoB,EACrB,2BAAiB;AAElB,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,+BAA2B;AAiCnE;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,aAAa,GAAG,UAAU,CAmBlE;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB,CAWA;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,SAAS,GAAG,SAAS,EAC7B,UAAU,EAAE,oBAAoB,GAC/B,eAAe,CAkCjB;AAMD;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,aAAa,EAAE,GACrB,aAAa,EAAE,CAQjB;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAI3D;AAMD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,aAAa,EAAE,GACrB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAOrB;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,aAAa,EAAE,GACrB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CASvB;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAK9D"}
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MYX SDK Adapter Utilities
|
|
3
|
+
*
|
|
4
|
+
* Stage 1 adapters for transforming between MetaMask Perps API types and MYX SDK types.
|
|
5
|
+
* Only includes adapters needed for market display and price fetching.
|
|
6
|
+
*
|
|
7
|
+
* Portable: no mobile-specific imports.
|
|
8
|
+
* Formatters are injected via MarketDataFormatters interface (same pattern as marketDataTransform.ts).
|
|
9
|
+
*
|
|
10
|
+
* Key differences from HyperLiquid:
|
|
11
|
+
* - Prices use 30 decimals
|
|
12
|
+
* - Sizes use 18 decimals (vs HyperLiquid's szDecimals per asset)
|
|
13
|
+
* - Multiple pools can exist per symbol (MPM model)
|
|
14
|
+
* - USDT collateral (vs USDC)
|
|
15
|
+
*/
|
|
16
|
+
import { fromMYXPrice } from "../constants/myxConfig.mjs";
|
|
17
|
+
import { MYX_HL_OVERLAPPING_MARKETS } from "../types/myx-types.mjs";
|
|
18
|
+
/**
|
|
19
|
+
* Format a price change value with sign prefix.
|
|
20
|
+
* Uses injected formatters (same pattern as marketDataTransform.ts formatChange).
|
|
21
|
+
*
|
|
22
|
+
* @param change - The price change value to format.
|
|
23
|
+
* @param formatters - Injectable formatters for platform-agnostic formatting.
|
|
24
|
+
* @returns The formatted change string with sign and dollar symbol.
|
|
25
|
+
*/
|
|
26
|
+
function formatChange(change, formatters) {
|
|
27
|
+
if (isNaN(change) || !isFinite(change)) {
|
|
28
|
+
return '$0.00';
|
|
29
|
+
}
|
|
30
|
+
if (change === 0) {
|
|
31
|
+
return '$0.00';
|
|
32
|
+
}
|
|
33
|
+
const formatted = formatters.formatPerpsFiat(Math.abs(change), {
|
|
34
|
+
ranges: formatters.priceRangesUniversal,
|
|
35
|
+
});
|
|
36
|
+
const valueWithoutDollar = formatted.replace('$', '');
|
|
37
|
+
return change > 0 ? `+$${valueWithoutDollar}` : `-$${valueWithoutDollar}`;
|
|
38
|
+
}
|
|
39
|
+
// ============================================================================
|
|
40
|
+
// Market Transformation
|
|
41
|
+
// ============================================================================
|
|
42
|
+
/**
|
|
43
|
+
* Transform MYX Pool/Market info to MetaMask Perps API MarketInfo format
|
|
44
|
+
*
|
|
45
|
+
* @param pool - Pool symbol data from MYX SDK (PoolSymbolAllResponse)
|
|
46
|
+
* @returns MetaMask Perps API market info object
|
|
47
|
+
*/
|
|
48
|
+
export function adaptMarketFromMYX(pool) {
|
|
49
|
+
// Extract base symbol from pool data
|
|
50
|
+
const symbol = pool.baseSymbol || extractSymbolFromPoolId(pool.poolId);
|
|
51
|
+
// MYX uses fixed 18 decimals for sizes
|
|
52
|
+
const szDecimals = 18;
|
|
53
|
+
// Default max leverage - MYX supports up to 100x on most markets
|
|
54
|
+
// Will be refined when pool level config is fetched
|
|
55
|
+
const maxLeverage = 100;
|
|
56
|
+
return {
|
|
57
|
+
name: symbol,
|
|
58
|
+
szDecimals,
|
|
59
|
+
maxLeverage,
|
|
60
|
+
marginTableId: 0, // MYX doesn't use margin tables like HyperLiquid
|
|
61
|
+
minimumOrderSize: 10, // MYX minimum order size is $10
|
|
62
|
+
providerId: 'myx',
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Convert MYX ticker data to price and change values
|
|
67
|
+
*
|
|
68
|
+
* @param ticker - Ticker data from MYX SDK
|
|
69
|
+
* @returns Object with price string and 24h change percentage
|
|
70
|
+
*/
|
|
71
|
+
export function adaptPriceFromMYX(ticker) {
|
|
72
|
+
// MYX ticker prices are in 30-decimal format
|
|
73
|
+
const priceNum = fromMYXPrice(ticker.price);
|
|
74
|
+
// Change is provided as a percentage string (e.g., "2.5" means 2.5%)
|
|
75
|
+
const change24h = ticker.change ? parseFloat(ticker.change) : 0;
|
|
76
|
+
return {
|
|
77
|
+
price: priceNum.toString(),
|
|
78
|
+
change24h,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Transform MYX pool and ticker to PerpsMarketData for UI display
|
|
83
|
+
*
|
|
84
|
+
* @param pool - Pool symbol data from MYX SDK
|
|
85
|
+
* @param ticker - Optional ticker data for price info
|
|
86
|
+
* @param formatters - Injectable formatters for platform-agnostic formatting
|
|
87
|
+
* @returns Formatted market data for UI display
|
|
88
|
+
*/
|
|
89
|
+
export function adaptMarketDataFromMYX(pool, ticker, formatters) {
|
|
90
|
+
const symbol = pool.baseSymbol || extractSymbolFromPoolId(pool.poolId);
|
|
91
|
+
// Get price data from ticker if available
|
|
92
|
+
let price = '0';
|
|
93
|
+
let change24h = 0;
|
|
94
|
+
let volume = '0';
|
|
95
|
+
if (ticker) {
|
|
96
|
+
const priceData = adaptPriceFromMYX(ticker);
|
|
97
|
+
price = priceData.price;
|
|
98
|
+
change24h = priceData.change24h;
|
|
99
|
+
// Volume is already in USD (not 30-decimal format)
|
|
100
|
+
volume = ticker.volume || '0';
|
|
101
|
+
}
|
|
102
|
+
// Format using injected formatters (consistent with HyperLiquid via marketDataTransform.ts)
|
|
103
|
+
const priceNum = parseFloat(price);
|
|
104
|
+
const formattedPrice = formatters.formatPerpsFiat(priceNum);
|
|
105
|
+
const priceChange = priceNum * (change24h / 100);
|
|
106
|
+
const formattedChange = formatChange(priceChange, formatters);
|
|
107
|
+
const formattedChangePercent = formatters.formatPercentage(change24h);
|
|
108
|
+
const formattedVolume = formatters.formatVolume(parseFloat(volume));
|
|
109
|
+
return {
|
|
110
|
+
symbol,
|
|
111
|
+
name: getTokenName(symbol),
|
|
112
|
+
maxLeverage: '100x', // MYX default
|
|
113
|
+
price: formattedPrice,
|
|
114
|
+
change24h: formattedChange,
|
|
115
|
+
change24hPercent: formattedChangePercent,
|
|
116
|
+
volume: formattedVolume,
|
|
117
|
+
providerId: 'myx',
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
// ============================================================================
|
|
121
|
+
// Market Filtering
|
|
122
|
+
// ============================================================================
|
|
123
|
+
/**
|
|
124
|
+
* Filter MYX markets to only include MYX-exclusive markets
|
|
125
|
+
* Removes markets that overlap with HyperLiquid
|
|
126
|
+
*
|
|
127
|
+
* @param pools - Array of MYX pool symbols
|
|
128
|
+
* @returns Filtered array with only MYX-exclusive markets
|
|
129
|
+
*/
|
|
130
|
+
export function filterMYXExclusiveMarkets(pools) {
|
|
131
|
+
return pools.filter((pool) => {
|
|
132
|
+
const symbol = pool.baseSymbol || extractSymbolFromPoolId(pool.poolId);
|
|
133
|
+
// Exclude markets that overlap with HyperLiquid
|
|
134
|
+
return !MYX_HL_OVERLAPPING_MARKETS.includes(symbol);
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Check if a symbol overlaps with HyperLiquid markets
|
|
139
|
+
*
|
|
140
|
+
* @param symbol - Market symbol to check
|
|
141
|
+
* @returns true if the symbol is available on both MYX and HyperLiquid
|
|
142
|
+
*/
|
|
143
|
+
export function isOverlappingMarket(symbol) {
|
|
144
|
+
return MYX_HL_OVERLAPPING_MARKETS.includes(symbol);
|
|
145
|
+
}
|
|
146
|
+
// ============================================================================
|
|
147
|
+
// Pool ID Utilities
|
|
148
|
+
// ============================================================================
|
|
149
|
+
/**
|
|
150
|
+
* Build a map of poolId to symbol for quick lookup
|
|
151
|
+
*
|
|
152
|
+
* @param pools - Array of MYX pool symbols
|
|
153
|
+
* @returns Map of poolId to symbol
|
|
154
|
+
*/
|
|
155
|
+
export function buildPoolSymbolMap(pools) {
|
|
156
|
+
const map = new Map();
|
|
157
|
+
for (const pool of pools) {
|
|
158
|
+
const symbol = pool.baseSymbol || extractSymbolFromPoolId(pool.poolId);
|
|
159
|
+
map.set(pool.poolId, symbol);
|
|
160
|
+
}
|
|
161
|
+
return map;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Build a map of symbol to poolIds (for multi-pool support)
|
|
165
|
+
*
|
|
166
|
+
* @param pools - Array of MYX pool symbols
|
|
167
|
+
* @returns Map of symbol to array of poolIds
|
|
168
|
+
*/
|
|
169
|
+
export function buildSymbolPoolsMap(pools) {
|
|
170
|
+
const map = new Map();
|
|
171
|
+
for (const pool of pools) {
|
|
172
|
+
const symbol = pool.baseSymbol || extractSymbolFromPoolId(pool.poolId);
|
|
173
|
+
const existing = map.get(symbol) ?? [];
|
|
174
|
+
existing.push(pool.poolId);
|
|
175
|
+
map.set(symbol, existing);
|
|
176
|
+
}
|
|
177
|
+
return map;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Extract symbol from pool ID
|
|
181
|
+
* Pool IDs typically contain the symbol as a suffix or can be parsed
|
|
182
|
+
*
|
|
183
|
+
* @param poolId - MYX pool ID string
|
|
184
|
+
* @returns Extracted symbol or poolId as fallback
|
|
185
|
+
*/
|
|
186
|
+
export function extractSymbolFromPoolId(poolId) {
|
|
187
|
+
// Pool IDs in MYX typically look like "0x..." hex addresses
|
|
188
|
+
// The actual symbol comes from the pool's baseSymbol field
|
|
189
|
+
// This is a fallback when baseSymbol is not available
|
|
190
|
+
return poolId;
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Get full token name from symbol
|
|
194
|
+
* Returns the symbol as name if not found (MYX-specific tokens)
|
|
195
|
+
*
|
|
196
|
+
* @param symbol - The market symbol to look up.
|
|
197
|
+
* @returns The human-readable token name, or the symbol itself if not found.
|
|
198
|
+
*/
|
|
199
|
+
function getTokenName(symbol) {
|
|
200
|
+
const tokenNames = {
|
|
201
|
+
BTC: 'Bitcoin',
|
|
202
|
+
ETH: 'Ethereum',
|
|
203
|
+
BNB: 'BNB',
|
|
204
|
+
MYX: 'MYX Protocol',
|
|
205
|
+
RHEA: 'Rhea Finance',
|
|
206
|
+
PARTI: 'Particle Network',
|
|
207
|
+
SKYAI: 'SkyAI',
|
|
208
|
+
PUMP: 'PumpFun',
|
|
209
|
+
WLFI: 'World Liberty Financial',
|
|
210
|
+
};
|
|
211
|
+
return tokenNames[symbol] || symbol;
|
|
212
|
+
}
|
|
213
|
+
//# sourceMappingURL=myxAdapter.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"myxAdapter.mjs","sourceRoot":"","sources":["../../src/utils/myxAdapter.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * MYX SDK Adapter Utilities\n *\n * Stage 1 adapters for transforming between MetaMask Perps API types and MYX SDK types.\n * Only includes adapters needed for market display and price fetching.\n *\n * Portable: no mobile-specific imports.\n * Formatters are injected via MarketDataFormatters interface (same pattern as marketDataTransform.ts).\n *\n * Key differences from HyperLiquid:\n * - Prices use 30 decimals\n * - Sizes use 18 decimals (vs HyperLiquid's szDecimals per asset)\n * - Multiple pools can exist per symbol (MPM model)\n * - USDT collateral (vs USDC)\n */\n\nimport { fromMYXPrice } from '../constants/myxConfig';\nimport type {\n MarketInfo,\n PerpsMarketData,\n MarketDataFormatters,\n} from '../types';\nimport { MYX_HL_OVERLAPPING_MARKETS } from '../types/myx-types';\nimport type { MYXPoolSymbol, MYXTicker } from '../types/myx-types';\n\n/**\n * Format a price change value with sign prefix.\n * Uses injected formatters (same pattern as marketDataTransform.ts formatChange).\n *\n * @param change - The price change value to format.\n * @param formatters - Injectable formatters for platform-agnostic formatting.\n * @returns The formatted change string with sign and dollar symbol.\n */\nfunction formatChange(\n change: number,\n formatters: MarketDataFormatters,\n): string {\n if (isNaN(change) || !isFinite(change)) {\n return '$0.00';\n }\n if (change === 0) {\n return '$0.00';\n }\n\n const formatted = formatters.formatPerpsFiat(Math.abs(change), {\n ranges: formatters.priceRangesUniversal,\n });\n\n const valueWithoutDollar = formatted.replace('$', '');\n return change > 0 ? `+$${valueWithoutDollar}` : `-$${valueWithoutDollar}`;\n}\n\n// ============================================================================\n// Market Transformation\n// ============================================================================\n\n/**\n * Transform MYX Pool/Market info to MetaMask Perps API MarketInfo format\n *\n * @param pool - Pool symbol data from MYX SDK (PoolSymbolAllResponse)\n * @returns MetaMask Perps API market info object\n */\nexport function adaptMarketFromMYX(pool: MYXPoolSymbol): MarketInfo {\n // Extract base symbol from pool data\n const symbol = pool.baseSymbol || extractSymbolFromPoolId(pool.poolId);\n\n // MYX uses fixed 18 decimals for sizes\n const szDecimals = 18;\n\n // Default max leverage - MYX supports up to 100x on most markets\n // Will be refined when pool level config is fetched\n const maxLeverage = 100;\n\n return {\n name: symbol,\n szDecimals,\n maxLeverage,\n marginTableId: 0, // MYX doesn't use margin tables like HyperLiquid\n minimumOrderSize: 10, // MYX minimum order size is $10\n providerId: 'myx',\n };\n}\n\n/**\n * Convert MYX ticker data to price and change values\n *\n * @param ticker - Ticker data from MYX SDK\n * @returns Object with price string and 24h change percentage\n */\nexport function adaptPriceFromMYX(ticker: MYXTicker): {\n price: string;\n change24h: number;\n} {\n // MYX ticker prices are in 30-decimal format\n const priceNum = fromMYXPrice(ticker.price);\n\n // Change is provided as a percentage string (e.g., \"2.5\" means 2.5%)\n const change24h = ticker.change ? parseFloat(ticker.change) : 0;\n\n return {\n price: priceNum.toString(),\n change24h,\n };\n}\n\n/**\n * Transform MYX pool and ticker to PerpsMarketData for UI display\n *\n * @param pool - Pool symbol data from MYX SDK\n * @param ticker - Optional ticker data for price info\n * @param formatters - Injectable formatters for platform-agnostic formatting\n * @returns Formatted market data for UI display\n */\nexport function adaptMarketDataFromMYX(\n pool: MYXPoolSymbol,\n ticker: MYXTicker | undefined,\n formatters: MarketDataFormatters,\n): PerpsMarketData {\n const symbol = pool.baseSymbol || extractSymbolFromPoolId(pool.poolId);\n\n // Get price data from ticker if available\n let price = '0';\n let change24h = 0;\n let volume = '0';\n\n if (ticker) {\n const priceData = adaptPriceFromMYX(ticker);\n price = priceData.price;\n change24h = priceData.change24h;\n // Volume is already in USD (not 30-decimal format)\n volume = ticker.volume || '0';\n }\n\n // Format using injected formatters (consistent with HyperLiquid via marketDataTransform.ts)\n const priceNum = parseFloat(price);\n const formattedPrice = formatters.formatPerpsFiat(priceNum);\n const priceChange = priceNum * (change24h / 100);\n const formattedChange = formatChange(priceChange, formatters);\n const formattedChangePercent = formatters.formatPercentage(change24h);\n const formattedVolume = formatters.formatVolume(parseFloat(volume));\n\n return {\n symbol,\n name: getTokenName(symbol),\n maxLeverage: '100x', // MYX default\n price: formattedPrice,\n change24h: formattedChange,\n change24hPercent: formattedChangePercent,\n volume: formattedVolume,\n providerId: 'myx',\n };\n}\n\n// ============================================================================\n// Market Filtering\n// ============================================================================\n\n/**\n * Filter MYX markets to only include MYX-exclusive markets\n * Removes markets that overlap with HyperLiquid\n *\n * @param pools - Array of MYX pool symbols\n * @returns Filtered array with only MYX-exclusive markets\n */\nexport function filterMYXExclusiveMarkets(\n pools: MYXPoolSymbol[],\n): MYXPoolSymbol[] {\n return pools.filter((pool) => {\n const symbol = pool.baseSymbol || extractSymbolFromPoolId(pool.poolId);\n // Exclude markets that overlap with HyperLiquid\n return !MYX_HL_OVERLAPPING_MARKETS.includes(\n symbol as (typeof MYX_HL_OVERLAPPING_MARKETS)[number],\n );\n });\n}\n\n/**\n * Check if a symbol overlaps with HyperLiquid markets\n *\n * @param symbol - Market symbol to check\n * @returns true if the symbol is available on both MYX and HyperLiquid\n */\nexport function isOverlappingMarket(symbol: string): boolean {\n return MYX_HL_OVERLAPPING_MARKETS.includes(\n symbol as (typeof MYX_HL_OVERLAPPING_MARKETS)[number],\n );\n}\n\n// ============================================================================\n// Pool ID Utilities\n// ============================================================================\n\n/**\n * Build a map of poolId to symbol for quick lookup\n *\n * @param pools - Array of MYX pool symbols\n * @returns Map of poolId to symbol\n */\nexport function buildPoolSymbolMap(\n pools: MYXPoolSymbol[],\n): Map<string, string> {\n const map = new Map<string, string>();\n for (const pool of pools) {\n const symbol = pool.baseSymbol || extractSymbolFromPoolId(pool.poolId);\n map.set(pool.poolId, symbol);\n }\n return map;\n}\n\n/**\n * Build a map of symbol to poolIds (for multi-pool support)\n *\n * @param pools - Array of MYX pool symbols\n * @returns Map of symbol to array of poolIds\n */\nexport function buildSymbolPoolsMap(\n pools: MYXPoolSymbol[],\n): Map<string, string[]> {\n const map = new Map<string, string[]>();\n for (const pool of pools) {\n const symbol = pool.baseSymbol || extractSymbolFromPoolId(pool.poolId);\n const existing = map.get(symbol) ?? [];\n existing.push(pool.poolId);\n map.set(symbol, existing);\n }\n return map;\n}\n\n/**\n * Extract symbol from pool ID\n * Pool IDs typically contain the symbol as a suffix or can be parsed\n *\n * @param poolId - MYX pool ID string\n * @returns Extracted symbol or poolId as fallback\n */\nexport function extractSymbolFromPoolId(poolId: string): string {\n // Pool IDs in MYX typically look like \"0x...\" hex addresses\n // The actual symbol comes from the pool's baseSymbol field\n // This is a fallback when baseSymbol is not available\n return poolId;\n}\n\n/**\n * Get full token name from symbol\n * Returns the symbol as name if not found (MYX-specific tokens)\n *\n * @param symbol - The market symbol to look up.\n * @returns The human-readable token name, or the symbol itself if not found.\n */\nfunction getTokenName(symbol: string): string {\n const tokenNames: Record<string, string> = {\n BTC: 'Bitcoin',\n ETH: 'Ethereum',\n BNB: 'BNB',\n MYX: 'MYX Protocol',\n RHEA: 'Rhea Finance',\n PARTI: 'Particle Network',\n SKYAI: 'SkyAI',\n PUMP: 'PumpFun',\n WLFI: 'World Liberty Financial',\n };\n\n return tokenNames[symbol] || symbol;\n}\n"]}
|