@gala-chain/launchpad-sdk 4.0.0 → 4.0.1-beta.10
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/API.md +5 -5
- package/CHANGELOG.md +15 -15
- package/EXAMPLES.md +80 -2
- package/README.md +118 -1
- package/dist/index.cjs.js +1 -1
- package/dist/index.d.ts +37 -34
- package/dist/index.d.ts.map +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/index.js +1 -1
- package/dist/{LaunchpadSDK.d.ts → src/LaunchpadSDK.d.ts} +899 -20
- package/dist/src/LaunchpadSDK.d.ts.map +1 -0
- package/dist/src/api/LaunchpadAPI.d.ts.map +1 -0
- package/dist/src/api/dto/BondingCurveDTOs.d.ts.map +1 -0
- package/dist/src/api/dto/LockTokenDto.d.ts +97 -0
- package/dist/src/api/dto/LockTokenDto.d.ts.map +1 -0
- package/dist/src/api/dto/TransferTokenDto.d.ts.map +1 -0
- package/dist/src/api/dto/UnlockTokenDto.d.ts +86 -0
- package/dist/src/api/dto/UnlockTokenDto.d.ts.map +1 -0
- package/dist/src/auth/SignatureAuth.d.ts.map +1 -0
- package/dist/src/auth/types.d.ts.map +1 -0
- package/dist/src/config/environments.d.ts.map +1 -0
- package/dist/src/constants/bondingCurve.d.ts.map +1 -0
- package/dist/src/constants/config.d.ts.map +1 -0
- package/dist/src/constants/counts.d.ts.map +1 -0
- package/dist/src/constants/decimals.d.ts.map +1 -0
- package/dist/src/constants/endpoints.d.ts.map +1 -0
- package/dist/src/constants/enums.d.ts.map +1 -0
- package/dist/src/constants/error-messages.d.ts.map +1 -0
- package/dist/src/constants/pagination.d.ts.map +1 -0
- package/dist/src/constants/query-fields.d.ts.map +1 -0
- package/dist/src/constants/version.d.ts.map +1 -0
- package/dist/{constants → src/constants}/version.generated.d.ts +1 -1
- package/dist/src/constants/version.generated.d.ts.map +1 -0
- package/dist/src/helpers/sdk.d.ts.map +1 -0
- package/dist/src/helpers/wallet.d.ts.map +1 -0
- package/dist/src/index.d.ts +51 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/polyfills/file-global.d.ts.map +1 -0
- package/dist/src/schemas/files.d.ts.map +1 -0
- package/dist/src/schemas/index.d.ts.map +1 -0
- package/dist/src/schemas/launchpad.d.ts.map +1 -0
- package/dist/src/schemas/pagination.d.ts.map +1 -0
- package/dist/src/schemas/primitives.d.ts.map +1 -0
- package/dist/src/schemas/trade.d.ts.map +1 -0
- package/dist/src/schemas/user.d.ts.map +1 -0
- package/dist/src/schemas/validators.d.ts.map +1 -0
- package/dist/src/services/BaseService.d.ts.map +1 -0
- package/dist/src/services/BundleService.d.ts.map +1 -0
- package/dist/src/services/CommentService.d.ts.map +1 -0
- package/dist/src/services/DexBackendClient.d.ts.map +1 -0
- package/dist/src/services/DexPoolService.d.ts.map +1 -0
- package/dist/src/services/DexQuoteService.d.ts.map +1 -0
- package/dist/{services → src/services}/DexService.d.ts +83 -9
- package/dist/src/services/DexService.d.ts.map +1 -0
- package/dist/src/services/FaucetService.d.ts.map +1 -0
- package/dist/{services → src/services}/GSwapService.d.ts +101 -17
- package/dist/src/services/GSwapService.d.ts.map +1 -0
- package/dist/{services → src/services}/GalaChainGatewayClient.d.ts +12 -3
- package/dist/src/services/GalaChainGatewayClient.d.ts.map +1 -0
- package/dist/{services → src/services}/GalaChainService.d.ts +73 -4
- package/dist/src/services/GalaChainService.d.ts.map +1 -0
- package/dist/src/services/ImageService.d.ts.map +1 -0
- package/dist/src/services/LaunchpadService.d.ts.map +1 -0
- package/dist/src/services/MultiPoolStateManager.d.ts +284 -0
- package/dist/src/services/MultiPoolStateManager.d.ts.map +1 -0
- package/dist/src/services/PoolCacheManager.d.ts +171 -0
- package/dist/src/services/PoolCacheManager.d.ts.map +1 -0
- package/dist/src/services/PoolService.d.ts.map +1 -0
- package/dist/src/services/PoolStateManager.d.ts.map +1 -0
- package/dist/{services → src/services}/PriceHistoryService.d.ts +5 -5
- package/dist/src/services/PriceHistoryService.d.ts.map +1 -0
- package/dist/src/services/SignatureService.d.ts.map +1 -0
- package/dist/src/services/SwapEventQueue.d.ts +123 -0
- package/dist/src/services/SwapEventQueue.d.ts.map +1 -0
- package/dist/src/services/TokenClassKeyService.d.ts.map +1 -0
- package/dist/{services → src/services}/TokenMetadataCache.d.ts +5 -5
- package/dist/src/services/TokenMetadataCache.d.ts.map +1 -0
- package/dist/{services → src/services}/TokenMetadataService.d.ts +3 -3
- package/dist/src/services/TokenMetadataService.d.ts.map +1 -0
- package/dist/src/services/TokenResolverService.d.ts.map +1 -0
- package/dist/src/services/TradeService.d.ts.map +1 -0
- package/dist/src/services/UserService.d.ts.map +1 -0
- package/dist/src/services/WebSocketManager.d.ts.map +1 -0
- package/dist/src/services/WebSocketService.d.ts.map +1 -0
- package/dist/src/services/__mocks__/logger.mock.d.ts.map +1 -0
- package/dist/{setup.d.ts.map → src/setup.d.ts.map} +1 -1
- package/dist/{types → src/types}/backend-responses.d.ts +17 -0
- package/dist/src/types/backend-responses.d.ts.map +1 -0
- package/dist/src/types/comment.dto.d.ts.map +1 -0
- package/dist/src/types/common.d.ts.map +1 -0
- package/dist/{types → src/types}/composite-pool.dto.d.ts +1 -1
- package/dist/src/types/composite-pool.dto.d.ts.map +1 -0
- package/dist/src/types/dex-pool.dto.d.ts.map +1 -0
- package/dist/src/types/dto.d.ts.map +1 -0
- package/dist/src/types/eip712-types.d.ts.map +1 -0
- package/dist/{types → src/types}/galachain-api.types.d.ts +18 -8
- package/dist/src/types/galachain-api.types.d.ts.map +1 -0
- package/dist/{types → src/types}/gswap-responses.types.d.ts +14 -14
- package/dist/src/types/gswap-responses.types.d.ts.map +1 -0
- package/dist/src/types/gswap.dto.d.ts.map +1 -0
- package/dist/{types → src/types}/launchpad.dto.d.ts +175 -0
- package/dist/src/types/launchpad.dto.d.ts.map +1 -0
- package/dist/src/types/launchpad.validation.d.ts.map +1 -0
- package/dist/src/types/liquidity-monitor.dto.d.ts +177 -0
- package/dist/src/types/liquidity-monitor.dto.d.ts.map +1 -0
- package/dist/src/types/lock.dto.d.ts +146 -0
- package/dist/src/types/lock.dto.d.ts.map +1 -0
- package/dist/src/types/options.dto.d.ts.map +1 -0
- package/dist/src/types/pool-state-delta.dto.d.ts.map +1 -0
- package/dist/src/types/pool-state-manager-config.dto.d.ts.map +1 -0
- package/dist/{types → src/types}/priceHistory.dto.d.ts +4 -4
- package/dist/src/types/priceHistory.dto.d.ts.map +1 -0
- package/dist/src/types/result.types.d.ts.map +1 -0
- package/dist/src/types/swap-monitor.dto.d.ts +256 -0
- package/dist/src/types/swap-monitor.dto.d.ts.map +1 -0
- package/dist/src/types/trade.dto.d.ts.map +1 -0
- package/dist/src/types/transfer.dto.d.ts.map +1 -0
- package/dist/src/types/user.dto.d.ts.map +1 -0
- package/dist/src/types/websocket-data.types.d.ts.map +1 -0
- package/dist/src/types/websocket.types.d.ts.map +1 -0
- package/dist/src/utils/LiquidityEventExtractor.d.ts +99 -0
- package/dist/src/utils/LiquidityEventExtractor.d.ts.map +1 -0
- package/dist/src/utils/Logger.d.ts.map +1 -0
- package/dist/src/utils/MonitoringMetrics.d.ts +152 -0
- package/dist/src/utils/MonitoringMetrics.d.ts.map +1 -0
- package/dist/src/utils/PoolKeyNormalizer.d.ts +135 -0
- package/dist/src/utils/PoolKeyNormalizer.d.ts.map +1 -0
- package/dist/{utils → src/utils}/SignatureHelper.d.ts +38 -0
- package/dist/src/utils/SignatureHelper.d.ts.map +1 -0
- package/dist/src/utils/SwapEventExtractor.d.ts +152 -0
- package/dist/src/utils/SwapEventExtractor.d.ts.map +1 -0
- package/dist/src/utils/adapters.d.ts.map +1 -0
- package/dist/src/utils/agent-config.d.ts.map +1 -0
- package/dist/{utils → src/utils}/auto-pagination.d.ts +1 -1
- package/dist/src/utils/auto-pagination.d.ts.map +1 -0
- package/dist/{utils → src/utils}/bignumber-helpers.d.ts +5 -1
- package/dist/src/utils/bignumber-helpers.d.ts.map +1 -0
- package/dist/src/utils/bignumber-pool-cache.d.ts.map +1 -0
- package/dist/src/utils/bondingCurveCalculations.d.ts.map +1 -0
- package/dist/src/utils/cacheWarmingHelpers.d.ts.map +1 -0
- package/dist/src/utils/composite-pool-converter.d.ts.map +1 -0
- package/dist/src/utils/date-utils.d.ts.map +1 -0
- package/dist/src/utils/error-factories.d.ts.map +1 -0
- package/dist/src/utils/error-utils.d.ts.map +1 -0
- package/dist/src/utils/errors.d.ts.map +1 -0
- package/dist/src/utils/http.d.ts.map +1 -0
- package/dist/src/utils/load-env.d.ts.map +1 -0
- package/dist/src/utils/multipart-helpers.d.ts.map +1 -0
- package/dist/{utils → src/utils}/multipart.d.ts +2 -2
- package/dist/src/utils/multipart.d.ts.map +1 -0
- package/dist/src/utils/number-utils.d.ts.map +1 -0
- package/dist/src/utils/pool-pair-parser.d.ts.map +1 -0
- package/dist/src/utils/pool-state-validator.d.ts.map +1 -0
- package/dist/src/utils/position-filters.d.ts.map +1 -0
- package/dist/src/utils/precision-math.d.ts.map +1 -0
- package/dist/{utils → src/utils}/query-params.d.ts +2 -2
- package/dist/src/utils/query-params.d.ts.map +1 -0
- package/dist/src/utils/response-handlers.d.ts.map +1 -0
- package/dist/src/utils/response-normalizers.d.ts.map +1 -0
- package/dist/src/utils/slippage-utils.d.ts.map +1 -0
- package/dist/src/utils/swap-delta-calculator.d.ts.map +1 -0
- package/dist/src/utils/tick-crossing-handler.d.ts.map +1 -0
- package/dist/{utils → src/utils}/token-format-converter.d.ts +8 -8
- package/dist/src/utils/token-format-converter.d.ts.map +1 -0
- package/dist/src/utils/token-parser.d.ts.map +1 -0
- package/dist/src/utils/tokenNormalizer.d.ts.map +1 -0
- package/dist/src/utils/trade-transformers.d.ts.map +1 -0
- package/dist/src/utils/transfer-validation.d.ts.map +1 -0
- package/dist/{utils → src/utils}/validation-helpers.d.ts +1 -1
- package/dist/src/utils/validation-helpers.d.ts.map +1 -0
- package/dist/src/utils/validation.d.ts.map +1 -0
- package/dist/src/utils/wallet.d.ts.map +1 -0
- package/dist/src/utils/websocket-errors.d.ts.map +1 -0
- package/dist/src/utils/websocket-validators.d.ts.map +1 -0
- package/package.json +39 -6
- package/dist/LaunchpadSDK.d.ts.map +0 -1
- package/dist/api/LaunchpadAPI.d.ts.map +0 -1
- package/dist/api/dto/BondingCurveDTOs.d.ts.map +0 -1
- package/dist/api/dto/TransferTokenDto.d.ts.map +0 -1
- package/dist/auth/SignatureAuth.d.ts.map +0 -1
- package/dist/auth/types.d.ts.map +0 -1
- package/dist/config/environments.d.ts.map +0 -1
- package/dist/constants/bondingCurve.d.ts.map +0 -1
- package/dist/constants/config.d.ts.map +0 -1
- package/dist/constants/counts.d.ts.map +0 -1
- package/dist/constants/decimals.d.ts.map +0 -1
- package/dist/constants/endpoints.d.ts.map +0 -1
- package/dist/constants/enums.d.ts.map +0 -1
- package/dist/constants/error-messages.d.ts.map +0 -1
- package/dist/constants/pagination.d.ts.map +0 -1
- package/dist/constants/query-fields.d.ts.map +0 -1
- package/dist/constants/version.d.ts.map +0 -1
- package/dist/constants/version.generated.d.ts.map +0 -1
- package/dist/helpers/sdk.d.ts.map +0 -1
- package/dist/helpers/wallet.d.ts.map +0 -1
- package/dist/polyfills/file-global.d.ts.map +0 -1
- package/dist/schemas/files.d.ts.map +0 -1
- package/dist/schemas/index.d.ts.map +0 -1
- package/dist/schemas/launchpad.d.ts.map +0 -1
- package/dist/schemas/pagination.d.ts.map +0 -1
- package/dist/schemas/primitives.d.ts.map +0 -1
- package/dist/schemas/trade.d.ts.map +0 -1
- package/dist/schemas/user.d.ts.map +0 -1
- package/dist/schemas/validators.d.ts.map +0 -1
- package/dist/services/BaseService.d.ts.map +0 -1
- package/dist/services/BundleService.d.ts.map +0 -1
- package/dist/services/CommentService.d.ts.map +0 -1
- package/dist/services/DexBackendClient.d.ts.map +0 -1
- package/dist/services/DexPoolService.d.ts.map +0 -1
- package/dist/services/DexQuoteService.d.ts.map +0 -1
- package/dist/services/DexService.d.ts.map +0 -1
- package/dist/services/FaucetService.d.ts.map +0 -1
- package/dist/services/GSwapService.d.ts.map +0 -1
- package/dist/services/GalaChainGatewayClient.d.ts.map +0 -1
- package/dist/services/GalaChainService.d.ts.map +0 -1
- package/dist/services/ImageService.d.ts.map +0 -1
- package/dist/services/LaunchpadService.d.ts.map +0 -1
- package/dist/services/PoolService.d.ts.map +0 -1
- package/dist/services/PoolStateManager.d.ts.map +0 -1
- package/dist/services/PriceHistoryService.d.ts.map +0 -1
- package/dist/services/SignatureService.d.ts.map +0 -1
- package/dist/services/TokenClassKeyService.d.ts.map +0 -1
- package/dist/services/TokenMetadataCache.d.ts.map +0 -1
- package/dist/services/TokenMetadataService.d.ts.map +0 -1
- package/dist/services/TokenResolverService.d.ts.map +0 -1
- package/dist/services/TradeService.d.ts.map +0 -1
- package/dist/services/UserService.d.ts.map +0 -1
- package/dist/services/WebSocketManager.d.ts.map +0 -1
- package/dist/services/WebSocketService.d.ts.map +0 -1
- package/dist/services/__mocks__/logger.mock.d.ts.map +0 -1
- package/dist/types/backend-responses.d.ts.map +0 -1
- package/dist/types/comment.dto.d.ts.map +0 -1
- package/dist/types/common.d.ts.map +0 -1
- package/dist/types/composite-pool.dto.d.ts.map +0 -1
- package/dist/types/dex-pool.dto.d.ts.map +0 -1
- package/dist/types/dto.d.ts.map +0 -1
- package/dist/types/eip712-types.d.ts.map +0 -1
- package/dist/types/galachain-api.types.d.ts.map +0 -1
- package/dist/types/gswap-responses.types.d.ts.map +0 -1
- package/dist/types/gswap.dto.d.ts.map +0 -1
- package/dist/types/launchpad.dto.d.ts.map +0 -1
- package/dist/types/launchpad.validation.d.ts.map +0 -1
- package/dist/types/options.dto.d.ts.map +0 -1
- package/dist/types/pool-state-delta.dto.d.ts.map +0 -1
- package/dist/types/pool-state-manager-config.dto.d.ts.map +0 -1
- package/dist/types/priceHistory.dto.d.ts.map +0 -1
- package/dist/types/result.types.d.ts.map +0 -1
- package/dist/types/trade.dto.d.ts.map +0 -1
- package/dist/types/transfer.dto.d.ts.map +0 -1
- package/dist/types/user.dto.d.ts.map +0 -1
- package/dist/types/websocket-data.types.d.ts.map +0 -1
- package/dist/types/websocket.types.d.ts.map +0 -1
- package/dist/utils/Logger.d.ts.map +0 -1
- package/dist/utils/SignatureHelper.d.ts.map +0 -1
- package/dist/utils/adapters.d.ts.map +0 -1
- package/dist/utils/agent-config.d.ts.map +0 -1
- package/dist/utils/auto-pagination.d.ts.map +0 -1
- package/dist/utils/bignumber-helpers.d.ts.map +0 -1
- package/dist/utils/bignumber-pool-cache.d.ts.map +0 -1
- package/dist/utils/bondingCurveCalculations.d.ts.map +0 -1
- package/dist/utils/cacheWarmingHelpers.d.ts.map +0 -1
- package/dist/utils/composite-pool-converter.d.ts.map +0 -1
- package/dist/utils/date-utils.d.ts.map +0 -1
- package/dist/utils/error-factories.d.ts.map +0 -1
- package/dist/utils/error-utils.d.ts.map +0 -1
- package/dist/utils/errors.d.ts.map +0 -1
- package/dist/utils/http.d.ts.map +0 -1
- package/dist/utils/load-env.d.ts.map +0 -1
- package/dist/utils/multipart-helpers.d.ts.map +0 -1
- package/dist/utils/multipart.d.ts.map +0 -1
- package/dist/utils/number-utils.d.ts.map +0 -1
- package/dist/utils/pool-pair-parser.d.ts.map +0 -1
- package/dist/utils/pool-state-validator.d.ts.map +0 -1
- package/dist/utils/position-filters.d.ts.map +0 -1
- package/dist/utils/precision-math.d.ts.map +0 -1
- package/dist/utils/query-params.d.ts.map +0 -1
- package/dist/utils/response-handlers.d.ts.map +0 -1
- package/dist/utils/response-normalizers.d.ts.map +0 -1
- package/dist/utils/slippage-utils.d.ts.map +0 -1
- package/dist/utils/swap-delta-calculator.d.ts.map +0 -1
- package/dist/utils/tick-crossing-handler.d.ts.map +0 -1
- package/dist/utils/token-format-converter.d.ts.map +0 -1
- package/dist/utils/token-parser.d.ts.map +0 -1
- package/dist/utils/tokenNormalizer.d.ts.map +0 -1
- package/dist/utils/trade-transformers.d.ts.map +0 -1
- package/dist/utils/transfer-validation.d.ts.map +0 -1
- package/dist/utils/validation-helpers.d.ts.map +0 -1
- package/dist/utils/validation.d.ts.map +0 -1
- package/dist/utils/wallet.d.ts.map +0 -1
- package/dist/utils/websocket-errors.d.ts.map +0 -1
- package/dist/utils/websocket-validators.d.ts.map +0 -1
- /package/dist/{api → src/api}/LaunchpadAPI.d.ts +0 -0
- /package/dist/{api → src/api}/dto/BondingCurveDTOs.d.ts +0 -0
- /package/dist/{api → src/api}/dto/TransferTokenDto.d.ts +0 -0
- /package/dist/{auth → src/auth}/SignatureAuth.d.ts +0 -0
- /package/dist/{auth → src/auth}/types.d.ts +0 -0
- /package/dist/{config → src/config}/environments.d.ts +0 -0
- /package/dist/{constants → src/constants}/bondingCurve.d.ts +0 -0
- /package/dist/{constants → src/constants}/config.d.ts +0 -0
- /package/dist/{constants → src/constants}/counts.d.ts +0 -0
- /package/dist/{constants → src/constants}/decimals.d.ts +0 -0
- /package/dist/{constants → src/constants}/endpoints.d.ts +0 -0
- /package/dist/{constants → src/constants}/enums.d.ts +0 -0
- /package/dist/{constants → src/constants}/error-messages.d.ts +0 -0
- /package/dist/{constants → src/constants}/pagination.d.ts +0 -0
- /package/dist/{constants → src/constants}/query-fields.d.ts +0 -0
- /package/dist/{constants → src/constants}/version.d.ts +0 -0
- /package/dist/{helpers → src/helpers}/sdk.d.ts +0 -0
- /package/dist/{helpers → src/helpers}/wallet.d.ts +0 -0
- /package/dist/{polyfills → src/polyfills}/file-global.d.ts +0 -0
- /package/dist/{schemas → src/schemas}/files.d.ts +0 -0
- /package/dist/{schemas → src/schemas}/index.d.ts +0 -0
- /package/dist/{schemas → src/schemas}/launchpad.d.ts +0 -0
- /package/dist/{schemas → src/schemas}/pagination.d.ts +0 -0
- /package/dist/{schemas → src/schemas}/primitives.d.ts +0 -0
- /package/dist/{schemas → src/schemas}/trade.d.ts +0 -0
- /package/dist/{schemas → src/schemas}/user.d.ts +0 -0
- /package/dist/{schemas → src/schemas}/validators.d.ts +0 -0
- /package/dist/{services → src/services}/BaseService.d.ts +0 -0
- /package/dist/{services → src/services}/BundleService.d.ts +0 -0
- /package/dist/{services → src/services}/CommentService.d.ts +0 -0
- /package/dist/{services → src/services}/DexBackendClient.d.ts +0 -0
- /package/dist/{services → src/services}/DexPoolService.d.ts +0 -0
- /package/dist/{services → src/services}/DexQuoteService.d.ts +0 -0
- /package/dist/{services → src/services}/FaucetService.d.ts +0 -0
- /package/dist/{services → src/services}/ImageService.d.ts +0 -0
- /package/dist/{services → src/services}/LaunchpadService.d.ts +0 -0
- /package/dist/{services → src/services}/PoolService.d.ts +0 -0
- /package/dist/{services → src/services}/PoolStateManager.d.ts +0 -0
- /package/dist/{services → src/services}/SignatureService.d.ts +0 -0
- /package/dist/{services → src/services}/TokenClassKeyService.d.ts +0 -0
- /package/dist/{services → src/services}/TokenResolverService.d.ts +0 -0
- /package/dist/{services → src/services}/TradeService.d.ts +0 -0
- /package/dist/{services → src/services}/UserService.d.ts +0 -0
- /package/dist/{services → src/services}/WebSocketManager.d.ts +0 -0
- /package/dist/{services → src/services}/WebSocketService.d.ts +0 -0
- /package/dist/{services → src/services}/__mocks__/logger.mock.d.ts +0 -0
- /package/dist/{setup.d.ts → src/setup.d.ts} +0 -0
- /package/dist/{types → src/types}/comment.dto.d.ts +0 -0
- /package/dist/{types → src/types}/common.d.ts +0 -0
- /package/dist/{types → src/types}/dex-pool.dto.d.ts +0 -0
- /package/dist/{types → src/types}/dto.d.ts +0 -0
- /package/dist/{types → src/types}/eip712-types.d.ts +0 -0
- /package/dist/{types → src/types}/gswap.dto.d.ts +0 -0
- /package/dist/{types → src/types}/launchpad.validation.d.ts +0 -0
- /package/dist/{types → src/types}/options.dto.d.ts +0 -0
- /package/dist/{types → src/types}/pool-state-delta.dto.d.ts +0 -0
- /package/dist/{types → src/types}/pool-state-manager-config.dto.d.ts +0 -0
- /package/dist/{types → src/types}/result.types.d.ts +0 -0
- /package/dist/{types → src/types}/trade.dto.d.ts +0 -0
- /package/dist/{types → src/types}/transfer.dto.d.ts +0 -0
- /package/dist/{types → src/types}/user.dto.d.ts +0 -0
- /package/dist/{types → src/types}/websocket-data.types.d.ts +0 -0
- /package/dist/{types → src/types}/websocket.types.d.ts +0 -0
- /package/dist/{utils → src/utils}/Logger.d.ts +0 -0
- /package/dist/{utils → src/utils}/adapters.d.ts +0 -0
- /package/dist/{utils → src/utils}/agent-config.d.ts +0 -0
- /package/dist/{utils → src/utils}/bignumber-pool-cache.d.ts +0 -0
- /package/dist/{utils → src/utils}/bondingCurveCalculations.d.ts +0 -0
- /package/dist/{utils → src/utils}/cacheWarmingHelpers.d.ts +0 -0
- /package/dist/{utils → src/utils}/composite-pool-converter.d.ts +0 -0
- /package/dist/{utils → src/utils}/date-utils.d.ts +0 -0
- /package/dist/{utils → src/utils}/error-factories.d.ts +0 -0
- /package/dist/{utils → src/utils}/error-utils.d.ts +0 -0
- /package/dist/{utils → src/utils}/errors.d.ts +0 -0
- /package/dist/{utils → src/utils}/http.d.ts +0 -0
- /package/dist/{utils → src/utils}/load-env.d.ts +0 -0
- /package/dist/{utils → src/utils}/multipart-helpers.d.ts +0 -0
- /package/dist/{utils → src/utils}/number-utils.d.ts +0 -0
- /package/dist/{utils → src/utils}/pool-pair-parser.d.ts +0 -0
- /package/dist/{utils → src/utils}/pool-state-validator.d.ts +0 -0
- /package/dist/{utils → src/utils}/position-filters.d.ts +0 -0
- /package/dist/{utils → src/utils}/precision-math.d.ts +0 -0
- /package/dist/{utils → src/utils}/response-handlers.d.ts +0 -0
- /package/dist/{utils → src/utils}/response-normalizers.d.ts +0 -0
- /package/dist/{utils → src/utils}/slippage-utils.d.ts +0 -0
- /package/dist/{utils → src/utils}/swap-delta-calculator.d.ts +0 -0
- /package/dist/{utils → src/utils}/tick-crossing-handler.d.ts +0 -0
- /package/dist/{utils → src/utils}/token-parser.d.ts +0 -0
- /package/dist/{utils → src/utils}/tokenNormalizer.d.ts +0 -0
- /package/dist/{utils → src/utils}/trade-transformers.d.ts +0 -0
- /package/dist/{utils → src/utils}/transfer-validation.d.ts +0 -0
- /package/dist/{utils → src/utils}/validation.d.ts +0 -0
- /package/dist/{utils → src/utils}/wallet.d.ts +0 -0
- /package/dist/{utils → src/utils}/websocket-errors.d.ts +0 -0
- /package/dist/{utils → src/utils}/websocket-validators.d.ts +0 -0
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Multi-Pool State Manager
|
|
3
|
+
*
|
|
4
|
+
* Core coordinator for real-time DEX swap monitoring with offline price prediction.
|
|
5
|
+
* Manages WebSocket events, pool caching, delta application, and offline quotes.
|
|
6
|
+
*
|
|
7
|
+
* Architecture:
|
|
8
|
+
* - WebSocket listener for global swap broadcasts
|
|
9
|
+
* - Event extraction and recursive payload walking
|
|
10
|
+
* - Tiered LRU pool cache (hot/warm/cold)
|
|
11
|
+
* - Delta-based pool updates (~15-25ms vs full refetch ~200-400ms)
|
|
12
|
+
* - Offline quote calculation (~25-50ms)
|
|
13
|
+
* - Event filtering (position-independent tokens, order-independent pairs)
|
|
14
|
+
* - Metrics collection and health monitoring
|
|
15
|
+
*
|
|
16
|
+
* Performance Target: <50ms P50 latency for arbitrage bot use case
|
|
17
|
+
*
|
|
18
|
+
* @packageDocumentation
|
|
19
|
+
*/
|
|
20
|
+
import type { Socket } from 'socket.io-client';
|
|
21
|
+
import type { SwapEventCallback, SubscribeSwapOptions, SwapMonitorConfig, SwapMonitorHealth, CleanupFunction } from '../types/swap-monitor.dto';
|
|
22
|
+
import type { CompositePoolDataResult } from '../types/composite-pool.dto';
|
|
23
|
+
import { Logger } from '../utils/Logger';
|
|
24
|
+
import type { DexQuoteService } from './DexQuoteService';
|
|
25
|
+
/**
|
|
26
|
+
* Manages real-time DEX swap monitoring across multiple pools
|
|
27
|
+
*
|
|
28
|
+
* Coordinates event extraction, filtering, caching, delta application,
|
|
29
|
+
* and offline quote calculation for arbitrage bot use cases.
|
|
30
|
+
*
|
|
31
|
+
* @internal
|
|
32
|
+
*/
|
|
33
|
+
export declare class MultiPoolStateManager {
|
|
34
|
+
private socket;
|
|
35
|
+
private socketReady;
|
|
36
|
+
private readonly config;
|
|
37
|
+
private readonly logger;
|
|
38
|
+
private readonly metrics;
|
|
39
|
+
private readonly eventExtractor;
|
|
40
|
+
private readonly quoteService;
|
|
41
|
+
private readonly cacheManager;
|
|
42
|
+
private readonly eventQueue;
|
|
43
|
+
private seenTransactions;
|
|
44
|
+
private maxSeenTransactions;
|
|
45
|
+
private listeners;
|
|
46
|
+
private onErrorCallbacks;
|
|
47
|
+
private isActive;
|
|
48
|
+
private listenerRegistered;
|
|
49
|
+
/** Handler function for cleanup reference */
|
|
50
|
+
private handleSwapEvent;
|
|
51
|
+
/** Background warming loop interval handle */
|
|
52
|
+
private warmingIntervalHandle;
|
|
53
|
+
/** Reconnection state tracking */
|
|
54
|
+
private reconnectAttempts;
|
|
55
|
+
private maxReconnectAttempts;
|
|
56
|
+
private reconnectDelayMs;
|
|
57
|
+
constructor(socket: Socket | Promise<Socket>, fetchPoolFn: (poolKey: string) => Promise<CompositePoolDataResult>, quoteService: DexQuoteService, config?: SwapMonitorConfig, logger?: Logger);
|
|
58
|
+
/**
|
|
59
|
+
* Subscribe to swap events for real-time monitoring
|
|
60
|
+
*
|
|
61
|
+
* Sets up WebSocket listener for global swap broadcasts and event processing.
|
|
62
|
+
* Filters events based on options and calls callback for matching swaps.
|
|
63
|
+
* Automatically manages cache warming, offline quote calculation, and reconnection.
|
|
64
|
+
*
|
|
65
|
+
* **Performance:**
|
|
66
|
+
* - WebSocket connection: ~100-500ms initial setup
|
|
67
|
+
* - Event latency: <50ms P50 (25-50ms typical)
|
|
68
|
+
* - Delta application: 15-25ms (vs 200-400ms full refetch)
|
|
69
|
+
* - Offline quote: 25-50ms
|
|
70
|
+
*
|
|
71
|
+
* **Features:**
|
|
72
|
+
* - Position-independent token matching (GALA/USDC matches token0/token1 in any position)
|
|
73
|
+
* - Order-independent pair matching (GALA/USDC == USDC/GALA)
|
|
74
|
+
* - Tiered LRU cache with automatic background warming
|
|
75
|
+
* - Three-tier reconnection strategy for resilience
|
|
76
|
+
* - Delta-based pool updates for sub-50ms latency
|
|
77
|
+
*
|
|
78
|
+
* @param options - Subscription filter options
|
|
79
|
+
* @param options.tokenFilter - Token symbol to monitor (position-independent)
|
|
80
|
+
* @param options.pairFilter - Pair of tokens to monitor (order-independent, e.g., ['GALA', 'USDC'])
|
|
81
|
+
* @param options.feeFilter - Fee tier in basis points (e.g., 500, 3000, 10000)
|
|
82
|
+
* @param options.userFilter - User address to filter events
|
|
83
|
+
* @param options.onError - Error callback for connection/processing failures
|
|
84
|
+
*
|
|
85
|
+
* @param callback - Function called for each matching swap with signature:
|
|
86
|
+
* `(event: SwapEventData, quote: OfflineQuote | null) => Promise<void>`
|
|
87
|
+
*
|
|
88
|
+
* @returns Cleanup function to unsubscribe and stop monitoring. Call this to:
|
|
89
|
+
* - Remove the listener
|
|
90
|
+
* - Unsubscribe from WebSocket if no other listeners exist
|
|
91
|
+
* - Clean up background warming and metric collection
|
|
92
|
+
*
|
|
93
|
+
* @example
|
|
94
|
+
* ```typescript
|
|
95
|
+
* // Monitor GALA/USDC swaps for arbitrage opportunities
|
|
96
|
+
* const cleanup = monitor.subscribe(
|
|
97
|
+
* {
|
|
98
|
+
* pairFilter: ['GALA', 'USDC'],
|
|
99
|
+
* feeFilter: 3000,
|
|
100
|
+
* onError: (error) => console.error('Monitoring error:', error)
|
|
101
|
+
* },
|
|
102
|
+
* async (swap, quote) => {
|
|
103
|
+
* if (quote && quote.priceImpact < 0.01) {
|
|
104
|
+
* console.log(`Arbitrage opportunity: ${quote.priceImpact * 100}% impact`);
|
|
105
|
+
* // Execute arbitrage logic
|
|
106
|
+
* }
|
|
107
|
+
* }
|
|
108
|
+
* );
|
|
109
|
+
*
|
|
110
|
+
* // Later, stop monitoring
|
|
111
|
+
* cleanup();
|
|
112
|
+
* ```
|
|
113
|
+
*/
|
|
114
|
+
subscribe(options: SubscribeSwapOptions, callback: SwapEventCallback): CleanupFunction;
|
|
115
|
+
/**
|
|
116
|
+
* Get current health status with enhanced diagnostics
|
|
117
|
+
*
|
|
118
|
+
* Provides comprehensive health metrics including latency percentiles,
|
|
119
|
+
* cache performance trends, memory usage, and health recommendations.
|
|
120
|
+
*
|
|
121
|
+
* @returns Enhanced health object with detailed diagnostics
|
|
122
|
+
*/
|
|
123
|
+
getHealth(): SwapMonitorHealth & {
|
|
124
|
+
recommendations?: string[];
|
|
125
|
+
detailedMetrics?: {
|
|
126
|
+
eventQueueUtilization: number;
|
|
127
|
+
cacheUtilization: number;
|
|
128
|
+
memoryUtilization: number;
|
|
129
|
+
};
|
|
130
|
+
};
|
|
131
|
+
/**
|
|
132
|
+
* Generate health recommendations based on current state
|
|
133
|
+
*
|
|
134
|
+
* @internal
|
|
135
|
+
*/
|
|
136
|
+
private generateHealthRecommendations;
|
|
137
|
+
/**
|
|
138
|
+
* Get summary statistics
|
|
139
|
+
*
|
|
140
|
+
* @returns Summary with key metrics
|
|
141
|
+
*/
|
|
142
|
+
getSummary(): {
|
|
143
|
+
queueStats: import("./SwapEventQueue").QueueStats;
|
|
144
|
+
cacheStats: {
|
|
145
|
+
totalCached: number;
|
|
146
|
+
hotCacheSize: number;
|
|
147
|
+
warmCacheSize: number;
|
|
148
|
+
coldCacheSize: number;
|
|
149
|
+
memoryUsedMB: number;
|
|
150
|
+
};
|
|
151
|
+
eventsProcessed: number;
|
|
152
|
+
eventsDropped: number;
|
|
153
|
+
cacheHitRate: number;
|
|
154
|
+
averageLatency: number;
|
|
155
|
+
memoryUsedMB: number;
|
|
156
|
+
throughputPerSecond: number;
|
|
157
|
+
};
|
|
158
|
+
/**
|
|
159
|
+
* Start background cache warming loop
|
|
160
|
+
*
|
|
161
|
+
* Periodically refreshes hot and warm cached pools to keep data fresh.
|
|
162
|
+
* Helps prevent accumulated drift from delta-only updates.
|
|
163
|
+
*
|
|
164
|
+
* @internal
|
|
165
|
+
*/
|
|
166
|
+
private startBackgroundWarming;
|
|
167
|
+
/**
|
|
168
|
+
* Stop background cache warming loop
|
|
169
|
+
*
|
|
170
|
+
* @internal
|
|
171
|
+
*/
|
|
172
|
+
private stopBackgroundWarming;
|
|
173
|
+
/**
|
|
174
|
+
* Perform background cache warming
|
|
175
|
+
*
|
|
176
|
+
* Periodically refreshes pools in hot and warm tiers to prevent accumulated drift.
|
|
177
|
+
* This helps maintain cache accuracy during low-event periods.
|
|
178
|
+
*
|
|
179
|
+
* @internal
|
|
180
|
+
*/
|
|
181
|
+
private performBackgroundWarming;
|
|
182
|
+
/**
|
|
183
|
+
* Shutdown gracefully
|
|
184
|
+
*
|
|
185
|
+
* Stops listening, processes remaining events, and cleans up resources.
|
|
186
|
+
*/
|
|
187
|
+
shutdown(): Promise<void>;
|
|
188
|
+
/**
|
|
189
|
+
* Set up connection monitoring and error handling
|
|
190
|
+
*
|
|
191
|
+
* Implements three-tier reconnection strategy:
|
|
192
|
+
* - Tier 1 (Quick): Immediate reconnect for transient failures
|
|
193
|
+
* - Tier 2 (Exponential): Backoff with exponential delay after failures
|
|
194
|
+
* - Tier 3 (Reset): Full system reset after max retries
|
|
195
|
+
*
|
|
196
|
+
* @internal
|
|
197
|
+
*/
|
|
198
|
+
private setupConnectionMonitoring;
|
|
199
|
+
/**
|
|
200
|
+
* Attempt to reconnect with three-tier strategy
|
|
201
|
+
*
|
|
202
|
+
* @internal
|
|
203
|
+
*/
|
|
204
|
+
private attemptReconnection;
|
|
205
|
+
/**
|
|
206
|
+
* Perform full system reset after max reconnection failures
|
|
207
|
+
*
|
|
208
|
+
* Clears cache, resets metrics, and logs comprehensive diagnostic info.
|
|
209
|
+
*
|
|
210
|
+
* @internal
|
|
211
|
+
*/
|
|
212
|
+
private performFullReset;
|
|
213
|
+
/**
|
|
214
|
+
* Set up WebSocket listener for swap events
|
|
215
|
+
*
|
|
216
|
+
* @internal
|
|
217
|
+
*/
|
|
218
|
+
private setupWebSocketListener;
|
|
219
|
+
/**
|
|
220
|
+
* Unsubscribe from events
|
|
221
|
+
*
|
|
222
|
+
* @internal
|
|
223
|
+
*/
|
|
224
|
+
private unsubscribe;
|
|
225
|
+
/**
|
|
226
|
+
* Filter swap based on subscription options
|
|
227
|
+
*
|
|
228
|
+
* Applies position-independent and order-independent matching.
|
|
229
|
+
*
|
|
230
|
+
* @internal
|
|
231
|
+
*/
|
|
232
|
+
private filterSwap;
|
|
233
|
+
/**
|
|
234
|
+
* Process a single swap event
|
|
235
|
+
*
|
|
236
|
+
* Updates pool cache with delta, calculates offline quote, and calls listeners.
|
|
237
|
+
*
|
|
238
|
+
* @internal
|
|
239
|
+
*/
|
|
240
|
+
private processSwapEvent;
|
|
241
|
+
/**
|
|
242
|
+
* Notify error handlers
|
|
243
|
+
*
|
|
244
|
+
* @internal
|
|
245
|
+
*/
|
|
246
|
+
private notifyError;
|
|
247
|
+
/**
|
|
248
|
+
* Determine health status based on metrics
|
|
249
|
+
*
|
|
250
|
+
* @internal
|
|
251
|
+
*/
|
|
252
|
+
private determineHealthStatus;
|
|
253
|
+
/**
|
|
254
|
+
* Get max memory based on profile
|
|
255
|
+
*
|
|
256
|
+
* @internal
|
|
257
|
+
*/
|
|
258
|
+
private getMaxMemoryMB;
|
|
259
|
+
/**
|
|
260
|
+
* Apply configuration defaults
|
|
261
|
+
*
|
|
262
|
+
* @internal
|
|
263
|
+
*/
|
|
264
|
+
private applyDefaults;
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Bounded Set with LRU eviction for transaction deduplication
|
|
268
|
+
*
|
|
269
|
+
* Provides Set-like interface with automatic eviction of oldest entries
|
|
270
|
+
* when capacity is reached. Prevents unbounded memory growth in 24/7 bots.
|
|
271
|
+
*
|
|
272
|
+
* @internal
|
|
273
|
+
*/
|
|
274
|
+
export declare class BoundedTransactionSet {
|
|
275
|
+
private readonly map;
|
|
276
|
+
private readonly maxSize;
|
|
277
|
+
constructor(maxSize: number);
|
|
278
|
+
has(transactionId: string): boolean;
|
|
279
|
+
add(transactionId: string): this;
|
|
280
|
+
delete(transactionId: string): boolean;
|
|
281
|
+
clear(): void;
|
|
282
|
+
get size(): number;
|
|
283
|
+
}
|
|
284
|
+
//# sourceMappingURL=MultiPoolStateManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MultiPoolStateManager.d.ts","sourceRoot":"","sources":["../../../src/services/MultiPoolStateManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pool Cache Manager
|
|
3
|
+
*
|
|
4
|
+
* Manages tiered LRU caching of pool state with automatic refetching.
|
|
5
|
+
* Optimized for swap monitoring with delta-based updates instead of full refetches.
|
|
6
|
+
*
|
|
7
|
+
* Cache Tiers:
|
|
8
|
+
* - Hot Cache (50 pools): Never evicted, ~infinite TTL, highest priority
|
|
9
|
+
* - Warm Cache (200 pools): 30-minute TTL, automatic refresh
|
|
10
|
+
* - Cold Cache (500 max total): 5-minute TTL, LRU eviction
|
|
11
|
+
*
|
|
12
|
+
* @packageDocumentation
|
|
13
|
+
*/
|
|
14
|
+
import type { CompositePoolDataResult } from '../types/composite-pool.dto';
|
|
15
|
+
import type { SwapMonitorConfig, SwapEventData as SwapMonitorEvent } from '../types/swap-monitor.dto';
|
|
16
|
+
import { Logger } from '../utils/Logger';
|
|
17
|
+
import { MonitoringMetrics } from '../utils/MonitoringMetrics';
|
|
18
|
+
/**
|
|
19
|
+
* Cache tier classification
|
|
20
|
+
*
|
|
21
|
+
* @internal
|
|
22
|
+
*/
|
|
23
|
+
type CacheTier = 'hot' | 'warm' | 'cold';
|
|
24
|
+
/**
|
|
25
|
+
* Manages tiered LRU pool cache for swap monitoring
|
|
26
|
+
*
|
|
27
|
+
* Maintains hot/warm/cold cache tiers with automatic eviction and refetching.
|
|
28
|
+
* Tracks cache performance metrics and applies swap deltas efficiently.
|
|
29
|
+
*
|
|
30
|
+
* @internal
|
|
31
|
+
*/
|
|
32
|
+
export declare class PoolCacheManager {
|
|
33
|
+
private readonly cache;
|
|
34
|
+
private readonly metrics;
|
|
35
|
+
private readonly config;
|
|
36
|
+
private readonly logger;
|
|
37
|
+
private readonly fetchPoolFn;
|
|
38
|
+
/** Configuration with defaults applied */
|
|
39
|
+
private readonly tierSizes;
|
|
40
|
+
/** TTL in milliseconds per tier */
|
|
41
|
+
private readonly tierTTLs;
|
|
42
|
+
/** Refetch thresholds */
|
|
43
|
+
private readonly refetchThresholds;
|
|
44
|
+
constructor(fetchPoolFn: (poolKey: string) => Promise<CompositePoolDataResult>, config: Required<SwapMonitorConfig>, metrics: MonitoringMetrics, logger?: Logger);
|
|
45
|
+
/**
|
|
46
|
+
* Get pool data from cache, fetching if necessary
|
|
47
|
+
*
|
|
48
|
+
* Implements three-tier cache strategy:
|
|
49
|
+
* 1. Check hot cache (never expires)
|
|
50
|
+
* 2. Check warm cache (30-min TTL)
|
|
51
|
+
* 3. Check cold cache (5-min TTL)
|
|
52
|
+
* 4. Fetch from backend if not found or expired
|
|
53
|
+
*
|
|
54
|
+
* @param poolKey - Pool identifier
|
|
55
|
+
* @returns Pool data
|
|
56
|
+
*/
|
|
57
|
+
getPool(poolKey: string): Promise<CompositePoolDataResult>;
|
|
58
|
+
/**
|
|
59
|
+
* Update pool cache with swap delta
|
|
60
|
+
*
|
|
61
|
+
* Applies swap delta to cached pool state using SwapDeltaCalculator.
|
|
62
|
+
* Tracks swap count, drift accumulation, and marks for refetch when thresholds exceeded.
|
|
63
|
+
*
|
|
64
|
+
* Performance: 25-50ms for typical swaps (1-3 tick crossings)
|
|
65
|
+
*
|
|
66
|
+
* @param poolKey - Pool identifier
|
|
67
|
+
* @param direction - Swap direction (zeroForOne or oneForZero)
|
|
68
|
+
* @param amount0 - Amount of token0
|
|
69
|
+
* @param amount1 - Amount of token1
|
|
70
|
+
* @param swapEvent - Full swap event data for delta calculation
|
|
71
|
+
* @returns Whether delta was successfully applied
|
|
72
|
+
*/
|
|
73
|
+
updatePoolWithSwapDelta(poolKey: string, direction: 'zeroForOne' | 'oneForZero', amount0: string, amount1: string, swapEvent?: SwapMonitorEvent): boolean;
|
|
74
|
+
/**
|
|
75
|
+
* Get cache statistics
|
|
76
|
+
*
|
|
77
|
+
* @returns Cache stats with tier breakdown
|
|
78
|
+
*/
|
|
79
|
+
getStats(): {
|
|
80
|
+
totalCached: number;
|
|
81
|
+
hotCacheSize: number;
|
|
82
|
+
warmCacheSize: number;
|
|
83
|
+
coldCacheSize: number;
|
|
84
|
+
memoryUsedMB: number;
|
|
85
|
+
};
|
|
86
|
+
/**
|
|
87
|
+
* Get information about a cached pool
|
|
88
|
+
*
|
|
89
|
+
* @param poolKey - Pool identifier
|
|
90
|
+
* @returns Pool info or null if not cached
|
|
91
|
+
*/
|
|
92
|
+
getPoolInfo(poolKey: string): {
|
|
93
|
+
poolKey: string;
|
|
94
|
+
tier: CacheTier;
|
|
95
|
+
lastAccessTime: Date;
|
|
96
|
+
expiresAt: Date;
|
|
97
|
+
swapsSinceRefetch: number;
|
|
98
|
+
cumulativeDrift: number;
|
|
99
|
+
isExpired: boolean;
|
|
100
|
+
} | null;
|
|
101
|
+
/**
|
|
102
|
+
* Warm cache with a pool (eager preload)
|
|
103
|
+
*
|
|
104
|
+
* Fetches and caches pool data for future access. Used during startup
|
|
105
|
+
* to preload high-priority pools.
|
|
106
|
+
*
|
|
107
|
+
* @param poolKey - Pool identifier to warm
|
|
108
|
+
* @returns Whether pool was successfully warmed
|
|
109
|
+
*/
|
|
110
|
+
warmCache(poolKey: string): Promise<boolean>;
|
|
111
|
+
/**
|
|
112
|
+
* Warm cache with multiple pools (batch eager preload)
|
|
113
|
+
*
|
|
114
|
+
* Fetches multiple pools in parallel with concurrency control.
|
|
115
|
+
* Useful for preloading top pools at startup.
|
|
116
|
+
*
|
|
117
|
+
* @param poolKeys - Array of pool identifiers to warm
|
|
118
|
+
* @param maxConcurrent - Maximum parallel requests (default: 5)
|
|
119
|
+
* @returns Statistics on warming results
|
|
120
|
+
*/
|
|
121
|
+
warmCacheBatch(poolKeys: string[], maxConcurrent?: number): Promise<{
|
|
122
|
+
succeeded: number;
|
|
123
|
+
failed: number;
|
|
124
|
+
total: number;
|
|
125
|
+
}>;
|
|
126
|
+
/**
|
|
127
|
+
* Clear entire cache
|
|
128
|
+
*/
|
|
129
|
+
clear(): void;
|
|
130
|
+
/**
|
|
131
|
+
* Clear expired entries
|
|
132
|
+
*/
|
|
133
|
+
clearExpired(): void;
|
|
134
|
+
/**
|
|
135
|
+
* Determine which tier a new pool should be added to
|
|
136
|
+
*
|
|
137
|
+
* @internal
|
|
138
|
+
*/
|
|
139
|
+
private determineTier;
|
|
140
|
+
/**
|
|
141
|
+
* Check if pool needs refetching
|
|
142
|
+
*
|
|
143
|
+
* @internal
|
|
144
|
+
*/
|
|
145
|
+
private checkRefetchNeeded;
|
|
146
|
+
/**
|
|
147
|
+
* Check if refetch thresholds are exceeded
|
|
148
|
+
*
|
|
149
|
+
* @internal
|
|
150
|
+
*/
|
|
151
|
+
private shouldRefetch;
|
|
152
|
+
/**
|
|
153
|
+
* Evict least recently used entries from cold cache
|
|
154
|
+
*
|
|
155
|
+
* Only evicts from cold cache tier. Preserves hot and warm caches.
|
|
156
|
+
*
|
|
157
|
+
* @internal
|
|
158
|
+
*/
|
|
159
|
+
private evictLRU;
|
|
160
|
+
/**
|
|
161
|
+
* Refresh hot and warm tier pools
|
|
162
|
+
*
|
|
163
|
+
* Called periodically by background warming to keep frequently accessed
|
|
164
|
+
* pools fresh and prevent accumulated drift from delta-only updates.
|
|
165
|
+
*
|
|
166
|
+
* @internal
|
|
167
|
+
*/
|
|
168
|
+
refreshWarmAndHotTiers(): Promise<void>;
|
|
169
|
+
}
|
|
170
|
+
export {};
|
|
171
|
+
//# sourceMappingURL=PoolCacheManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PoolCacheManager.d.ts","sourceRoot":"","sources":["../../../src/services/PoolCacheManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,IAAI,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAEtG,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAG/D;;;;GAIG;AACH,KAAK,SAAS,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;AAwBzC;;;;;;;GAOG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqC;IAC3D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;IAC5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA8B;IACrD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAwD;IAEpF,0CAA0C;IAC1C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAIxB;IAEF,mCAAmC;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAIvB;IAEF,yBAAyB;IACzB,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAGhC;gBAGA,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,uBAAuB,CAAC,EAClE,MAAM,EAAE,QAAQ,CAAC,iBAAiB,CAAC,EACnC,OAAO,EAAE,iBAAiB,EAC1B,MAAM,CAAC,EAAE,MAAM;IAkBjB;;;;;;;;;;;OAWG;IACG,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC;IA2DhE;;;;;;;;;;;;;;OAcG;IACH,uBAAuB,CACrB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,YAAY,GAAG,YAAY,EACtC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,gBAAgB,GAC3B,OAAO;IAyEV;;;;OAIG;IACH,QAAQ,IAAI;QACV,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,CAAC;QACtB,aAAa,EAAE,MAAM,CAAC;QACtB,YAAY,EAAE,MAAM,CAAC;KACtB;IAkBD;;;;;OAKG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM;;;;;;;;;IAiB3B;;;;;;;;OAQG;IACG,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAgBlD;;;;;;;;;OASG;IACG,cAAc,CAClB,QAAQ,EAAE,MAAM,EAAE,EAClB,aAAa,GAAE,MAAU,GACxB,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAsChE;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,YAAY,IAAI,IAAI;IAgBpB;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAkBrB;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAU1B;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAcrB;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ;IA2BhB;;;;;;;OAOG;IACG,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC;CAmC9C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PoolService.d.ts","sourceRoot":"","sources":["../../../src/services/PoolService.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAW3C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAGL,WAAW,EAEX,gBAAgB,EAIhB,eAAe,EAEf,uBAAuB,EAEvB,iBAAiB,EAClB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EAErB,MAAM,sBAAsB,CAAC;AAE9B;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,WAAY,SAAQ,WAAW;gBAC9B,IAAI,EAAE,UAAU,EAAE,SAAS,GAAE,OAAe;IAIxD;;;OAGG;YACW,eAAe;IAwD7B;;;;OAIG;YACW,kBAAkB;IAqGhC;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACG,UAAU,CACd,OAAO,GAAE;QACP,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,IAAI,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;KACX,GACL,OAAO,CAAC,WAAW,CAAC;IA+IvB;;;;;;;;;;;;;;;;;;OAkBG;IACG,aAAa,CACjB,OAAO,CAAC,EAAE;QACR,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,IAAI,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;KAC7B,GACA,OAAO,CAAC,WAAW,CAAC;IAIvB;;;;;OAKG;IACG,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IAyC5D;;;;;OAKG;IACG,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAW/D;;;;;OAKG;IACG,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAW9D;;;;;OAKG;IACG,eAAe,CACnB,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,eAAe,CAAC;IAqD3B;;;;;;;;OAQG;IACG,sBAAsB,CAC1B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,uBAAuB,CAAC;IA4GnC;;;;;;;;OAQG;IACG,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA4BrE;;;;;OAKG;IACG,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;IAkBpE;;;;;;;;;;;;;;;;OAgBG;IACG,uBAAuB,CAC3B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAuB1B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PoolStateManager.d.ts","sourceRoot":"","sources":["../../../src/services/PoolStateManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,EACL,aAAa,EACb,eAAe,EACf,iBAAiB,EAClB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAKtE;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,6EAA6E;IAC7E,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,6DAA6D;IAC7D,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAE/B,oDAAoD;IACpD,YAAY,CAAC,EAAE,SAAS,CAAC,YAAY,CAAC;IAEtC,4CAA4C;IAC5C,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,uEAAuE;IACvE,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAE9B,+EAA+E;IAC/E,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B;;;OAGG;IACH,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,OAAO,CAAC,uBAAuB,CAAC,CAAC;IAE1G;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B,0FAA0F;IAC1F,yBAAyB,CAAC,EAAE,OAAO,CAAC;IAEpC,qEAAqE;IACrE,2BAA2B,CAAC,EAAE,MAAM,CAAC;CACtC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAErB;IACF,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA4B;IAE7D,gCAAgC;IAChC,OAAO,CAAC,IAAI,CAAO;IAEnB,4BAA4B;IAC5B,OAAO,CAAC,WAAW,CAA2B;IAE9C,oDAAoD;IACpD,OAAO,CAAC,QAAQ,CAAoB;IAEpC,wCAAwC;IACxC,OAAO,CAAC,eAAe,CAAC,CAItB;IAEF;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAKrC;;;;;;OAMG;gBACS,QAAQ,EAAE,uBAAuB,EAAE,MAAM,CAAC,EAAE,sBAAsB;IAoE9E;;;;;;;;;OASG;IACG,cAAc,CAAC,SAAS,EAAE,aAAa,GAAG,OAAO,CAAC,eAAe,CAAC;IAoKxE;;;;;;;OAOG;IACH,gBAAgB,CAAC,QAAQ,EAAE,uBAAuB,GAAG,IAAI;IAYzD;;;;OAIG;IACH,YAAY,IAAI,IAAI;IAIpB;;;;OAIG;IACH,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC;IAI1C;;;;OAIG;IACH,WAAW,IAAI,iBAAiB;IAIhC;;;;OAIG;IACH,kBAAkB,IAAI;QAAE,iBAAiB,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS;IAOrG;;;;OAIG;IACH,oBAAoB,IAAI,OAAO;IAO/B;;;;OAIG;IACH,KAAK,CAAC,QAAQ,EAAE,uBAAuB,GAAG,IAAI;CAgB/C;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,uBAAuB,EACjC,OAAO,CAAC,EAAE,sBAAsB,GAC/B,gBAAgB,CAElB"}
|
|
@@ -31,7 +31,7 @@ import { BaseService } from './BaseService';
|
|
|
31
31
|
*
|
|
32
32
|
* // Using tokenId
|
|
33
33
|
* const history = await service.fetchPriceHistory({
|
|
34
|
-
* tokenId: { collection: '
|
|
34
|
+
* tokenId: { collection: 'GUSDC', category: 'Unit', type: 'none', additionalKey: 'eth:...' },
|
|
35
35
|
* from: new Date('2024-01-01'),
|
|
36
36
|
* to: new Date('2024-01-31'),
|
|
37
37
|
* page: 1,
|
|
@@ -106,10 +106,10 @@ export declare class PriceHistoryService extends BaseService {
|
|
|
106
106
|
* // Using tokenId object format (explicit, no lookup required)
|
|
107
107
|
* const result = await service.fetchPriceHistory({
|
|
108
108
|
* tokenId: {
|
|
109
|
-
* collection: '
|
|
109
|
+
* collection: 'GUSDC',
|
|
110
110
|
* category: 'Unit',
|
|
111
|
-
* type: '
|
|
112
|
-
* additionalKey: '
|
|
111
|
+
* type: 'none',
|
|
112
|
+
* additionalKey: 'none'
|
|
113
113
|
* },
|
|
114
114
|
* from: new Date('2024-01-01'),
|
|
115
115
|
* to: new Date('2024-01-31'),
|
|
@@ -119,7 +119,7 @@ export declare class PriceHistoryService extends BaseService {
|
|
|
119
119
|
*
|
|
120
120
|
* // Using tokenId string format (backward compatible)
|
|
121
121
|
* const result = await service.fetchPriceHistory({
|
|
122
|
-
* tokenId: '
|
|
122
|
+
* tokenId: 'GUSDC|Unit|none|none',
|
|
123
123
|
* page: 1,
|
|
124
124
|
* limit: 20
|
|
125
125
|
* });
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PriceHistoryService.d.ts","sourceRoot":"","sources":["../../../src/services/PriceHistoryService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,EACL,wBAAwB,EACxB,kBAAkB,EAGnB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAI9D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qBAAa,mBAAoB,SAAQ,WAAW;IAClD,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAmC;IAExE;;;;;OAKG;gBACS,UAAU,EAAE,UAAU,EAAE,SAAS,GAAE,OAAe,EAAE,oBAAoB,CAAC,EAAE,oBAAoB;IAK3G;;;;;;;;;;;;;;;;;;;OAmBG;IACG,6BAA6B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAoDvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2DG;IACG,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAkFvF;;;OAGG;IACH,OAAO,CAAC,kCAAkC;IA+B1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoDG;IACG,oBAAoB,CACxB,OAAO,EAAE,IAAI,CAAC,wBAAwB,EAAE,MAAM,GAAG,OAAO,CAAC,GACxD,OAAO,CAAC,kBAAkB,CAAC;IA+B9B;;;;OAIG;IACH,OAAO,CAAC,eAAe;CAgCxB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SignatureService.d.ts","sourceRoot":"","sources":["../../../src/services/SignatureService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAQ3C;;GAEG;AACH,KAAK,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAAC;AAEzE;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAChH,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACnD,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC,CAAC;CACxE;AAED;;GAEG;AACH,KAAK,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE3C;;GAEG;AACH,UAAU,YAAY;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,UAAU;IAE5C,OAAO,CAAC,cAAc;gBAAd,cAAc,EAAE,cAAc,EACtC,KAAK,GAAE,OAAe;IAKxB;;;;;;;OAOG;IACG,OAAO,CACX,GAAG,EAAE,WAAW,EAChB,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,WAAW,GAAG;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,WAAW,CAAC;QAAC,MAAM,CAAC,EAAE,YAAY,CAAA;KAAE,CAAC;IAoC3F;;;;;OAKG;YACW,oBAAoB;IA8ClC;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;CA0F5B"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Swap Event Queue
|
|
3
|
+
*
|
|
4
|
+
* Manages event queuing with backpressure handling and batch processing.
|
|
5
|
+
* Prevents memory overflow by dropping events when queue exceeds capacity.
|
|
6
|
+
*
|
|
7
|
+
* Features:
|
|
8
|
+
* - Configurable queue capacity
|
|
9
|
+
* - Batch processing for efficiency
|
|
10
|
+
* - Concurrency control
|
|
11
|
+
* - Automatic metrics tracking
|
|
12
|
+
* - Graceful shutdown
|
|
13
|
+
*
|
|
14
|
+
* @packageDocumentation
|
|
15
|
+
*/
|
|
16
|
+
import type { SwapEventData, SwapMonitorConfig } from '../types/swap-monitor.dto';
|
|
17
|
+
import { Logger } from '../utils/Logger';
|
|
18
|
+
import { MonitoringMetrics } from '../utils/MonitoringMetrics';
|
|
19
|
+
/**
|
|
20
|
+
* Queue statistics
|
|
21
|
+
*
|
|
22
|
+
* @internal
|
|
23
|
+
*/
|
|
24
|
+
export interface QueueStats {
|
|
25
|
+
queueSize: number;
|
|
26
|
+
eventsProcessed: number;
|
|
27
|
+
eventsDropped: number;
|
|
28
|
+
currentConcurrent: number;
|
|
29
|
+
maxConcurrentReached: number;
|
|
30
|
+
averageBatchSize: number;
|
|
31
|
+
totalBatchesProcessed: number;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Manages event queue with backpressure and batch processing
|
|
35
|
+
*
|
|
36
|
+
* Provides reliable event queuing with overflow protection. Events are processed
|
|
37
|
+
* in batches to improve efficiency while maintaining concurrency limits.
|
|
38
|
+
*
|
|
39
|
+
* @internal
|
|
40
|
+
*/
|
|
41
|
+
export declare class SwapEventQueue {
|
|
42
|
+
private readonly queue;
|
|
43
|
+
private readonly config;
|
|
44
|
+
private readonly metrics;
|
|
45
|
+
private readonly logger;
|
|
46
|
+
private isShuttingDown;
|
|
47
|
+
private currentConcurrency;
|
|
48
|
+
private maxConcurrencyReached;
|
|
49
|
+
private eventsDropped;
|
|
50
|
+
private totalBatchesProcessed;
|
|
51
|
+
private totalBatchSize;
|
|
52
|
+
private eventsProcessedCount;
|
|
53
|
+
/** Processor function - called for each event */
|
|
54
|
+
private processor;
|
|
55
|
+
/** Processing loop control */
|
|
56
|
+
private processingScheduled;
|
|
57
|
+
/** Cross-platform scheduler */
|
|
58
|
+
private scheduleProcessing;
|
|
59
|
+
constructor(config: Required<SwapMonitorConfig>, metrics: MonitoringMetrics, logger?: Logger);
|
|
60
|
+
/**
|
|
61
|
+
* Set the event processor function
|
|
62
|
+
*
|
|
63
|
+
* @param processor - Function to process each event
|
|
64
|
+
*/
|
|
65
|
+
setProcessor(processor: (event: SwapEventData) => Promise<void>): void;
|
|
66
|
+
/**
|
|
67
|
+
* Enqueue a swap event for processing
|
|
68
|
+
*
|
|
69
|
+
* Returns false if queue is full (backpressure), indicating event was dropped.
|
|
70
|
+
*
|
|
71
|
+
* @param event - Swap event to queue
|
|
72
|
+
* @returns True if enqueued, false if dropped due to overflow
|
|
73
|
+
*/
|
|
74
|
+
enqueue(event: SwapEventData): boolean;
|
|
75
|
+
/**
|
|
76
|
+
* Get current queue size
|
|
77
|
+
*
|
|
78
|
+
* @returns Number of events waiting to be processed
|
|
79
|
+
*/
|
|
80
|
+
getQueueSize(): number;
|
|
81
|
+
/**
|
|
82
|
+
* Get queue statistics
|
|
83
|
+
*
|
|
84
|
+
* @returns Queue stats with metrics
|
|
85
|
+
*/
|
|
86
|
+
getStats(): QueueStats;
|
|
87
|
+
/**
|
|
88
|
+
* Wait for queue to be empty
|
|
89
|
+
*
|
|
90
|
+
* @param timeoutMs - Maximum time to wait (default: no timeout)
|
|
91
|
+
* @returns Promise that resolves when queue is empty or timeout
|
|
92
|
+
*/
|
|
93
|
+
waitForEmpty(timeoutMs?: number): Promise<void>;
|
|
94
|
+
/**
|
|
95
|
+
* Shutdown the queue gracefully
|
|
96
|
+
*
|
|
97
|
+
* Stops accepting new events and waits for processing to complete.
|
|
98
|
+
*
|
|
99
|
+
* @param timeoutMs - Maximum time to wait for processing to complete (default: 30s)
|
|
100
|
+
*/
|
|
101
|
+
shutdown(timeoutMs?: number): Promise<void>;
|
|
102
|
+
/**
|
|
103
|
+
* Clear the queue without processing
|
|
104
|
+
*
|
|
105
|
+
* Use with caution - discards all pending events.
|
|
106
|
+
*/
|
|
107
|
+
clear(): void;
|
|
108
|
+
/**
|
|
109
|
+
* Process next batch of events
|
|
110
|
+
*
|
|
111
|
+
* Respects concurrency limits and batch size configuration.
|
|
112
|
+
*
|
|
113
|
+
* @internal
|
|
114
|
+
*/
|
|
115
|
+
private processNextBatch;
|
|
116
|
+
/**
|
|
117
|
+
* Process a single event
|
|
118
|
+
*
|
|
119
|
+
* @internal
|
|
120
|
+
*/
|
|
121
|
+
private processEvent;
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=SwapEventQueue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SwapEventQueue.d.ts","sourceRoot":"","sources":["../../../src/services/SwapEventQueue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAClF,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAE/D;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,gBAAgB,EAAE,MAAM,CAAC;IACzB,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED;;;;;;;GAOG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAuB;IAC7C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA8B;IACrD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;IAC5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAEhC,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,kBAAkB,CAAK;IAC/B,OAAO,CAAC,qBAAqB,CAAK;IAClC,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,qBAAqB,CAAK;IAClC,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,oBAAoB,CAAK;IAEjC,iDAAiD;IACjD,OAAO,CAAC,SAAS,CAA0D;IAE3E,8BAA8B;IAC9B,OAAO,CAAC,mBAAmB,CAAS;IAEpC,+BAA+B;IAC/B,OAAO,CAAC,kBAAkB,CAMxB;gBAGA,MAAM,EAAE,QAAQ,CAAC,iBAAiB,CAAC,EACnC,OAAO,EAAE,iBAAiB,EAC1B,MAAM,CAAC,EAAE,MAAM;IAWjB;;;;OAIG;IACH,YAAY,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAItE;;;;;;;OAOG;IACH,OAAO,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO;IAgCtC;;;;OAIG;IACH,YAAY,IAAI,MAAM;IAItB;;;;OAIG;IACH,QAAQ,IAAI,UAAU;IAYtB;;;;;OAKG;IACG,YAAY,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBrD;;;;;;OAMG;IACG,QAAQ,CAAC,SAAS,GAAE,MAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBxD;;;;OAIG;IACH,KAAK,IAAI,IAAI;IAQb;;;;;;OAMG;YACW,gBAAgB;IAoE9B;;;;OAIG;YACW,YAAY;CAiB3B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TokenClassKeyService.d.ts","sourceRoot":"","sources":["../../../src/services/TokenClassKeyService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAU3C;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,UAAU;gBACtC,SAAS,GAAE,OAAe;IAItC;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,2BAA2B,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE;IAwC3D;;;;;;;OAOG;IACH,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa;IAgBvD;;;;OAIG;IACH,kBAAkB,IAAI,aAAa;IAcnC;;;;;;;;;;;;;OAaG;IACH,2BAA2B,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IA0BzD;;;;;OAKG;IACH,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IA4CnD;;;;;;;;OAQG;IACH,2BAA2B,CACzB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,GACpB,MAAM;IAIT;;;;;OAKG;IACH,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG;QAC3C,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,aAAa,EAAE,MAAM,CAAC;KACvB;CAcF"}
|