@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,362 @@
|
|
|
1
|
+
import { SortOptionId } from "./constants/perpsConfig.mjs";
|
|
2
|
+
import type { PerpsControllerState } from "./PerpsController.mjs";
|
|
3
|
+
import type { PerpsSelectedPaymentToken } from "./types/index.mjs";
|
|
4
|
+
import type { SortDirection } from "./utils/sortMarkets.mjs";
|
|
5
|
+
/**
|
|
6
|
+
* Select whether the user is a first-time perps user
|
|
7
|
+
*
|
|
8
|
+
* @param state - PerpsController state
|
|
9
|
+
* @returns true if user is first-time, false otherwise
|
|
10
|
+
*/
|
|
11
|
+
export declare const selectIsFirstTimeUser: (state: PerpsControllerState | undefined) => boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Select whether user has ever placed their first successful order
|
|
14
|
+
*
|
|
15
|
+
* @param state - PerpsController state
|
|
16
|
+
* @returns boolean indicating if first order was placed
|
|
17
|
+
*/
|
|
18
|
+
export declare const selectHasPlacedFirstOrder: (state: PerpsControllerState) => boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Select watchlist markets for the current network
|
|
21
|
+
*
|
|
22
|
+
* @param state - PerpsController state
|
|
23
|
+
* @returns Array of watchlist market symbols for current network
|
|
24
|
+
*/
|
|
25
|
+
export declare const selectWatchlistMarkets: (state: PerpsControllerState) => string[];
|
|
26
|
+
/**
|
|
27
|
+
* Check if a specific market is in the watchlist on the current network
|
|
28
|
+
*
|
|
29
|
+
* @param state - PerpsController state
|
|
30
|
+
* @param symbol - Market symbol to check (e.g., 'BTC', 'ETH')
|
|
31
|
+
* @returns boolean indicating if market is in watchlist
|
|
32
|
+
*/
|
|
33
|
+
export declare const selectIsWatchlistMarket: (state: PerpsControllerState, symbol: string) => boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Select trade configuration for a specific market on the current network.
|
|
36
|
+
* Uses memoization to return stable object references and prevent unnecessary re-renders.
|
|
37
|
+
*
|
|
38
|
+
* Usage: selectTradeConfiguration(state, coin)
|
|
39
|
+
*
|
|
40
|
+
* @param state - The perps controller state.
|
|
41
|
+
* @param coin - The market coin symbol.
|
|
42
|
+
* @returns The trade configuration for the specified market, or undefined.
|
|
43
|
+
*/
|
|
44
|
+
export declare const selectTradeConfiguration: ((state: PerpsControllerState, _coin: string) => {
|
|
45
|
+
leverage?: number | undefined;
|
|
46
|
+
} | undefined) & {
|
|
47
|
+
clearCache: () => void;
|
|
48
|
+
resultsCount: () => number;
|
|
49
|
+
resetResultsCount: () => void;
|
|
50
|
+
} & {
|
|
51
|
+
resultFunc: (resultFuncArgs_0: boolean | undefined, resultFuncArgs_1: {
|
|
52
|
+
testnet: {
|
|
53
|
+
[marketSymbol: string]: {
|
|
54
|
+
leverage?: number | undefined;
|
|
55
|
+
orderBookGrouping?: number | undefined;
|
|
56
|
+
pendingConfig?: {
|
|
57
|
+
amount?: string | undefined;
|
|
58
|
+
leverage?: number | undefined;
|
|
59
|
+
takeProfitPrice?: string | undefined;
|
|
60
|
+
stopLossPrice?: string | undefined;
|
|
61
|
+
limitPrice?: string | undefined;
|
|
62
|
+
orderType?: import("./types/index.mjs").OrderType | undefined;
|
|
63
|
+
timestamp: number;
|
|
64
|
+
} | undefined;
|
|
65
|
+
};
|
|
66
|
+
};
|
|
67
|
+
mainnet: {
|
|
68
|
+
[marketSymbol: string]: {
|
|
69
|
+
leverage?: number | undefined;
|
|
70
|
+
orderBookGrouping?: number | undefined;
|
|
71
|
+
pendingConfig?: {
|
|
72
|
+
amount?: string | undefined;
|
|
73
|
+
leverage?: number | undefined;
|
|
74
|
+
takeProfitPrice?: string | undefined;
|
|
75
|
+
stopLossPrice?: string | undefined;
|
|
76
|
+
limitPrice?: string | undefined;
|
|
77
|
+
orderType?: import("./types/index.mjs").OrderType | undefined;
|
|
78
|
+
timestamp: number;
|
|
79
|
+
} | undefined;
|
|
80
|
+
};
|
|
81
|
+
};
|
|
82
|
+
} | undefined, resultFuncArgs_2: string) => {
|
|
83
|
+
leverage?: number | undefined;
|
|
84
|
+
} | undefined;
|
|
85
|
+
memoizedResultFunc: ((resultFuncArgs_0: boolean | undefined, resultFuncArgs_1: {
|
|
86
|
+
testnet: {
|
|
87
|
+
[marketSymbol: string]: {
|
|
88
|
+
leverage?: number | undefined;
|
|
89
|
+
orderBookGrouping?: number | undefined;
|
|
90
|
+
pendingConfig?: {
|
|
91
|
+
amount?: string | undefined;
|
|
92
|
+
leverage?: number | undefined;
|
|
93
|
+
takeProfitPrice?: string | undefined;
|
|
94
|
+
stopLossPrice?: string | undefined;
|
|
95
|
+
limitPrice?: string | undefined;
|
|
96
|
+
orderType?: import("./types/index.mjs").OrderType | undefined;
|
|
97
|
+
timestamp: number;
|
|
98
|
+
} | undefined;
|
|
99
|
+
};
|
|
100
|
+
};
|
|
101
|
+
mainnet: {
|
|
102
|
+
[marketSymbol: string]: {
|
|
103
|
+
leverage?: number | undefined;
|
|
104
|
+
orderBookGrouping?: number | undefined;
|
|
105
|
+
pendingConfig?: {
|
|
106
|
+
amount?: string | undefined;
|
|
107
|
+
leverage?: number | undefined;
|
|
108
|
+
takeProfitPrice?: string | undefined;
|
|
109
|
+
stopLossPrice?: string | undefined;
|
|
110
|
+
limitPrice?: string | undefined;
|
|
111
|
+
orderType?: import("./types/index.mjs").OrderType | undefined;
|
|
112
|
+
timestamp: number;
|
|
113
|
+
} | undefined;
|
|
114
|
+
};
|
|
115
|
+
};
|
|
116
|
+
} | undefined, resultFuncArgs_2: string) => {
|
|
117
|
+
leverage?: number | undefined;
|
|
118
|
+
} | undefined) & {
|
|
119
|
+
clearCache: () => void;
|
|
120
|
+
resultsCount: () => number;
|
|
121
|
+
resetResultsCount: () => void;
|
|
122
|
+
};
|
|
123
|
+
lastResult: () => {
|
|
124
|
+
leverage?: number | undefined;
|
|
125
|
+
} | undefined;
|
|
126
|
+
dependencies: [(state: PerpsControllerState) => boolean | undefined, (state: PerpsControllerState, _coin: string) => PerpsControllerState['tradeConfigurations'] | undefined, (_state: PerpsControllerState, coin: string) => string];
|
|
127
|
+
recomputations: () => number;
|
|
128
|
+
resetRecomputations: () => void;
|
|
129
|
+
dependencyRecomputations: () => number;
|
|
130
|
+
resetDependencyRecomputations: () => void;
|
|
131
|
+
} & {
|
|
132
|
+
memoize: typeof import("reselect").weakMapMemoize;
|
|
133
|
+
argsMemoize: typeof import("reselect").weakMapMemoize;
|
|
134
|
+
};
|
|
135
|
+
/**
|
|
136
|
+
* Select pending trade configuration for a specific market on the current network.
|
|
137
|
+
* Returns undefined if config doesn't exist or has expired (more than 5 minutes old).
|
|
138
|
+
*
|
|
139
|
+
* Usage: selectPendingTradeConfiguration(state, coin)
|
|
140
|
+
*
|
|
141
|
+
* @param state - The perps controller state.
|
|
142
|
+
* @param coin - The market coin symbol.
|
|
143
|
+
* @returns The pending trade configuration, or undefined if expired or not found.
|
|
144
|
+
*/
|
|
145
|
+
export declare const selectPendingTradeConfiguration: ((state: PerpsControllerState, _coin: string) => {
|
|
146
|
+
amount?: string | undefined;
|
|
147
|
+
leverage?: number | undefined;
|
|
148
|
+
takeProfitPrice?: string | undefined;
|
|
149
|
+
stopLossPrice?: string | undefined;
|
|
150
|
+
limitPrice?: string | undefined;
|
|
151
|
+
orderType?: "market" | "limit" | undefined;
|
|
152
|
+
selectedPaymentToken?: PerpsSelectedPaymentToken | null | undefined;
|
|
153
|
+
} | undefined) & {
|
|
154
|
+
clearCache: () => void;
|
|
155
|
+
resultsCount: () => number;
|
|
156
|
+
resetResultsCount: () => void;
|
|
157
|
+
} & {
|
|
158
|
+
resultFunc: (resultFuncArgs_0: boolean | undefined, resultFuncArgs_1: {
|
|
159
|
+
testnet: {
|
|
160
|
+
[marketSymbol: string]: {
|
|
161
|
+
leverage?: number | undefined;
|
|
162
|
+
orderBookGrouping?: number | undefined;
|
|
163
|
+
pendingConfig?: {
|
|
164
|
+
amount?: string | undefined;
|
|
165
|
+
leverage?: number | undefined;
|
|
166
|
+
takeProfitPrice?: string | undefined;
|
|
167
|
+
stopLossPrice?: string | undefined;
|
|
168
|
+
limitPrice?: string | undefined;
|
|
169
|
+
orderType?: import("./types/index.mjs").OrderType | undefined;
|
|
170
|
+
timestamp: number;
|
|
171
|
+
} | undefined;
|
|
172
|
+
};
|
|
173
|
+
};
|
|
174
|
+
mainnet: {
|
|
175
|
+
[marketSymbol: string]: {
|
|
176
|
+
leverage?: number | undefined;
|
|
177
|
+
orderBookGrouping?: number | undefined;
|
|
178
|
+
pendingConfig?: {
|
|
179
|
+
amount?: string | undefined;
|
|
180
|
+
leverage?: number | undefined;
|
|
181
|
+
takeProfitPrice?: string | undefined;
|
|
182
|
+
stopLossPrice?: string | undefined;
|
|
183
|
+
limitPrice?: string | undefined;
|
|
184
|
+
orderType?: import("./types/index.mjs").OrderType | undefined;
|
|
185
|
+
timestamp: number;
|
|
186
|
+
} | undefined;
|
|
187
|
+
};
|
|
188
|
+
};
|
|
189
|
+
} | undefined, resultFuncArgs_2: string) => {
|
|
190
|
+
amount?: string | undefined;
|
|
191
|
+
leverage?: number | undefined;
|
|
192
|
+
takeProfitPrice?: string | undefined;
|
|
193
|
+
stopLossPrice?: string | undefined;
|
|
194
|
+
limitPrice?: string | undefined;
|
|
195
|
+
orderType?: "market" | "limit" | undefined;
|
|
196
|
+
selectedPaymentToken?: PerpsSelectedPaymentToken | null | undefined;
|
|
197
|
+
} | undefined;
|
|
198
|
+
memoizedResultFunc: ((resultFuncArgs_0: boolean | undefined, resultFuncArgs_1: {
|
|
199
|
+
testnet: {
|
|
200
|
+
[marketSymbol: string]: {
|
|
201
|
+
leverage?: number | undefined;
|
|
202
|
+
orderBookGrouping?: number | undefined;
|
|
203
|
+
pendingConfig?: {
|
|
204
|
+
amount?: string | undefined;
|
|
205
|
+
leverage?: number | undefined;
|
|
206
|
+
takeProfitPrice?: string | undefined;
|
|
207
|
+
stopLossPrice?: string | undefined;
|
|
208
|
+
limitPrice?: string | undefined;
|
|
209
|
+
orderType?: import("./types/index.mjs").OrderType | undefined;
|
|
210
|
+
timestamp: number;
|
|
211
|
+
} | undefined;
|
|
212
|
+
};
|
|
213
|
+
};
|
|
214
|
+
mainnet: {
|
|
215
|
+
[marketSymbol: string]: {
|
|
216
|
+
leverage?: number | undefined;
|
|
217
|
+
orderBookGrouping?: number | undefined;
|
|
218
|
+
pendingConfig?: {
|
|
219
|
+
amount?: string | undefined;
|
|
220
|
+
leverage?: number | undefined;
|
|
221
|
+
takeProfitPrice?: string | undefined;
|
|
222
|
+
stopLossPrice?: string | undefined;
|
|
223
|
+
limitPrice?: string | undefined;
|
|
224
|
+
orderType?: import("./types/index.mjs").OrderType | undefined;
|
|
225
|
+
timestamp: number;
|
|
226
|
+
} | undefined;
|
|
227
|
+
};
|
|
228
|
+
};
|
|
229
|
+
} | undefined, resultFuncArgs_2: string) => {
|
|
230
|
+
amount?: string | undefined;
|
|
231
|
+
leverage?: number | undefined;
|
|
232
|
+
takeProfitPrice?: string | undefined;
|
|
233
|
+
stopLossPrice?: string | undefined;
|
|
234
|
+
limitPrice?: string | undefined;
|
|
235
|
+
orderType?: "market" | "limit" | undefined;
|
|
236
|
+
selectedPaymentToken?: PerpsSelectedPaymentToken | null | undefined;
|
|
237
|
+
} | undefined) & {
|
|
238
|
+
clearCache: () => void;
|
|
239
|
+
resultsCount: () => number;
|
|
240
|
+
resetResultsCount: () => void;
|
|
241
|
+
};
|
|
242
|
+
lastResult: () => {
|
|
243
|
+
amount?: string | undefined;
|
|
244
|
+
leverage?: number | undefined;
|
|
245
|
+
takeProfitPrice?: string | undefined;
|
|
246
|
+
stopLossPrice?: string | undefined;
|
|
247
|
+
limitPrice?: string | undefined;
|
|
248
|
+
orderType?: "market" | "limit" | undefined;
|
|
249
|
+
selectedPaymentToken?: PerpsSelectedPaymentToken | null | undefined;
|
|
250
|
+
} | undefined;
|
|
251
|
+
dependencies: [(state: PerpsControllerState) => boolean | undefined, (state: PerpsControllerState, _coin: string) => PerpsControllerState['tradeConfigurations'] | undefined, (_state: PerpsControllerState, coin: string) => string];
|
|
252
|
+
recomputations: () => number;
|
|
253
|
+
resetRecomputations: () => void;
|
|
254
|
+
dependencyRecomputations: () => number;
|
|
255
|
+
resetDependencyRecomputations: () => void;
|
|
256
|
+
} & {
|
|
257
|
+
memoize: typeof import("reselect").weakMapMemoize;
|
|
258
|
+
argsMemoize: typeof import("reselect").weakMapMemoize;
|
|
259
|
+
};
|
|
260
|
+
/**
|
|
261
|
+
* Select market filter preferences (network-independent)
|
|
262
|
+
*
|
|
263
|
+
* @param state - PerpsController state
|
|
264
|
+
* @returns Sort/filter preferences object with optionId and direction
|
|
265
|
+
*/
|
|
266
|
+
export declare const selectMarketFilterPreferences: (state: PerpsControllerState) => {
|
|
267
|
+
optionId: SortOptionId;
|
|
268
|
+
direction: SortDirection;
|
|
269
|
+
};
|
|
270
|
+
/**
|
|
271
|
+
* Select order book grouping for a specific market on the current network.
|
|
272
|
+
*
|
|
273
|
+
* Usage: selectOrderBookGrouping(state, coin)
|
|
274
|
+
*
|
|
275
|
+
* @param state - The perps controller state.
|
|
276
|
+
* @param coin - The market coin symbol.
|
|
277
|
+
* @returns The order book grouping value, or undefined.
|
|
278
|
+
*/
|
|
279
|
+
export declare const selectOrderBookGrouping: ((state: PerpsControllerState, _coin: string) => number | undefined) & {
|
|
280
|
+
clearCache: () => void;
|
|
281
|
+
resultsCount: () => number;
|
|
282
|
+
resetResultsCount: () => void;
|
|
283
|
+
} & {
|
|
284
|
+
resultFunc: (resultFuncArgs_0: boolean | undefined, resultFuncArgs_1: {
|
|
285
|
+
testnet: {
|
|
286
|
+
[marketSymbol: string]: {
|
|
287
|
+
leverage?: number | undefined;
|
|
288
|
+
orderBookGrouping?: number | undefined;
|
|
289
|
+
pendingConfig?: {
|
|
290
|
+
amount?: string | undefined;
|
|
291
|
+
leverage?: number | undefined;
|
|
292
|
+
takeProfitPrice?: string | undefined;
|
|
293
|
+
stopLossPrice?: string | undefined;
|
|
294
|
+
limitPrice?: string | undefined;
|
|
295
|
+
orderType?: import("./types/index.mjs").OrderType | undefined;
|
|
296
|
+
timestamp: number;
|
|
297
|
+
} | undefined;
|
|
298
|
+
};
|
|
299
|
+
};
|
|
300
|
+
mainnet: {
|
|
301
|
+
[marketSymbol: string]: {
|
|
302
|
+
leverage?: number | undefined;
|
|
303
|
+
orderBookGrouping?: number | undefined;
|
|
304
|
+
pendingConfig?: {
|
|
305
|
+
amount?: string | undefined;
|
|
306
|
+
leverage?: number | undefined;
|
|
307
|
+
takeProfitPrice?: string | undefined;
|
|
308
|
+
stopLossPrice?: string | undefined;
|
|
309
|
+
limitPrice?: string | undefined;
|
|
310
|
+
orderType?: import("./types/index.mjs").OrderType | undefined;
|
|
311
|
+
timestamp: number;
|
|
312
|
+
} | undefined;
|
|
313
|
+
};
|
|
314
|
+
};
|
|
315
|
+
} | undefined, resultFuncArgs_2: string) => number | undefined;
|
|
316
|
+
memoizedResultFunc: ((resultFuncArgs_0: boolean | undefined, resultFuncArgs_1: {
|
|
317
|
+
testnet: {
|
|
318
|
+
[marketSymbol: string]: {
|
|
319
|
+
leverage?: number | undefined;
|
|
320
|
+
orderBookGrouping?: number | undefined;
|
|
321
|
+
pendingConfig?: {
|
|
322
|
+
amount?: string | undefined;
|
|
323
|
+
leverage?: number | undefined;
|
|
324
|
+
takeProfitPrice?: string | undefined;
|
|
325
|
+
stopLossPrice?: string | undefined;
|
|
326
|
+
limitPrice?: string | undefined;
|
|
327
|
+
orderType?: import("./types/index.mjs").OrderType | undefined;
|
|
328
|
+
timestamp: number;
|
|
329
|
+
} | undefined;
|
|
330
|
+
};
|
|
331
|
+
};
|
|
332
|
+
mainnet: {
|
|
333
|
+
[marketSymbol: string]: {
|
|
334
|
+
leverage?: number | undefined;
|
|
335
|
+
orderBookGrouping?: number | undefined;
|
|
336
|
+
pendingConfig?: {
|
|
337
|
+
amount?: string | undefined;
|
|
338
|
+
leverage?: number | undefined;
|
|
339
|
+
takeProfitPrice?: string | undefined;
|
|
340
|
+
stopLossPrice?: string | undefined;
|
|
341
|
+
limitPrice?: string | undefined;
|
|
342
|
+
orderType?: import("./types/index.mjs").OrderType | undefined;
|
|
343
|
+
timestamp: number;
|
|
344
|
+
} | undefined;
|
|
345
|
+
};
|
|
346
|
+
};
|
|
347
|
+
} | undefined, resultFuncArgs_2: string) => number | undefined) & {
|
|
348
|
+
clearCache: () => void;
|
|
349
|
+
resultsCount: () => number;
|
|
350
|
+
resetResultsCount: () => void;
|
|
351
|
+
};
|
|
352
|
+
lastResult: () => number | undefined;
|
|
353
|
+
dependencies: [(state: PerpsControllerState) => boolean | undefined, (state: PerpsControllerState, _coin: string) => PerpsControllerState['tradeConfigurations'] | undefined, (_state: PerpsControllerState, coin: string) => string];
|
|
354
|
+
recomputations: () => number;
|
|
355
|
+
resetRecomputations: () => void;
|
|
356
|
+
dependencyRecomputations: () => number;
|
|
357
|
+
resetDependencyRecomputations: () => void;
|
|
358
|
+
} & {
|
|
359
|
+
memoize: typeof import("reselect").weakMapMemoize;
|
|
360
|
+
argsMemoize: typeof import("reselect").weakMapMemoize;
|
|
361
|
+
};
|
|
362
|
+
//# sourceMappingURL=selectors.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selectors.d.mts","sourceRoot":"","sources":["../src/selectors.ts"],"names":[],"mappings":"AAEA,OAAO,EAAyB,YAAY,EAAE,oCAAgC;AAC9E,OAAO,KAAK,EAAE,oBAAoB,EAAE,8BAA0B;AAC9D,OAAO,KAAK,EAAE,yBAAyB,EAAE,0BAAgB;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,gCAA4B;AAEzD;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,UACzB,oBAAoB,GAAG,SAAS,KACtC,OAKF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,UAC7B,oBAAoB,KAC1B,OAKF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,UAC1B,oBAAoB,KAC1B,MAAM,EAKR,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,UAC3B,oBAAoB,UACnB,MAAM,KACb,OAGF,CAAC;AAEF;;;;;;;;;GASG;AAEH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAEzB,oBAAoB,KAAG,OAAO,GAAG,SAAS,UAEzC,oBAAoB,SACpB,MAAM,KACZ,oBAAoB,CAAC,qBAAqB,CAAC,GAAG,SAAS,WAEjD,oBAAoB,QAAQ,MAAM,KAAG,MAAM;;;;;;;;CAYvD,CAAC;AAEF;;;;;;;;;GASG;AAEH,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAEhC,oBAAoB,KAAG,OAAO,GAAG,SAAS,UAEzC,oBAAoB,SACpB,MAAM,KACZ,oBAAoB,CAAC,qBAAqB,CAAC,GAAG,SAAS,WAEjD,oBAAoB,QAAQ,MAAM,KAAG,MAAM;;;;;;;;CAsCvD,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B,UACjC,oBAAoB,KAC1B;IAAE,QAAQ,EAAE,YAAY,CAAC;IAAC,SAAS,EAAE,aAAa,CAAA;CAmCpD,CAAC;AAEF;;;;;;;;GAQG;AAEH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAExB,oBAAoB,KAAG,OAAO,GAAG,SAAS,UAEzC,oBAAoB,SACpB,MAAM,KACZ,oBAAoB,CAAC,qBAAqB,CAAC,GAAG,SAAS,WAEjD,oBAAoB,QAAQ,MAAM,KAAG,MAAM;;;;;;;;CAMvD,CAAC"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import { createSelector } from "reselect";
|
|
2
|
+
import { MARKET_SORTING_CONFIG } from "./constants/perpsConfig.mjs";
|
|
3
|
+
/**
|
|
4
|
+
* Select whether the user is a first-time perps user
|
|
5
|
+
*
|
|
6
|
+
* @param state - PerpsController state
|
|
7
|
+
* @returns true if user is first-time, false otherwise
|
|
8
|
+
*/
|
|
9
|
+
export const selectIsFirstTimeUser = (state) => {
|
|
10
|
+
if (state?.isTestnet) {
|
|
11
|
+
return state?.isFirstTimeUser?.testnet ?? true;
|
|
12
|
+
}
|
|
13
|
+
return state?.isFirstTimeUser?.mainnet ?? true;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Select whether user has ever placed their first successful order
|
|
17
|
+
*
|
|
18
|
+
* @param state - PerpsController state
|
|
19
|
+
* @returns boolean indicating if first order was placed
|
|
20
|
+
*/
|
|
21
|
+
export const selectHasPlacedFirstOrder = (state) => {
|
|
22
|
+
if (state?.isTestnet) {
|
|
23
|
+
return state?.hasPlacedFirstOrder?.testnet ?? false;
|
|
24
|
+
}
|
|
25
|
+
return state?.hasPlacedFirstOrder?.mainnet ?? false;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Select watchlist markets for the current network
|
|
29
|
+
*
|
|
30
|
+
* @param state - PerpsController state
|
|
31
|
+
* @returns Array of watchlist market symbols for current network
|
|
32
|
+
*/
|
|
33
|
+
export const selectWatchlistMarkets = (state) => {
|
|
34
|
+
if (state?.isTestnet) {
|
|
35
|
+
return state?.watchlistMarkets?.testnet ?? [];
|
|
36
|
+
}
|
|
37
|
+
return state?.watchlistMarkets?.mainnet ?? [];
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Check if a specific market is in the watchlist on the current network
|
|
41
|
+
*
|
|
42
|
+
* @param state - PerpsController state
|
|
43
|
+
* @param symbol - Market symbol to check (e.g., 'BTC', 'ETH')
|
|
44
|
+
* @returns boolean indicating if market is in watchlist
|
|
45
|
+
*/
|
|
46
|
+
export const selectIsWatchlistMarket = (state, symbol) => {
|
|
47
|
+
const watchlist = selectWatchlistMarkets(state);
|
|
48
|
+
return watchlist.includes(symbol);
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* Select trade configuration for a specific market on the current network.
|
|
52
|
+
* Uses memoization to return stable object references and prevent unnecessary re-renders.
|
|
53
|
+
*
|
|
54
|
+
* Usage: selectTradeConfiguration(state, coin)
|
|
55
|
+
*
|
|
56
|
+
* @param state - The perps controller state.
|
|
57
|
+
* @param coin - The market coin symbol.
|
|
58
|
+
* @returns The trade configuration for the specified market, or undefined.
|
|
59
|
+
*/
|
|
60
|
+
export const selectTradeConfiguration = createSelector([
|
|
61
|
+
(state) => state?.isTestnet,
|
|
62
|
+
(state, _coin) => state?.tradeConfigurations,
|
|
63
|
+
(_state, coin) => coin,
|
|
64
|
+
], (isTestnet, configs, coin) => {
|
|
65
|
+
const network = isTestnet ? 'testnet' : 'mainnet';
|
|
66
|
+
const config = configs?.[network]?.[coin];
|
|
67
|
+
if (!config?.leverage) {
|
|
68
|
+
return undefined;
|
|
69
|
+
}
|
|
70
|
+
return { leverage: config.leverage };
|
|
71
|
+
});
|
|
72
|
+
/**
|
|
73
|
+
* Select pending trade configuration for a specific market on the current network.
|
|
74
|
+
* Returns undefined if config doesn't exist or has expired (more than 5 minutes old).
|
|
75
|
+
*
|
|
76
|
+
* Usage: selectPendingTradeConfiguration(state, coin)
|
|
77
|
+
*
|
|
78
|
+
* @param state - The perps controller state.
|
|
79
|
+
* @param coin - The market coin symbol.
|
|
80
|
+
* @returns The pending trade configuration, or undefined if expired or not found.
|
|
81
|
+
*/
|
|
82
|
+
export const selectPendingTradeConfiguration = createSelector([
|
|
83
|
+
(state) => state?.isTestnet,
|
|
84
|
+
(state, _coin) => state?.tradeConfigurations,
|
|
85
|
+
(_state, coin) => coin,
|
|
86
|
+
], (isTestnet, configs, coin) => {
|
|
87
|
+
const network = isTestnet ? 'testnet' : 'mainnet';
|
|
88
|
+
const config = configs?.[network]?.[coin]?.pendingConfig;
|
|
89
|
+
if (!config) {
|
|
90
|
+
return undefined;
|
|
91
|
+
}
|
|
92
|
+
// Check if config has expired (5 minutes = 300,000 milliseconds)
|
|
93
|
+
const FIVE_MINUTES_MS = 5 * 60 * 1000;
|
|
94
|
+
const now = Date.now();
|
|
95
|
+
const age = now - config.timestamp;
|
|
96
|
+
if (age > FIVE_MINUTES_MS) {
|
|
97
|
+
// Config expired, return undefined
|
|
98
|
+
return undefined;
|
|
99
|
+
}
|
|
100
|
+
// Return config without timestamp
|
|
101
|
+
const { timestamp, ...configWithoutTimestamp } = config;
|
|
102
|
+
return configWithoutTimestamp;
|
|
103
|
+
});
|
|
104
|
+
/**
|
|
105
|
+
* Select market filter preferences (network-independent)
|
|
106
|
+
*
|
|
107
|
+
* @param state - PerpsController state
|
|
108
|
+
* @returns Sort/filter preferences object with optionId and direction
|
|
109
|
+
*/
|
|
110
|
+
export const selectMarketFilterPreferences = (state) => {
|
|
111
|
+
const pref = state?.marketFilterPreferences;
|
|
112
|
+
// Handle legacy string format (backward compatibility)
|
|
113
|
+
if (typeof pref === 'string') {
|
|
114
|
+
// Map legacy compound IDs to new format
|
|
115
|
+
// Old format: 'priceChange-desc' or 'priceChange-asc'
|
|
116
|
+
// New format: { optionId: 'priceChange', direction: 'desc'/'asc' }
|
|
117
|
+
if (pref === 'priceChange-desc') {
|
|
118
|
+
return {
|
|
119
|
+
optionId: 'priceChange',
|
|
120
|
+
direction: 'desc',
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
if (pref === 'priceChange-asc') {
|
|
124
|
+
return {
|
|
125
|
+
optionId: 'priceChange',
|
|
126
|
+
direction: 'asc',
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
// Handle other simple legacy strings (e.g., 'volume', 'openInterest', etc.)
|
|
130
|
+
return {
|
|
131
|
+
optionId: pref,
|
|
132
|
+
direction: MARKET_SORTING_CONFIG.DefaultDirection,
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
// Return new object format or default
|
|
136
|
+
return (pref ?? {
|
|
137
|
+
optionId: MARKET_SORTING_CONFIG.DefaultSortOptionId,
|
|
138
|
+
direction: MARKET_SORTING_CONFIG.DefaultDirection,
|
|
139
|
+
});
|
|
140
|
+
};
|
|
141
|
+
/**
|
|
142
|
+
* Select order book grouping for a specific market on the current network.
|
|
143
|
+
*
|
|
144
|
+
* Usage: selectOrderBookGrouping(state, coin)
|
|
145
|
+
*
|
|
146
|
+
* @param state - The perps controller state.
|
|
147
|
+
* @param coin - The market coin symbol.
|
|
148
|
+
* @returns The order book grouping value, or undefined.
|
|
149
|
+
*/
|
|
150
|
+
export const selectOrderBookGrouping = createSelector([
|
|
151
|
+
(state) => state?.isTestnet,
|
|
152
|
+
(state, _coin) => state?.tradeConfigurations,
|
|
153
|
+
(_state, coin) => coin,
|
|
154
|
+
], (isTestnet, configs, coin) => {
|
|
155
|
+
const network = isTestnet ? 'testnet' : 'mainnet';
|
|
156
|
+
return configs?.[network]?.[coin]?.orderBookGrouping;
|
|
157
|
+
});
|
|
158
|
+
//# sourceMappingURL=selectors.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selectors.mjs","sourceRoot":"","sources":["../src/selectors.ts"],"names":[],"mappings":"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","sourcesContent":["import { createSelector } from 'reselect';\n\nimport { MARKET_SORTING_CONFIG, SortOptionId } from './constants/perpsConfig';\nimport type { PerpsControllerState } from './PerpsController';\nimport type { PerpsSelectedPaymentToken } from './types';\nimport type { SortDirection } from './utils/sortMarkets';\n\n/**\n * Select whether the user is a first-time perps user\n *\n * @param state - PerpsController state\n * @returns true if user is first-time, false otherwise\n */\nexport const selectIsFirstTimeUser = (\n state: PerpsControllerState | undefined,\n): boolean => {\n if (state?.isTestnet) {\n return state?.isFirstTimeUser?.testnet ?? true;\n }\n return state?.isFirstTimeUser?.mainnet ?? true;\n};\n\n/**\n * Select whether user has ever placed their first successful order\n *\n * @param state - PerpsController state\n * @returns boolean indicating if first order was placed\n */\nexport const selectHasPlacedFirstOrder = (\n state: PerpsControllerState,\n): boolean => {\n if (state?.isTestnet) {\n return state?.hasPlacedFirstOrder?.testnet ?? false;\n }\n return state?.hasPlacedFirstOrder?.mainnet ?? false;\n};\n\n/**\n * Select watchlist markets for the current network\n *\n * @param state - PerpsController state\n * @returns Array of watchlist market symbols for current network\n */\nexport const selectWatchlistMarkets = (\n state: PerpsControllerState,\n): string[] => {\n if (state?.isTestnet) {\n return state?.watchlistMarkets?.testnet ?? [];\n }\n return state?.watchlistMarkets?.mainnet ?? [];\n};\n\n/**\n * Check if a specific market is in the watchlist on the current network\n *\n * @param state - PerpsController state\n * @param symbol - Market symbol to check (e.g., 'BTC', 'ETH')\n * @returns boolean indicating if market is in watchlist\n */\nexport const selectIsWatchlistMarket = (\n state: PerpsControllerState,\n symbol: string,\n): boolean => {\n const watchlist = selectWatchlistMarkets(state);\n return watchlist.includes(symbol);\n};\n\n/**\n * Select trade configuration for a specific market on the current network.\n * Uses memoization to return stable object references and prevent unnecessary re-renders.\n *\n * Usage: selectTradeConfiguration(state, coin)\n *\n * @param state - The perps controller state.\n * @param coin - The market coin symbol.\n * @returns The trade configuration for the specified market, or undefined.\n */\n\nexport const selectTradeConfiguration = createSelector(\n [\n (state: PerpsControllerState): boolean | undefined => state?.isTestnet,\n (\n state: PerpsControllerState,\n _coin: string,\n ): PerpsControllerState['tradeConfigurations'] | undefined =>\n state?.tradeConfigurations,\n (_state: PerpsControllerState, coin: string): string => coin,\n ],\n (isTestnet, configs, coin): { leverage?: number } | undefined => {\n const network = isTestnet ? 'testnet' : 'mainnet';\n const config = configs?.[network]?.[coin];\n\n if (!config?.leverage) {\n return undefined;\n }\n\n return { leverage: config.leverage };\n },\n);\n\n/**\n * Select pending trade configuration for a specific market on the current network.\n * Returns undefined if config doesn't exist or has expired (more than 5 minutes old).\n *\n * Usage: selectPendingTradeConfiguration(state, coin)\n *\n * @param state - The perps controller state.\n * @param coin - The market coin symbol.\n * @returns The pending trade configuration, or undefined if expired or not found.\n */\n\nexport const selectPendingTradeConfiguration = createSelector(\n [\n (state: PerpsControllerState): boolean | undefined => state?.isTestnet,\n (\n state: PerpsControllerState,\n _coin: string,\n ): PerpsControllerState['tradeConfigurations'] | undefined =>\n state?.tradeConfigurations,\n (_state: PerpsControllerState, coin: string): string => coin,\n ],\n (\n isTestnet,\n configs,\n coin,\n ):\n | {\n amount?: string;\n leverage?: number;\n takeProfitPrice?: string;\n stopLossPrice?: string;\n limitPrice?: string;\n orderType?: 'market' | 'limit';\n selectedPaymentToken?: PerpsSelectedPaymentToken | null;\n }\n | undefined => {\n const network = isTestnet ? 'testnet' : 'mainnet';\n const config = configs?.[network]?.[coin]?.pendingConfig;\n\n if (!config) {\n return undefined;\n }\n\n // Check if config has expired (5 minutes = 300,000 milliseconds)\n const FIVE_MINUTES_MS = 5 * 60 * 1000;\n const now = Date.now();\n const age = now - config.timestamp;\n\n if (age > FIVE_MINUTES_MS) {\n // Config expired, return undefined\n return undefined;\n }\n\n // Return config without timestamp\n const { timestamp, ...configWithoutTimestamp } = config;\n return configWithoutTimestamp;\n },\n);\n\n/**\n * Select market filter preferences (network-independent)\n *\n * @param state - PerpsController state\n * @returns Sort/filter preferences object with optionId and direction\n */\nexport const selectMarketFilterPreferences = (\n state: PerpsControllerState,\n): { optionId: SortOptionId; direction: SortDirection } => {\n const pref = state?.marketFilterPreferences;\n\n // Handle legacy string format (backward compatibility)\n if (typeof pref === 'string') {\n // Map legacy compound IDs to new format\n // Old format: 'priceChange-desc' or 'priceChange-asc'\n // New format: { optionId: 'priceChange', direction: 'desc'/'asc' }\n if (pref === 'priceChange-desc') {\n return {\n optionId: 'priceChange',\n direction: 'desc',\n };\n }\n if (pref === 'priceChange-asc') {\n return {\n optionId: 'priceChange',\n direction: 'asc',\n };\n }\n\n // Handle other simple legacy strings (e.g., 'volume', 'openInterest', etc.)\n return {\n optionId: pref as SortOptionId,\n direction: MARKET_SORTING_CONFIG.DefaultDirection,\n };\n }\n\n // Return new object format or default\n return (\n pref ?? {\n optionId: MARKET_SORTING_CONFIG.DefaultSortOptionId,\n direction: MARKET_SORTING_CONFIG.DefaultDirection,\n }\n );\n};\n\n/**\n * Select order book grouping for a specific market on the current network.\n *\n * Usage: selectOrderBookGrouping(state, coin)\n *\n * @param state - The perps controller state.\n * @param coin - The market coin symbol.\n * @returns The order book grouping value, or undefined.\n */\n\nexport const selectOrderBookGrouping = createSelector(\n [\n (state: PerpsControllerState): boolean | undefined => state?.isTestnet,\n (\n state: PerpsControllerState,\n _coin: string,\n ): PerpsControllerState['tradeConfigurations'] | undefined =>\n state?.tradeConfigurations,\n (_state: PerpsControllerState, coin: string): string => coin,\n ],\n (isTestnet, configs, coin): number | undefined => {\n const network = isTestnet ? 'testnet' : 'mainnet';\n return configs?.[network]?.[coin]?.orderBookGrouping;\n },\n);\n"]}
|