@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,216 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Portable chart configuration constants for PerpsController
|
|
3
|
+
* NO UI dependencies (@metamask/design-tokens, Colors, Theme)
|
|
4
|
+
*
|
|
5
|
+
* UI-specific exports (PERPS_CHART_CONFIG, CHART_INTERVALS, TIME_DURATIONS,
|
|
6
|
+
* getCandlestickColors) remain in the outer constants/chartConfig.ts
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Enum for available candle periods
|
|
10
|
+
* Provides type safety and prevents typos when referencing candle periods
|
|
11
|
+
*/
|
|
12
|
+
export declare enum CandlePeriod {
|
|
13
|
+
OneMinute = "1m",
|
|
14
|
+
ThreeMinutes = "3m",
|
|
15
|
+
FiveMinutes = "5m",
|
|
16
|
+
FifteenMinutes = "15m",
|
|
17
|
+
ThirtyMinutes = "30m",
|
|
18
|
+
OneHour = "1h",
|
|
19
|
+
TwoHours = "2h",
|
|
20
|
+
FourHours = "4h",
|
|
21
|
+
EightHours = "8h",
|
|
22
|
+
TwelveHours = "12h",
|
|
23
|
+
OneDay = "1d",
|
|
24
|
+
ThreeDays = "3d",
|
|
25
|
+
OneWeek = "1w",
|
|
26
|
+
OneMonth = "1M"
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Enum for available time durations
|
|
30
|
+
* Provides type safety and prevents typos when referencing durations
|
|
31
|
+
*/
|
|
32
|
+
export declare enum TimeDuration {
|
|
33
|
+
OneHour = "1hr",
|
|
34
|
+
OneDay = "1d",
|
|
35
|
+
OneWeek = "1w",
|
|
36
|
+
OneMonth = "1m",
|
|
37
|
+
YearToDate = "ytd",
|
|
38
|
+
Max = "max"
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Enum for chart intervals (legacy support)
|
|
42
|
+
* Note: Some intervals overlap with CandlePeriod but serve different purposes
|
|
43
|
+
*/
|
|
44
|
+
export declare enum ChartInterval {
|
|
45
|
+
OneMinute = "1m",
|
|
46
|
+
FiveMinutes = "5m",
|
|
47
|
+
FifteenMinutes = "15m",
|
|
48
|
+
ThirtyMinutes = "30m",
|
|
49
|
+
OneHour = "1h",
|
|
50
|
+
TwoHours = "2h",
|
|
51
|
+
FourHours = "4h",
|
|
52
|
+
EightHours = "8h"
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Maximum number of candles to load in memory
|
|
56
|
+
* Extracted from PERPS_CHART_CONFIG.CANDLE_COUNT.TOTAL for portability
|
|
57
|
+
*/
|
|
58
|
+
export declare const MAX_CANDLE_COUNT = 500;
|
|
59
|
+
/**
|
|
60
|
+
* Available candle periods mapped to each time duration
|
|
61
|
+
* This ensures users only see sensible candle periods for each duration
|
|
62
|
+
* and keeps the chart readable on mobile screens (target: ~20-100 candles)
|
|
63
|
+
*/
|
|
64
|
+
export declare const DURATION_CANDLE_PERIODS: {
|
|
65
|
+
readonly "1hr": {
|
|
66
|
+
readonly periods: readonly [{
|
|
67
|
+
readonly label: "1min";
|
|
68
|
+
readonly value: CandlePeriod.OneMinute;
|
|
69
|
+
}, {
|
|
70
|
+
readonly label: "3min";
|
|
71
|
+
readonly value: CandlePeriod.ThreeMinutes;
|
|
72
|
+
}, {
|
|
73
|
+
readonly label: "5min";
|
|
74
|
+
readonly value: CandlePeriod.FiveMinutes;
|
|
75
|
+
}, {
|
|
76
|
+
readonly label: "15min";
|
|
77
|
+
readonly value: CandlePeriod.FifteenMinutes;
|
|
78
|
+
}];
|
|
79
|
+
readonly default: CandlePeriod.OneMinute;
|
|
80
|
+
};
|
|
81
|
+
readonly "1d": {
|
|
82
|
+
readonly periods: readonly [{
|
|
83
|
+
readonly label: "15min";
|
|
84
|
+
readonly value: CandlePeriod.FifteenMinutes;
|
|
85
|
+
}, {
|
|
86
|
+
readonly label: "1h";
|
|
87
|
+
readonly value: CandlePeriod.OneHour;
|
|
88
|
+
}, {
|
|
89
|
+
readonly label: "2h";
|
|
90
|
+
readonly value: CandlePeriod.TwoHours;
|
|
91
|
+
}, {
|
|
92
|
+
readonly label: "4h";
|
|
93
|
+
readonly value: CandlePeriod.FourHours;
|
|
94
|
+
}];
|
|
95
|
+
readonly default: CandlePeriod.OneHour;
|
|
96
|
+
};
|
|
97
|
+
readonly "1w": {
|
|
98
|
+
readonly periods: readonly [{
|
|
99
|
+
readonly label: "1h";
|
|
100
|
+
readonly value: CandlePeriod.OneHour;
|
|
101
|
+
}, {
|
|
102
|
+
readonly label: "2h";
|
|
103
|
+
readonly value: CandlePeriod.TwoHours;
|
|
104
|
+
}, {
|
|
105
|
+
readonly label: "4h";
|
|
106
|
+
readonly value: CandlePeriod.FourHours;
|
|
107
|
+
}, {
|
|
108
|
+
readonly label: "8h";
|
|
109
|
+
readonly value: CandlePeriod.EightHours;
|
|
110
|
+
}, {
|
|
111
|
+
readonly label: "1D";
|
|
112
|
+
readonly value: CandlePeriod.OneDay;
|
|
113
|
+
}];
|
|
114
|
+
readonly default: CandlePeriod.FourHours;
|
|
115
|
+
};
|
|
116
|
+
readonly "1m": {
|
|
117
|
+
readonly periods: readonly [{
|
|
118
|
+
readonly label: "8h";
|
|
119
|
+
readonly value: CandlePeriod.EightHours;
|
|
120
|
+
}, {
|
|
121
|
+
readonly label: "12h";
|
|
122
|
+
readonly value: CandlePeriod.TwelveHours;
|
|
123
|
+
}, {
|
|
124
|
+
readonly label: "1D";
|
|
125
|
+
readonly value: CandlePeriod.OneDay;
|
|
126
|
+
}, {
|
|
127
|
+
readonly label: "1W";
|
|
128
|
+
readonly value: CandlePeriod.OneWeek;
|
|
129
|
+
}];
|
|
130
|
+
readonly default: CandlePeriod.OneDay;
|
|
131
|
+
};
|
|
132
|
+
readonly ytd: {
|
|
133
|
+
readonly periods: readonly [{
|
|
134
|
+
readonly label: "1D";
|
|
135
|
+
readonly value: CandlePeriod.OneDay;
|
|
136
|
+
}, {
|
|
137
|
+
readonly label: "1W";
|
|
138
|
+
readonly value: CandlePeriod.OneWeek;
|
|
139
|
+
}];
|
|
140
|
+
readonly default: CandlePeriod.OneWeek;
|
|
141
|
+
};
|
|
142
|
+
readonly max: {
|
|
143
|
+
readonly periods: readonly [{
|
|
144
|
+
readonly label: "1W";
|
|
145
|
+
readonly value: CandlePeriod.OneWeek;
|
|
146
|
+
}];
|
|
147
|
+
readonly default: CandlePeriod.OneWeek;
|
|
148
|
+
};
|
|
149
|
+
};
|
|
150
|
+
export declare const CANDLE_PERIODS: readonly [{
|
|
151
|
+
readonly label: "1m";
|
|
152
|
+
readonly value: CandlePeriod.OneMinute;
|
|
153
|
+
}, {
|
|
154
|
+
readonly label: "3m";
|
|
155
|
+
readonly value: CandlePeriod.ThreeMinutes;
|
|
156
|
+
}, {
|
|
157
|
+
readonly label: "5m";
|
|
158
|
+
readonly value: CandlePeriod.FiveMinutes;
|
|
159
|
+
}, {
|
|
160
|
+
readonly label: "15m";
|
|
161
|
+
readonly value: CandlePeriod.FifteenMinutes;
|
|
162
|
+
}, {
|
|
163
|
+
readonly label: "30m";
|
|
164
|
+
readonly value: CandlePeriod.ThirtyMinutes;
|
|
165
|
+
}, {
|
|
166
|
+
readonly label: "1h";
|
|
167
|
+
readonly value: CandlePeriod.OneHour;
|
|
168
|
+
}, {
|
|
169
|
+
readonly label: "2h";
|
|
170
|
+
readonly value: CandlePeriod.TwoHours;
|
|
171
|
+
}, {
|
|
172
|
+
readonly label: "4h";
|
|
173
|
+
readonly value: CandlePeriod.FourHours;
|
|
174
|
+
}, {
|
|
175
|
+
readonly label: "8h";
|
|
176
|
+
readonly value: CandlePeriod.EightHours;
|
|
177
|
+
}, {
|
|
178
|
+
readonly label: "12h";
|
|
179
|
+
readonly value: CandlePeriod.TwelveHours;
|
|
180
|
+
}, {
|
|
181
|
+
readonly label: "1d";
|
|
182
|
+
readonly value: CandlePeriod.OneDay;
|
|
183
|
+
}, {
|
|
184
|
+
readonly label: "3d";
|
|
185
|
+
readonly value: CandlePeriod.ThreeDays;
|
|
186
|
+
}, {
|
|
187
|
+
readonly label: "7d";
|
|
188
|
+
readonly value: CandlePeriod.OneWeek;
|
|
189
|
+
}];
|
|
190
|
+
export declare const DEFAULT_CANDLE_PERIOD = CandlePeriod.FifteenMinutes;
|
|
191
|
+
/**
|
|
192
|
+
* Get available candle periods for a specific duration
|
|
193
|
+
*
|
|
194
|
+
* @param duration - The time duration to retrieve candle periods for.
|
|
195
|
+
* @returns The list of candle period options available for the given duration.
|
|
196
|
+
*/
|
|
197
|
+
export declare const getCandlePeriodsForDuration: (duration: TimeDuration | string) => readonly {
|
|
198
|
+
label: string;
|
|
199
|
+
value: CandlePeriod;
|
|
200
|
+
}[];
|
|
201
|
+
/**
|
|
202
|
+
* Get the default candle period for a specific duration
|
|
203
|
+
*
|
|
204
|
+
* @param duration - The time duration to retrieve the default candle period for.
|
|
205
|
+
* @returns The default candle period for the given duration.
|
|
206
|
+
*/
|
|
207
|
+
export declare const getDefaultCandlePeriodForDuration: (duration: TimeDuration | string) => CandlePeriod;
|
|
208
|
+
/**
|
|
209
|
+
* Calculate the number of candles to fetch based on duration and candle period
|
|
210
|
+
*
|
|
211
|
+
* @param duration - The time duration for the chart display.
|
|
212
|
+
* @param candlePeriod - The candle period interval.
|
|
213
|
+
* @returns The number of candles to fetch, capped at MAX_CANDLE_COUNT.
|
|
214
|
+
*/
|
|
215
|
+
export declare const calculateCandleCount: (duration: TimeDuration | string, candlePeriod: CandlePeriod | string) => number;
|
|
216
|
+
//# sourceMappingURL=chartConfig.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chartConfig.d.mts","sourceRoot":"","sources":["../../src/constants/chartConfig.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;GAGG;AACH,oBAAY,YAAY;IACtB,SAAS,OAAO;IAChB,YAAY,OAAO;IACnB,WAAW,OAAO;IAClB,cAAc,QAAQ;IACtB,aAAa,QAAQ;IACrB,OAAO,OAAO;IACd,QAAQ,OAAO;IACf,SAAS,OAAO;IAChB,UAAU,OAAO;IACjB,WAAW,QAAQ;IACnB,MAAM,OAAO;IACb,SAAS,OAAO;IAChB,OAAO,OAAO;IACd,QAAQ,OAAO;CAChB;AAED;;;GAGG;AACH,oBAAY,YAAY;IACtB,OAAO,QAAQ;IACf,MAAM,OAAO;IACb,OAAO,OAAO;IACd,QAAQ,OAAO;IACf,UAAU,QAAQ;IAClB,GAAG,QAAQ;CACZ;AAED;;;GAGG;AACH,oBAAY,aAAa;IACvB,SAAS,OAAO;IAChB,WAAW,OAAO;IAClB,cAAc,QAAQ;IACtB,aAAa,QAAQ;IACrB,OAAO,OAAO;IACd,QAAQ,OAAO;IACf,SAAS,OAAO;IAChB,UAAU,OAAO;CAClB;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,MAAM,CAAC;AAEpC;;;;GAIG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmD1B,CAAC;AAEX,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAcjB,CAAC;AAEX,eAAO,MAAM,qBAAqB,8BAA8B,CAAC;AAEjE;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,aAC5B,YAAY,GAAG,MAAM,KAC9B,SAAS;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,YAAY,CAAA;CAAE,EAKjD,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,iCAAiC,aAClC,YAAY,GAAG,MAAM,KAC9B,YAEmB,CAAC;AAEvB;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,aACrB,YAAY,GAAG,MAAM,gBACjB,YAAY,GAAG,MAAM,KAClC,MA+DF,CAAC"}
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Portable chart configuration constants for PerpsController
|
|
3
|
+
* NO UI dependencies (@metamask/design-tokens, Colors, Theme)
|
|
4
|
+
*
|
|
5
|
+
* UI-specific exports (PERPS_CHART_CONFIG, CHART_INTERVALS, TIME_DURATIONS,
|
|
6
|
+
* getCandlestickColors) remain in the outer constants/chartConfig.ts
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Enum for available candle periods
|
|
10
|
+
* Provides type safety and prevents typos when referencing candle periods
|
|
11
|
+
*/
|
|
12
|
+
export var CandlePeriod;
|
|
13
|
+
(function (CandlePeriod) {
|
|
14
|
+
CandlePeriod["OneMinute"] = "1m";
|
|
15
|
+
CandlePeriod["ThreeMinutes"] = "3m";
|
|
16
|
+
CandlePeriod["FiveMinutes"] = "5m";
|
|
17
|
+
CandlePeriod["FifteenMinutes"] = "15m";
|
|
18
|
+
CandlePeriod["ThirtyMinutes"] = "30m";
|
|
19
|
+
CandlePeriod["OneHour"] = "1h";
|
|
20
|
+
CandlePeriod["TwoHours"] = "2h";
|
|
21
|
+
CandlePeriod["FourHours"] = "4h";
|
|
22
|
+
CandlePeriod["EightHours"] = "8h";
|
|
23
|
+
CandlePeriod["TwelveHours"] = "12h";
|
|
24
|
+
CandlePeriod["OneDay"] = "1d";
|
|
25
|
+
CandlePeriod["ThreeDays"] = "3d";
|
|
26
|
+
CandlePeriod["OneWeek"] = "1w";
|
|
27
|
+
CandlePeriod["OneMonth"] = "1M";
|
|
28
|
+
})(CandlePeriod || (CandlePeriod = {}));
|
|
29
|
+
/**
|
|
30
|
+
* Enum for available time durations
|
|
31
|
+
* Provides type safety and prevents typos when referencing durations
|
|
32
|
+
*/
|
|
33
|
+
export var TimeDuration;
|
|
34
|
+
(function (TimeDuration) {
|
|
35
|
+
TimeDuration["OneHour"] = "1hr";
|
|
36
|
+
TimeDuration["OneDay"] = "1d";
|
|
37
|
+
TimeDuration["OneWeek"] = "1w";
|
|
38
|
+
TimeDuration["OneMonth"] = "1m";
|
|
39
|
+
TimeDuration["YearToDate"] = "ytd";
|
|
40
|
+
TimeDuration["Max"] = "max";
|
|
41
|
+
})(TimeDuration || (TimeDuration = {}));
|
|
42
|
+
/**
|
|
43
|
+
* Enum for chart intervals (legacy support)
|
|
44
|
+
* Note: Some intervals overlap with CandlePeriod but serve different purposes
|
|
45
|
+
*/
|
|
46
|
+
export var ChartInterval;
|
|
47
|
+
(function (ChartInterval) {
|
|
48
|
+
ChartInterval["OneMinute"] = "1m";
|
|
49
|
+
ChartInterval["FiveMinutes"] = "5m";
|
|
50
|
+
ChartInterval["FifteenMinutes"] = "15m";
|
|
51
|
+
ChartInterval["ThirtyMinutes"] = "30m";
|
|
52
|
+
ChartInterval["OneHour"] = "1h";
|
|
53
|
+
ChartInterval["TwoHours"] = "2h";
|
|
54
|
+
ChartInterval["FourHours"] = "4h";
|
|
55
|
+
ChartInterval["EightHours"] = "8h";
|
|
56
|
+
})(ChartInterval || (ChartInterval = {}));
|
|
57
|
+
/**
|
|
58
|
+
* Maximum number of candles to load in memory
|
|
59
|
+
* Extracted from PERPS_CHART_CONFIG.CANDLE_COUNT.TOTAL for portability
|
|
60
|
+
*/
|
|
61
|
+
export const MAX_CANDLE_COUNT = 500;
|
|
62
|
+
/**
|
|
63
|
+
* Available candle periods mapped to each time duration
|
|
64
|
+
* This ensures users only see sensible candle periods for each duration
|
|
65
|
+
* and keeps the chart readable on mobile screens (target: ~20-100 candles)
|
|
66
|
+
*/
|
|
67
|
+
export const DURATION_CANDLE_PERIODS = {
|
|
68
|
+
[TimeDuration.OneHour]: {
|
|
69
|
+
periods: [
|
|
70
|
+
{ label: '1min', value: CandlePeriod.OneMinute }, // 60 candles
|
|
71
|
+
{ label: '3min', value: CandlePeriod.ThreeMinutes }, // 20 candles
|
|
72
|
+
{ label: '5min', value: CandlePeriod.FiveMinutes }, // 12 candles
|
|
73
|
+
{ label: '15min', value: CandlePeriod.FifteenMinutes }, // 4 candles
|
|
74
|
+
],
|
|
75
|
+
default: CandlePeriod.OneMinute, // 1-minute candles for development/testing
|
|
76
|
+
},
|
|
77
|
+
[TimeDuration.OneDay]: {
|
|
78
|
+
periods: [
|
|
79
|
+
{ label: '15min', value: CandlePeriod.FifteenMinutes }, // 96 candles
|
|
80
|
+
{ label: '1h', value: CandlePeriod.OneHour }, // 24 candles
|
|
81
|
+
{ label: '2h', value: CandlePeriod.TwoHours }, // 12 candles
|
|
82
|
+
{ label: '4h', value: CandlePeriod.FourHours }, // 6 candles
|
|
83
|
+
],
|
|
84
|
+
default: CandlePeriod.OneHour, // Good balance for daily view
|
|
85
|
+
},
|
|
86
|
+
[TimeDuration.OneWeek]: {
|
|
87
|
+
periods: [
|
|
88
|
+
{ label: '1h', value: CandlePeriod.OneHour }, // 168 candles (bit high, but acceptable)
|
|
89
|
+
{ label: '2h', value: CandlePeriod.TwoHours }, // 84 candles
|
|
90
|
+
{ label: '4h', value: CandlePeriod.FourHours }, // 42 candles
|
|
91
|
+
{ label: '8h', value: CandlePeriod.EightHours }, // 21 candles
|
|
92
|
+
{ label: '1D', value: CandlePeriod.OneDay }, // 7 candles
|
|
93
|
+
],
|
|
94
|
+
default: CandlePeriod.FourHours, // Good detail for weekly view
|
|
95
|
+
},
|
|
96
|
+
[TimeDuration.OneMonth]: {
|
|
97
|
+
periods: [
|
|
98
|
+
{ label: '8h', value: CandlePeriod.EightHours }, // 90 candles (30 days * 3 per day)
|
|
99
|
+
{ label: '12h', value: CandlePeriod.TwelveHours }, // 60 candles (30 days * 2 per day)
|
|
100
|
+
{ label: '1D', value: CandlePeriod.OneDay }, // 30 candles
|
|
101
|
+
{ label: '1W', value: CandlePeriod.OneWeek }, // ~4 candles
|
|
102
|
+
],
|
|
103
|
+
default: CandlePeriod.OneDay, // Daily candles for monthly view
|
|
104
|
+
},
|
|
105
|
+
[TimeDuration.YearToDate]: {
|
|
106
|
+
periods: [
|
|
107
|
+
{ label: '1D', value: CandlePeriod.OneDay }, // ~365 candles (will be capped)
|
|
108
|
+
{ label: '1W', value: CandlePeriod.OneWeek }, // ~52 candles
|
|
109
|
+
],
|
|
110
|
+
default: CandlePeriod.OneWeek, // Weekly candles for yearly view
|
|
111
|
+
},
|
|
112
|
+
[TimeDuration.Max]: {
|
|
113
|
+
periods: [
|
|
114
|
+
{ label: '1W', value: CandlePeriod.OneWeek }, // ~104 candles (2 years)
|
|
115
|
+
],
|
|
116
|
+
default: CandlePeriod.OneWeek, // Only weekly makes sense for max view
|
|
117
|
+
},
|
|
118
|
+
};
|
|
119
|
+
export const CANDLE_PERIODS = [
|
|
120
|
+
{ label: '1m', value: CandlePeriod.OneMinute },
|
|
121
|
+
{ label: '3m', value: CandlePeriod.ThreeMinutes },
|
|
122
|
+
{ label: '5m', value: CandlePeriod.FiveMinutes },
|
|
123
|
+
{ label: '15m', value: CandlePeriod.FifteenMinutes },
|
|
124
|
+
{ label: '30m', value: CandlePeriod.ThirtyMinutes },
|
|
125
|
+
{ label: '1h', value: CandlePeriod.OneHour },
|
|
126
|
+
{ label: '2h', value: CandlePeriod.TwoHours },
|
|
127
|
+
{ label: '4h', value: CandlePeriod.FourHours },
|
|
128
|
+
{ label: '8h', value: CandlePeriod.EightHours },
|
|
129
|
+
{ label: '12h', value: CandlePeriod.TwelveHours },
|
|
130
|
+
{ label: '1d', value: CandlePeriod.OneDay },
|
|
131
|
+
{ label: '3d', value: CandlePeriod.ThreeDays },
|
|
132
|
+
{ label: '7d', value: CandlePeriod.OneWeek },
|
|
133
|
+
];
|
|
134
|
+
export const DEFAULT_CANDLE_PERIOD = CandlePeriod.FifteenMinutes;
|
|
135
|
+
/**
|
|
136
|
+
* Get available candle periods for a specific duration
|
|
137
|
+
*
|
|
138
|
+
* @param duration - The time duration to retrieve candle periods for.
|
|
139
|
+
* @returns The list of candle period options available for the given duration.
|
|
140
|
+
*/
|
|
141
|
+
export const getCandlePeriodsForDuration = (duration) => {
|
|
142
|
+
const periods = DURATION_CANDLE_PERIODS[duration]?.periods || [];
|
|
143
|
+
return periods;
|
|
144
|
+
};
|
|
145
|
+
/**
|
|
146
|
+
* Get the default candle period for a specific duration
|
|
147
|
+
*
|
|
148
|
+
* @param duration - The time duration to retrieve the default candle period for.
|
|
149
|
+
* @returns The default candle period for the given duration.
|
|
150
|
+
*/
|
|
151
|
+
export const getDefaultCandlePeriodForDuration = (duration) => DURATION_CANDLE_PERIODS[duration]?.default ||
|
|
152
|
+
CandlePeriod.OneHour;
|
|
153
|
+
/**
|
|
154
|
+
* Calculate the number of candles to fetch based on duration and candle period
|
|
155
|
+
*
|
|
156
|
+
* @param duration - The time duration for the chart display.
|
|
157
|
+
* @param candlePeriod - The candle period interval.
|
|
158
|
+
* @returns The number of candles to fetch, capped at MAX_CANDLE_COUNT.
|
|
159
|
+
*/
|
|
160
|
+
export const calculateCandleCount = (duration, candlePeriod) => {
|
|
161
|
+
// Convert candle period to minutes
|
|
162
|
+
const periodInMinutes = (() => {
|
|
163
|
+
switch (candlePeriod) {
|
|
164
|
+
case CandlePeriod.OneMinute:
|
|
165
|
+
return 1;
|
|
166
|
+
case CandlePeriod.ThreeMinutes:
|
|
167
|
+
return 3;
|
|
168
|
+
case CandlePeriod.FiveMinutes:
|
|
169
|
+
return 5;
|
|
170
|
+
case CandlePeriod.FifteenMinutes:
|
|
171
|
+
return 15;
|
|
172
|
+
case CandlePeriod.ThirtyMinutes:
|
|
173
|
+
return 30;
|
|
174
|
+
case CandlePeriod.OneHour:
|
|
175
|
+
return 60;
|
|
176
|
+
case CandlePeriod.TwoHours:
|
|
177
|
+
return 120;
|
|
178
|
+
case CandlePeriod.FourHours:
|
|
179
|
+
return 240;
|
|
180
|
+
case CandlePeriod.EightHours:
|
|
181
|
+
return 480;
|
|
182
|
+
case CandlePeriod.TwelveHours:
|
|
183
|
+
return 720;
|
|
184
|
+
case CandlePeriod.OneDay:
|
|
185
|
+
return 1440; // 24 * 60
|
|
186
|
+
case CandlePeriod.ThreeDays:
|
|
187
|
+
return 4320; // 3 * 24 * 60
|
|
188
|
+
case CandlePeriod.OneWeek:
|
|
189
|
+
return 10080; // 7 * 24 * 60
|
|
190
|
+
case CandlePeriod.OneMonth:
|
|
191
|
+
return 43200; // 30 * 24 * 60 (approximate)
|
|
192
|
+
default:
|
|
193
|
+
return 60; // Default to 1h
|
|
194
|
+
}
|
|
195
|
+
})();
|
|
196
|
+
// Convert duration to total minutes needed
|
|
197
|
+
const durationInMinutes = (() => {
|
|
198
|
+
switch (duration) {
|
|
199
|
+
case TimeDuration.OneHour:
|
|
200
|
+
return 60; // 1 hour
|
|
201
|
+
case TimeDuration.OneDay:
|
|
202
|
+
return 60 * 24; // 1 day
|
|
203
|
+
case TimeDuration.OneWeek:
|
|
204
|
+
return 60 * 24 * 7; // 1 week
|
|
205
|
+
case TimeDuration.OneMonth:
|
|
206
|
+
return 60 * 24 * 30; // 1 month (30 days)
|
|
207
|
+
case TimeDuration.YearToDate:
|
|
208
|
+
return 60 * 24 * 365; // Year to date (365 days max)
|
|
209
|
+
case TimeDuration.Max:
|
|
210
|
+
return 60 * 24 * 365 * 2; // Max (2 years)
|
|
211
|
+
default:
|
|
212
|
+
return 60 * 24; // Default to 1 day
|
|
213
|
+
}
|
|
214
|
+
})();
|
|
215
|
+
// Calculate number of candles needed
|
|
216
|
+
const candleCount = Math.ceil(durationInMinutes / periodInMinutes);
|
|
217
|
+
// Cap at MAX_CANDLE_COUNT candles max for memory management
|
|
218
|
+
// Allow minimum of 10 candles for basic functionality
|
|
219
|
+
return Math.min(Math.max(candleCount, 10), MAX_CANDLE_COUNT);
|
|
220
|
+
};
|
|
221
|
+
//# sourceMappingURL=chartConfig.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chartConfig.mjs","sourceRoot":"","sources":["../../src/constants/chartConfig.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Portable chart configuration constants for PerpsController\n * NO UI dependencies (@metamask/design-tokens, Colors, Theme)\n *\n * UI-specific exports (PERPS_CHART_CONFIG, CHART_INTERVALS, TIME_DURATIONS,\n * getCandlestickColors) remain in the outer constants/chartConfig.ts\n */\n\n/**\n * Enum for available candle periods\n * Provides type safety and prevents typos when referencing candle periods\n */\nexport enum CandlePeriod {\n OneMinute = '1m',\n ThreeMinutes = '3m',\n FiveMinutes = '5m',\n FifteenMinutes = '15m',\n ThirtyMinutes = '30m',\n OneHour = '1h',\n TwoHours = '2h',\n FourHours = '4h',\n EightHours = '8h',\n TwelveHours = '12h',\n OneDay = '1d',\n ThreeDays = '3d',\n OneWeek = '1w',\n OneMonth = '1M',\n}\n\n/**\n * Enum for available time durations\n * Provides type safety and prevents typos when referencing durations\n */\nexport enum TimeDuration {\n OneHour = '1hr',\n OneDay = '1d',\n OneWeek = '1w',\n OneMonth = '1m',\n YearToDate = 'ytd',\n Max = 'max',\n}\n\n/**\n * Enum for chart intervals (legacy support)\n * Note: Some intervals overlap with CandlePeriod but serve different purposes\n */\nexport enum ChartInterval {\n OneMinute = '1m',\n FiveMinutes = '5m',\n FifteenMinutes = '15m',\n ThirtyMinutes = '30m',\n OneHour = '1h',\n TwoHours = '2h',\n FourHours = '4h',\n EightHours = '8h',\n}\n\n/**\n * Maximum number of candles to load in memory\n * Extracted from PERPS_CHART_CONFIG.CANDLE_COUNT.TOTAL for portability\n */\nexport const MAX_CANDLE_COUNT = 500;\n\n/**\n * Available candle periods mapped to each time duration\n * This ensures users only see sensible candle periods for each duration\n * and keeps the chart readable on mobile screens (target: ~20-100 candles)\n */\nexport const DURATION_CANDLE_PERIODS = {\n [TimeDuration.OneHour]: {\n periods: [\n { label: '1min', value: CandlePeriod.OneMinute }, // 60 candles\n { label: '3min', value: CandlePeriod.ThreeMinutes }, // 20 candles\n { label: '5min', value: CandlePeriod.FiveMinutes }, // 12 candles\n { label: '15min', value: CandlePeriod.FifteenMinutes }, // 4 candles\n ],\n default: CandlePeriod.OneMinute, // 1-minute candles for development/testing\n },\n [TimeDuration.OneDay]: {\n periods: [\n { label: '15min', value: CandlePeriod.FifteenMinutes }, // 96 candles\n { label: '1h', value: CandlePeriod.OneHour }, // 24 candles\n { label: '2h', value: CandlePeriod.TwoHours }, // 12 candles\n { label: '4h', value: CandlePeriod.FourHours }, // 6 candles\n ],\n default: CandlePeriod.OneHour, // Good balance for daily view\n },\n [TimeDuration.OneWeek]: {\n periods: [\n { label: '1h', value: CandlePeriod.OneHour }, // 168 candles (bit high, but acceptable)\n { label: '2h', value: CandlePeriod.TwoHours }, // 84 candles\n { label: '4h', value: CandlePeriod.FourHours }, // 42 candles\n { label: '8h', value: CandlePeriod.EightHours }, // 21 candles\n { label: '1D', value: CandlePeriod.OneDay }, // 7 candles\n ],\n default: CandlePeriod.FourHours, // Good detail for weekly view\n },\n [TimeDuration.OneMonth]: {\n periods: [\n { label: '8h', value: CandlePeriod.EightHours }, // 90 candles (30 days * 3 per day)\n { label: '12h', value: CandlePeriod.TwelveHours }, // 60 candles (30 days * 2 per day)\n { label: '1D', value: CandlePeriod.OneDay }, // 30 candles\n { label: '1W', value: CandlePeriod.OneWeek }, // ~4 candles\n ],\n default: CandlePeriod.OneDay, // Daily candles for monthly view\n },\n [TimeDuration.YearToDate]: {\n periods: [\n { label: '1D', value: CandlePeriod.OneDay }, // ~365 candles (will be capped)\n { label: '1W', value: CandlePeriod.OneWeek }, // ~52 candles\n ],\n default: CandlePeriod.OneWeek, // Weekly candles for yearly view\n },\n [TimeDuration.Max]: {\n periods: [\n { label: '1W', value: CandlePeriod.OneWeek }, // ~104 candles (2 years)\n ],\n default: CandlePeriod.OneWeek, // Only weekly makes sense for max view\n },\n} as const;\n\nexport const CANDLE_PERIODS = [\n { label: '1m', value: CandlePeriod.OneMinute },\n { label: '3m', value: CandlePeriod.ThreeMinutes },\n { label: '5m', value: CandlePeriod.FiveMinutes },\n { label: '15m', value: CandlePeriod.FifteenMinutes },\n { label: '30m', value: CandlePeriod.ThirtyMinutes },\n { label: '1h', value: CandlePeriod.OneHour },\n { label: '2h', value: CandlePeriod.TwoHours },\n { label: '4h', value: CandlePeriod.FourHours },\n { label: '8h', value: CandlePeriod.EightHours },\n { label: '12h', value: CandlePeriod.TwelveHours },\n { label: '1d', value: CandlePeriod.OneDay },\n { label: '3d', value: CandlePeriod.ThreeDays },\n { label: '7d', value: CandlePeriod.OneWeek },\n] as const;\n\nexport const DEFAULT_CANDLE_PERIOD = CandlePeriod.FifteenMinutes;\n\n/**\n * Get available candle periods for a specific duration\n *\n * @param duration - The time duration to retrieve candle periods for.\n * @returns The list of candle period options available for the given duration.\n */\nexport const getCandlePeriodsForDuration = (\n duration: TimeDuration | string,\n): readonly { label: string; value: CandlePeriod }[] => {\n const periods =\n DURATION_CANDLE_PERIODS[duration as TimeDuration]?.periods || [];\n\n return periods;\n};\n\n/**\n * Get the default candle period for a specific duration\n *\n * @param duration - The time duration to retrieve the default candle period for.\n * @returns The default candle period for the given duration.\n */\nexport const getDefaultCandlePeriodForDuration = (\n duration: TimeDuration | string,\n): CandlePeriod =>\n DURATION_CANDLE_PERIODS[duration as TimeDuration]?.default ||\n CandlePeriod.OneHour;\n\n/**\n * Calculate the number of candles to fetch based on duration and candle period\n *\n * @param duration - The time duration for the chart display.\n * @param candlePeriod - The candle period interval.\n * @returns The number of candles to fetch, capped at MAX_CANDLE_COUNT.\n */\nexport const calculateCandleCount = (\n duration: TimeDuration | string,\n candlePeriod: CandlePeriod | string,\n): number => {\n // Convert candle period to minutes\n const periodInMinutes = ((): number => {\n switch (candlePeriod) {\n case CandlePeriod.OneMinute:\n return 1;\n case CandlePeriod.ThreeMinutes:\n return 3;\n case CandlePeriod.FiveMinutes:\n return 5;\n case CandlePeriod.FifteenMinutes:\n return 15;\n case CandlePeriod.ThirtyMinutes:\n return 30;\n case CandlePeriod.OneHour:\n return 60;\n case CandlePeriod.TwoHours:\n return 120;\n case CandlePeriod.FourHours:\n return 240;\n case CandlePeriod.EightHours:\n return 480;\n case CandlePeriod.TwelveHours:\n return 720;\n case CandlePeriod.OneDay:\n return 1440; // 24 * 60\n case CandlePeriod.ThreeDays:\n return 4320; // 3 * 24 * 60\n case CandlePeriod.OneWeek:\n return 10080; // 7 * 24 * 60\n case CandlePeriod.OneMonth:\n return 43200; // 30 * 24 * 60 (approximate)\n default:\n return 60; // Default to 1h\n }\n })();\n\n // Convert duration to total minutes needed\n const durationInMinutes = ((): number => {\n switch (duration) {\n case TimeDuration.OneHour:\n return 60; // 1 hour\n case TimeDuration.OneDay:\n return 60 * 24; // 1 day\n case TimeDuration.OneWeek:\n return 60 * 24 * 7; // 1 week\n case TimeDuration.OneMonth:\n return 60 * 24 * 30; // 1 month (30 days)\n case TimeDuration.YearToDate:\n return 60 * 24 * 365; // Year to date (365 days max)\n case TimeDuration.Max:\n return 60 * 24 * 365 * 2; // Max (2 years)\n default:\n return 60 * 24; // Default to 1 day\n }\n })();\n\n // Calculate number of candles needed\n const candleCount = Math.ceil(durationInMinutes / periodInMinutes);\n\n // Cap at MAX_CANDLE_COUNT candles max for memory management\n // Allow minimum of 10 candles for basic functionality\n return Math.min(Math.max(candleCount, 10), MAX_CANDLE_COUNT);\n};\n"]}
|