@gala-chain/launchpad-sdk 5.0.3 → 5.0.4-beta.0
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/EXAMPLES.md +141 -7
- package/README.md +68 -36
- package/dist/ai-docs.json +7357 -0
- package/dist/index.cjs.js +1 -1
- package/dist/index.d.ts +70 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/index.js +1 -1
- package/dist/src/LaunchpadSDK.d.ts +3288 -214
- package/dist/src/LaunchpadSDK.d.ts.map +1 -1
- package/dist/src/api/LaunchpadAPI.d.ts +21 -41
- package/dist/src/api/LaunchpadAPI.d.ts.map +1 -1
- package/dist/src/api/dto/BurnTokensDto.d.ts.map +1 -1
- package/dist/src/api/dto/LockTokenDto.d.ts.map +1 -1
- package/dist/src/api/dto/TransferTokenDto.d.ts.map +1 -1
- package/dist/src/api/dto/UnlockTokenDto.d.ts.map +1 -1
- package/dist/src/auth/JwtAuth.d.ts +145 -0
- package/dist/src/auth/JwtAuth.d.ts.map +1 -0
- package/dist/src/auth/SessionAuthService.d.ts +146 -0
- package/dist/src/auth/SessionAuthService.d.ts.map +1 -0
- package/dist/src/auth/SignatureAuth.d.ts.map +1 -1
- package/dist/src/bridge/BridgeService.d.ts.map +1 -1
- package/dist/src/bridge/GalaConnectClient.d.ts.map +1 -1
- package/dist/src/bridge/constants/tokens.d.ts +4 -3
- package/dist/src/bridge/constants/tokens.d.ts.map +1 -1
- package/dist/src/bridge/index.d.ts +1 -0
- package/dist/src/bridge/index.d.ts.map +1 -1
- package/dist/src/bridge/strategies/BridgeStrategy.d.ts.map +1 -1
- package/dist/src/bridge/strategies/EthereumBridgeStrategy.d.ts +1 -38
- package/dist/src/bridge/strategies/EthereumBridgeStrategy.d.ts.map +1 -1
- package/dist/src/bridge/strategies/SolanaBridgeStrategy.d.ts +1 -21
- package/dist/src/bridge/strategies/SolanaBridgeStrategy.d.ts.map +1 -1
- package/dist/src/bridge/types/bridge.dto.d.ts +15 -2
- package/dist/src/bridge/types/bridge.dto.d.ts.map +1 -1
- package/dist/src/bridge/utils/RateLimiter.d.ts +1 -1
- package/dist/src/bridge/utils/RateLimiter.d.ts.map +1 -1
- package/dist/src/bridge/utils/address-formatter.d.ts +25 -0
- package/dist/src/bridge/utils/address-formatter.d.ts.map +1 -0
- package/dist/src/bridge/utils/addressValidation.d.ts +200 -0
- package/dist/src/bridge/utils/addressValidation.d.ts.map +1 -0
- package/dist/src/bridge/utils/balanceHelpers.d.ts +215 -0
- package/dist/src/bridge/utils/balanceHelpers.d.ts.map +1 -0
- package/dist/src/bridge/utils/bridgeErrors.d.ts +98 -0
- package/dist/src/bridge/utils/bridgeErrors.d.ts.map +1 -0
- package/dist/src/bridge/utils/bridgeOutHelpers.d.ts +68 -0
- package/dist/src/bridge/utils/bridgeOutHelpers.d.ts.map +1 -0
- package/dist/src/bridge/utils/bridgePayload.d.ts +107 -0
- package/dist/src/bridge/utils/bridgePayload.d.ts.map +1 -0
- package/dist/src/bridge/utils/bridgeStatusParser.d.ts +75 -0
- package/dist/src/bridge/utils/bridgeStatusParser.d.ts.map +1 -0
- package/dist/src/bridge/utils/eip712Helpers.d.ts +66 -0
- package/dist/src/bridge/utils/eip712Helpers.d.ts.map +1 -0
- package/dist/src/bridge/utils/index.d.ts +9 -0
- package/dist/src/bridge/utils/index.d.ts.map +1 -1
- package/dist/src/bridge/utils/retry.d.ts +16 -0
- package/dist/src/bridge/utils/retry.d.ts.map +1 -1
- package/dist/src/bridge/utils/strategyDelegation.d.ts +69 -0
- package/dist/src/bridge/utils/strategyDelegation.d.ts.map +1 -0
- package/dist/src/bridge/utils/tokenIdUtils.d.ts +7 -0
- package/dist/src/bridge/utils/tokenIdUtils.d.ts.map +1 -1
- package/dist/src/bridge/utils/tokenMath.d.ts.map +1 -1
- package/dist/src/bridge/utils/tokenMetadataResolver.d.ts +97 -0
- package/dist/src/bridge/utils/tokenMetadataResolver.d.ts.map +1 -0
- package/dist/src/constants/endpoints.d.ts +453 -0
- package/dist/src/constants/endpoints.d.ts.map +1 -1
- package/dist/src/constants/error-messages.d.ts +1 -1
- package/dist/src/constants/error-messages.d.ts.map +1 -1
- package/dist/src/constants/jwt.d.ts +41 -0
- package/dist/src/constants/jwt.d.ts.map +1 -0
- package/dist/src/constants/sdk-defaults.d.ts +37 -0
- package/dist/src/constants/sdk-defaults.d.ts.map +1 -0
- package/dist/src/constants/version.generated.d.ts +1 -1
- package/dist/src/constants/version.generated.d.ts.map +1 -1
- package/dist/src/helpers/sdk.d.ts.map +1 -1
- package/dist/src/helpers/wallet.d.ts +4 -3
- package/dist/src/helpers/wallet.d.ts.map +1 -1
- package/dist/src/index.d.ts +70 -11
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/schemas/files.d.ts +2 -2
- package/dist/src/schemas/launchpad.d.ts +40 -8
- package/dist/src/schemas/launchpad.d.ts.map +1 -1
- package/dist/src/schemas/pagination.d.ts +7 -7
- package/dist/src/schemas/primitives.d.ts.map +1 -1
- package/dist/src/schemas/trade.d.ts +6 -6
- package/dist/src/schemas/user.d.ts +4 -4
- package/dist/src/schemas/validators.d.ts +15 -7
- package/dist/src/schemas/validators.d.ts.map +1 -1
- package/dist/src/services/AbstractCacheService.d.ts +227 -0
- package/dist/src/services/AbstractCacheService.d.ts.map +1 -0
- package/dist/src/services/AbstractTokenFetchService.d.ts +150 -0
- package/dist/src/services/AbstractTokenFetchService.d.ts.map +1 -0
- package/dist/src/services/ApiKeyService.d.ts +205 -0
- package/dist/src/services/ApiKeyService.d.ts.map +1 -0
- package/dist/src/services/BanService.d.ts +195 -0
- package/dist/src/services/BanService.d.ts.map +1 -0
- package/dist/src/services/BaseService.d.ts +50 -3
- package/dist/src/services/BaseService.d.ts.map +1 -1
- package/dist/src/services/BatchedCacheService.d.ts +132 -0
- package/dist/src/services/BatchedCacheService.d.ts.map +1 -0
- package/dist/src/services/BridgeableTokenCache.d.ts +32 -98
- package/dist/src/services/BridgeableTokenCache.d.ts.map +1 -1
- package/dist/src/services/BridgeableTokenService.d.ts +18 -13
- package/dist/src/services/BridgeableTokenService.d.ts.map +1 -1
- package/dist/src/services/BundleService.d.ts.map +1 -1
- package/dist/src/services/BundlerClientFactory.d.ts +32 -0
- package/dist/src/services/BundlerClientFactory.d.ts.map +1 -0
- package/dist/src/services/ChatMessagesService.d.ts +152 -0
- package/dist/src/services/ChatMessagesService.d.ts.map +1 -0
- package/dist/src/services/CommentService.d.ts +119 -0
- package/dist/src/services/CommentService.d.ts.map +1 -0
- package/dist/src/services/CommentsService.d.ts +155 -0
- package/dist/src/services/CommentsService.d.ts.map +1 -0
- package/dist/src/services/ContentFlagService.d.ts +212 -0
- package/dist/src/services/ContentFlagService.d.ts.map +1 -0
- package/dist/src/services/ContentReactionService.d.ts +175 -0
- package/dist/src/services/ContentReactionService.d.ts.map +1 -0
- package/dist/src/services/DexBackendClient.d.ts.map +1 -1
- package/dist/src/services/DexPoolService.d.ts +3 -3
- package/dist/src/services/DexPoolService.d.ts.map +1 -1
- package/dist/src/services/DexQuoteService.d.ts.map +1 -1
- package/dist/src/services/DexService.d.ts +2 -5
- package/dist/src/services/DexService.d.ts.map +1 -1
- package/dist/src/services/GSwapAssetService.d.ts +80 -0
- package/dist/src/services/GSwapAssetService.d.ts.map +1 -0
- package/dist/src/services/GSwapLiquidityMutationService.d.ts +140 -0
- package/dist/src/services/GSwapLiquidityMutationService.d.ts.map +1 -0
- package/dist/src/services/GSwapLiquidityQueryService.d.ts +87 -0
- package/dist/src/services/GSwapLiquidityQueryService.d.ts.map +1 -0
- package/dist/src/services/GSwapPoolCalculationService.d.ts +200 -0
- package/dist/src/services/GSwapPoolCalculationService.d.ts.map +1 -0
- package/dist/src/services/GSwapPoolQueryService.d.ts +116 -0
- package/dist/src/services/GSwapPoolQueryService.d.ts.map +1 -0
- package/dist/src/services/GSwapService.d.ts +14 -0
- package/dist/src/services/GSwapService.d.ts.map +1 -1
- package/dist/src/services/GSwapSwapService.d.ts +68 -0
- package/dist/src/services/GSwapSwapService.d.ts.map +1 -0
- package/dist/src/services/GalaChainBalanceService.d.ts +155 -0
- package/dist/src/services/GalaChainBalanceService.d.ts.map +1 -0
- package/dist/src/services/GalaChainGatewayClient.d.ts +32 -1
- package/dist/src/services/GalaChainGatewayClient.d.ts.map +1 -1
- package/dist/src/services/GalaChainLockService.d.ts +144 -0
- package/dist/src/services/GalaChainLockService.d.ts.map +1 -0
- package/dist/src/services/GalaChainService.d.ts +23 -106
- package/dist/src/services/GalaChainService.d.ts.map +1 -1
- package/dist/src/services/GalaChainTokenService.d.ts +108 -0
- package/dist/src/services/GalaChainTokenService.d.ts.map +1 -0
- package/dist/src/services/GalaChainTransferService.d.ts +205 -0
- package/dist/src/services/GalaChainTransferService.d.ts.map +1 -0
- package/dist/src/services/ImageService.d.ts +24 -8
- package/dist/src/services/ImageService.d.ts.map +1 -1
- package/dist/src/services/LaunchpadService.d.ts +77 -5
- package/dist/src/services/LaunchpadService.d.ts.map +1 -1
- package/dist/src/services/ModeratorService.d.ts +269 -0
- package/dist/src/services/ModeratorService.d.ts.map +1 -0
- package/dist/src/services/MultiPoolStateManager.d.ts +4 -6
- package/dist/src/services/MultiPoolStateManager.d.ts.map +1 -1
- package/dist/src/services/NetworkKeyedCacheService.d.ts +185 -0
- package/dist/src/services/NetworkKeyedCacheService.d.ts.map +1 -0
- package/dist/src/services/OverseerService.d.ts +322 -0
- package/dist/src/services/OverseerService.d.ts.map +1 -0
- package/dist/src/services/PoolCacheManager.d.ts +2 -2
- package/dist/src/services/PoolCacheManager.d.ts.map +1 -1
- package/dist/src/services/PoolService.d.ts +61 -7
- package/dist/src/services/PoolService.d.ts.map +1 -1
- package/dist/src/services/PoolStateManager.d.ts +2 -2
- package/dist/src/services/PoolStateManager.d.ts.map +1 -1
- package/dist/src/services/PriceHistoryService.d.ts.map +1 -1
- package/dist/src/services/SignatureService.d.ts.map +1 -1
- package/dist/src/services/StreamChatService.d.ts +378 -0
- package/dist/src/services/StreamChatService.d.ts.map +1 -0
- package/dist/src/services/StreamTokenServiceBase.d.ts +371 -0
- package/dist/src/services/StreamTokenServiceBase.d.ts.map +1 -0
- package/dist/src/services/StreamWebSocketService.d.ts +268 -0
- package/dist/src/services/StreamWebSocketService.d.ts.map +1 -0
- package/dist/src/services/StreamingEventService.d.ts +431 -0
- package/dist/src/services/StreamingEventService.d.ts.map +1 -0
- package/dist/src/services/StreamingService.d.ts +547 -0
- package/dist/src/services/StreamingService.d.ts.map +1 -0
- package/dist/src/services/SwapEventQueue.d.ts +2 -2
- package/dist/src/services/SwapEventQueue.d.ts.map +1 -1
- package/dist/src/services/TokenBanService.d.ts +214 -0
- package/dist/src/services/TokenBanService.d.ts.map +1 -0
- package/dist/src/services/TokenClassKeyService.d.ts.map +1 -1
- package/dist/src/services/TokenMetadataCache.d.ts +36 -27
- package/dist/src/services/TokenMetadataCache.d.ts.map +1 -1
- package/dist/src/services/TokenMetadataService.d.ts +24 -4
- package/dist/src/services/TokenMetadataService.d.ts.map +1 -1
- package/dist/src/services/TokenResolverService.d.ts.map +1 -1
- package/dist/src/services/TradeService.d.ts +73 -0
- package/dist/src/services/TradeService.d.ts.map +1 -1
- package/dist/src/services/UserService.d.ts +56 -3
- package/dist/src/services/UserService.d.ts.map +1 -1
- package/dist/src/services/WebSocketService.d.ts +3 -3
- package/dist/src/services/WebSocketService.d.ts.map +1 -1
- package/dist/src/services/WrapService.d.ts +18 -5
- package/dist/src/services/WrapService.d.ts.map +1 -1
- package/dist/src/services/WrappableTokenCache.d.ts +8 -36
- package/dist/src/services/WrappableTokenCache.d.ts.map +1 -1
- package/dist/src/services/WrappableTokenService.d.ts +18 -12
- package/dist/src/services/WrappableTokenService.d.ts.map +1 -1
- package/dist/src/services/shared/cache-helpers.d.ts +188 -0
- package/dist/src/services/shared/cache-helpers.d.ts.map +1 -0
- package/dist/src/services/shared/http-helpers.d.ts +146 -0
- package/dist/src/services/shared/http-helpers.d.ts.map +1 -0
- package/dist/src/services/shared/pagination-helpers.d.ts +157 -0
- package/dist/src/services/shared/pagination-helpers.d.ts.map +1 -0
- package/dist/src/services/shared/service-validators.d.ts +137 -0
- package/dist/src/services/shared/service-validators.d.ts.map +1 -0
- package/dist/src/services/shared/websocket-helpers.d.ts +158 -0
- package/dist/src/services/shared/websocket-helpers.d.ts.map +1 -0
- package/dist/src/test-constants.d.ts +29 -0
- package/dist/src/test-constants.d.ts.map +1 -0
- package/dist/src/types/api-key.dto.d.ts +300 -0
- package/dist/src/types/api-key.dto.d.ts.map +1 -0
- package/dist/src/types/backend-responses.d.ts +12 -0
- package/dist/src/types/backend-responses.d.ts.map +1 -1
- package/dist/src/types/ban.dto.d.ts +413 -0
- package/dist/src/types/ban.dto.d.ts.map +1 -0
- package/dist/src/types/burn.dto.d.ts +21 -0
- package/dist/src/types/burn.dto.d.ts.map +1 -1
- package/dist/src/types/chat-messages.dto.d.ts +193 -0
- package/dist/src/types/chat-messages.dto.d.ts.map +1 -0
- package/dist/src/types/comment.dto.d.ts +180 -0
- package/dist/src/types/comment.dto.d.ts.map +1 -0
- package/dist/src/types/comments.dto.d.ts +210 -0
- package/dist/src/types/comments.dto.d.ts.map +1 -0
- package/dist/src/types/common.d.ts +369 -0
- package/dist/src/types/common.d.ts.map +1 -1
- package/dist/src/types/constraints.d.ts +374 -0
- package/dist/src/types/constraints.d.ts.map +1 -0
- package/dist/src/types/content-flag.dto.d.ts +310 -0
- package/dist/src/types/content-flag.dto.d.ts.map +1 -0
- package/dist/src/types/content-reactions.dto.d.ts +132 -0
- package/dist/src/types/content-reactions.dto.d.ts.map +1 -0
- package/dist/src/types/dex-pool.dto.d.ts +13 -37
- package/dist/src/types/dex-pool.dto.d.ts.map +1 -1
- package/dist/src/types/dto.d.ts +8 -0
- package/dist/src/types/dto.d.ts.map +1 -1
- package/dist/src/types/galachain-api.types.d.ts +30 -0
- package/dist/src/types/galachain-api.types.d.ts.map +1 -1
- package/dist/src/types/gswap-responses.types.d.ts.map +1 -1
- package/dist/src/types/launchpad.dto.d.ts +234 -131
- package/dist/src/types/launchpad.dto.d.ts.map +1 -1
- package/dist/src/types/launchpad.validation.d.ts.map +1 -1
- package/dist/src/types/lock.dto.d.ts +20 -35
- package/dist/src/types/lock.dto.d.ts.map +1 -1
- package/dist/src/types/moderator.dto.d.ts +581 -0
- package/dist/src/types/moderator.dto.d.ts.map +1 -0
- package/dist/src/types/options.dto.d.ts +25 -115
- package/dist/src/types/options.dto.d.ts.map +1 -1
- package/dist/src/types/overseer.dto.d.ts +420 -0
- package/dist/src/types/overseer.dto.d.ts.map +1 -0
- package/dist/src/types/pool.dto.d.ts +106 -0
- package/dist/src/types/pool.dto.d.ts.map +1 -0
- package/dist/src/types/result.types.d.ts +3 -2
- package/dist/src/types/result.types.d.ts.map +1 -1
- package/dist/src/types/session-auth.dto.d.ts +91 -0
- package/dist/src/types/session-auth.dto.d.ts.map +1 -0
- package/dist/src/types/stream-chat.dto.d.ts +815 -0
- package/dist/src/types/stream-chat.dto.d.ts.map +1 -0
- package/dist/src/types/streaming-events.dto.d.ts +586 -0
- package/dist/src/types/streaming-events.dto.d.ts.map +1 -0
- package/dist/src/types/streaming.dto.d.ts +1141 -0
- package/dist/src/types/streaming.dto.d.ts.map +1 -0
- package/dist/src/types/token-ban.dto.d.ts +195 -0
- package/dist/src/types/token-ban.dto.d.ts.map +1 -0
- package/dist/src/types/trade.dto.d.ts +21 -61
- package/dist/src/types/trade.dto.d.ts.map +1 -1
- package/dist/src/types/trades-query.dto.d.ts +127 -0
- package/dist/src/types/trades-query.dto.d.ts.map +1 -0
- package/dist/src/types/transfer.dto.d.ts +20 -15
- package/dist/src/types/transfer.dto.d.ts.map +1 -1
- package/dist/src/types/user.dto.d.ts +185 -73
- package/dist/src/types/user.dto.d.ts.map +1 -1
- package/dist/src/types/wrappable-token.dto.d.ts +6 -2
- package/dist/src/types/wrappable-token.dto.d.ts.map +1 -1
- package/dist/src/utils/LiquidityEventExtractor.d.ts.map +1 -1
- package/dist/src/utils/Logger.d.ts.map +1 -1
- package/dist/src/utils/MonitoringMetrics.d.ts.map +1 -1
- package/dist/src/utils/PoolKeyNormalizer.d.ts.map +1 -1
- package/dist/src/utils/ReconnectionManager.d.ts +142 -0
- package/dist/src/utils/ReconnectionManager.d.ts.map +1 -0
- package/dist/src/utils/SignatureHelper.d.ts +9 -0
- package/dist/src/utils/SignatureHelper.d.ts.map +1 -1
- package/dist/src/utils/SwapEventExtractor.d.ts.map +1 -1
- package/dist/src/utils/adapters.d.ts.map +1 -1
- package/dist/src/utils/address-formatter.d.ts +317 -0
- package/dist/src/utils/address-formatter.d.ts.map +1 -0
- package/dist/src/utils/agent-config.d.ts.map +1 -1
- package/dist/src/utils/amount-validator.d.ts +268 -0
- package/dist/src/utils/amount-validator.d.ts.map +1 -0
- package/dist/src/utils/api-patterns.d.ts +347 -0
- package/dist/src/utils/api-patterns.d.ts.map +1 -0
- package/dist/src/utils/array-helpers.d.ts +115 -0
- package/dist/src/utils/array-helpers.d.ts.map +1 -0
- package/dist/src/utils/async-patterns.d.ts +272 -0
- package/dist/src/utils/async-patterns.d.ts.map +1 -0
- package/dist/src/utils/auto-pagination.d.ts +195 -2
- package/dist/src/utils/auto-pagination.d.ts.map +1 -1
- package/dist/src/utils/bignumber-helpers.d.ts +119 -13
- package/dist/src/utils/bignumber-helpers.d.ts.map +1 -1
- package/dist/src/utils/bignumber-pool-cache.d.ts.map +1 -1
- package/dist/src/utils/bondingCurveCalculations.d.ts.map +1 -1
- package/dist/src/utils/cacheWarmingHelpers.d.ts +2 -2
- package/dist/src/utils/cacheWarmingHelpers.d.ts.map +1 -1
- package/dist/src/utils/data-transform-patterns.d.ts +393 -0
- package/dist/src/utils/data-transform-patterns.d.ts.map +1 -0
- package/dist/src/utils/date-utils.d.ts +166 -0
- package/dist/src/utils/date-utils.d.ts.map +1 -1
- package/dist/src/utils/delimiter-parser.d.ts +139 -0
- package/dist/src/utils/delimiter-parser.d.ts.map +1 -0
- package/dist/src/utils/error-factories.d.ts +346 -1
- package/dist/src/utils/error-factories.d.ts.map +1 -1
- package/dist/src/utils/error-handling-patterns.d.ts +390 -0
- package/dist/src/utils/error-handling-patterns.d.ts.map +1 -0
- package/dist/src/utils/error-patterns.d.ts +360 -0
- package/dist/src/utils/error-patterns.d.ts.map +1 -0
- package/dist/src/utils/error-utils.d.ts +250 -0
- package/dist/src/utils/error-utils.d.ts.map +1 -1
- package/dist/src/utils/error-wrapper.d.ts +208 -0
- package/dist/src/utils/error-wrapper.d.ts.map +1 -0
- package/dist/src/utils/errors.d.ts +70 -0
- package/dist/src/utils/errors.d.ts.map +1 -1
- package/dist/src/utils/http-factory.d.ts +36 -0
- package/dist/src/utils/http-factory.d.ts.map +1 -0
- package/dist/src/utils/http.d.ts.map +1 -1
- package/dist/src/utils/load-env.d.ts.map +1 -1
- package/dist/src/utils/multipart.d.ts.map +1 -1
- package/dist/src/utils/numeric-patterns.d.ts +289 -0
- package/dist/src/utils/numeric-patterns.d.ts.map +1 -0
- package/dist/src/utils/numeric-wrappers.d.ts +146 -0
- package/dist/src/utils/numeric-wrappers.d.ts.map +1 -0
- package/dist/src/utils/object-extractors.d.ts +115 -0
- package/dist/src/utils/object-extractors.d.ts.map +1 -0
- package/dist/src/utils/object-patterns.d.ts +81 -0
- package/dist/src/utils/object-patterns.d.ts.map +1 -0
- package/dist/src/utils/pagination-helpers.d.ts +230 -0
- package/dist/src/utils/pagination-helpers.d.ts.map +1 -0
- package/dist/src/utils/pool-pair-parser.d.ts +3 -1
- package/dist/src/utils/pool-pair-parser.d.ts.map +1 -1
- package/dist/src/utils/pool-state-validator.d.ts.map +1 -1
- package/dist/src/utils/position-filters.d.ts +1 -2
- package/dist/src/utils/position-filters.d.ts.map +1 -1
- package/dist/src/utils/query-params.d.ts +0 -16
- package/dist/src/utils/query-params.d.ts.map +1 -1
- package/dist/src/utils/response-handlers.d.ts +149 -20
- package/dist/src/utils/response-handlers.d.ts.map +1 -1
- package/dist/src/utils/response-helpers.d.ts +28 -0
- package/dist/src/utils/response-helpers.d.ts.map +1 -0
- package/dist/src/utils/response-normalizers.d.ts +27 -49
- package/dist/src/utils/response-normalizers.d.ts.map +1 -1
- package/dist/src/utils/safe-parsers.d.ts +487 -0
- package/dist/src/utils/safe-parsers.d.ts.map +1 -0
- package/dist/src/utils/service-validators.d.ts +268 -0
- package/dist/src/utils/service-validators.d.ts.map +1 -0
- package/dist/src/utils/slippage-utils.d.ts.map +1 -1
- package/dist/src/utils/string-patterns.d.ts +404 -0
- package/dist/src/utils/string-patterns.d.ts.map +1 -0
- package/dist/src/utils/string-transforms.d.ts +89 -0
- package/dist/src/utils/string-transforms.d.ts.map +1 -0
- package/dist/src/utils/string-utils.d.ts +108 -0
- package/dist/src/utils/string-utils.d.ts.map +1 -0
- package/dist/src/utils/swap-delta-calculator.d.ts.map +1 -1
- package/dist/src/utils/tick-crossing-handler.d.ts.map +1 -1
- package/dist/src/utils/token-format-converter.d.ts +22 -8
- package/dist/src/utils/token-format-converter.d.ts.map +1 -1
- package/dist/src/utils/token-parser.d.ts +2 -2
- package/dist/src/utils/token-parser.d.ts.map +1 -1
- package/dist/src/utils/token-stringification.d.ts +168 -0
- package/dist/src/utils/token-stringification.d.ts.map +1 -0
- package/dist/src/utils/tokenNameNormalizer.d.ts +96 -0
- package/dist/src/utils/tokenNameNormalizer.d.ts.map +1 -0
- package/dist/src/utils/tokenNormalizer.d.ts +8 -45
- package/dist/src/utils/tokenNormalizer.d.ts.map +1 -1
- package/dist/src/utils/transfer-validation.d.ts +1 -1
- package/dist/src/utils/transfer-validation.d.ts.map +1 -1
- package/dist/src/utils/type-guard-factory.d.ts +260 -0
- package/dist/src/utils/type-guard-factory.d.ts.map +1 -0
- package/dist/src/utils/unique-key-generator.d.ts +148 -0
- package/dist/src/utils/unique-key-generator.d.ts.map +1 -0
- package/dist/src/utils/validation-helpers.d.ts +906 -183
- package/dist/src/utils/validation-helpers.d.ts.map +1 -1
- package/dist/src/utils/validation-patterns.d.ts +745 -0
- package/dist/src/utils/validation-patterns.d.ts.map +1 -0
- package/dist/src/utils/validation.d.ts +2 -30
- package/dist/src/utils/validation.d.ts.map +1 -1
- package/dist/src/utils/wallet.d.ts +12 -1
- package/dist/src/utils/wallet.d.ts.map +1 -1
- package/dist/src/utils/websocket-patterns.d.ts +681 -0
- package/dist/src/utils/websocket-patterns.d.ts.map +1 -0
- package/dist/src/utils/websocket-validators.d.ts.map +1 -1
- package/package.json +86 -19
- package/dist/src/bridge/strategies/index.d.ts +0 -9
- package/dist/src/bridge/strategies/index.d.ts.map +0 -1
- package/dist/src/constants/counts.d.ts +0 -66
- package/dist/src/constants/counts.d.ts.map +0 -1
- package/dist/src/services/WebSocketManager.d.ts +0 -99
- package/dist/src/services/WebSocketManager.d.ts.map +0 -1
- package/dist/src/types/eip712-types.d.ts +0 -140
- package/dist/src/types/eip712-types.d.ts.map +0 -1
- package/dist/src/types/pool-state-manager-config.dto.d.ts +0 -103
- package/dist/src/types/pool-state-manager-config.dto.d.ts.map +0 -1
- package/dist/src/utils/number-utils.d.ts +0 -94
- package/dist/src/utils/number-utils.d.ts.map +0 -1
- package/dist/src/utils/precision-math.d.ts +0 -37
- package/dist/src/utils/precision-math.d.ts.map +0 -1
|
@@ -0,0 +1,347 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* API/HTTP Pattern Utilities
|
|
3
|
+
*
|
|
4
|
+
* Consolidated HTTP and API-related patterns used across the SDK.
|
|
5
|
+
* Eliminates duplicate code for:
|
|
6
|
+
* - Concurrent batch requests with concurrency limiting
|
|
7
|
+
* - Pagination metadata extraction
|
|
8
|
+
* - Query parameter building with validation
|
|
9
|
+
* - Automatic HTTP request retries with exponential backoff
|
|
10
|
+
* - HTTP error response parsing
|
|
11
|
+
* - Multi-source API aggregation
|
|
12
|
+
*
|
|
13
|
+
* @category Utilities
|
|
14
|
+
* @since 6.5.0
|
|
15
|
+
*/
|
|
16
|
+
import { Logger } from './Logger';
|
|
17
|
+
/**
|
|
18
|
+
* Pagination metadata extracted from API responses
|
|
19
|
+
* Provides consistent structure across different API response formats
|
|
20
|
+
*/
|
|
21
|
+
export interface PaginationMetadata {
|
|
22
|
+
/** Current page number (default: 1) */
|
|
23
|
+
page: number;
|
|
24
|
+
/** Items per page (default: 20) */
|
|
25
|
+
pageSize: number;
|
|
26
|
+
/** Total count of all items across all pages (default: -1 when unknown) */
|
|
27
|
+
totalCount: number;
|
|
28
|
+
/** Whether more pages are available (default: false) */
|
|
29
|
+
hasMore: boolean;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* HTTP error response with standardized structure
|
|
33
|
+
* Normalizes errors from different HTTP libraries and APIs
|
|
34
|
+
*/
|
|
35
|
+
export interface ParsedHttpError {
|
|
36
|
+
/** HTTP status code (default: 0 for non-HTTP errors) */
|
|
37
|
+
statusCode: number;
|
|
38
|
+
/** Error message (extracted from response or error) */
|
|
39
|
+
errorMessage: string;
|
|
40
|
+
/** Additional error data from response body (if available) */
|
|
41
|
+
errorData?: unknown;
|
|
42
|
+
/** Raw error object for debugging */
|
|
43
|
+
raw: unknown;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Build and execute multiple API requests with concurrency limit
|
|
47
|
+
*
|
|
48
|
+
* Maintains request order while respecting concurrency constraints.
|
|
49
|
+
* Useful for batch operations like fetching multiple token prices, pool data,
|
|
50
|
+
* or other resources that benefit from parallel requests but need rate limiting.
|
|
51
|
+
*
|
|
52
|
+
* @typeParam T - Type of data returned by the fetcher function
|
|
53
|
+
* @param urls - Array of URLs or identifiers to fetch
|
|
54
|
+
* @param batchSize - Maximum number of concurrent requests
|
|
55
|
+
* @param fetcher - Function to fetch data for each URL/identifier
|
|
56
|
+
* @param options - Additional options (logger, timeout)
|
|
57
|
+
* @returns Promise<T[]> Array of results in original order
|
|
58
|
+
*
|
|
59
|
+
* @example Fetch multiple token prices with concurrency limit
|
|
60
|
+
* ```typescript
|
|
61
|
+
* const tokenNames = ['anime', 'dragon', 'mysterybox'];
|
|
62
|
+
* const prices = await buildConcurrentBatchRequests(
|
|
63
|
+
* tokenNames,
|
|
64
|
+
* 3, // 3 concurrent requests max
|
|
65
|
+
* async (tokenName) => sdk.fetchTokenPrice(tokenName),
|
|
66
|
+
* { logger }
|
|
67
|
+
* );
|
|
68
|
+
* // Maintains original order: prices[0] = anime, prices[1] = dragon, etc.
|
|
69
|
+
* ```
|
|
70
|
+
*
|
|
71
|
+
* @example Fetch pool data with concurrency control
|
|
72
|
+
* ```typescript
|
|
73
|
+
* const poolIds = ['pool-1', 'pool-2', 'pool-3', 'pool-4', 'pool-5'];
|
|
74
|
+
* const pools = await buildConcurrentBatchRequests(
|
|
75
|
+
* poolIds,
|
|
76
|
+
* 2, // 2 concurrent requests max
|
|
77
|
+
* (poolId) => dexApi.getPoolInfo(poolId)
|
|
78
|
+
* );
|
|
79
|
+
* ```
|
|
80
|
+
*
|
|
81
|
+
* @since 6.5.0
|
|
82
|
+
*/
|
|
83
|
+
export declare function buildConcurrentBatchRequests<T>(urls: string[], batchSize: number, fetcher: (url: string) => Promise<T>, options?: {
|
|
84
|
+
logger?: Logger;
|
|
85
|
+
timeout?: number;
|
|
86
|
+
}): Promise<T[]>;
|
|
87
|
+
/**
|
|
88
|
+
* Extract pagination metadata from API response
|
|
89
|
+
*
|
|
90
|
+
* Safely extracts pagination info from various response formats.
|
|
91
|
+
* Provides sensible defaults when fields are missing.
|
|
92
|
+
* Handles both old and new pagination response structures.
|
|
93
|
+
*
|
|
94
|
+
* @param response - Raw API response (may be array, object, null, or undefined)
|
|
95
|
+
* @returns PaginationMetadata with page, pageSize, totalCount, and hasMore
|
|
96
|
+
*
|
|
97
|
+
* @example With standard response object
|
|
98
|
+
* ```typescript
|
|
99
|
+
* const metadata = extractPaginationMetadata({
|
|
100
|
+
* page: 2,
|
|
101
|
+
* pageSize: 20,
|
|
102
|
+
* totalCount: 100,
|
|
103
|
+
* hasMore: true
|
|
104
|
+
* });
|
|
105
|
+
* // Result: { page: 2, pageSize: 20, totalCount: 100, hasMore: true }
|
|
106
|
+
* ```
|
|
107
|
+
*
|
|
108
|
+
* @example With wrapped response
|
|
109
|
+
* ```typescript
|
|
110
|
+
* const metadata = extractPaginationMetadata({
|
|
111
|
+
* data: {
|
|
112
|
+
* items: [...],
|
|
113
|
+
* meta: { page: 3, limit: 20, totalItems: 250 }
|
|
114
|
+
* }
|
|
115
|
+
* });
|
|
116
|
+
* // Result: { page: 3, pageSize: 20, totalCount: 250, hasMore: true }
|
|
117
|
+
* ```
|
|
118
|
+
*
|
|
119
|
+
* @example With missing fields (uses defaults)
|
|
120
|
+
* ```typescript
|
|
121
|
+
* const metadata = extractPaginationMetadata({ items: [] });
|
|
122
|
+
* // Result: { page: 1, pageSize: 20, totalCount: -1, hasMore: false }
|
|
123
|
+
* ```
|
|
124
|
+
*
|
|
125
|
+
* @since 6.5.0
|
|
126
|
+
* @adoption_gap This pattern appears in 12+ locations with inline extraction (response.page ?? 1)
|
|
127
|
+
*/
|
|
128
|
+
export declare function extractPaginationMetadata(response: unknown): PaginationMetadata;
|
|
129
|
+
/**
|
|
130
|
+
* Build query parameter string with automatic encoding and null removal
|
|
131
|
+
*
|
|
132
|
+
* Safely constructs query strings from parameter objects.
|
|
133
|
+
* Automatically:
|
|
134
|
+
* - Skips null/undefined values
|
|
135
|
+
* - URL-encodes special characters
|
|
136
|
+
* - Converts non-string values to strings
|
|
137
|
+
* - Handles arrays and nested objects
|
|
138
|
+
*
|
|
139
|
+
* @param params - Record of query parameters (values can be any type)
|
|
140
|
+
* @returns Formatted query string "?key1=value1&key2=value2" or "" if no params
|
|
141
|
+
*
|
|
142
|
+
* @example Simple parameters
|
|
143
|
+
* ```typescript
|
|
144
|
+
* const query = buildQueryParametersWithValidation({
|
|
145
|
+
* page: 1,
|
|
146
|
+
* limit: 20,
|
|
147
|
+
* search: 'anime'
|
|
148
|
+
* });
|
|
149
|
+
* // Result: "?page=1&limit=20&search=anime"
|
|
150
|
+
* ```
|
|
151
|
+
*
|
|
152
|
+
* @example With special characters
|
|
153
|
+
* ```typescript
|
|
154
|
+
* const query = buildQueryParametersWithValidation({
|
|
155
|
+
* search: 'hello world',
|
|
156
|
+
* token: 'abc/def'
|
|
157
|
+
* });
|
|
158
|
+
* // Result: "?search=hello%20world&token=abc%2Fdef"
|
|
159
|
+
* ```
|
|
160
|
+
*
|
|
161
|
+
* @example With nullish values (automatically skipped)
|
|
162
|
+
* ```typescript
|
|
163
|
+
* const query = buildQueryParametersWithValidation({
|
|
164
|
+
* page: 1,
|
|
165
|
+
* search: undefined,
|
|
166
|
+
* token: null,
|
|
167
|
+
* limit: 20
|
|
168
|
+
* });
|
|
169
|
+
* // Result: "?page=1&limit=20" (search and token omitted)
|
|
170
|
+
* ```
|
|
171
|
+
*
|
|
172
|
+
* @example With arrays
|
|
173
|
+
* ```typescript
|
|
174
|
+
* const query = buildQueryParametersWithValidation({
|
|
175
|
+
* tags: ['anime', 'popular'],
|
|
176
|
+
* status: 'active'
|
|
177
|
+
* });
|
|
178
|
+
* // Result: "?tags=anime%2Cpopular&status=active" (comma-separated)
|
|
179
|
+
* ```
|
|
180
|
+
*
|
|
181
|
+
* @since 6.5.0
|
|
182
|
+
* @adoption_gap Manual query string construction appears in 8+ locations
|
|
183
|
+
*/
|
|
184
|
+
export declare function buildQueryParametersWithValidation(params: Record<string, any>): string;
|
|
185
|
+
/**
|
|
186
|
+
* HTTP request wrapper with automatic retry logic
|
|
187
|
+
*
|
|
188
|
+
* Wraps async functions with exponential backoff retry on specific HTTP status codes.
|
|
189
|
+
* Helps handle transient failures like rate limiting, timeouts, and temporary service issues.
|
|
190
|
+
*
|
|
191
|
+
* @typeParam T - Type of the promised value
|
|
192
|
+
* @param fn - Async function to execute with retries
|
|
193
|
+
* @param options - Retry configuration
|
|
194
|
+
* @param options.maxRetries - Maximum number of retry attempts (default: 3)
|
|
195
|
+
* @param options.backoffMs - Initial backoff delay in milliseconds (default: 100)
|
|
196
|
+
* @param options.retryableStatus - HTTP status codes to retry (default: [429, 503, 504])
|
|
197
|
+
* @returns Result of the function or final error after max retries
|
|
198
|
+
* @throws Error if all retries exhausted or error is not retryable
|
|
199
|
+
*
|
|
200
|
+
* @example Retry on rate limit (429)
|
|
201
|
+
* ```typescript
|
|
202
|
+
* const result = await retryableHttpRequest(
|
|
203
|
+
* () => sdk.fetchTokenPrice('anime'),
|
|
204
|
+
* { maxRetries: 3, backoffMs: 100, retryableStatus: [429, 503] }
|
|
205
|
+
* );
|
|
206
|
+
* ```
|
|
207
|
+
*
|
|
208
|
+
* @example With default retry options
|
|
209
|
+
* ```typescript
|
|
210
|
+
* const result = await retryableHttpRequest(
|
|
211
|
+
* () => http.get('/api/pool-data')
|
|
212
|
+
* );
|
|
213
|
+
* // Retries on 429, 503, 504 with default exponential backoff
|
|
214
|
+
* ```
|
|
215
|
+
*
|
|
216
|
+
* @example Fetch with custom retry behavior
|
|
217
|
+
* ```typescript
|
|
218
|
+
* try {
|
|
219
|
+
* const data = await retryableHttpRequest(
|
|
220
|
+
* () => fetch(url).then(r => r.json()),
|
|
221
|
+
* { maxRetries: 5, backoffMs: 200, retryableStatus: [429, 500, 502, 503, 504] }
|
|
222
|
+
* );
|
|
223
|
+
* } catch (error) {
|
|
224
|
+
* console.log('Failed after all retries:', error);
|
|
225
|
+
* }
|
|
226
|
+
* ```
|
|
227
|
+
*
|
|
228
|
+
* @since 6.5.0
|
|
229
|
+
* @adoption_gap Manual retry logic appears in 3+ locations
|
|
230
|
+
*/
|
|
231
|
+
export declare function retryableHttpRequest<T>(fn: () => Promise<T>, options?: {
|
|
232
|
+
maxRetries?: number;
|
|
233
|
+
backoffMs?: number;
|
|
234
|
+
retryableStatus?: number[];
|
|
235
|
+
}): Promise<T>;
|
|
236
|
+
/**
|
|
237
|
+
* Parse HTTP error response into standardized structure
|
|
238
|
+
*
|
|
239
|
+
* Consistently extracts error details from various HTTP error formats:
|
|
240
|
+
* - Axios errors with response data
|
|
241
|
+
* - Fetch errors
|
|
242
|
+
* - Custom error objects with status codes
|
|
243
|
+
* - Plain text error responses
|
|
244
|
+
* - JSON error responses
|
|
245
|
+
*
|
|
246
|
+
* @param error - Unknown error object from HTTP request
|
|
247
|
+
* @returns ParsedHttpError with statusCode, errorMessage, errorData, and raw error
|
|
248
|
+
*
|
|
249
|
+
* @example Axios error
|
|
250
|
+
* ```typescript
|
|
251
|
+
* try {
|
|
252
|
+
* await axios.get('/api/data');
|
|
253
|
+
* } catch (error) {
|
|
254
|
+
* const parsed = parseHttpErrorResponse(error);
|
|
255
|
+
* console.log(`Status: ${parsed.statusCode}, Message: ${parsed.errorMessage}`);
|
|
256
|
+
* // Status: 404, Message: Not Found
|
|
257
|
+
* }
|
|
258
|
+
* ```
|
|
259
|
+
*
|
|
260
|
+
* @example Fetch error
|
|
261
|
+
* ```typescript
|
|
262
|
+
* try {
|
|
263
|
+
* const response = await fetch('/api/data');
|
|
264
|
+
* if (!response.ok) {
|
|
265
|
+
* throw new Error(`HTTP ${response.status}`);
|
|
266
|
+
* }
|
|
267
|
+
* } catch (error) {
|
|
268
|
+
* const parsed = parseHttpErrorResponse(error);
|
|
269
|
+
* // Extracts status code and error message
|
|
270
|
+
* }
|
|
271
|
+
* ```
|
|
272
|
+
*
|
|
273
|
+
* @example Error response with JSON body
|
|
274
|
+
* ```typescript
|
|
275
|
+
* try {
|
|
276
|
+
* await api.post('/endpoint', data);
|
|
277
|
+
* } catch (error) {
|
|
278
|
+
* const parsed = parseHttpErrorResponse(error);
|
|
279
|
+
* console.log(`Error: ${parsed.errorData?.errorCode || parsed.statusCode}`);
|
|
280
|
+
* }
|
|
281
|
+
* ```
|
|
282
|
+
*
|
|
283
|
+
* @since 6.5.0
|
|
284
|
+
* @adoption_gap Error response parsing appears in 7+ locations with inconsistent patterns
|
|
285
|
+
*/
|
|
286
|
+
export declare function parseHttpErrorResponse(error: unknown): ParsedHttpError;
|
|
287
|
+
/**
|
|
288
|
+
* Fetch same data from multiple API endpoints and aggregate results
|
|
289
|
+
*
|
|
290
|
+
* Useful for:
|
|
291
|
+
* - Redundancy: Query multiple APIs and use the first successful response
|
|
292
|
+
* - Fallback: Try primary API, then secondary, then tertiary
|
|
293
|
+
* - Aggregation: Combine partial results from multiple sources
|
|
294
|
+
*
|
|
295
|
+
* @typeParam T - Type of data returned from each endpoint
|
|
296
|
+
* @param endpoints - Array of API endpoints to query
|
|
297
|
+
* @param aggregator - Function to combine results from all endpoints
|
|
298
|
+
* @param options - Additional options (fetcher, logger)
|
|
299
|
+
* @returns Aggregated result from combining all endpoint responses
|
|
300
|
+
*
|
|
301
|
+
* @example Fallback to secondary API
|
|
302
|
+
* ```typescript
|
|
303
|
+
* const price = await aggregateMultipleApiSources(
|
|
304
|
+
* ['https://api.primary.com/price', 'https://api.secondary.com/price'],
|
|
305
|
+
* (results) => {
|
|
306
|
+
* // Use first successful result
|
|
307
|
+
* return results.find(r => r !== undefined) || { price: 0 };
|
|
308
|
+
* },
|
|
309
|
+
* { fetcher: (url) => fetch(url).then(r => r.json()) }
|
|
310
|
+
* );
|
|
311
|
+
* ```
|
|
312
|
+
*
|
|
313
|
+
* @example Aggregate price from multiple exchanges
|
|
314
|
+
* ```typescript
|
|
315
|
+
* const avgPrice = await aggregateMultipleApiSources(
|
|
316
|
+
* ['exchange1.api/price', 'exchange2.api/price', 'exchange3.api/price'],
|
|
317
|
+
* (results) => {
|
|
318
|
+
* const prices = results.filter(r => typeof r === 'number') as number[];
|
|
319
|
+
* if (prices.length === 0) return 0;
|
|
320
|
+
* return prices.reduce((a, b) => a + b, 0) / prices.length;
|
|
321
|
+
* }
|
|
322
|
+
* );
|
|
323
|
+
* ```
|
|
324
|
+
*
|
|
325
|
+
* @example Combine partial results from multiple sources
|
|
326
|
+
* ```typescript
|
|
327
|
+
* const combined = await aggregateMultipleApiSources(
|
|
328
|
+
* [
|
|
329
|
+
* 'https://api1.com/liquidity',
|
|
330
|
+
* 'https://api2.com/liquidity',
|
|
331
|
+
* 'https://api3.com/liquidity'
|
|
332
|
+
* ],
|
|
333
|
+
* (results) => ({
|
|
334
|
+
* totalLiquidity: results.reduce((sum, r) => sum + (r?.tvl || 0), 0),
|
|
335
|
+
* sources: results.filter(r => r !== undefined).length
|
|
336
|
+
* })
|
|
337
|
+
* );
|
|
338
|
+
* ```
|
|
339
|
+
*
|
|
340
|
+
* @since 6.5.0
|
|
341
|
+
* @adoption_gap Multi-source aggregation appears in 5+ locations with duplicate logic
|
|
342
|
+
*/
|
|
343
|
+
export declare function aggregateMultipleApiSources<T>(endpoints: string[], aggregator: (results: (T | undefined)[]) => T, options?: {
|
|
344
|
+
fetcher?: (endpoint: string) => Promise<T>;
|
|
345
|
+
logger?: Logger;
|
|
346
|
+
}): Promise<T>;
|
|
347
|
+
//# sourceMappingURL=api-patterns.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-patterns.d.ts","sourceRoot":"","sources":["../../../src/utils/api-patterns.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAKlC;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,2EAA2E;IAC3E,UAAU,EAAE,MAAM,CAAC;IACnB,wDAAwD;IACxD,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,wDAAwD;IACxD,UAAU,EAAE,MAAM,CAAC;IACnB,uDAAuD;IACvD,YAAY,EAAE,MAAM,CAAC;IACrB,8DAA8D;IAC9D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,qCAAqC;IACrC,GAAG,EAAE,OAAO,CAAC;CACd;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAsB,4BAA4B,CAAC,CAAC,EAClD,IAAI,EAAE,MAAM,EAAE,EACd,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,EACpC,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9C,OAAO,CAAC,CAAC,EAAE,CAAC,CAkDd;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,OAAO,GAAG,kBAAkB,CAwD/E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AAEH,wBAAgB,kCAAkC,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAqCtF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,wBAAsB,oBAAoB,CAAC,CAAC,EAC1C,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,CAAC,EAAE;IACR,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B,GACA,OAAO,CAAC,CAAC,CAAC,CA8BZ;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,CAiEtE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AACH,wBAAsB,2BAA2B,CAAC,CAAC,EACjD,SAAS,EAAE,MAAM,EAAE,EACnB,UAAU,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,KAAK,CAAC,EAC7C,OAAO,CAAC,EAAE;IACR,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GACA,OAAO,CAAC,CAAC,CAAC,CAuCZ"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Array transformation and grouping utilities
|
|
3
|
+
*
|
|
4
|
+
* These utilities provide generic, type-safe array operations
|
|
5
|
+
* for common transformation patterns.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Group array items by a computed key into a Map
|
|
9
|
+
*
|
|
10
|
+
* Provides a type-safe alternative to object-based grouping,
|
|
11
|
+
* supporting any key type (strings, numbers, objects, etc.)
|
|
12
|
+
*
|
|
13
|
+
* Replaces the common pattern:
|
|
14
|
+
* ```typescript
|
|
15
|
+
* const groups = new Map<K, T[]>();
|
|
16
|
+
* items.forEach((item) => {
|
|
17
|
+
* const key = computeKey(item);
|
|
18
|
+
* if (!groups.has(key)) groups.set(key, []);
|
|
19
|
+
* groups.get(key)!.push(item);
|
|
20
|
+
* });
|
|
21
|
+
* ```
|
|
22
|
+
*
|
|
23
|
+
* @template T - The type of items in the array
|
|
24
|
+
* @template K - The type of the grouping key
|
|
25
|
+
*
|
|
26
|
+
* @param items - Array of items to group
|
|
27
|
+
* @param keyFn - Function that computes the grouping key for each item
|
|
28
|
+
* @returns Map with keys mapping to arrays of grouped items
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```typescript
|
|
32
|
+
* // Group positions by token pair
|
|
33
|
+
* interface LiquidityPosition {
|
|
34
|
+
* token0: string;
|
|
35
|
+
* token1: string;
|
|
36
|
+
* liquidity: string;
|
|
37
|
+
* }
|
|
38
|
+
*
|
|
39
|
+
* const positions: LiquidityPosition[] = [
|
|
40
|
+
* { token0: 'GALA', token1: 'GUSDC', liquidity: '1000' },
|
|
41
|
+
* { token0: 'GALA', token1: 'GWETH', liquidity: '500' },
|
|
42
|
+
* { token0: 'GALA', token1: 'GUSDC', liquidity: '2000' },
|
|
43
|
+
* ];
|
|
44
|
+
*
|
|
45
|
+
* const grouped = groupByKey(
|
|
46
|
+
* positions,
|
|
47
|
+
* (pos) => `${pos.token0}/${pos.token1}`
|
|
48
|
+
* );
|
|
49
|
+
* // Result: Map {
|
|
50
|
+
* // 'GALA/GUSDC' => [{ token0: 'GALA', token1: 'GUSDC', liquidity: '1000' }, ...],
|
|
51
|
+
* // 'GALA/GWETH' => [{ token0: 'GALA', token1: 'GWETH', liquidity: '500' }]
|
|
52
|
+
* // }
|
|
53
|
+
*
|
|
54
|
+
* grouped.get('GALA/GUSDC'); // Array of both GALA/GUSDC positions
|
|
55
|
+
* ```
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```typescript
|
|
59
|
+
* // Group trades by status
|
|
60
|
+
* interface Trade {
|
|
61
|
+
* id: string;
|
|
62
|
+
* status: 'pending' | 'completed' | 'failed';
|
|
63
|
+
* amount: number;
|
|
64
|
+
* }
|
|
65
|
+
*
|
|
66
|
+
* const trades: Trade[] = [...];
|
|
67
|
+
* const byStatus = groupByKey(trades, (trade) => trade.status);
|
|
68
|
+
*
|
|
69
|
+
* const pending = byStatus.get('pending') || [];
|
|
70
|
+
* const completed = byStatus.get('completed') || [];
|
|
71
|
+
* const failed = byStatus.get('failed') || [];
|
|
72
|
+
* ```
|
|
73
|
+
*
|
|
74
|
+
* @example
|
|
75
|
+
* ```typescript
|
|
76
|
+
* // Group by numeric key
|
|
77
|
+
* interface DataPoint {
|
|
78
|
+
* timestamp: number;
|
|
79
|
+
* value: number;
|
|
80
|
+
* }
|
|
81
|
+
*
|
|
82
|
+
* const data: DataPoint[] = [...];
|
|
83
|
+
* // Group by hour (rounded timestamp)
|
|
84
|
+
* const byHour = groupByKey(
|
|
85
|
+
* data,
|
|
86
|
+
* (point) => Math.floor(point.timestamp / (60 * 60 * 1000))
|
|
87
|
+
* );
|
|
88
|
+
* ```
|
|
89
|
+
*
|
|
90
|
+
* @example
|
|
91
|
+
* ```typescript
|
|
92
|
+
* // Group with object key (requires key to be serializable)
|
|
93
|
+
* interface Event {
|
|
94
|
+
* chainId: number;
|
|
95
|
+
* contractAddress: string;
|
|
96
|
+
* data: unknown;
|
|
97
|
+
* }
|
|
98
|
+
*
|
|
99
|
+
* const events: Event[] = [...];
|
|
100
|
+
* // Group by contract on each chain
|
|
101
|
+
* const byChainContract = groupByKey(
|
|
102
|
+
* events,
|
|
103
|
+
* (event) => `${event.chainId}:${event.contractAddress}`
|
|
104
|
+
* );
|
|
105
|
+
* ```
|
|
106
|
+
*
|
|
107
|
+
* @remarks
|
|
108
|
+
* - Uses `Map` for better type safety and support for non-string keys
|
|
109
|
+
* - The key function is called once per item (O(n) complexity)
|
|
110
|
+
* - Maintains insertion order of keys
|
|
111
|
+
* - Suitable for large datasets due to Map's efficiency
|
|
112
|
+
* - Key equality determined by `===` comparison (or custom equals for objects)
|
|
113
|
+
*/
|
|
114
|
+
export declare function groupByKey<T, K>(items: T[], keyFn: (item: T) => K): Map<K, T[]>;
|
|
115
|
+
//# sourceMappingURL=array-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"array-helpers.d.ts","sourceRoot":"","sources":["../../../src/utils/array-helpers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0GG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,CAAC,EAC7B,KAAK,EAAE,CAAC,EAAE,EACV,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GACpB,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAcb"}
|