@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,174 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Global singleton cache for Perps signing operations
|
|
3
|
+
*
|
|
4
|
+
* This cache persists across provider reconnections to prevent repeated
|
|
5
|
+
* signing requests for hardware wallets. Critical for preventing QR popup spam.
|
|
6
|
+
*
|
|
7
|
+
* Cache is intentionally kept separate from provider instances because providers
|
|
8
|
+
* are recreated on account/network changes, which would reset instance-level caches.
|
|
9
|
+
*
|
|
10
|
+
* Tracks three signing operations:
|
|
11
|
+
* 1. DEX Abstraction enablement (one-time, irreversible)
|
|
12
|
+
* 2. Builder Fee approval (required for trading)
|
|
13
|
+
* 3. Referral code setup (one-time per account)
|
|
14
|
+
*
|
|
15
|
+
* Cache Structure:
|
|
16
|
+
* - Key: `network:userAddress` (e.g., "mainnet:0x123...")
|
|
17
|
+
* - Value: { dexAbstraction, builderFee, referral, timestamp }
|
|
18
|
+
*
|
|
19
|
+
* Lifecycle:
|
|
20
|
+
* - Cache persists throughout app session
|
|
21
|
+
* - Individual entries can be cleared per user/network
|
|
22
|
+
* - Full cache can be cleared on app restart or explicit user action
|
|
23
|
+
*/
|
|
24
|
+
type SigningOperationState = {
|
|
25
|
+
attempted: boolean;
|
|
26
|
+
success: boolean;
|
|
27
|
+
};
|
|
28
|
+
type PerpsSigningCacheEntry = {
|
|
29
|
+
dexAbstraction: SigningOperationState;
|
|
30
|
+
builderFee: SigningOperationState;
|
|
31
|
+
referral: SigningOperationState;
|
|
32
|
+
timestamp: number;
|
|
33
|
+
};
|
|
34
|
+
type TradingReadinessCacheEntry = {
|
|
35
|
+
attempted: boolean;
|
|
36
|
+
enabled: boolean;
|
|
37
|
+
timestamp: number;
|
|
38
|
+
};
|
|
39
|
+
declare class PerpsSigningCacheManager {
|
|
40
|
+
#private;
|
|
41
|
+
protected constructor();
|
|
42
|
+
static getInstance(): PerpsSigningCacheManager;
|
|
43
|
+
/**
|
|
44
|
+
* Check if an operation is currently in-flight for this user/network
|
|
45
|
+
*
|
|
46
|
+
* @param operationType - The type of operation being performed.
|
|
47
|
+
* @param network - The network environment.
|
|
48
|
+
* @param userAddress - The user's wallet address.
|
|
49
|
+
* @returns The resulting string value.
|
|
50
|
+
*/
|
|
51
|
+
isInFlight(operationType: 'dexAbstraction' | 'builderFee' | 'referral', network: 'mainnet' | 'testnet', userAddress: string): Promise<void> | undefined;
|
|
52
|
+
/**
|
|
53
|
+
* Set an operation as in-flight
|
|
54
|
+
* Returns a function to call when operation completes
|
|
55
|
+
*
|
|
56
|
+
* @param operationType - The type of operation being performed.
|
|
57
|
+
* @param network - The network environment.
|
|
58
|
+
* @param userAddress - The user's wallet address.
|
|
59
|
+
* @returns The resulting string value.
|
|
60
|
+
*/
|
|
61
|
+
setInFlight(operationType: 'dexAbstraction' | 'builderFee' | 'referral', network: 'mainnet' | 'testnet', userAddress: string): () => void;
|
|
62
|
+
/**
|
|
63
|
+
* Get DEX abstraction cache entry (legacy compatibility)
|
|
64
|
+
*
|
|
65
|
+
* @param network - The network environment.
|
|
66
|
+
* @param userAddress - The user's wallet address.
|
|
67
|
+
* @returns The resulting string value.
|
|
68
|
+
*/
|
|
69
|
+
get(network: 'mainnet' | 'testnet', userAddress: string): TradingReadinessCacheEntry | undefined;
|
|
70
|
+
/**
|
|
71
|
+
* Set DEX abstraction cache entry (legacy compatibility)
|
|
72
|
+
*
|
|
73
|
+
* @param network - The network environment.
|
|
74
|
+
* @param userAddress - The user's wallet address.
|
|
75
|
+
* @param data - The transaction data payload.
|
|
76
|
+
* @param data.attempted - Whether the operation was attempted.
|
|
77
|
+
* @param data.enabled - Whether the feature is enabled.
|
|
78
|
+
*/
|
|
79
|
+
set(network: 'mainnet' | 'testnet', userAddress: string, data: {
|
|
80
|
+
attempted: boolean;
|
|
81
|
+
enabled: boolean;
|
|
82
|
+
}): void;
|
|
83
|
+
/**
|
|
84
|
+
* Check if builder fee approval was attempted
|
|
85
|
+
*
|
|
86
|
+
* @param network - The network environment.
|
|
87
|
+
* @param userAddress - The user's wallet address.
|
|
88
|
+
* @returns The resulting string value.
|
|
89
|
+
*/
|
|
90
|
+
getBuilderFee(network: 'mainnet' | 'testnet', userAddress: string): SigningOperationState | undefined;
|
|
91
|
+
/**
|
|
92
|
+
* Set builder fee approval state
|
|
93
|
+
*
|
|
94
|
+
* @param network - The network environment.
|
|
95
|
+
* @param userAddress - The user's wallet address.
|
|
96
|
+
* @param state - The current state.
|
|
97
|
+
*/
|
|
98
|
+
setBuilderFee(network: 'mainnet' | 'testnet', userAddress: string, state: SigningOperationState): void;
|
|
99
|
+
/**
|
|
100
|
+
* Check if referral setup was attempted
|
|
101
|
+
*
|
|
102
|
+
* @param network - The network environment.
|
|
103
|
+
* @param userAddress - The user's wallet address.
|
|
104
|
+
* @returns The resulting string value.
|
|
105
|
+
*/
|
|
106
|
+
getReferral(network: 'mainnet' | 'testnet', userAddress: string): SigningOperationState | undefined;
|
|
107
|
+
/**
|
|
108
|
+
* Set referral setup state
|
|
109
|
+
*
|
|
110
|
+
* @param network - The network environment.
|
|
111
|
+
* @param userAddress - The user's wallet address.
|
|
112
|
+
* @param state - The current state.
|
|
113
|
+
*/
|
|
114
|
+
setReferral(network: 'mainnet' | 'testnet', userAddress: string, state: SigningOperationState): void;
|
|
115
|
+
/**
|
|
116
|
+
* Clear only DEX abstraction state for a specific network and user address
|
|
117
|
+
* This preserves builder fee and referral states
|
|
118
|
+
*
|
|
119
|
+
* @param network - The network environment.
|
|
120
|
+
* @param userAddress - The user's wallet address.
|
|
121
|
+
*/
|
|
122
|
+
clearDexAbstraction(network: 'mainnet' | 'testnet', userAddress: string): void;
|
|
123
|
+
/**
|
|
124
|
+
* Clear only builder fee state for a specific network and user address
|
|
125
|
+
* This preserves DEX abstraction and referral states
|
|
126
|
+
*
|
|
127
|
+
* @param network - The network environment.
|
|
128
|
+
* @param userAddress - The user's wallet address.
|
|
129
|
+
*/
|
|
130
|
+
clearBuilderFee(network: 'mainnet' | 'testnet', userAddress: string): void;
|
|
131
|
+
/**
|
|
132
|
+
* Clear only referral state for a specific network and user address
|
|
133
|
+
* This preserves DEX abstraction and builder fee states
|
|
134
|
+
*
|
|
135
|
+
* @param network - The network environment.
|
|
136
|
+
* @param userAddress - The user's wallet address.
|
|
137
|
+
*/
|
|
138
|
+
clearReferral(network: 'mainnet' | 'testnet', userAddress: string): void;
|
|
139
|
+
/**
|
|
140
|
+
* Clear entire cache entry for a specific network and user address
|
|
141
|
+
* WARNING: This clears ALL signing operation states (dexAbstraction, builderFee, referral)
|
|
142
|
+
*
|
|
143
|
+
* @param network - The network environment.
|
|
144
|
+
* @param userAddress - The user's wallet address.
|
|
145
|
+
*/
|
|
146
|
+
clear(network: 'mainnet' | 'testnet', userAddress: string): void;
|
|
147
|
+
/**
|
|
148
|
+
* Clear all cache entries
|
|
149
|
+
* WARNING: This clears ALL signing operation states for ALL users
|
|
150
|
+
*/
|
|
151
|
+
clearAll(): void;
|
|
152
|
+
/**
|
|
153
|
+
* Get all cache entries (for debugging)
|
|
154
|
+
*
|
|
155
|
+
* @returns The result of the operation.
|
|
156
|
+
*/
|
|
157
|
+
getAll(): Map<string, PerpsSigningCacheEntry>;
|
|
158
|
+
/**
|
|
159
|
+
* Get cache size (for debugging)
|
|
160
|
+
*
|
|
161
|
+
* @returns The resulting numeric value.
|
|
162
|
+
*/
|
|
163
|
+
size(): number;
|
|
164
|
+
/**
|
|
165
|
+
* Get full cache state for debugging
|
|
166
|
+
*
|
|
167
|
+
* @returns The resulting string value.
|
|
168
|
+
*/
|
|
169
|
+
debugState(): string;
|
|
170
|
+
}
|
|
171
|
+
export declare const TradingReadinessCache: PerpsSigningCacheManager;
|
|
172
|
+
export declare const PerpsSigningCache: PerpsSigningCacheManager;
|
|
173
|
+
export {};
|
|
174
|
+
//# sourceMappingURL=TradingReadinessCache.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TradingReadinessCache.d.mts","sourceRoot":"","sources":["../../src/services/TradingReadinessCache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,KAAK,qBAAqB,GAAG;IAC3B,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,KAAK,sBAAsB,GAAG;IAC5B,cAAc,EAAE,qBAAqB,CAAC;IACtC,UAAU,EAAE,qBAAqB,CAAC;IAClC,QAAQ,EAAE,qBAAqB,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAGF,KAAK,0BAA0B,GAAG;IAChC,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,cAAM,wBAAwB;;IAU5B,SAAS;WAIK,WAAW,IAAI,wBAAwB;IAOrD;;;;;;;OAOG;IACI,UAAU,CACf,aAAa,EAAE,gBAAgB,GAAG,YAAY,GAAG,UAAU,EAC3D,OAAO,EAAE,SAAS,GAAG,SAAS,EAC9B,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS;IAK5B;;;;;;;;OAQG;IACI,WAAW,CAChB,aAAa,EAAE,gBAAgB,GAAG,YAAY,GAAG,UAAU,EAC3D,OAAO,EAAE,SAAS,GAAG,SAAS,EAC9B,WAAW,EAAE,MAAM,GAClB,MAAM,IAAI;IAqCb;;;;;;OAMG;IACI,GAAG,CACR,OAAO,EAAE,SAAS,GAAG,SAAS,EAC9B,WAAW,EAAE,MAAM,GAClB,0BAA0B,GAAG,SAAS;IAazC;;;;;;;;OAQG;IACI,GAAG,CACR,OAAO,EAAE,SAAS,GAAG,SAAS,EAC9B,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,GAC7C,IAAI;IAQP;;;;;;OAMG;IACI,aAAa,CAClB,OAAO,EAAE,SAAS,GAAG,SAAS,EAC9B,WAAW,EAAE,MAAM,GAClB,qBAAqB,GAAG,SAAS;IAMpC;;;;;;OAMG;IACI,aAAa,CAClB,OAAO,EAAE,SAAS,GAAG,SAAS,EAC9B,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,qBAAqB,GAC3B,IAAI;IAQP;;;;;;OAMG;IACI,WAAW,CAChB,OAAO,EAAE,SAAS,GAAG,SAAS,EAC9B,WAAW,EAAE,MAAM,GAClB,qBAAqB,GAAG,SAAS;IAMpC;;;;;;OAMG;IACI,WAAW,CAChB,OAAO,EAAE,SAAS,GAAG,SAAS,EAC9B,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,qBAAqB,GAC3B,IAAI;IAQP;;;;;;OAMG;IACI,mBAAmB,CACxB,OAAO,EAAE,SAAS,GAAG,SAAS,EAC9B,WAAW,EAAE,MAAM,GAClB,IAAI;IASP;;;;;;OAMG;IACI,eAAe,CACpB,OAAO,EAAE,SAAS,GAAG,SAAS,EAC9B,WAAW,EAAE,MAAM,GAClB,IAAI;IASP;;;;;;OAMG;IACI,aAAa,CAClB,OAAO,EAAE,SAAS,GAAG,SAAS,EAC9B,WAAW,EAAE,MAAM,GAClB,IAAI;IASP;;;;;;OAMG;IACI,KAAK,CAAC,OAAO,EAAE,SAAS,GAAG,SAAS,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAKvE;;;OAGG;IACI,QAAQ,IAAI,IAAI;IAIvB;;;;OAIG;IACI,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,sBAAsB,CAAC;IAIpD;;;;OAIG;IACI,IAAI,IAAI,MAAM;IAIrB;;;;OAIG;IACI,UAAU,IAAI,MAAM;CAW5B;AAGD,eAAO,MAAM,qBAAqB,0BAAyC,CAAC;AAG5E,eAAO,MAAM,iBAAiB,0BAAyC,CAAC"}
|
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Global singleton cache for Perps signing operations
|
|
3
|
+
*
|
|
4
|
+
* This cache persists across provider reconnections to prevent repeated
|
|
5
|
+
* signing requests for hardware wallets. Critical for preventing QR popup spam.
|
|
6
|
+
*
|
|
7
|
+
* Cache is intentionally kept separate from provider instances because providers
|
|
8
|
+
* are recreated on account/network changes, which would reset instance-level caches.
|
|
9
|
+
*
|
|
10
|
+
* Tracks three signing operations:
|
|
11
|
+
* 1. DEX Abstraction enablement (one-time, irreversible)
|
|
12
|
+
* 2. Builder Fee approval (required for trading)
|
|
13
|
+
* 3. Referral code setup (one-time per account)
|
|
14
|
+
*
|
|
15
|
+
* Cache Structure:
|
|
16
|
+
* - Key: `network:userAddress` (e.g., "mainnet:0x123...")
|
|
17
|
+
* - Value: { dexAbstraction, builderFee, referral, timestamp }
|
|
18
|
+
*
|
|
19
|
+
* Lifecycle:
|
|
20
|
+
* - Cache persists throughout app session
|
|
21
|
+
* - Individual entries can be cleared per user/network
|
|
22
|
+
* - Full cache can be cleared on app restart or explicit user action
|
|
23
|
+
*/
|
|
24
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
25
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
26
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
27
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
28
|
+
};
|
|
29
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
30
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
31
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
32
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
33
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
34
|
+
};
|
|
35
|
+
var _PerpsSigningCacheManager_instances, _a, _PerpsSigningCacheManager_instance, _PerpsSigningCacheManager_cache, _PerpsSigningCacheManager_inFlightOperations, _PerpsSigningCacheManager_getCacheKey, _PerpsSigningCacheManager_getOrCreateEntry;
|
|
36
|
+
class PerpsSigningCacheManager {
|
|
37
|
+
// Singleton: use getInstance() instead of new
|
|
38
|
+
constructor() {
|
|
39
|
+
_PerpsSigningCacheManager_instances.add(this);
|
|
40
|
+
_PerpsSigningCacheManager_cache.set(this, new Map());
|
|
41
|
+
// Global in-flight locks to prevent concurrent signing attempts across providers
|
|
42
|
+
// Key: operationType:network:userAddress, Value: Promise that resolves when operation completes
|
|
43
|
+
_PerpsSigningCacheManager_inFlightOperations.set(this, new Map());
|
|
44
|
+
// Protected constructor for singleton
|
|
45
|
+
}
|
|
46
|
+
static getInstance() {
|
|
47
|
+
var _b;
|
|
48
|
+
__classPrivateFieldSet(_b = _a, _a, __classPrivateFieldGet(_b, _a, "f", _PerpsSigningCacheManager_instance) ?? new _a(), "f", _PerpsSigningCacheManager_instance);
|
|
49
|
+
return __classPrivateFieldGet(_a, _a, "f", _PerpsSigningCacheManager_instance);
|
|
50
|
+
}
|
|
51
|
+
// ===== In-Flight Lock Methods =====
|
|
52
|
+
/**
|
|
53
|
+
* Check if an operation is currently in-flight for this user/network
|
|
54
|
+
*
|
|
55
|
+
* @param operationType - The type of operation being performed.
|
|
56
|
+
* @param network - The network environment.
|
|
57
|
+
* @param userAddress - The user's wallet address.
|
|
58
|
+
* @returns The resulting string value.
|
|
59
|
+
*/
|
|
60
|
+
isInFlight(operationType, network, userAddress) {
|
|
61
|
+
const key = `${operationType}:${network}:${userAddress.toLowerCase()}`;
|
|
62
|
+
return __classPrivateFieldGet(this, _PerpsSigningCacheManager_inFlightOperations, "f").get(key);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Set an operation as in-flight
|
|
66
|
+
* Returns a function to call when operation completes
|
|
67
|
+
*
|
|
68
|
+
* @param operationType - The type of operation being performed.
|
|
69
|
+
* @param network - The network environment.
|
|
70
|
+
* @param userAddress - The user's wallet address.
|
|
71
|
+
* @returns The resulting string value.
|
|
72
|
+
*/
|
|
73
|
+
setInFlight(operationType, network, userAddress) {
|
|
74
|
+
const key = `${operationType}:${network}:${userAddress.toLowerCase()}`;
|
|
75
|
+
let resolvePromise;
|
|
76
|
+
const promise = new Promise((resolve) => {
|
|
77
|
+
resolvePromise = resolve;
|
|
78
|
+
});
|
|
79
|
+
__classPrivateFieldGet(this, _PerpsSigningCacheManager_inFlightOperations, "f").set(key, promise);
|
|
80
|
+
return () => {
|
|
81
|
+
__classPrivateFieldGet(this, _PerpsSigningCacheManager_inFlightOperations, "f").delete(key);
|
|
82
|
+
resolvePromise();
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
// ===== DEX Abstraction Methods =====
|
|
86
|
+
/**
|
|
87
|
+
* Get DEX abstraction cache entry (legacy compatibility)
|
|
88
|
+
*
|
|
89
|
+
* @param network - The network environment.
|
|
90
|
+
* @param userAddress - The user's wallet address.
|
|
91
|
+
* @returns The resulting string value.
|
|
92
|
+
*/
|
|
93
|
+
get(network, userAddress) {
|
|
94
|
+
const key = __classPrivateFieldGet(this, _PerpsSigningCacheManager_instances, "m", _PerpsSigningCacheManager_getCacheKey).call(this, network, userAddress);
|
|
95
|
+
const entry = __classPrivateFieldGet(this, _PerpsSigningCacheManager_cache, "f").get(key);
|
|
96
|
+
if (!entry) {
|
|
97
|
+
return undefined;
|
|
98
|
+
}
|
|
99
|
+
return {
|
|
100
|
+
attempted: entry.dexAbstraction.attempted,
|
|
101
|
+
enabled: entry.dexAbstraction.success,
|
|
102
|
+
timestamp: entry.timestamp,
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Set DEX abstraction cache entry (legacy compatibility)
|
|
107
|
+
*
|
|
108
|
+
* @param network - The network environment.
|
|
109
|
+
* @param userAddress - The user's wallet address.
|
|
110
|
+
* @param data - The transaction data payload.
|
|
111
|
+
* @param data.attempted - Whether the operation was attempted.
|
|
112
|
+
* @param data.enabled - Whether the feature is enabled.
|
|
113
|
+
*/
|
|
114
|
+
set(network, userAddress, data) {
|
|
115
|
+
const entry = __classPrivateFieldGet(this, _PerpsSigningCacheManager_instances, "m", _PerpsSigningCacheManager_getOrCreateEntry).call(this, network, userAddress);
|
|
116
|
+
entry.dexAbstraction = { attempted: data.attempted, success: data.enabled };
|
|
117
|
+
entry.timestamp = Date.now();
|
|
118
|
+
}
|
|
119
|
+
// ===== Builder Fee Methods =====
|
|
120
|
+
/**
|
|
121
|
+
* Check if builder fee approval was attempted
|
|
122
|
+
*
|
|
123
|
+
* @param network - The network environment.
|
|
124
|
+
* @param userAddress - The user's wallet address.
|
|
125
|
+
* @returns The resulting string value.
|
|
126
|
+
*/
|
|
127
|
+
getBuilderFee(network, userAddress) {
|
|
128
|
+
const key = __classPrivateFieldGet(this, _PerpsSigningCacheManager_instances, "m", _PerpsSigningCacheManager_getCacheKey).call(this, network, userAddress);
|
|
129
|
+
const entry = __classPrivateFieldGet(this, _PerpsSigningCacheManager_cache, "f").get(key);
|
|
130
|
+
return entry?.builderFee;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Set builder fee approval state
|
|
134
|
+
*
|
|
135
|
+
* @param network - The network environment.
|
|
136
|
+
* @param userAddress - The user's wallet address.
|
|
137
|
+
* @param state - The current state.
|
|
138
|
+
*/
|
|
139
|
+
setBuilderFee(network, userAddress, state) {
|
|
140
|
+
const entry = __classPrivateFieldGet(this, _PerpsSigningCacheManager_instances, "m", _PerpsSigningCacheManager_getOrCreateEntry).call(this, network, userAddress);
|
|
141
|
+
entry.builderFee = state;
|
|
142
|
+
entry.timestamp = Date.now();
|
|
143
|
+
}
|
|
144
|
+
// ===== Referral Methods =====
|
|
145
|
+
/**
|
|
146
|
+
* Check if referral setup was attempted
|
|
147
|
+
*
|
|
148
|
+
* @param network - The network environment.
|
|
149
|
+
* @param userAddress - The user's wallet address.
|
|
150
|
+
* @returns The resulting string value.
|
|
151
|
+
*/
|
|
152
|
+
getReferral(network, userAddress) {
|
|
153
|
+
const key = __classPrivateFieldGet(this, _PerpsSigningCacheManager_instances, "m", _PerpsSigningCacheManager_getCacheKey).call(this, network, userAddress);
|
|
154
|
+
const entry = __classPrivateFieldGet(this, _PerpsSigningCacheManager_cache, "f").get(key);
|
|
155
|
+
return entry?.referral;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Set referral setup state
|
|
159
|
+
*
|
|
160
|
+
* @param network - The network environment.
|
|
161
|
+
* @param userAddress - The user's wallet address.
|
|
162
|
+
* @param state - The current state.
|
|
163
|
+
*/
|
|
164
|
+
setReferral(network, userAddress, state) {
|
|
165
|
+
const entry = __classPrivateFieldGet(this, _PerpsSigningCacheManager_instances, "m", _PerpsSigningCacheManager_getOrCreateEntry).call(this, network, userAddress);
|
|
166
|
+
entry.referral = state;
|
|
167
|
+
entry.timestamp = Date.now();
|
|
168
|
+
}
|
|
169
|
+
// ===== General Methods =====
|
|
170
|
+
/**
|
|
171
|
+
* Clear only DEX abstraction state for a specific network and user address
|
|
172
|
+
* This preserves builder fee and referral states
|
|
173
|
+
*
|
|
174
|
+
* @param network - The network environment.
|
|
175
|
+
* @param userAddress - The user's wallet address.
|
|
176
|
+
*/
|
|
177
|
+
clearDexAbstraction(network, userAddress) {
|
|
178
|
+
const key = __classPrivateFieldGet(this, _PerpsSigningCacheManager_instances, "m", _PerpsSigningCacheManager_getCacheKey).call(this, network, userAddress);
|
|
179
|
+
const entry = __classPrivateFieldGet(this, _PerpsSigningCacheManager_cache, "f").get(key);
|
|
180
|
+
if (entry) {
|
|
181
|
+
entry.dexAbstraction = { attempted: false, success: false };
|
|
182
|
+
entry.timestamp = Date.now();
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Clear only builder fee state for a specific network and user address
|
|
187
|
+
* This preserves DEX abstraction and referral states
|
|
188
|
+
*
|
|
189
|
+
* @param network - The network environment.
|
|
190
|
+
* @param userAddress - The user's wallet address.
|
|
191
|
+
*/
|
|
192
|
+
clearBuilderFee(network, userAddress) {
|
|
193
|
+
const key = __classPrivateFieldGet(this, _PerpsSigningCacheManager_instances, "m", _PerpsSigningCacheManager_getCacheKey).call(this, network, userAddress);
|
|
194
|
+
const entry = __classPrivateFieldGet(this, _PerpsSigningCacheManager_cache, "f").get(key);
|
|
195
|
+
if (entry) {
|
|
196
|
+
entry.builderFee = { attempted: false, success: false };
|
|
197
|
+
entry.timestamp = Date.now();
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Clear only referral state for a specific network and user address
|
|
202
|
+
* This preserves DEX abstraction and builder fee states
|
|
203
|
+
*
|
|
204
|
+
* @param network - The network environment.
|
|
205
|
+
* @param userAddress - The user's wallet address.
|
|
206
|
+
*/
|
|
207
|
+
clearReferral(network, userAddress) {
|
|
208
|
+
const key = __classPrivateFieldGet(this, _PerpsSigningCacheManager_instances, "m", _PerpsSigningCacheManager_getCacheKey).call(this, network, userAddress);
|
|
209
|
+
const entry = __classPrivateFieldGet(this, _PerpsSigningCacheManager_cache, "f").get(key);
|
|
210
|
+
if (entry) {
|
|
211
|
+
entry.referral = { attempted: false, success: false };
|
|
212
|
+
entry.timestamp = Date.now();
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Clear entire cache entry for a specific network and user address
|
|
217
|
+
* WARNING: This clears ALL signing operation states (dexAbstraction, builderFee, referral)
|
|
218
|
+
*
|
|
219
|
+
* @param network - The network environment.
|
|
220
|
+
* @param userAddress - The user's wallet address.
|
|
221
|
+
*/
|
|
222
|
+
clear(network, userAddress) {
|
|
223
|
+
const key = __classPrivateFieldGet(this, _PerpsSigningCacheManager_instances, "m", _PerpsSigningCacheManager_getCacheKey).call(this, network, userAddress);
|
|
224
|
+
__classPrivateFieldGet(this, _PerpsSigningCacheManager_cache, "f").delete(key);
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Clear all cache entries
|
|
228
|
+
* WARNING: This clears ALL signing operation states for ALL users
|
|
229
|
+
*/
|
|
230
|
+
clearAll() {
|
|
231
|
+
__classPrivateFieldGet(this, _PerpsSigningCacheManager_cache, "f").clear();
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Get all cache entries (for debugging)
|
|
235
|
+
*
|
|
236
|
+
* @returns The result of the operation.
|
|
237
|
+
*/
|
|
238
|
+
getAll() {
|
|
239
|
+
return new Map(__classPrivateFieldGet(this, _PerpsSigningCacheManager_cache, "f"));
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Get cache size (for debugging)
|
|
243
|
+
*
|
|
244
|
+
* @returns The resulting numeric value.
|
|
245
|
+
*/
|
|
246
|
+
size() {
|
|
247
|
+
return __classPrivateFieldGet(this, _PerpsSigningCacheManager_cache, "f").size;
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Get full cache state for debugging
|
|
251
|
+
*
|
|
252
|
+
* @returns The resulting string value.
|
|
253
|
+
*/
|
|
254
|
+
debugState() {
|
|
255
|
+
const entries = [];
|
|
256
|
+
__classPrivateFieldGet(this, _PerpsSigningCacheManager_cache, "f").forEach((entry, key) => {
|
|
257
|
+
entries.push(`${key}: dex=${entry.dexAbstraction.attempted}/${entry.dexAbstraction.success}, ` +
|
|
258
|
+
`builder=${entry.builderFee.attempted}/${entry.builderFee.success}, ` +
|
|
259
|
+
`referral=${entry.referral.attempted}/${entry.referral.success}`);
|
|
260
|
+
});
|
|
261
|
+
return entries.join('\n') || '(empty)';
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
_a = PerpsSigningCacheManager, _PerpsSigningCacheManager_cache = new WeakMap(), _PerpsSigningCacheManager_inFlightOperations = new WeakMap(), _PerpsSigningCacheManager_instances = new WeakSet(), _PerpsSigningCacheManager_getCacheKey = function _PerpsSigningCacheManager_getCacheKey(network, userAddress) {
|
|
265
|
+
return `${network}:${userAddress.toLowerCase()}`;
|
|
266
|
+
}, _PerpsSigningCacheManager_getOrCreateEntry = function _PerpsSigningCacheManager_getOrCreateEntry(network, userAddress) {
|
|
267
|
+
const key = __classPrivateFieldGet(this, _PerpsSigningCacheManager_instances, "m", _PerpsSigningCacheManager_getCacheKey).call(this, network, userAddress);
|
|
268
|
+
let entry = __classPrivateFieldGet(this, _PerpsSigningCacheManager_cache, "f").get(key);
|
|
269
|
+
if (!entry) {
|
|
270
|
+
entry = {
|
|
271
|
+
dexAbstraction: { attempted: false, success: false },
|
|
272
|
+
builderFee: { attempted: false, success: false },
|
|
273
|
+
referral: { attempted: false, success: false },
|
|
274
|
+
timestamp: Date.now(),
|
|
275
|
+
};
|
|
276
|
+
__classPrivateFieldGet(this, _PerpsSigningCacheManager_cache, "f").set(key, entry);
|
|
277
|
+
}
|
|
278
|
+
return entry;
|
|
279
|
+
};
|
|
280
|
+
_PerpsSigningCacheManager_instance = { value: void 0 };
|
|
281
|
+
// Export singleton instance with backward-compatible name
|
|
282
|
+
export const TradingReadinessCache = PerpsSigningCacheManager.getInstance();
|
|
283
|
+
// Export with new name for clarity
|
|
284
|
+
export const PerpsSigningCache = PerpsSigningCacheManager.getInstance();
|
|
285
|
+
//# sourceMappingURL=TradingReadinessCache.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TradingReadinessCache.mjs","sourceRoot":"","sources":["../../src/services/TradingReadinessCache.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Global singleton cache for Perps signing operations\n *\n * This cache persists across provider reconnections to prevent repeated\n * signing requests for hardware wallets. Critical for preventing QR popup spam.\n *\n * Cache is intentionally kept separate from provider instances because providers\n * are recreated on account/network changes, which would reset instance-level caches.\n *\n * Tracks three signing operations:\n * 1. DEX Abstraction enablement (one-time, irreversible)\n * 2. Builder Fee approval (required for trading)\n * 3. Referral code setup (one-time per account)\n *\n * Cache Structure:\n * - Key: `network:userAddress` (e.g., \"mainnet:0x123...\")\n * - Value: { dexAbstraction, builderFee, referral, timestamp }\n *\n * Lifecycle:\n * - Cache persists throughout app session\n * - Individual entries can be cleared per user/network\n * - Full cache can be cleared on app restart or explicit user action\n */\n\ntype SigningOperationState = {\n attempted: boolean; // Whether we've attempted this operation\n success: boolean; // Whether it succeeded (only valid if attempted=true)\n};\n\ntype PerpsSigningCacheEntry = {\n dexAbstraction: SigningOperationState;\n builderFee: SigningOperationState;\n referral: SigningOperationState;\n timestamp: number; // When this entry was last updated\n};\n\n// Legacy interface for backward compatibility\ntype TradingReadinessCacheEntry = {\n attempted: boolean;\n enabled: boolean;\n timestamp: number;\n};\n\nclass PerpsSigningCacheManager {\n static #instance: PerpsSigningCacheManager;\n\n readonly #cache: Map<string, PerpsSigningCacheEntry> = new Map();\n\n // Global in-flight locks to prevent concurrent signing attempts across providers\n // Key: operationType:network:userAddress, Value: Promise that resolves when operation completes\n readonly #inFlightOperations: Map<string, Promise<void>> = new Map();\n\n // Singleton: use getInstance() instead of new\n protected constructor() {\n // Protected constructor for singleton\n }\n\n public static getInstance(): PerpsSigningCacheManager {\n PerpsSigningCacheManager.#instance ??= new PerpsSigningCacheManager();\n return PerpsSigningCacheManager.#instance;\n }\n\n // ===== In-Flight Lock Methods =====\n\n /**\n * Check if an operation is currently in-flight for this user/network\n *\n * @param operationType - The type of operation being performed.\n * @param network - The network environment.\n * @param userAddress - The user's wallet address.\n * @returns The resulting string value.\n */\n public isInFlight(\n operationType: 'dexAbstraction' | 'builderFee' | 'referral',\n network: 'mainnet' | 'testnet',\n userAddress: string,\n ): Promise<void> | undefined {\n const key = `${operationType}:${network}:${userAddress.toLowerCase()}`;\n return this.#inFlightOperations.get(key);\n }\n\n /**\n * Set an operation as in-flight\n * Returns a function to call when operation completes\n *\n * @param operationType - The type of operation being performed.\n * @param network - The network environment.\n * @param userAddress - The user's wallet address.\n * @returns The resulting string value.\n */\n public setInFlight(\n operationType: 'dexAbstraction' | 'builderFee' | 'referral',\n network: 'mainnet' | 'testnet',\n userAddress: string,\n ): () => void {\n const key = `${operationType}:${network}:${userAddress.toLowerCase()}`;\n let resolvePromise: () => void;\n const promise = new Promise<void>((resolve) => {\n resolvePromise = resolve;\n });\n this.#inFlightOperations.set(key, promise);\n return () => {\n this.#inFlightOperations.delete(key);\n resolvePromise();\n };\n }\n\n #getCacheKey(network: 'mainnet' | 'testnet', userAddress: string): string {\n return `${network}:${userAddress.toLowerCase()}`;\n }\n\n #getOrCreateEntry(\n network: 'mainnet' | 'testnet',\n userAddress: string,\n ): PerpsSigningCacheEntry {\n const key = this.#getCacheKey(network, userAddress);\n let entry = this.#cache.get(key);\n if (!entry) {\n entry = {\n dexAbstraction: { attempted: false, success: false },\n builderFee: { attempted: false, success: false },\n referral: { attempted: false, success: false },\n timestamp: Date.now(),\n };\n this.#cache.set(key, entry);\n }\n return entry;\n }\n\n // ===== DEX Abstraction Methods =====\n\n /**\n * Get DEX abstraction cache entry (legacy compatibility)\n *\n * @param network - The network environment.\n * @param userAddress - The user's wallet address.\n * @returns The resulting string value.\n */\n public get(\n network: 'mainnet' | 'testnet',\n userAddress: string,\n ): TradingReadinessCacheEntry | undefined {\n const key = this.#getCacheKey(network, userAddress);\n const entry = this.#cache.get(key);\n if (!entry) {\n return undefined;\n }\n return {\n attempted: entry.dexAbstraction.attempted,\n enabled: entry.dexAbstraction.success,\n timestamp: entry.timestamp,\n };\n }\n\n /**\n * Set DEX abstraction cache entry (legacy compatibility)\n *\n * @param network - The network environment.\n * @param userAddress - The user's wallet address.\n * @param data - The transaction data payload.\n * @param data.attempted - Whether the operation was attempted.\n * @param data.enabled - Whether the feature is enabled.\n */\n public set(\n network: 'mainnet' | 'testnet',\n userAddress: string,\n data: { attempted: boolean; enabled: boolean },\n ): void {\n const entry = this.#getOrCreateEntry(network, userAddress);\n entry.dexAbstraction = { attempted: data.attempted, success: data.enabled };\n entry.timestamp = Date.now();\n }\n\n // ===== Builder Fee Methods =====\n\n /**\n * Check if builder fee approval was attempted\n *\n * @param network - The network environment.\n * @param userAddress - The user's wallet address.\n * @returns The resulting string value.\n */\n public getBuilderFee(\n network: 'mainnet' | 'testnet',\n userAddress: string,\n ): SigningOperationState | undefined {\n const key = this.#getCacheKey(network, userAddress);\n const entry = this.#cache.get(key);\n return entry?.builderFee;\n }\n\n /**\n * Set builder fee approval state\n *\n * @param network - The network environment.\n * @param userAddress - The user's wallet address.\n * @param state - The current state.\n */\n public setBuilderFee(\n network: 'mainnet' | 'testnet',\n userAddress: string,\n state: SigningOperationState,\n ): void {\n const entry = this.#getOrCreateEntry(network, userAddress);\n entry.builderFee = state;\n entry.timestamp = Date.now();\n }\n\n // ===== Referral Methods =====\n\n /**\n * Check if referral setup was attempted\n *\n * @param network - The network environment.\n * @param userAddress - The user's wallet address.\n * @returns The resulting string value.\n */\n public getReferral(\n network: 'mainnet' | 'testnet',\n userAddress: string,\n ): SigningOperationState | undefined {\n const key = this.#getCacheKey(network, userAddress);\n const entry = this.#cache.get(key);\n return entry?.referral;\n }\n\n /**\n * Set referral setup state\n *\n * @param network - The network environment.\n * @param userAddress - The user's wallet address.\n * @param state - The current state.\n */\n public setReferral(\n network: 'mainnet' | 'testnet',\n userAddress: string,\n state: SigningOperationState,\n ): void {\n const entry = this.#getOrCreateEntry(network, userAddress);\n entry.referral = state;\n entry.timestamp = Date.now();\n }\n\n // ===== General Methods =====\n\n /**\n * Clear only DEX abstraction state for a specific network and user address\n * This preserves builder fee and referral states\n *\n * @param network - The network environment.\n * @param userAddress - The user's wallet address.\n */\n public clearDexAbstraction(\n network: 'mainnet' | 'testnet',\n userAddress: string,\n ): void {\n const key = this.#getCacheKey(network, userAddress);\n const entry = this.#cache.get(key);\n if (entry) {\n entry.dexAbstraction = { attempted: false, success: false };\n entry.timestamp = Date.now();\n }\n }\n\n /**\n * Clear only builder fee state for a specific network and user address\n * This preserves DEX abstraction and referral states\n *\n * @param network - The network environment.\n * @param userAddress - The user's wallet address.\n */\n public clearBuilderFee(\n network: 'mainnet' | 'testnet',\n userAddress: string,\n ): void {\n const key = this.#getCacheKey(network, userAddress);\n const entry = this.#cache.get(key);\n if (entry) {\n entry.builderFee = { attempted: false, success: false };\n entry.timestamp = Date.now();\n }\n }\n\n /**\n * Clear only referral state for a specific network and user address\n * This preserves DEX abstraction and builder fee states\n *\n * @param network - The network environment.\n * @param userAddress - The user's wallet address.\n */\n public clearReferral(\n network: 'mainnet' | 'testnet',\n userAddress: string,\n ): void {\n const key = this.#getCacheKey(network, userAddress);\n const entry = this.#cache.get(key);\n if (entry) {\n entry.referral = { attempted: false, success: false };\n entry.timestamp = Date.now();\n }\n }\n\n /**\n * Clear entire cache entry for a specific network and user address\n * WARNING: This clears ALL signing operation states (dexAbstraction, builderFee, referral)\n *\n * @param network - The network environment.\n * @param userAddress - The user's wallet address.\n */\n public clear(network: 'mainnet' | 'testnet', userAddress: string): void {\n const key = this.#getCacheKey(network, userAddress);\n this.#cache.delete(key);\n }\n\n /**\n * Clear all cache entries\n * WARNING: This clears ALL signing operation states for ALL users\n */\n public clearAll(): void {\n this.#cache.clear();\n }\n\n /**\n * Get all cache entries (for debugging)\n *\n * @returns The result of the operation.\n */\n public getAll(): Map<string, PerpsSigningCacheEntry> {\n return new Map(this.#cache);\n }\n\n /**\n * Get cache size (for debugging)\n *\n * @returns The resulting numeric value.\n */\n public size(): number {\n return this.#cache.size;\n }\n\n /**\n * Get full cache state for debugging\n *\n * @returns The resulting string value.\n */\n public debugState(): string {\n const entries: string[] = [];\n this.#cache.forEach((entry, key) => {\n entries.push(\n `${key}: dex=${entry.dexAbstraction.attempted}/${entry.dexAbstraction.success}, ` +\n `builder=${entry.builderFee.attempted}/${entry.builderFee.success}, ` +\n `referral=${entry.referral.attempted}/${entry.referral.success}`,\n );\n });\n return entries.join('\\n') || '(empty)';\n }\n}\n\n// Export singleton instance with backward-compatible name\nexport const TradingReadinessCache = PerpsSigningCacheManager.getInstance();\n\n// Export with new name for clarity\nexport const PerpsSigningCache = PerpsSigningCacheManager.getInstance();\n"]}
|