@metamask-previews/perps-controller 0.0.0-preview-ce3ee897a → 0.0.0-preview-e4aa1532
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 +11 -1
- package/dist/PerpsController.cjs +2224 -66
- package/dist/PerpsController.cjs.map +1 -1
- package/dist/PerpsController.d.cts +933 -79
- package/dist/PerpsController.d.cts.map +1 -1
- package/dist/PerpsController.d.mts +933 -79
- package/dist/PerpsController.d.mts.map +1 -1
- package/dist/PerpsController.mjs +2221 -64
- package/dist/PerpsController.mjs.map +1 -1
- package/dist/__mocks__/hyperliquidMock.cjs +68 -0
- package/dist/__mocks__/hyperliquidMock.cjs.map +1 -0
- package/dist/__mocks__/hyperliquidMock.d.cts +15 -0
- package/dist/__mocks__/hyperliquidMock.d.cts.map +1 -0
- package/dist/__mocks__/hyperliquidMock.d.mts +15 -0
- package/dist/__mocks__/hyperliquidMock.d.mts.map +1 -0
- package/dist/__mocks__/hyperliquidMock.mjs +65 -0
- package/dist/__mocks__/hyperliquidMock.mjs.map +1 -0
- package/dist/__mocks__/providerMocks.cjs +144 -0
- package/dist/__mocks__/providerMocks.cjs.map +1 -0
- package/dist/__mocks__/providerMocks.d.cts +44 -0
- package/dist/__mocks__/providerMocks.d.cts.map +1 -0
- package/dist/__mocks__/providerMocks.d.mts +44 -0
- package/dist/__mocks__/providerMocks.d.mts.map +1 -0
- package/dist/__mocks__/providerMocks.mjs +136 -0
- package/dist/__mocks__/providerMocks.mjs.map +1 -0
- package/dist/__mocks__/serviceMocks.cjs +187 -0
- package/dist/__mocks__/serviceMocks.cjs.map +1 -0
- package/dist/__mocks__/serviceMocks.d.cts +58 -0
- package/dist/__mocks__/serviceMocks.d.cts.map +1 -0
- package/dist/__mocks__/serviceMocks.d.mts +58 -0
- package/dist/__mocks__/serviceMocks.d.mts.map +1 -0
- package/dist/__mocks__/serviceMocks.mjs +180 -0
- package/dist/__mocks__/serviceMocks.mjs.map +1 -0
- package/dist/aggregation/SubscriptionMultiplexer.cjs +459 -0
- package/dist/aggregation/SubscriptionMultiplexer.cjs.map +1 -0
- package/dist/aggregation/SubscriptionMultiplexer.d.cts +222 -0
- package/dist/aggregation/SubscriptionMultiplexer.d.cts.map +1 -0
- package/dist/aggregation/SubscriptionMultiplexer.d.mts +222 -0
- package/dist/aggregation/SubscriptionMultiplexer.d.mts.map +1 -0
- package/dist/aggregation/SubscriptionMultiplexer.mjs +455 -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/eventNames.cjs +117 -0
- package/dist/constants/eventNames.cjs.map +1 -0
- package/dist/constants/eventNames.d.cts +106 -0
- package/dist/constants/eventNames.d.cts.map +1 -0
- package/dist/constants/eventNames.d.mts +106 -0
- package/dist/constants/eventNames.d.mts.map +1 -0
- package/dist/constants/eventNames.mjs +114 -0
- package/dist/constants/eventNames.mjs.map +1 -0
- package/dist/constants/hyperLiquidConfig.cjs +366 -0
- package/dist/constants/hyperLiquidConfig.cjs.map +1 -0
- package/dist/constants/hyperLiquidConfig.d.cts +276 -0
- package/dist/constants/hyperLiquidConfig.d.cts.map +1 -0
- package/dist/constants/hyperLiquidConfig.d.mts +276 -0
- package/dist/constants/hyperLiquidConfig.d.mts.map +1 -0
- package/dist/constants/hyperLiquidConfig.mjs +357 -0
- package/dist/constants/hyperLiquidConfig.mjs.map +1 -0
- package/dist/constants/index.cjs +23 -0
- package/dist/constants/index.cjs.map +1 -0
- package/dist/constants/index.d.cts +7 -0
- package/dist/constants/index.d.cts.map +1 -0
- package/dist/constants/index.d.mts +7 -0
- package/dist/constants/index.d.mts.map +1 -0
- package/dist/constants/index.mjs +7 -0
- package/dist/constants/index.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 +61 -0
- package/dist/constants/performanceMetrics.cjs.map +1 -0
- package/dist/constants/performanceMetrics.d.cts +44 -0
- package/dist/constants/performanceMetrics.d.cts.map +1 -0
- package/dist/constants/performanceMetrics.d.mts +44 -0
- package/dist/constants/performanceMetrics.d.mts.map +1 -0
- package/dist/constants/performanceMetrics.mjs +58 -0
- package/dist/constants/performanceMetrics.mjs.map +1 -0
- package/dist/constants/perpsConfig.cjs +461 -0
- package/dist/constants/perpsConfig.cjs.map +1 -0
- package/dist/constants/perpsConfig.d.cts +343 -0
- package/dist/constants/perpsConfig.d.cts.map +1 -0
- package/dist/constants/perpsConfig.d.mts +343 -0
- package/dist/constants/perpsConfig.d.mts.map +1 -0
- package/dist/constants/perpsConfig.mjs +458 -0
- package/dist/constants/perpsConfig.mjs.map +1 -0
- package/dist/constants/perpsErrorCodes.cjs +79 -0
- package/dist/constants/perpsErrorCodes.cjs.map +1 -0
- package/dist/constants/perpsErrorCodes.d.cts +64 -0
- package/dist/constants/perpsErrorCodes.d.cts.map +1 -0
- package/dist/constants/perpsErrorCodes.d.mts +64 -0
- package/dist/constants/perpsErrorCodes.d.mts.map +1 -0
- package/dist/constants/perpsErrorCodes.mjs +76 -0
- package/dist/constants/perpsErrorCodes.mjs.map +1 -0
- package/dist/index.cjs +32 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +6 -2
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +6 -2
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +9 -1
- package/dist/index.mjs.map +1 -1
- package/dist/platform-services/HyperLiquidClientService.cjs +857 -0
- package/dist/platform-services/HyperLiquidClientService.cjs.map +1 -0
- package/dist/platform-services/HyperLiquidClientService.d.cts +263 -0
- package/dist/platform-services/HyperLiquidClientService.d.cts.map +1 -0
- package/dist/platform-services/HyperLiquidClientService.d.mts +263 -0
- package/dist/platform-services/HyperLiquidClientService.d.mts.map +1 -0
- package/dist/platform-services/HyperLiquidClientService.mjs +853 -0
- package/dist/platform-services/HyperLiquidClientService.mjs.map +1 -0
- package/dist/platform-services/HyperLiquidSubscriptionService.cjs +2170 -0
- package/dist/platform-services/HyperLiquidSubscriptionService.cjs.map +1 -0
- package/dist/platform-services/HyperLiquidSubscriptionService.d.cts +424 -0
- package/dist/platform-services/HyperLiquidSubscriptionService.d.cts.map +1 -0
- package/dist/platform-services/HyperLiquidSubscriptionService.d.mts +424 -0
- package/dist/platform-services/HyperLiquidSubscriptionService.d.mts.map +1 -0
- package/dist/platform-services/HyperLiquidSubscriptionService.mjs +2166 -0
- package/dist/platform-services/HyperLiquidSubscriptionService.mjs.map +1 -0
- package/dist/platform-services/HyperLiquidWalletService.cjs +140 -0
- package/dist/platform-services/HyperLiquidWalletService.cjs.map +1 -0
- package/dist/platform-services/HyperLiquidWalletService.d.cts +78 -0
- package/dist/platform-services/HyperLiquidWalletService.d.cts.map +1 -0
- package/dist/platform-services/HyperLiquidWalletService.d.mts +78 -0
- package/dist/platform-services/HyperLiquidWalletService.d.mts.map +1 -0
- package/dist/platform-services/HyperLiquidWalletService.mjs +136 -0
- package/dist/platform-services/HyperLiquidWalletService.mjs.map +1 -0
- package/dist/providers/AggregatedPerpsProvider.cjs +777 -0
- package/dist/providers/AggregatedPerpsProvider.cjs.map +1 -0
- package/dist/providers/AggregatedPerpsProvider.d.cts +466 -0
- package/dist/providers/AggregatedPerpsProvider.d.cts.map +1 -0
- package/dist/providers/AggregatedPerpsProvider.d.mts +466 -0
- package/dist/providers/AggregatedPerpsProvider.d.mts.map +1 -0
- package/dist/providers/AggregatedPerpsProvider.mjs +773 -0
- package/dist/providers/AggregatedPerpsProvider.mjs.map +1 -0
- package/dist/providers/HyperLiquidProvider.cjs +5172 -0
- package/dist/providers/HyperLiquidProvider.cjs.map +1 -0
- package/dist/providers/HyperLiquidProvider.d.cts +881 -0
- package/dist/providers/HyperLiquidProvider.d.cts.map +1 -0
- package/dist/providers/HyperLiquidProvider.d.mts +881 -0
- package/dist/providers/HyperLiquidProvider.d.mts.map +1 -0
- package/dist/providers/HyperLiquidProvider.mjs +5168 -0
- package/dist/providers/HyperLiquidProvider.mjs.map +1 -0
- package/dist/providers/index.cjs +11 -0
- package/dist/providers/index.cjs.map +1 -0
- package/dist/providers/index.d.cts +6 -0
- package/dist/providers/index.d.cts.map +1 -0
- package/dist/providers/index.d.mts +6 -0
- package/dist/providers/index.d.mts.map +1 -0
- package/dist/providers/index.mjs +6 -0
- package/dist/providers/index.mjs.map +1 -0
- package/dist/routing/ProviderRouter.cjs +148 -0
- package/dist/routing/ProviderRouter.cjs.map +1 -0
- package/dist/routing/ProviderRouter.d.cts +124 -0
- package/dist/routing/ProviderRouter.d.cts.map +1 -0
- package/dist/routing/ProviderRouter.d.mts +124 -0
- package/dist/routing/ProviderRouter.d.mts.map +1 -0
- package/dist/routing/ProviderRouter.mjs +144 -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 +161 -0
- package/dist/selectors.cjs.map +1 -0
- package/dist/selectors.d.cts +345 -0
- package/dist/selectors.d.cts.map +1 -0
- package/dist/selectors.d.mts +345 -0
- package/dist/selectors.d.mts.map +1 -0
- package/dist/selectors.mjs +153 -0
- package/dist/selectors.mjs.map +1 -0
- package/dist/services/AccountService.cjs +313 -0
- package/dist/services/AccountService.cjs.map +1 -0
- package/dist/services/AccountService.d.cts +53 -0
- package/dist/services/AccountService.d.cts.map +1 -0
- package/dist/services/AccountService.d.mts +53 -0
- package/dist/services/AccountService.d.mts.map +1 -0
- package/dist/services/AccountService.mjs +309 -0
- package/dist/services/AccountService.mjs.map +1 -0
- package/dist/services/DataLakeService.cjs +219 -0
- package/dist/services/DataLakeService.cjs.map +1 -0
- package/dist/services/DataLakeService.d.cts +49 -0
- package/dist/services/DataLakeService.d.cts.map +1 -0
- package/dist/services/DataLakeService.d.mts +49 -0
- package/dist/services/DataLakeService.d.mts.map +1 -0
- package/dist/services/DataLakeService.mjs +215 -0
- package/dist/services/DataLakeService.mjs.map +1 -0
- package/dist/services/DepositService.cjs +96 -0
- package/dist/services/DepositService.cjs.map +1 -0
- package/dist/services/DepositService.d.cts +37 -0
- package/dist/services/DepositService.d.cts.map +1 -0
- package/dist/services/DepositService.d.mts +37 -0
- package/dist/services/DepositService.d.mts.map +1 -0
- package/dist/services/DepositService.mjs +92 -0
- package/dist/services/DepositService.mjs.map +1 -0
- package/dist/services/EligibilityService.cjs +156 -0
- package/dist/services/EligibilityService.cjs.map +1 -0
- package/dist/services/EligibilityService.d.cts +48 -0
- package/dist/services/EligibilityService.d.cts.map +1 -0
- package/dist/services/EligibilityService.d.mts +48 -0
- package/dist/services/EligibilityService.d.mts.map +1 -0
- package/dist/services/EligibilityService.mjs +152 -0
- package/dist/services/EligibilityService.mjs.map +1 -0
- package/dist/services/FeatureFlagConfigurationService.cjs +258 -0
- package/dist/services/FeatureFlagConfigurationService.cjs.map +1 -0
- package/dist/services/FeatureFlagConfigurationService.d.cts +100 -0
- package/dist/services/FeatureFlagConfigurationService.d.cts.map +1 -0
- package/dist/services/FeatureFlagConfigurationService.d.mts +100 -0
- package/dist/services/FeatureFlagConfigurationService.d.mts.map +1 -0
- package/dist/services/FeatureFlagConfigurationService.mjs +254 -0
- package/dist/services/FeatureFlagConfigurationService.mjs.map +1 -0
- package/dist/services/MarketDataService.cjs +875 -0
- package/dist/services/MarketDataService.cjs.map +1 -0
- package/dist/services/MarketDataService.d.cts +289 -0
- package/dist/services/MarketDataService.d.cts.map +1 -0
- package/dist/services/MarketDataService.d.mts +289 -0
- package/dist/services/MarketDataService.d.mts.map +1 -0
- package/dist/services/MarketDataService.mjs +871 -0
- package/dist/services/MarketDataService.mjs.map +1 -0
- package/dist/services/RewardsIntegrationService.cjs +94 -0
- package/dist/services/RewardsIntegrationService.cjs.map +1 -0
- package/dist/services/RewardsIntegrationService.d.cts +30 -0
- package/dist/services/RewardsIntegrationService.d.cts.map +1 -0
- package/dist/services/RewardsIntegrationService.d.mts +30 -0
- package/dist/services/RewardsIntegrationService.d.mts.map +1 -0
- package/dist/services/RewardsIntegrationService.mjs +90 -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 +110 -0
- package/dist/services/ServiceContext.d.cts.map +1 -0
- package/dist/services/ServiceContext.d.mts +110 -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/TradingService.cjs +1481 -0
- package/dist/services/TradingService.cjs.map +1 -0
- package/dist/services/TradingService.d.cts +308 -0
- package/dist/services/TradingService.d.cts.map +1 -0
- package/dist/services/TradingService.d.mts +308 -0
- package/dist/services/TradingService.d.mts.map +1 -0
- package/dist/services/TradingService.mjs +1477 -0
- package/dist/services/TradingService.mjs.map +1 -0
- package/dist/services/index.cjs +26 -0
- package/dist/services/index.cjs.map +1 -0
- package/dist/services/index.d.cts +11 -0
- package/dist/services/index.d.cts.map +1 -0
- package/dist/services/index.d.mts +11 -0
- package/dist/services/index.d.mts.map +1 -0
- package/dist/services/index.mjs +10 -0
- package/dist/services/index.mjs.map +1 -0
- package/dist/services/utils.cjs +16 -0
- package/dist/services/utils.cjs.map +1 -0
- package/dist/services/utils.d.cts +8 -0
- package/dist/services/utils.d.cts.map +1 -0
- package/dist/services/utils.d.mts +8 -0
- package/dist/services/utils.d.mts.map +1 -0
- package/dist/services/utils.mjs +12 -0
- package/dist/services/utils.mjs.map +1 -0
- package/dist/types/chart.cjs +42 -0
- package/dist/types/chart.cjs.map +1 -0
- package/dist/types/chart.d.cts +62 -0
- package/dist/types/chart.d.cts.map +1 -0
- package/dist/types/chart.d.mts +62 -0
- package/dist/types/chart.d.mts.map +1 -0
- package/dist/types/chart.mjs +39 -0
- package/dist/types/chart.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 +52 -0
- package/dist/types/hyperliquid-types.d.cts.map +1 -0
- package/dist/types/hyperliquid-types.d.mts +52 -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 +96 -0
- package/dist/types/index.cjs.map +1 -0
- package/dist/types/index.d.cts +1153 -0
- package/dist/types/index.d.cts.map +1 -0
- package/dist/types/index.d.mts +1153 -0
- package/dist/types/index.d.mts.map +1 -0
- package/dist/types/index.mjs +79 -0
- package/dist/types/index.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 +65 -0
- package/dist/utils/accountUtils.cjs.map +1 -0
- package/dist/utils/accountUtils.d.cts +26 -0
- package/dist/utils/accountUtils.d.cts.map +1 -0
- package/dist/utils/accountUtils.d.mts +26 -0
- package/dist/utils/accountUtils.d.mts.map +1 -0
- package/dist/utils/accountUtils.mjs +61 -0
- package/dist/utils/accountUtils.mjs.map +1 -0
- package/dist/utils/amountConversion.cjs +61 -0
- package/dist/utils/amountConversion.cjs.map +1 -0
- package/dist/utils/amountConversion.d.cts +16 -0
- package/dist/utils/amountConversion.d.cts.map +1 -0
- package/dist/utils/amountConversion.d.mts +16 -0
- package/dist/utils/amountConversion.d.mts.map +1 -0
- package/dist/utils/amountConversion.mjs +54 -0
- package/dist/utils/amountConversion.mjs.map +1 -0
- package/dist/utils/chartUtils.cjs +98 -0
- package/dist/utils/chartUtils.cjs.map +1 -0
- package/dist/utils/chartUtils.d.cts +14 -0
- package/dist/utils/chartUtils.d.cts.map +1 -0
- package/dist/utils/chartUtils.d.mts +14 -0
- package/dist/utils/chartUtils.d.mts.map +1 -0
- package/dist/utils/chartUtils.mjs +94 -0
- package/dist/utils/chartUtils.mjs.map +1 -0
- package/dist/utils/errorUtils.cjs +22 -0
- package/dist/utils/errorUtils.cjs.map +1 -0
- package/dist/utils/errorUtils.d.cts +13 -0
- package/dist/utils/errorUtils.d.cts.map +1 -0
- package/dist/utils/errorUtils.d.mts +13 -0
- package/dist/utils/errorUtils.d.mts.map +1 -0
- package/dist/utils/errorUtils.mjs +18 -0
- package/dist/utils/errorUtils.mjs.map +1 -0
- package/dist/utils/formatUtils.cjs +987 -0
- package/dist/utils/formatUtils.cjs.map +1 -0
- package/dist/utils/formatUtils.d.cts +387 -0
- package/dist/utils/formatUtils.d.cts.map +1 -0
- package/dist/utils/formatUtils.d.mts +387 -0
- package/dist/utils/formatUtils.d.mts.map +1 -0
- package/dist/utils/formatUtils.mjs +966 -0
- package/dist/utils/formatUtils.mjs.map +1 -0
- package/dist/utils/hyperLiquidAdapter.cjs +454 -0
- package/dist/utils/hyperLiquidAdapter.cjs.map +1 -0
- package/dist/utils/hyperLiquidAdapter.d.cts +158 -0
- package/dist/utils/hyperLiquidAdapter.d.cts.map +1 -0
- package/dist/utils/hyperLiquidAdapter.d.mts +158 -0
- package/dist/utils/hyperLiquidAdapter.d.mts.map +1 -0
- package/dist/utils/hyperLiquidAdapter.mjs +439 -0
- package/dist/utils/hyperLiquidAdapter.mjs.map +1 -0
- package/dist/utils/hyperLiquidOrderBookProcessor.cjs +89 -0
- package/dist/utils/hyperLiquidOrderBookProcessor.cjs.map +1 -0
- package/dist/utils/hyperLiquidOrderBookProcessor.d.cts +58 -0
- package/dist/utils/hyperLiquidOrderBookProcessor.d.cts.map +1 -0
- package/dist/utils/hyperLiquidOrderBookProcessor.d.mts +58 -0
- package/dist/utils/hyperLiquidOrderBookProcessor.d.mts.map +1 -0
- package/dist/utils/hyperLiquidOrderBookProcessor.mjs +84 -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 +50 -0
- package/dist/utils/idUtils.cjs.map +1 -0
- package/dist/utils/idUtils.d.cts +38 -0
- package/dist/utils/idUtils.d.cts.map +1 -0
- package/dist/utils/idUtils.d.mts +38 -0
- package/dist/utils/idUtils.d.mts.map +1 -0
- package/dist/utils/idUtils.mjs +42 -0
- package/dist/utils/idUtils.mjs.map +1 -0
- package/dist/utils/marginUtils.cjs +137 -0
- package/dist/utils/marginUtils.cjs.map +1 -0
- package/dist/utils/marginUtils.d.cts +64 -0
- package/dist/utils/marginUtils.d.cts.map +1 -0
- package/dist/utils/marginUtils.d.mts +64 -0
- package/dist/utils/marginUtils.d.mts.map +1 -0
- package/dist/utils/marginUtils.mjs +131 -0
- package/dist/utils/marginUtils.mjs.map +1 -0
- package/dist/utils/marketDataTransform.cjs +227 -0
- package/dist/utils/marketDataTransform.cjs.map +1 -0
- package/dist/utils/marketDataTransform.d.cts +45 -0
- package/dist/utils/marketDataTransform.d.cts.map +1 -0
- package/dist/utils/marketDataTransform.d.mts +45 -0
- package/dist/utils/marketDataTransform.d.mts.map +1 -0
- package/dist/utils/marketDataTransform.mjs +220 -0
- package/dist/utils/marketDataTransform.mjs.map +1 -0
- package/dist/utils/marketUtils.cjs +420 -0
- package/dist/utils/marketUtils.cjs.map +1 -0
- package/dist/utils/marketUtils.d.cts +227 -0
- package/dist/utils/marketUtils.d.cts.map +1 -0
- package/dist/utils/marketUtils.d.mts +227 -0
- package/dist/utils/marketUtils.d.mts.map +1 -0
- package/dist/utils/marketUtils.mjs +404 -0
- package/dist/utils/marketUtils.mjs.map +1 -0
- package/dist/utils/orderBookGrouping.cjs +151 -0
- package/dist/utils/orderBookGrouping.cjs.map +1 -0
- package/dist/utils/orderBookGrouping.d.cts +76 -0
- package/dist/utils/orderBookGrouping.d.cts.map +1 -0
- package/dist/utils/orderBookGrouping.d.mts +76 -0
- package/dist/utils/orderBookGrouping.d.mts.map +1 -0
- package/dist/utils/orderBookGrouping.mjs +143 -0
- package/dist/utils/orderBookGrouping.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/orderUtils.cjs +159 -0
- package/dist/utils/orderUtils.cjs.map +1 -0
- package/dist/utils/orderUtils.d.cts +66 -0
- package/dist/utils/orderUtils.d.cts.map +1 -0
- package/dist/utils/orderUtils.d.mts +66 -0
- package/dist/utils/orderUtils.d.mts.map +1 -0
- package/dist/utils/orderUtils.mjs +151 -0
- package/dist/utils/orderUtils.mjs.map +1 -0
- package/dist/utils/pnlCalculations.cjs +107 -0
- package/dist/utils/pnlCalculations.cjs.map +1 -0
- package/dist/utils/pnlCalculations.d.cts +79 -0
- package/dist/utils/pnlCalculations.d.cts.map +1 -0
- package/dist/utils/pnlCalculations.d.mts +79 -0
- package/dist/utils/pnlCalculations.d.mts.map +1 -0
- package/dist/utils/pnlCalculations.mjs +97 -0
- package/dist/utils/pnlCalculations.mjs.map +1 -0
- package/dist/utils/positionCalculations.cjs +176 -0
- package/dist/utils/positionCalculations.cjs.map +1 -0
- package/dist/utils/positionCalculations.d.cts +85 -0
- package/dist/utils/positionCalculations.d.cts.map +1 -0
- package/dist/utils/positionCalculations.d.mts +85 -0
- package/dist/utils/positionCalculations.d.mts.map +1 -0
- package/dist/utils/positionCalculations.mjs +165 -0
- package/dist/utils/positionCalculations.mjs.map +1 -0
- package/dist/utils/sortMarkets.cjs +88 -0
- package/dist/utils/sortMarkets.cjs.map +1 -0
- package/dist/utils/sortMarkets.d.cts +21 -0
- package/dist/utils/sortMarkets.d.cts.map +1 -0
- package/dist/utils/sortMarkets.d.mts +21 -0
- package/dist/utils/sortMarkets.d.mts.map +1 -0
- package/dist/utils/sortMarkets.mjs +84 -0
- package/dist/utils/sortMarkets.mjs.map +1 -0
- package/dist/utils/standaloneInfoClient.cjs +34 -0
- package/dist/utils/standaloneInfoClient.cjs.map +1 -0
- package/dist/utils/standaloneInfoClient.d.cts +31 -0
- package/dist/utils/standaloneInfoClient.d.cts.map +1 -0
- package/dist/utils/standaloneInfoClient.d.mts +31 -0
- package/dist/utils/standaloneInfoClient.d.mts.map +1 -0
- package/dist/utils/standaloneInfoClient.mjs +30 -0
- package/dist/utils/standaloneInfoClient.mjs.map +1 -0
- package/dist/utils/stringParseUtils.cjs +49 -0
- package/dist/utils/stringParseUtils.cjs.map +1 -0
- package/dist/utils/stringParseUtils.d.cts +35 -0
- package/dist/utils/stringParseUtils.d.cts.map +1 -0
- package/dist/utils/stringParseUtils.d.mts +35 -0
- package/dist/utils/stringParseUtils.d.mts.map +1 -0
- package/dist/utils/stringParseUtils.mjs +44 -0
- package/dist/utils/stringParseUtils.mjs.map +1 -0
- package/dist/utils/time.cjs +37 -0
- package/dist/utils/time.cjs.map +1 -0
- package/dist/utils/time.d.cts +17 -0
- package/dist/utils/time.d.cts.map +1 -0
- package/dist/utils/time.d.mts +17 -0
- package/dist/utils/time.d.mts.map +1 -0
- package/dist/utils/time.mjs +33 -0
- package/dist/utils/time.mjs.map +1 -0
- package/dist/utils/tpslValidation.cjs +505 -0
- package/dist/utils/tpslValidation.cjs.map +1 -0
- package/dist/utils/tpslValidation.d.cts +182 -0
- package/dist/utils/tpslValidation.d.cts.map +1 -0
- package/dist/utils/tpslValidation.d.mts +182 -0
- package/dist/utils/tpslValidation.d.mts.map +1 -0
- package/dist/utils/tpslValidation.mjs +482 -0
- package/dist/utils/tpslValidation.mjs.map +1 -0
- package/dist/utils/transactionUtils.cjs +36 -0
- package/dist/utils/transactionUtils.cjs.map +1 -0
- package/dist/utils/transactionUtils.d.cts +17 -0
- package/dist/utils/transactionUtils.d.cts.map +1 -0
- package/dist/utils/transactionUtils.d.mts +17 -0
- package/dist/utils/transactionUtils.d.mts.map +1 -0
- package/dist/utils/transactionUtils.mjs +32 -0
- package/dist/utils/transactionUtils.mjs.map +1 -0
- package/dist/utils/wait.cjs +12 -0
- package/dist/utils/wait.cjs.map +1 -0
- package/dist/utils/wait.d.cts +8 -0
- package/dist/utils/wait.d.cts.map +1 -0
- package/dist/utils/wait.d.mts +8 -0
- package/dist/utils/wait.d.mts.map +1 -0
- package/dist/utils/wait.mjs +8 -0
- package/dist/utils/wait.mjs.map +1 -0
- package/package.json +19 -4
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createMockPosition = exports.createMockOrder = exports.createMockOrderParams = exports.createMockOrderResult = exports.createMockHyperLiquidProvider = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Creates a mock HyperLiquidProvider for testing.
|
|
6
|
+
*
|
|
7
|
+
* @returns Mocked HyperLiquidProvider
|
|
8
|
+
*/
|
|
9
|
+
const createMockHyperLiquidProvider = () => ({
|
|
10
|
+
protocolId: 'hyperliquid',
|
|
11
|
+
initialize: jest.fn(),
|
|
12
|
+
isReadyToTrade: jest.fn(),
|
|
13
|
+
toggleTestnet: jest.fn(),
|
|
14
|
+
getPositions: jest.fn(),
|
|
15
|
+
getAccountState: jest.fn(),
|
|
16
|
+
getHistoricalPortfolio: jest.fn().mockResolvedValue({
|
|
17
|
+
totalBalance24hAgo: '10000',
|
|
18
|
+
totalBalance7dAgo: '9500',
|
|
19
|
+
totalBalance30dAgo: '9000',
|
|
20
|
+
}),
|
|
21
|
+
getMarkets: jest.fn(),
|
|
22
|
+
placeOrder: jest.fn(),
|
|
23
|
+
editOrder: jest.fn(),
|
|
24
|
+
cancelOrder: jest.fn(),
|
|
25
|
+
cancelOrders: jest.fn(),
|
|
26
|
+
closePosition: jest.fn(),
|
|
27
|
+
closePositions: jest.fn(),
|
|
28
|
+
withdraw: jest.fn(),
|
|
29
|
+
getDepositRoutes: jest.fn(),
|
|
30
|
+
getWithdrawalRoutes: jest.fn(),
|
|
31
|
+
validateDeposit: jest.fn().mockResolvedValue({ isValid: true }),
|
|
32
|
+
validateOrder: jest.fn().mockResolvedValue({ isValid: true }),
|
|
33
|
+
validateClosePosition: jest.fn().mockResolvedValue({ isValid: true }),
|
|
34
|
+
validateWithdrawal: jest.fn().mockResolvedValue({ isValid: true }),
|
|
35
|
+
subscribeToPrices: jest.fn(),
|
|
36
|
+
subscribeToPositions: jest.fn(),
|
|
37
|
+
subscribeToOrderFills: jest.fn(),
|
|
38
|
+
setLiveDataConfig: jest.fn(),
|
|
39
|
+
disconnect: jest.fn(),
|
|
40
|
+
updatePositionTPSL: jest.fn(),
|
|
41
|
+
calculateLiquidationPrice: jest.fn(),
|
|
42
|
+
calculateMaintenanceMargin: jest.fn(),
|
|
43
|
+
getMaxLeverage: jest.fn(),
|
|
44
|
+
calculateFees: jest.fn(),
|
|
45
|
+
getMarketDataWithPrices: jest.fn(),
|
|
46
|
+
getBlockExplorerUrl: jest.fn(),
|
|
47
|
+
getOrderFills: jest.fn(),
|
|
48
|
+
getOrders: jest.fn(),
|
|
49
|
+
getFunding: jest.fn(),
|
|
50
|
+
getIsFirstTimeUser: jest.fn(),
|
|
51
|
+
getOpenOrders: jest.fn(),
|
|
52
|
+
subscribeToOrders: jest.fn(),
|
|
53
|
+
subscribeToAccount: jest.fn(),
|
|
54
|
+
setUserFeeDiscount: jest.fn(),
|
|
55
|
+
// WebSocket connection state methods
|
|
56
|
+
getWebSocketConnectionState: jest.fn(),
|
|
57
|
+
subscribeToConnectionState: jest.fn().mockReturnValue(() => undefined),
|
|
58
|
+
reconnect: jest.fn().mockResolvedValue(undefined),
|
|
59
|
+
});
|
|
60
|
+
exports.createMockHyperLiquidProvider = createMockHyperLiquidProvider;
|
|
61
|
+
/**
|
|
62
|
+
* Creates a mock order result for testing.
|
|
63
|
+
*
|
|
64
|
+
* @returns Mock order result
|
|
65
|
+
*/
|
|
66
|
+
function createMockOrderResult() {
|
|
67
|
+
return {
|
|
68
|
+
success: true,
|
|
69
|
+
orderId: 'order-123',
|
|
70
|
+
filledSize: '0.1',
|
|
71
|
+
averagePrice: '50000',
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
exports.createMockOrderResult = createMockOrderResult;
|
|
75
|
+
/**
|
|
76
|
+
* Creates mock order params for testing.
|
|
77
|
+
*
|
|
78
|
+
* @returns Mock order params
|
|
79
|
+
*/
|
|
80
|
+
function createMockOrderParams() {
|
|
81
|
+
return {
|
|
82
|
+
symbol: 'BTC',
|
|
83
|
+
isBuy: true,
|
|
84
|
+
orderType: 'market',
|
|
85
|
+
size: '0.1',
|
|
86
|
+
price: '50000',
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
exports.createMockOrderParams = createMockOrderParams;
|
|
90
|
+
/**
|
|
91
|
+
* Creates a mock order for testing.
|
|
92
|
+
*
|
|
93
|
+
* @param overrides - Optional overrides for the mock order
|
|
94
|
+
* @returns Mock order
|
|
95
|
+
*/
|
|
96
|
+
function createMockOrder(overrides = {}) {
|
|
97
|
+
return {
|
|
98
|
+
orderId: 'order-1',
|
|
99
|
+
symbol: 'BTC',
|
|
100
|
+
side: 'buy',
|
|
101
|
+
orderType: 'limit',
|
|
102
|
+
size: '0.1',
|
|
103
|
+
originalSize: '0.1',
|
|
104
|
+
price: '50000',
|
|
105
|
+
filledSize: '0',
|
|
106
|
+
remainingSize: '0.1',
|
|
107
|
+
status: 'open',
|
|
108
|
+
timestamp: Date.now(),
|
|
109
|
+
...overrides,
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
exports.createMockOrder = createMockOrder;
|
|
113
|
+
/**
|
|
114
|
+
* Creates a mock position for testing.
|
|
115
|
+
*
|
|
116
|
+
* @param overrides - Optional overrides for the mock position
|
|
117
|
+
* @returns Mock position
|
|
118
|
+
*/
|
|
119
|
+
function createMockPosition(overrides = {}) {
|
|
120
|
+
return {
|
|
121
|
+
symbol: 'BTC',
|
|
122
|
+
size: '0.5',
|
|
123
|
+
entryPrice: '50000',
|
|
124
|
+
positionValue: '25000',
|
|
125
|
+
unrealizedPnl: '100',
|
|
126
|
+
marginUsed: '1000',
|
|
127
|
+
leverage: { type: 'cross', value: 25 },
|
|
128
|
+
liquidationPrice: '48000',
|
|
129
|
+
maxLeverage: 50,
|
|
130
|
+
returnOnEquity: '10',
|
|
131
|
+
cumulativeFunding: {
|
|
132
|
+
allTime: '0',
|
|
133
|
+
sinceOpen: '0',
|
|
134
|
+
sinceChange: '0',
|
|
135
|
+
},
|
|
136
|
+
takeProfitPrice: undefined,
|
|
137
|
+
stopLossPrice: undefined,
|
|
138
|
+
takeProfitCount: 0,
|
|
139
|
+
stopLossCount: 0,
|
|
140
|
+
...overrides,
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
exports.createMockPosition = createMockPosition;
|
|
144
|
+
//# sourceMappingURL=providerMocks.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providerMocks.cjs","sourceRoot":"","sources":["../../src/__mocks__/providerMocks.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Shared provider mocks for Perps tests\n * Provides reusable mock implementations for HyperLiquidProvider and related interfaces\n */\nimport type { HyperLiquidProvider } from '../providers/HyperLiquidProvider';\nimport type { Order, OrderParams, Position } from '../types';\n\n/**\n * Creates a mock HyperLiquidProvider for testing.\n *\n * @returns Mocked HyperLiquidProvider\n */\nexport const createMockHyperLiquidProvider =\n (): jest.Mocked<HyperLiquidProvider> =>\n ({\n protocolId: 'hyperliquid',\n initialize: jest.fn(),\n isReadyToTrade: jest.fn(),\n toggleTestnet: jest.fn(),\n getPositions: jest.fn(),\n getAccountState: jest.fn(),\n getHistoricalPortfolio: jest.fn().mockResolvedValue({\n totalBalance24hAgo: '10000',\n totalBalance7dAgo: '9500',\n totalBalance30dAgo: '9000',\n }),\n getMarkets: jest.fn(),\n placeOrder: jest.fn(),\n editOrder: jest.fn(),\n cancelOrder: jest.fn(),\n cancelOrders: jest.fn(),\n closePosition: jest.fn(),\n closePositions: jest.fn(),\n withdraw: jest.fn(),\n getDepositRoutes: jest.fn(),\n getWithdrawalRoutes: jest.fn(),\n validateDeposit: jest.fn().mockResolvedValue({ isValid: true }),\n validateOrder: jest.fn().mockResolvedValue({ isValid: true }),\n validateClosePosition: jest.fn().mockResolvedValue({ isValid: true }),\n validateWithdrawal: jest.fn().mockResolvedValue({ isValid: true }),\n subscribeToPrices: jest.fn(),\n subscribeToPositions: jest.fn(),\n subscribeToOrderFills: jest.fn(),\n setLiveDataConfig: jest.fn(),\n disconnect: jest.fn(),\n updatePositionTPSL: jest.fn(),\n calculateLiquidationPrice: jest.fn(),\n calculateMaintenanceMargin: jest.fn(),\n getMaxLeverage: jest.fn(),\n calculateFees: jest.fn(),\n getMarketDataWithPrices: jest.fn(),\n getBlockExplorerUrl: jest.fn(),\n getOrderFills: jest.fn(),\n getOrders: jest.fn(),\n getFunding: jest.fn(),\n getIsFirstTimeUser: jest.fn(),\n getOpenOrders: jest.fn(),\n subscribeToOrders: jest.fn(),\n subscribeToAccount: jest.fn(),\n setUserFeeDiscount: jest.fn(),\n // WebSocket connection state methods\n getWebSocketConnectionState: jest.fn(),\n subscribeToConnectionState: jest.fn().mockReturnValue(() => undefined),\n reconnect: jest.fn().mockResolvedValue(undefined),\n }) as unknown as jest.Mocked<HyperLiquidProvider>;\n\n/**\n * Creates a mock order result for testing.\n *\n * @returns Mock order result\n */\nexport function createMockOrderResult(): {\n success: boolean;\n orderId: string;\n filledSize: string;\n averagePrice: string;\n} {\n return {\n success: true,\n orderId: 'order-123',\n filledSize: '0.1',\n averagePrice: '50000',\n };\n}\n\n/**\n * Creates mock order params for testing.\n *\n * @returns Mock order params\n */\nexport function createMockOrderParams(): Partial<OrderParams> {\n return {\n symbol: 'BTC',\n isBuy: true,\n orderType: 'market',\n size: '0.1',\n price: '50000',\n };\n}\n\n/**\n * Creates a mock order for testing.\n *\n * @param overrides - Optional overrides for the mock order\n * @returns Mock order\n */\nexport function createMockOrder(overrides: Partial<Order> = {}): Order {\n return {\n orderId: 'order-1',\n symbol: 'BTC',\n side: 'buy' as const,\n orderType: 'limit' as const,\n size: '0.1',\n originalSize: '0.1',\n price: '50000',\n filledSize: '0',\n remainingSize: '0.1',\n status: 'open' as const,\n timestamp: Date.now(),\n ...overrides,\n };\n}\n\n/**\n * Creates a mock position for testing.\n *\n * @param overrides - Optional overrides for the mock position\n * @returns Mock position\n */\nexport function createMockPosition(\n overrides: Partial<Position> = {},\n): Position {\n return {\n symbol: 'BTC',\n size: '0.5',\n entryPrice: '50000',\n positionValue: '25000',\n unrealizedPnl: '100',\n marginUsed: '1000',\n leverage: { type: 'cross' as const, value: 25 },\n liquidationPrice: '48000',\n maxLeverage: 50,\n returnOnEquity: '10',\n cumulativeFunding: {\n allTime: '0',\n sinceOpen: '0',\n sinceChange: '0',\n },\n takeProfitPrice: undefined,\n stopLossPrice: undefined,\n takeProfitCount: 0,\n stopLossCount: 0,\n ...overrides,\n };\n}\n"]}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared provider mocks for Perps tests
|
|
3
|
+
* Provides reusable mock implementations for HyperLiquidProvider and related interfaces
|
|
4
|
+
*/
|
|
5
|
+
import type { HyperLiquidProvider } from "../providers/HyperLiquidProvider.cjs";
|
|
6
|
+
import type { Order, OrderParams, Position } from "../types/index.cjs";
|
|
7
|
+
/**
|
|
8
|
+
* Creates a mock HyperLiquidProvider for testing.
|
|
9
|
+
*
|
|
10
|
+
* @returns Mocked HyperLiquidProvider
|
|
11
|
+
*/
|
|
12
|
+
export declare const createMockHyperLiquidProvider: () => jest.Mocked<HyperLiquidProvider>;
|
|
13
|
+
/**
|
|
14
|
+
* Creates a mock order result for testing.
|
|
15
|
+
*
|
|
16
|
+
* @returns Mock order result
|
|
17
|
+
*/
|
|
18
|
+
export declare function createMockOrderResult(): {
|
|
19
|
+
success: boolean;
|
|
20
|
+
orderId: string;
|
|
21
|
+
filledSize: string;
|
|
22
|
+
averagePrice: string;
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Creates mock order params for testing.
|
|
26
|
+
*
|
|
27
|
+
* @returns Mock order params
|
|
28
|
+
*/
|
|
29
|
+
export declare function createMockOrderParams(): Partial<OrderParams>;
|
|
30
|
+
/**
|
|
31
|
+
* Creates a mock order for testing.
|
|
32
|
+
*
|
|
33
|
+
* @param overrides - Optional overrides for the mock order
|
|
34
|
+
* @returns Mock order
|
|
35
|
+
*/
|
|
36
|
+
export declare function createMockOrder(overrides?: Partial<Order>): Order;
|
|
37
|
+
/**
|
|
38
|
+
* Creates a mock position for testing.
|
|
39
|
+
*
|
|
40
|
+
* @param overrides - Optional overrides for the mock position
|
|
41
|
+
* @returns Mock position
|
|
42
|
+
*/
|
|
43
|
+
export declare function createMockPosition(overrides?: Partial<Position>): Position;
|
|
44
|
+
//# sourceMappingURL=providerMocks.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providerMocks.d.cts","sourceRoot":"","sources":["../../src/__mocks__/providerMocks.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,mBAAmB,EAAE,6CAAyC;AAC5E,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,2BAAiB;AAE7D;;;;GAIG;AACH,eAAO,MAAM,6BAA6B,QACpC,KAAK,MAAM,CAAC,mBAAmB,CAmDgB,CAAC;AAEtD;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB,CAOA;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CAAC,WAAW,CAAC,CAQ5D;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,SAAS,GAAE,OAAO,CAAC,KAAK,CAAM,GAAG,KAAK,CAerE;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,GAAE,OAAO,CAAC,QAAQ,CAAM,GAChC,QAAQ,CAuBV"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared provider mocks for Perps tests
|
|
3
|
+
* Provides reusable mock implementations for HyperLiquidProvider and related interfaces
|
|
4
|
+
*/
|
|
5
|
+
import type { HyperLiquidProvider } from "../providers/HyperLiquidProvider.mjs";
|
|
6
|
+
import type { Order, OrderParams, Position } from "../types/index.mjs";
|
|
7
|
+
/**
|
|
8
|
+
* Creates a mock HyperLiquidProvider for testing.
|
|
9
|
+
*
|
|
10
|
+
* @returns Mocked HyperLiquidProvider
|
|
11
|
+
*/
|
|
12
|
+
export declare const createMockHyperLiquidProvider: () => jest.Mocked<HyperLiquidProvider>;
|
|
13
|
+
/**
|
|
14
|
+
* Creates a mock order result for testing.
|
|
15
|
+
*
|
|
16
|
+
* @returns Mock order result
|
|
17
|
+
*/
|
|
18
|
+
export declare function createMockOrderResult(): {
|
|
19
|
+
success: boolean;
|
|
20
|
+
orderId: string;
|
|
21
|
+
filledSize: string;
|
|
22
|
+
averagePrice: string;
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Creates mock order params for testing.
|
|
26
|
+
*
|
|
27
|
+
* @returns Mock order params
|
|
28
|
+
*/
|
|
29
|
+
export declare function createMockOrderParams(): Partial<OrderParams>;
|
|
30
|
+
/**
|
|
31
|
+
* Creates a mock order for testing.
|
|
32
|
+
*
|
|
33
|
+
* @param overrides - Optional overrides for the mock order
|
|
34
|
+
* @returns Mock order
|
|
35
|
+
*/
|
|
36
|
+
export declare function createMockOrder(overrides?: Partial<Order>): Order;
|
|
37
|
+
/**
|
|
38
|
+
* Creates a mock position for testing.
|
|
39
|
+
*
|
|
40
|
+
* @param overrides - Optional overrides for the mock position
|
|
41
|
+
* @returns Mock position
|
|
42
|
+
*/
|
|
43
|
+
export declare function createMockPosition(overrides?: Partial<Position>): Position;
|
|
44
|
+
//# sourceMappingURL=providerMocks.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providerMocks.d.mts","sourceRoot":"","sources":["../../src/__mocks__/providerMocks.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,mBAAmB,EAAE,6CAAyC;AAC5E,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,2BAAiB;AAE7D;;;;GAIG;AACH,eAAO,MAAM,6BAA6B,QACpC,KAAK,MAAM,CAAC,mBAAmB,CAmDgB,CAAC;AAEtD;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB,CAOA;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CAAC,WAAW,CAAC,CAQ5D;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,SAAS,GAAE,OAAO,CAAC,KAAK,CAAM,GAAG,KAAK,CAerE;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,GAAE,OAAO,CAAC,QAAQ,CAAM,GAChC,QAAQ,CAuBV"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Creates a mock HyperLiquidProvider for testing.
|
|
3
|
+
*
|
|
4
|
+
* @returns Mocked HyperLiquidProvider
|
|
5
|
+
*/
|
|
6
|
+
export const createMockHyperLiquidProvider = () => ({
|
|
7
|
+
protocolId: 'hyperliquid',
|
|
8
|
+
initialize: jest.fn(),
|
|
9
|
+
isReadyToTrade: jest.fn(),
|
|
10
|
+
toggleTestnet: jest.fn(),
|
|
11
|
+
getPositions: jest.fn(),
|
|
12
|
+
getAccountState: jest.fn(),
|
|
13
|
+
getHistoricalPortfolio: jest.fn().mockResolvedValue({
|
|
14
|
+
totalBalance24hAgo: '10000',
|
|
15
|
+
totalBalance7dAgo: '9500',
|
|
16
|
+
totalBalance30dAgo: '9000',
|
|
17
|
+
}),
|
|
18
|
+
getMarkets: jest.fn(),
|
|
19
|
+
placeOrder: jest.fn(),
|
|
20
|
+
editOrder: jest.fn(),
|
|
21
|
+
cancelOrder: jest.fn(),
|
|
22
|
+
cancelOrders: jest.fn(),
|
|
23
|
+
closePosition: jest.fn(),
|
|
24
|
+
closePositions: jest.fn(),
|
|
25
|
+
withdraw: jest.fn(),
|
|
26
|
+
getDepositRoutes: jest.fn(),
|
|
27
|
+
getWithdrawalRoutes: jest.fn(),
|
|
28
|
+
validateDeposit: jest.fn().mockResolvedValue({ isValid: true }),
|
|
29
|
+
validateOrder: jest.fn().mockResolvedValue({ isValid: true }),
|
|
30
|
+
validateClosePosition: jest.fn().mockResolvedValue({ isValid: true }),
|
|
31
|
+
validateWithdrawal: jest.fn().mockResolvedValue({ isValid: true }),
|
|
32
|
+
subscribeToPrices: jest.fn(),
|
|
33
|
+
subscribeToPositions: jest.fn(),
|
|
34
|
+
subscribeToOrderFills: jest.fn(),
|
|
35
|
+
setLiveDataConfig: jest.fn(),
|
|
36
|
+
disconnect: jest.fn(),
|
|
37
|
+
updatePositionTPSL: jest.fn(),
|
|
38
|
+
calculateLiquidationPrice: jest.fn(),
|
|
39
|
+
calculateMaintenanceMargin: jest.fn(),
|
|
40
|
+
getMaxLeverage: jest.fn(),
|
|
41
|
+
calculateFees: jest.fn(),
|
|
42
|
+
getMarketDataWithPrices: jest.fn(),
|
|
43
|
+
getBlockExplorerUrl: jest.fn(),
|
|
44
|
+
getOrderFills: jest.fn(),
|
|
45
|
+
getOrders: jest.fn(),
|
|
46
|
+
getFunding: jest.fn(),
|
|
47
|
+
getIsFirstTimeUser: jest.fn(),
|
|
48
|
+
getOpenOrders: jest.fn(),
|
|
49
|
+
subscribeToOrders: jest.fn(),
|
|
50
|
+
subscribeToAccount: jest.fn(),
|
|
51
|
+
setUserFeeDiscount: jest.fn(),
|
|
52
|
+
// WebSocket connection state methods
|
|
53
|
+
getWebSocketConnectionState: jest.fn(),
|
|
54
|
+
subscribeToConnectionState: jest.fn().mockReturnValue(() => undefined),
|
|
55
|
+
reconnect: jest.fn().mockResolvedValue(undefined),
|
|
56
|
+
});
|
|
57
|
+
/**
|
|
58
|
+
* Creates a mock order result for testing.
|
|
59
|
+
*
|
|
60
|
+
* @returns Mock order result
|
|
61
|
+
*/
|
|
62
|
+
export function createMockOrderResult() {
|
|
63
|
+
return {
|
|
64
|
+
success: true,
|
|
65
|
+
orderId: 'order-123',
|
|
66
|
+
filledSize: '0.1',
|
|
67
|
+
averagePrice: '50000',
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Creates mock order params for testing.
|
|
72
|
+
*
|
|
73
|
+
* @returns Mock order params
|
|
74
|
+
*/
|
|
75
|
+
export function createMockOrderParams() {
|
|
76
|
+
return {
|
|
77
|
+
symbol: 'BTC',
|
|
78
|
+
isBuy: true,
|
|
79
|
+
orderType: 'market',
|
|
80
|
+
size: '0.1',
|
|
81
|
+
price: '50000',
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Creates a mock order for testing.
|
|
86
|
+
*
|
|
87
|
+
* @param overrides - Optional overrides for the mock order
|
|
88
|
+
* @returns Mock order
|
|
89
|
+
*/
|
|
90
|
+
export function createMockOrder(overrides = {}) {
|
|
91
|
+
return {
|
|
92
|
+
orderId: 'order-1',
|
|
93
|
+
symbol: 'BTC',
|
|
94
|
+
side: 'buy',
|
|
95
|
+
orderType: 'limit',
|
|
96
|
+
size: '0.1',
|
|
97
|
+
originalSize: '0.1',
|
|
98
|
+
price: '50000',
|
|
99
|
+
filledSize: '0',
|
|
100
|
+
remainingSize: '0.1',
|
|
101
|
+
status: 'open',
|
|
102
|
+
timestamp: Date.now(),
|
|
103
|
+
...overrides,
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Creates a mock position for testing.
|
|
108
|
+
*
|
|
109
|
+
* @param overrides - Optional overrides for the mock position
|
|
110
|
+
* @returns Mock position
|
|
111
|
+
*/
|
|
112
|
+
export function createMockPosition(overrides = {}) {
|
|
113
|
+
return {
|
|
114
|
+
symbol: 'BTC',
|
|
115
|
+
size: '0.5',
|
|
116
|
+
entryPrice: '50000',
|
|
117
|
+
positionValue: '25000',
|
|
118
|
+
unrealizedPnl: '100',
|
|
119
|
+
marginUsed: '1000',
|
|
120
|
+
leverage: { type: 'cross', value: 25 },
|
|
121
|
+
liquidationPrice: '48000',
|
|
122
|
+
maxLeverage: 50,
|
|
123
|
+
returnOnEquity: '10',
|
|
124
|
+
cumulativeFunding: {
|
|
125
|
+
allTime: '0',
|
|
126
|
+
sinceOpen: '0',
|
|
127
|
+
sinceChange: '0',
|
|
128
|
+
},
|
|
129
|
+
takeProfitPrice: undefined,
|
|
130
|
+
stopLossPrice: undefined,
|
|
131
|
+
takeProfitCount: 0,
|
|
132
|
+
stopLossCount: 0,
|
|
133
|
+
...overrides,
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=providerMocks.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providerMocks.mjs","sourceRoot":"","sources":["../../src/__mocks__/providerMocks.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Shared provider mocks for Perps tests\n * Provides reusable mock implementations for HyperLiquidProvider and related interfaces\n */\nimport type { HyperLiquidProvider } from '../providers/HyperLiquidProvider';\nimport type { Order, OrderParams, Position } from '../types';\n\n/**\n * Creates a mock HyperLiquidProvider for testing.\n *\n * @returns Mocked HyperLiquidProvider\n */\nexport const createMockHyperLiquidProvider =\n (): jest.Mocked<HyperLiquidProvider> =>\n ({\n protocolId: 'hyperliquid',\n initialize: jest.fn(),\n isReadyToTrade: jest.fn(),\n toggleTestnet: jest.fn(),\n getPositions: jest.fn(),\n getAccountState: jest.fn(),\n getHistoricalPortfolio: jest.fn().mockResolvedValue({\n totalBalance24hAgo: '10000',\n totalBalance7dAgo: '9500',\n totalBalance30dAgo: '9000',\n }),\n getMarkets: jest.fn(),\n placeOrder: jest.fn(),\n editOrder: jest.fn(),\n cancelOrder: jest.fn(),\n cancelOrders: jest.fn(),\n closePosition: jest.fn(),\n closePositions: jest.fn(),\n withdraw: jest.fn(),\n getDepositRoutes: jest.fn(),\n getWithdrawalRoutes: jest.fn(),\n validateDeposit: jest.fn().mockResolvedValue({ isValid: true }),\n validateOrder: jest.fn().mockResolvedValue({ isValid: true }),\n validateClosePosition: jest.fn().mockResolvedValue({ isValid: true }),\n validateWithdrawal: jest.fn().mockResolvedValue({ isValid: true }),\n subscribeToPrices: jest.fn(),\n subscribeToPositions: jest.fn(),\n subscribeToOrderFills: jest.fn(),\n setLiveDataConfig: jest.fn(),\n disconnect: jest.fn(),\n updatePositionTPSL: jest.fn(),\n calculateLiquidationPrice: jest.fn(),\n calculateMaintenanceMargin: jest.fn(),\n getMaxLeverage: jest.fn(),\n calculateFees: jest.fn(),\n getMarketDataWithPrices: jest.fn(),\n getBlockExplorerUrl: jest.fn(),\n getOrderFills: jest.fn(),\n getOrders: jest.fn(),\n getFunding: jest.fn(),\n getIsFirstTimeUser: jest.fn(),\n getOpenOrders: jest.fn(),\n subscribeToOrders: jest.fn(),\n subscribeToAccount: jest.fn(),\n setUserFeeDiscount: jest.fn(),\n // WebSocket connection state methods\n getWebSocketConnectionState: jest.fn(),\n subscribeToConnectionState: jest.fn().mockReturnValue(() => undefined),\n reconnect: jest.fn().mockResolvedValue(undefined),\n }) as unknown as jest.Mocked<HyperLiquidProvider>;\n\n/**\n * Creates a mock order result for testing.\n *\n * @returns Mock order result\n */\nexport function createMockOrderResult(): {\n success: boolean;\n orderId: string;\n filledSize: string;\n averagePrice: string;\n} {\n return {\n success: true,\n orderId: 'order-123',\n filledSize: '0.1',\n averagePrice: '50000',\n };\n}\n\n/**\n * Creates mock order params for testing.\n *\n * @returns Mock order params\n */\nexport function createMockOrderParams(): Partial<OrderParams> {\n return {\n symbol: 'BTC',\n isBuy: true,\n orderType: 'market',\n size: '0.1',\n price: '50000',\n };\n}\n\n/**\n * Creates a mock order for testing.\n *\n * @param overrides - Optional overrides for the mock order\n * @returns Mock order\n */\nexport function createMockOrder(overrides: Partial<Order> = {}): Order {\n return {\n orderId: 'order-1',\n symbol: 'BTC',\n side: 'buy' as const,\n orderType: 'limit' as const,\n size: '0.1',\n originalSize: '0.1',\n price: '50000',\n filledSize: '0',\n remainingSize: '0.1',\n status: 'open' as const,\n timestamp: Date.now(),\n ...overrides,\n };\n}\n\n/**\n * Creates a mock position for testing.\n *\n * @param overrides - Optional overrides for the mock position\n * @returns Mock position\n */\nexport function createMockPosition(\n overrides: Partial<Position> = {},\n): Position {\n return {\n symbol: 'BTC',\n size: '0.5',\n entryPrice: '50000',\n positionValue: '25000',\n unrealizedPnl: '100',\n marginUsed: '1000',\n leverage: { type: 'cross' as const, value: 25 },\n liquidationPrice: '48000',\n maxLeverage: 50,\n returnOnEquity: '10',\n cumulativeFunding: {\n allTime: '0',\n sinceOpen: '0',\n sinceChange: '0',\n },\n takeProfitPrice: undefined,\n stopLossPrice: undefined,\n takeProfitCount: 0,\n stopLossCount: 0,\n ...overrides,\n };\n}\n"]}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Shared service mocks for Perps service tests
|
|
4
|
+
* Provides reusable mock implementations for ServiceContext and related types
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.createMockEvmAccount = exports.createMockServiceContext = exports.createMockPerpsControllerState = exports.createMockInfrastructure = void 0;
|
|
8
|
+
/**
|
|
9
|
+
* Create a mock PerpsPlatformDependencies instance.
|
|
10
|
+
* Returns a type-safe mock with jest.Mock functions for all methods.
|
|
11
|
+
* Uses `as unknown as jest.Mocked<PerpsPlatformDependencies>` pattern
|
|
12
|
+
* to ensure compatibility with both the interface contract and Jest mock APIs.
|
|
13
|
+
*
|
|
14
|
+
* Architecture:
|
|
15
|
+
* - Observability: logger, debugLogger, metrics, performance, tracer (stateless utilities)
|
|
16
|
+
* - Platform: streamManager (mobile/extension specific capabilities)
|
|
17
|
+
* - Controllers: consolidated access to all external controllers
|
|
18
|
+
*
|
|
19
|
+
* @returns Mocked PerpsPlatformDependencies
|
|
20
|
+
*/
|
|
21
|
+
const createMockInfrastructure = () => ({
|
|
22
|
+
// === Observability (stateless utilities) ===
|
|
23
|
+
logger: {
|
|
24
|
+
error: jest.fn(),
|
|
25
|
+
},
|
|
26
|
+
debugLogger: {
|
|
27
|
+
log: jest.fn(),
|
|
28
|
+
},
|
|
29
|
+
metrics: {
|
|
30
|
+
trackEvent: jest.fn(),
|
|
31
|
+
isEnabled: jest.fn(() => true),
|
|
32
|
+
trackPerpsEvent: jest.fn(),
|
|
33
|
+
},
|
|
34
|
+
performance: {
|
|
35
|
+
now: jest.fn(() => Date.now()),
|
|
36
|
+
},
|
|
37
|
+
tracer: {
|
|
38
|
+
trace: jest.fn(() => undefined),
|
|
39
|
+
endTrace: jest.fn(),
|
|
40
|
+
setMeasurement: jest.fn(),
|
|
41
|
+
},
|
|
42
|
+
// === Platform Services ===
|
|
43
|
+
streamManager: {
|
|
44
|
+
pauseChannel: jest.fn(),
|
|
45
|
+
resumeChannel: jest.fn(),
|
|
46
|
+
clearAllChannels: jest.fn(),
|
|
47
|
+
},
|
|
48
|
+
// === Controller Access (ALL controllers consolidated) ===
|
|
49
|
+
controllers: {
|
|
50
|
+
// Account operations (wraps AccountsController)
|
|
51
|
+
accounts: {
|
|
52
|
+
getSelectedEvmAccount: jest.fn(() => ({
|
|
53
|
+
address: '0x1234567890abcdef1234567890abcdef12345678',
|
|
54
|
+
})),
|
|
55
|
+
formatAccountToCaipId: jest.fn((address, chainId) => `eip155:${chainId}:${address}`),
|
|
56
|
+
},
|
|
57
|
+
// Keyring operations (wraps KeyringController)
|
|
58
|
+
keyring: {
|
|
59
|
+
signTypedMessage: jest.fn().mockResolvedValue('0xSignatureResult'),
|
|
60
|
+
},
|
|
61
|
+
// Network operations (wraps NetworkController)
|
|
62
|
+
network: {
|
|
63
|
+
getChainIdForNetwork: jest.fn().mockReturnValue('0x1'),
|
|
64
|
+
findNetworkClientIdForChain: jest.fn().mockReturnValue('mainnet'),
|
|
65
|
+
getSelectedNetworkClientId: jest.fn().mockReturnValue('mainnet'),
|
|
66
|
+
},
|
|
67
|
+
// Transaction operations (wraps TransactionController)
|
|
68
|
+
transaction: {
|
|
69
|
+
submit: jest.fn().mockResolvedValue({
|
|
70
|
+
result: Promise.resolve('0xTransactionHash'),
|
|
71
|
+
transactionMeta: { id: 'tx-id-123', hash: '0xTransactionHash' },
|
|
72
|
+
}),
|
|
73
|
+
},
|
|
74
|
+
// Rewards operations (wraps RewardsController, optional)
|
|
75
|
+
rewards: {
|
|
76
|
+
getFeeDiscount: jest.fn().mockResolvedValue(0),
|
|
77
|
+
},
|
|
78
|
+
// Authentication operations (wraps AuthenticationController)
|
|
79
|
+
authentication: {
|
|
80
|
+
getBearerToken: jest.fn().mockResolvedValue('mock-bearer-token'),
|
|
81
|
+
},
|
|
82
|
+
},
|
|
83
|
+
});
|
|
84
|
+
exports.createMockInfrastructure = createMockInfrastructure;
|
|
85
|
+
/**
|
|
86
|
+
* Create a mock PerpsControllerState.
|
|
87
|
+
*
|
|
88
|
+
* @param overrides - Optional overrides for the mock state
|
|
89
|
+
* @returns Mock PerpsControllerState
|
|
90
|
+
*/
|
|
91
|
+
function createMockPerpsControllerState(overrides = {}) {
|
|
92
|
+
return {
|
|
93
|
+
activeProvider: 'hyperliquid',
|
|
94
|
+
isTestnet: false,
|
|
95
|
+
initializationState: 'initialized',
|
|
96
|
+
initializationError: null,
|
|
97
|
+
initializationAttempts: 0,
|
|
98
|
+
accountState: null,
|
|
99
|
+
perpsBalances: {},
|
|
100
|
+
depositInProgress: false,
|
|
101
|
+
lastDepositTransactionId: null,
|
|
102
|
+
lastDepositResult: null,
|
|
103
|
+
withdrawInProgress: false,
|
|
104
|
+
lastWithdrawResult: null,
|
|
105
|
+
withdrawalRequests: [],
|
|
106
|
+
withdrawalProgress: {
|
|
107
|
+
progress: 0,
|
|
108
|
+
lastUpdated: 0,
|
|
109
|
+
activeWithdrawalId: null,
|
|
110
|
+
},
|
|
111
|
+
depositRequests: [],
|
|
112
|
+
isEligible: true,
|
|
113
|
+
isFirstTimeUser: {
|
|
114
|
+
testnet: true,
|
|
115
|
+
mainnet: true,
|
|
116
|
+
},
|
|
117
|
+
hasPlacedFirstOrder: {
|
|
118
|
+
testnet: false,
|
|
119
|
+
mainnet: false,
|
|
120
|
+
},
|
|
121
|
+
watchlistMarkets: {
|
|
122
|
+
testnet: [],
|
|
123
|
+
mainnet: [],
|
|
124
|
+
},
|
|
125
|
+
tradeConfigurations: {
|
|
126
|
+
testnet: {},
|
|
127
|
+
mainnet: {},
|
|
128
|
+
},
|
|
129
|
+
marketFilterPreferences: {
|
|
130
|
+
optionId: 'volume',
|
|
131
|
+
direction: 'desc',
|
|
132
|
+
},
|
|
133
|
+
lastError: null,
|
|
134
|
+
lastUpdateTimestamp: Date.now(),
|
|
135
|
+
hip3ConfigVersion: 0,
|
|
136
|
+
...overrides,
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
exports.createMockPerpsControllerState = createMockPerpsControllerState;
|
|
140
|
+
/**
|
|
141
|
+
* Create a mock ServiceContext with optional overrides
|
|
142
|
+
* Note: infrastructure is no longer part of ServiceContext - it's now injected
|
|
143
|
+
* into service instances via constructor.
|
|
144
|
+
*
|
|
145
|
+
* @param overrides - Optional overrides for the mock context
|
|
146
|
+
* @returns Mock ServiceContext
|
|
147
|
+
*/
|
|
148
|
+
function createMockServiceContext(overrides = {}) {
|
|
149
|
+
return {
|
|
150
|
+
tracingContext: {
|
|
151
|
+
provider: 'hyperliquid',
|
|
152
|
+
isTestnet: false,
|
|
153
|
+
},
|
|
154
|
+
errorContext: {
|
|
155
|
+
controller: 'TestService',
|
|
156
|
+
method: 'testMethod',
|
|
157
|
+
},
|
|
158
|
+
stateManager: {
|
|
159
|
+
update: jest.fn(),
|
|
160
|
+
getState: jest.fn(() => createMockPerpsControllerState()),
|
|
161
|
+
},
|
|
162
|
+
...overrides,
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
exports.createMockServiceContext = createMockServiceContext;
|
|
166
|
+
/**
|
|
167
|
+
* Create a mock EVM account (KeyringAccount).
|
|
168
|
+
*
|
|
169
|
+
* @returns Mock EVM account
|
|
170
|
+
*/
|
|
171
|
+
function createMockEvmAccount() {
|
|
172
|
+
return {
|
|
173
|
+
id: '00000000-0000-0000-0000-000000000000',
|
|
174
|
+
address: '0x1234567890abcdef1234567890abcdef12345678',
|
|
175
|
+
type: 'eip155:eoa',
|
|
176
|
+
options: {},
|
|
177
|
+
scopes: ['eip155:1'],
|
|
178
|
+
methods: ['eth_signTransaction', 'eth_sign'],
|
|
179
|
+
metadata: {
|
|
180
|
+
name: 'Test Account',
|
|
181
|
+
importTime: Date.now(),
|
|
182
|
+
keyring: { type: 'HD Key Tree' },
|
|
183
|
+
},
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
exports.createMockEvmAccount = createMockEvmAccount;
|
|
187
|
+
//# sourceMappingURL=serviceMocks.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serviceMocks.cjs","sourceRoot":"","sources":["../../src/__mocks__/serviceMocks.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Shared service mocks for Perps service tests\n * Provides reusable mock implementations for ServiceContext and related types\n */\n\nimport type {\n PerpsControllerState,\n InitializationState,\n} from '../PerpsController';\nimport type { ServiceContext } from '../services/ServiceContext';\nimport type { PerpsPlatformDependencies } from '../types';\n\n/**\n * Create a mock PerpsPlatformDependencies instance.\n * Returns a type-safe mock with jest.Mock functions for all methods.\n * Uses `as unknown as jest.Mocked<PerpsPlatformDependencies>` pattern\n * to ensure compatibility with both the interface contract and Jest mock APIs.\n *\n * Architecture:\n * - Observability: logger, debugLogger, metrics, performance, tracer (stateless utilities)\n * - Platform: streamManager (mobile/extension specific capabilities)\n * - Controllers: consolidated access to all external controllers\n *\n * @returns Mocked PerpsPlatformDependencies\n */\nexport const createMockInfrastructure =\n (): jest.Mocked<PerpsPlatformDependencies> =>\n ({\n // === Observability (stateless utilities) ===\n logger: {\n error: jest.fn(),\n },\n debugLogger: {\n log: jest.fn(),\n },\n metrics: {\n trackEvent: jest.fn(),\n isEnabled: jest.fn(() => true),\n trackPerpsEvent: jest.fn(),\n },\n performance: {\n now: jest.fn(() => Date.now()),\n },\n tracer: {\n trace: jest.fn(() => undefined),\n endTrace: jest.fn(),\n setMeasurement: jest.fn(),\n },\n\n // === Platform Services ===\n streamManager: {\n pauseChannel: jest.fn(),\n resumeChannel: jest.fn(),\n clearAllChannels: jest.fn(),\n },\n\n // === Controller Access (ALL controllers consolidated) ===\n controllers: {\n // Account operations (wraps AccountsController)\n accounts: {\n getSelectedEvmAccount: jest.fn(() => ({\n address: '0x1234567890abcdef1234567890abcdef12345678',\n })),\n formatAccountToCaipId: jest.fn(\n (address: string, chainId: string) =>\n `eip155:${chainId}:${address}`,\n ),\n },\n // Keyring operations (wraps KeyringController)\n keyring: {\n signTypedMessage: jest.fn().mockResolvedValue('0xSignatureResult'),\n },\n // Network operations (wraps NetworkController)\n network: {\n getChainIdForNetwork: jest.fn().mockReturnValue('0x1'),\n findNetworkClientIdForChain: jest.fn().mockReturnValue('mainnet'),\n getSelectedNetworkClientId: jest.fn().mockReturnValue('mainnet'),\n },\n // Transaction operations (wraps TransactionController)\n transaction: {\n submit: jest.fn().mockResolvedValue({\n result: Promise.resolve('0xTransactionHash'),\n transactionMeta: { id: 'tx-id-123', hash: '0xTransactionHash' },\n }),\n },\n // Rewards operations (wraps RewardsController, optional)\n rewards: {\n getFeeDiscount: jest.fn().mockResolvedValue(0),\n },\n // Authentication operations (wraps AuthenticationController)\n authentication: {\n getBearerToken: jest.fn().mockResolvedValue('mock-bearer-token'),\n },\n },\n }) as unknown as jest.Mocked<PerpsPlatformDependencies>;\n\n/**\n * Create a mock PerpsControllerState.\n *\n * @param overrides - Optional overrides for the mock state\n * @returns Mock PerpsControllerState\n */\nexport function createMockPerpsControllerState(\n overrides: Partial<PerpsControllerState> = {},\n): PerpsControllerState {\n return {\n activeProvider: 'hyperliquid',\n isTestnet: false,\n initializationState: 'initialized' as InitializationState,\n initializationError: null,\n initializationAttempts: 0,\n accountState: null,\n perpsBalances: {},\n depositInProgress: false,\n lastDepositTransactionId: null,\n lastDepositResult: null,\n withdrawInProgress: false,\n lastWithdrawResult: null,\n withdrawalRequests: [],\n withdrawalProgress: {\n progress: 0,\n lastUpdated: 0,\n activeWithdrawalId: null,\n },\n depositRequests: [],\n isEligible: true,\n isFirstTimeUser: {\n testnet: true,\n mainnet: true,\n },\n hasPlacedFirstOrder: {\n testnet: false,\n mainnet: false,\n },\n watchlistMarkets: {\n testnet: [],\n mainnet: [],\n },\n tradeConfigurations: {\n testnet: {},\n mainnet: {},\n },\n marketFilterPreferences: {\n optionId: 'volume',\n direction: 'desc',\n },\n lastError: null,\n lastUpdateTimestamp: Date.now(),\n hip3ConfigVersion: 0,\n ...overrides,\n };\n}\n\n/**\n * Create a mock ServiceContext with optional overrides\n * Note: infrastructure is no longer part of ServiceContext - it's now injected\n * into service instances via constructor.\n *\n * @param overrides - Optional overrides for the mock context\n * @returns Mock ServiceContext\n */\nexport function createMockServiceContext(\n overrides: Partial<ServiceContext> = {},\n): ServiceContext {\n return {\n tracingContext: {\n provider: 'hyperliquid',\n isTestnet: false,\n },\n errorContext: {\n controller: 'TestService',\n method: 'testMethod',\n },\n stateManager: {\n update: jest.fn(),\n getState: jest.fn(() => createMockPerpsControllerState()),\n },\n ...overrides,\n };\n}\n\n/**\n * Create a mock EVM account (KeyringAccount).\n *\n * @returns Mock EVM account\n */\nexport function createMockEvmAccount(): {\n id: string;\n address: `0x${string}`;\n type: 'eip155:eoa';\n options: Record<string, never>;\n scopes: string[];\n methods: string[];\n metadata: {\n name: string;\n importTime: number;\n keyring: { type: string };\n };\n} {\n return {\n id: '00000000-0000-0000-0000-000000000000',\n address: '0x1234567890abcdef1234567890abcdef12345678' as `0x${string}`,\n type: 'eip155:eoa' as const,\n options: {},\n scopes: ['eip155:1'],\n methods: ['eth_signTransaction', 'eth_sign'],\n metadata: {\n name: 'Test Account',\n importTime: Date.now(),\n keyring: { type: 'HD Key Tree' },\n },\n };\n}\n"]}
|