@0xkoaj/sdk 0.0.1-beta.1 → 0.0.1-beta.3
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/README.md +272 -5
- package/dist/chains.d.ts +1183 -0
- package/dist/chains.js +679 -0
- package/dist/chains.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/dist/sdk/builders/allowance-builder.d.ts +22 -0
- package/dist/sdk/builders/allowance-builder.js +28 -0
- package/dist/sdk/builders/allowance-builder.js.map +1 -0
- package/dist/sdk/builders/balance-builder.d.ts +30 -0
- package/dist/sdk/builders/balance-builder.js +33 -0
- package/dist/sdk/builders/balance-builder.js.map +1 -0
- package/dist/sdk/builders/blocks-builder.d.ts +22 -0
- package/dist/sdk/builders/blocks-builder.js +30 -0
- package/dist/sdk/builders/blocks-builder.js.map +1 -0
- package/dist/sdk/builders/fetch-builder.d.ts +6 -0
- package/dist/sdk/builders/fetch-builder.js +9 -0
- package/dist/sdk/builders/fetch-builder.js.map +1 -0
- package/dist/sdk/builders/gas-builder.d.ts +106 -0
- package/dist/sdk/builders/gas-builder.js +69 -0
- package/dist/sdk/builders/gas-builder.js.map +1 -0
- package/dist/sdk/builders/index.d.ts +10 -0
- package/dist/sdk/builders/index.js +3 -0
- package/dist/sdk/builders/index.js.map +1 -0
- package/dist/sdk/builders/logs-builder.d.ts +6 -0
- package/dist/sdk/builders/logs-builder.js +9 -0
- package/dist/sdk/builders/logs-builder.js.map +1 -0
- package/dist/sdk/builders/metadata-builder.d.ts +49 -0
- package/dist/sdk/builders/metadata-builder.js +37 -0
- package/dist/sdk/builders/metadata-builder.js.map +1 -0
- package/dist/sdk/builders/price-builder.d.ts +49 -0
- package/dist/sdk/builders/price-builder.js +59 -0
- package/dist/sdk/builders/price-builder.js.map +1 -0
- package/dist/sdk/builders/provider-builder.d.ts +121 -0
- package/dist/sdk/builders/provider-builder.js +88 -0
- package/dist/sdk/builders/provider-builder.js.map +1 -0
- package/dist/sdk/builders/quote-builder.d.ts +44 -0
- package/dist/sdk/builders/quote-builder.js +55 -0
- package/dist/sdk/builders/quote-builder.js.map +1 -0
- package/dist/sdk/index.d.ts +3 -0
- package/dist/sdk/index.js +21 -0
- package/dist/sdk/index.js.map +1 -0
- package/dist/sdk/sdk-builder.d.ts +24 -0
- package/dist/sdk/sdk-builder.js +39 -0
- package/dist/sdk/sdk-builder.js.map +1 -0
- package/dist/sdk/types.d.ts +24 -0
- package/dist/sdk/types.js +3 -0
- package/dist/sdk/types.js.map +1 -0
- package/dist/services/allowances/allowance-service.d.ts +29 -0
- package/dist/services/allowances/allowance-service.js +35 -0
- package/dist/services/allowances/allowance-service.js.map +1 -0
- package/dist/services/allowances/allowance-sources/cached-allowance-source.d.ts +16 -0
- package/dist/services/allowances/allowance-sources/cached-allowance-source.js +69 -0
- package/dist/services/allowances/allowance-sources/cached-allowance-source.js.map +1 -0
- package/dist/services/allowances/allowance-sources/rpc-allowance-source.d.ts +15 -0
- package/dist/services/allowances/allowance-sources/rpc-allowance-source.js +54 -0
- package/dist/services/allowances/allowance-sources/rpc-allowance-source.js.map +1 -0
- package/dist/services/allowances/index.d.ts +1 -0
- package/dist/services/allowances/index.js +3 -0
- package/dist/services/allowances/index.js.map +1 -0
- package/dist/services/allowances/types.d.ts +43 -0
- package/dist/services/allowances/types.js +3 -0
- package/dist/services/allowances/types.js.map +1 -0
- package/dist/services/balances/balance-service.d.ts +35 -0
- package/dist/services/balances/balance-service.js +36 -0
- package/dist/services/balances/balance-service.js.map +1 -0
- package/dist/services/balances/balance-sources/cached-balance-source.d.ts +16 -0
- package/dist/services/balances/balance-sources/cached-balance-source.js +56 -0
- package/dist/services/balances/balance-sources/cached-balance-source.js.map +1 -0
- package/dist/services/balances/balance-sources/fastest-balance-source.d.ts +15 -0
- package/dist/services/balances/balance-sources/fastest-balance-source.js +45 -0
- package/dist/services/balances/balance-sources/fastest-balance-source.js.map +1 -0
- package/dist/services/balances/balance-sources/rpc-balance-source.d.ts +23 -0
- package/dist/services/balances/balance-sources/rpc-balance-source.js +70 -0
- package/dist/services/balances/balance-sources/rpc-balance-source.js.map +1 -0
- package/dist/services/balances/balance-sources/utils.d.ts +15 -0
- package/dist/services/balances/balance-sources/utils.js +43 -0
- package/dist/services/balances/balance-sources/utils.js.map +1 -0
- package/dist/services/balances/index.d.ts +1 -0
- package/dist/services/balances/index.js +3 -0
- package/dist/services/balances/index.js.map +1 -0
- package/dist/services/balances/types.d.ts +48 -0
- package/dist/services/balances/types.js +3 -0
- package/dist/services/balances/types.js.map +1 -0
- package/dist/services/blocks/block-service.d.ts +28 -0
- package/dist/services/blocks/block-service.js +27 -0
- package/dist/services/blocks/block-service.js.map +1 -0
- package/dist/services/blocks/block-sources/defi-llama-block-source.d.ts +13 -0
- package/dist/services/blocks/block-sources/defi-llama-block-source.js +41 -0
- package/dist/services/blocks/block-sources/defi-llama-block-source.js.map +1 -0
- package/dist/services/blocks/block-sources/fallback-block-source.d.ts +13 -0
- package/dist/services/blocks/block-sources/fallback-block-source.js +28 -0
- package/dist/services/blocks/block-sources/fallback-block-source.js.map +1 -0
- package/dist/services/blocks/block-sources/rpc-block-source.d.ts +12 -0
- package/dist/services/blocks/block-sources/rpc-block-source.js +139 -0
- package/dist/services/blocks/block-sources/rpc-block-source.js.map +1 -0
- package/dist/services/blocks/block-sources/utils.d.ts +3 -0
- package/dist/services/blocks/block-sources/utils.js +10 -0
- package/dist/services/blocks/block-sources/utils.js.map +1 -0
- package/dist/services/blocks/index.d.ts +1 -0
- package/dist/services/blocks/index.js +3 -0
- package/dist/services/blocks/index.js.map +1 -0
- package/dist/services/blocks/types.d.ts +42 -0
- package/dist/services/blocks/types.js +3 -0
- package/dist/services/blocks/types.js.map +1 -0
- package/dist/services/fetch/fetch-service.d.ts +6 -0
- package/dist/services/fetch/fetch-service.js +58 -0
- package/dist/services/fetch/fetch-service.js.map +1 -0
- package/dist/services/fetch/index.d.ts +1 -0
- package/dist/services/fetch/index.js +3 -0
- package/dist/services/fetch/index.js.map +1 -0
- package/dist/services/fetch/types.d.ts +11 -0
- package/dist/services/fetch/types.js +3 -0
- package/dist/services/fetch/types.js.map +1 -0
- package/dist/services/gas/gas-price-sources/aggregator-gas-price-source.d.ts +19 -0
- package/dist/services/gas/gas-price-sources/aggregator-gas-price-source.js +108 -0
- package/dist/services/gas/gas-price-sources/aggregator-gas-price-source.js.map +1 -0
- package/dist/services/gas/gas-price-sources/cached-gas-price-source.d.ts +28 -0
- package/dist/services/gas/gas-price-sources/cached-gas-price-source.js +56 -0
- package/dist/services/gas/gas-price-sources/cached-gas-price-source.js.map +1 -0
- package/dist/services/gas/gas-price-sources/etherscan-gas-price-source.d.ts +19 -0
- package/dist/services/gas/gas-price-sources/etherscan-gas-price-source.js +48 -0
- package/dist/services/gas/gas-price-sources/etherscan-gas-price-source.js.map +1 -0
- package/dist/services/gas/gas-price-sources/fastest-gas-price-source-combinator.d.ts +14 -0
- package/dist/services/gas/gas-price-sources/fastest-gas-price-source-combinator.js +33 -0
- package/dist/services/gas/gas-price-sources/fastest-gas-price-source-combinator.js.map +1 -0
- package/dist/services/gas/gas-price-sources/open-ocean-gas-price-source.d.ts +18 -0
- package/dist/services/gas/gas-price-sources/open-ocean-gas-price-source.js +60 -0
- package/dist/services/gas/gas-price-sources/open-ocean-gas-price-source.js.map +1 -0
- package/dist/services/gas/gas-price-sources/owlracle-gas-price-source.d.ts +29 -0
- package/dist/services/gas/gas-price-sources/owlracle-gas-price-source.js +65 -0
- package/dist/services/gas/gas-price-sources/owlracle-gas-price-source.js.map +1 -0
- package/dist/services/gas/gas-price-sources/paraswap-gas-price-source.d.ts +18 -0
- package/dist/services/gas/gas-price-sources/paraswap-gas-price-source.js +28 -0
- package/dist/services/gas/gas-price-sources/paraswap-gas-price-source.js.map +1 -0
- package/dist/services/gas/gas-price-sources/polygon-gas-station-gas-price-source.d.ts +18 -0
- package/dist/services/gas/gas-price-sources/polygon-gas-station-gas-price-source.js +31 -0
- package/dist/services/gas/gas-price-sources/polygon-gas-station-gas-price-source.js.map +1 -0
- package/dist/services/gas/gas-price-sources/prioritized-gas-price-source-combinator.d.ts +14 -0
- package/dist/services/gas/gas-price-sources/prioritized-gas-price-source-combinator.js +33 -0
- package/dist/services/gas/gas-price-sources/prioritized-gas-price-source-combinator.js.map +1 -0
- package/dist/services/gas/gas-price-sources/rpc-gas-price-source.d.ts +18 -0
- package/dist/services/gas/gas-price-sources/rpc-gas-price-source.js +32 -0
- package/dist/services/gas/gas-price-sources/rpc-gas-price-source.js.map +1 -0
- package/dist/services/gas/gas-service.d.ts +48 -0
- package/dist/services/gas/gas-service.js +67 -0
- package/dist/services/gas/gas-service.js.map +1 -0
- package/dist/services/gas/index.d.ts +2 -0
- package/dist/services/gas/index.js +6 -0
- package/dist/services/gas/index.js.map +1 -0
- package/dist/services/gas/types.d.ts +80 -0
- package/dist/services/gas/types.js +5 -0
- package/dist/services/gas/types.js.map +1 -0
- package/dist/services/gas/utils.d.ts +11 -0
- package/dist/services/gas/utils.js +25 -0
- package/dist/services/gas/utils.js.map +1 -0
- package/dist/services/index.d.ts +10 -0
- package/dist/services/index.js +27 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/logs/index.d.ts +1 -0
- package/dist/services/logs/index.js +3 -0
- package/dist/services/logs/index.js.map +1 -0
- package/dist/services/logs/loggers/console-logger.d.ts +12 -0
- package/dist/services/logs/loggers/console-logger.js +37 -0
- package/dist/services/logs/loggers/console-logger.js.map +1 -0
- package/dist/services/logs/logs-service.d.ts +8 -0
- package/dist/services/logs/logs-service.js +14 -0
- package/dist/services/logs/logs-service.js.map +1 -0
- package/dist/services/logs/types.d.ts +13 -0
- package/dist/services/logs/types.js +3 -0
- package/dist/services/logs/types.js.map +1 -0
- package/dist/services/logs/utils.d.ts +2 -0
- package/dist/services/logs/utils.js +25 -0
- package/dist/services/logs/utils.js.map +1 -0
- package/dist/services/metadata/index.d.ts +1 -0
- package/dist/services/metadata/index.js +3 -0
- package/dist/services/metadata/index.js.map +1 -0
- package/dist/services/metadata/metadata-service.d.ts +23 -0
- package/dist/services/metadata/metadata-service.js +38 -0
- package/dist/services/metadata/metadata-service.js.map +1 -0
- package/dist/services/metadata/metadata-sources/cached-metadata-source.d.ts +17 -0
- package/dist/services/metadata/metadata-sources/cached-metadata-source.js +87 -0
- package/dist/services/metadata/metadata-sources/cached-metadata-source.js.map +1 -0
- package/dist/services/metadata/metadata-sources/defi-llama-metadata-source.d.ts +16 -0
- package/dist/services/metadata/metadata-sources/defi-llama-metadata-source.js +27 -0
- package/dist/services/metadata/metadata-sources/defi-llama-metadata-source.js.map +1 -0
- package/dist/services/metadata/metadata-sources/fallback-metadata-source.d.ts +14 -0
- package/dist/services/metadata/metadata-sources/fallback-metadata-source.js +131 -0
- package/dist/services/metadata/metadata-sources/fallback-metadata-source.js.map +1 -0
- package/dist/services/metadata/metadata-sources/rpc-metadata-source.d.ts +23 -0
- package/dist/services/metadata/metadata-sources/rpc-metadata-source.js +77 -0
- package/dist/services/metadata/metadata-sources/rpc-metadata-source.js.map +1 -0
- package/dist/services/metadata/types.d.ts +44 -0
- package/dist/services/metadata/types.js +3 -0
- package/dist/services/metadata/types.js.map +1 -0
- package/dist/services/prices/index.d.ts +1 -0
- package/dist/services/prices/index.js +3 -0
- package/dist/services/prices/index.js.map +1 -0
- package/dist/services/prices/price-service.d.ts +69 -0
- package/dist/services/prices/price-service.js +58 -0
- package/dist/services/prices/price-service.js.map +1 -0
- package/dist/services/prices/price-sources/aggregator-price-source.d.ts +41 -0
- package/dist/services/prices/price-sources/aggregator-price-source.js +128 -0
- package/dist/services/prices/price-sources/aggregator-price-source.js.map +1 -0
- package/dist/services/prices/price-sources/alchemy-price-source.d.ts +47 -0
- package/dist/services/prices/price-sources/alchemy-price-source.js +110 -0
- package/dist/services/prices/price-sources/alchemy-price-source.js.map +1 -0
- package/dist/services/prices/price-sources/batch-price-source.d.ts +44 -0
- package/dist/services/prices/price-sources/batch-price-source.js +89 -0
- package/dist/services/prices/price-sources/batch-price-source.js.map +1 -0
- package/dist/services/prices/price-sources/cached-price-source.d.ts +41 -0
- package/dist/services/prices/price-sources/cached-price-source.js +68 -0
- package/dist/services/prices/price-sources/cached-price-source.js.map +1 -0
- package/dist/services/prices/price-sources/codex-price-source.d.ts +41 -0
- package/dist/services/prices/price-sources/codex-price-source.js +124 -0
- package/dist/services/prices/price-sources/codex-price-source.js.map +1 -0
- package/dist/services/prices/price-sources/coingecko-price-source.d.ts +42 -0
- package/dist/services/prices/price-sources/coingecko-price-source.js +109 -0
- package/dist/services/prices/price-sources/coingecko-price-source.js.map +1 -0
- package/dist/services/prices/price-sources/defi-llama-price-source.d.ts +39 -0
- package/dist/services/prices/price-sources/defi-llama-price-source.js +34 -0
- package/dist/services/prices/price-sources/defi-llama-price-source.js.map +1 -0
- package/dist/services/prices/price-sources/fastest-price-source.d.ts +38 -0
- package/dist/services/prices/price-sources/fastest-price-source.js +82 -0
- package/dist/services/prices/price-sources/fastest-price-source.js.map +1 -0
- package/dist/services/prices/price-sources/odos-price-source.d.ts +40 -0
- package/dist/services/prices/price-sources/odos-price-source.js +54 -0
- package/dist/services/prices/price-sources/odos-price-source.js.map +1 -0
- package/dist/services/prices/price-sources/prioritized-price-source.d.ts +38 -0
- package/dist/services/prices/price-sources/prioritized-price-source.js +81 -0
- package/dist/services/prices/price-sources/prioritized-price-source.js.map +1 -0
- package/dist/services/prices/price-sources/utils.d.ts +10 -0
- package/dist/services/prices/price-sources/utils.js +70 -0
- package/dist/services/prices/price-sources/utils.js.map +1 -0
- package/dist/services/prices/types.d.ts +105 -0
- package/dist/services/prices/types.js +3 -0
- package/dist/services/prices/types.js.map +1 -0
- package/dist/services/providers/index.d.ts +2 -0
- package/dist/services/providers/index.js +18 -0
- package/dist/services/providers/index.js.map +1 -0
- package/dist/services/providers/provider-service.d.ts +20 -0
- package/dist/services/providers/provider-service.js +33 -0
- package/dist/services/providers/provider-service.js.map +1 -0
- package/dist/services/providers/provider-sources/alchemy-provider.d.ts +20 -0
- package/dist/services/providers/provider-sources/alchemy-provider.js +37 -0
- package/dist/services/providers/provider-sources/alchemy-provider.js.map +1 -0
- package/dist/services/providers/provider-sources/ankr-provider.d.ts +18 -0
- package/dist/services/providers/provider-sources/ankr-provider.js +52 -0
- package/dist/services/providers/provider-sources/ankr-provider.js.map +1 -0
- package/dist/services/providers/provider-sources/base/base-http-provider.d.ts +14 -0
- package/dist/services/providers/provider-sources/base/base-http-provider.js +20 -0
- package/dist/services/providers/provider-sources/base/base-http-provider.js.map +1 -0
- package/dist/services/providers/provider-sources/base/base-web-socket-provider.d.ts +10 -0
- package/dist/services/providers/provider-sources/base/base-web-socket-provider.js +17 -0
- package/dist/services/providers/provider-sources/base/base-web-socket-provider.js.map +1 -0
- package/dist/services/providers/provider-sources/blast-provider.d.ts +18 -0
- package/dist/services/providers/provider-sources/blast-provider.js +52 -0
- package/dist/services/providers/provider-sources/blast-provider.js.map +1 -0
- package/dist/services/providers/provider-sources/by-method-provider.d.ts +12 -0
- package/dist/services/providers/provider-sources/by-method-provider.js +40 -0
- package/dist/services/providers/provider-sources/by-method-provider.js.map +1 -0
- package/dist/services/providers/provider-sources/drpc-provider.d.ts +18 -0
- package/dist/services/providers/provider-sources/drpc-provider.js +60 -0
- package/dist/services/providers/provider-sources/drpc-provider.js.map +1 -0
- package/dist/services/providers/provider-sources/envio-provider.d.ts +18 -0
- package/dist/services/providers/provider-sources/envio-provider.js +72 -0
- package/dist/services/providers/provider-sources/envio-provider.js.map +1 -0
- package/dist/services/providers/provider-sources/fallback-provider.d.ts +13 -0
- package/dist/services/providers/provider-sources/fallback-provider.js +26 -0
- package/dist/services/providers/provider-sources/fallback-provider.js.map +1 -0
- package/dist/services/providers/provider-sources/get-block-provider.d.ts +15 -0
- package/dist/services/providers/provider-sources/get-block-provider.js +23 -0
- package/dist/services/providers/provider-sources/get-block-provider.js.map +1 -0
- package/dist/services/providers/provider-sources/http-provider.d.ts +13 -0
- package/dist/services/providers/provider-sources/http-provider.js +21 -0
- package/dist/services/providers/provider-sources/http-provider.js.map +1 -0
- package/dist/services/providers/provider-sources/index.d.ts +17 -0
- package/dist/services/providers/provider-sources/index.js +45 -0
- package/dist/services/providers/provider-sources/index.js.map +1 -0
- package/dist/services/providers/provider-sources/infura-provider.d.ts +18 -0
- package/dist/services/providers/provider-sources/infura-provider.js +40 -0
- package/dist/services/providers/provider-sources/infura-provider.js.map +1 -0
- package/dist/services/providers/provider-sources/llama-nodes-provider.d.ts +18 -0
- package/dist/services/providers/provider-sources/llama-nodes-provider.js +40 -0
- package/dist/services/providers/provider-sources/llama-nodes-provider.js.map +1 -0
- package/dist/services/providers/provider-sources/load-balance-provider.d.ts +23 -0
- package/dist/services/providers/provider-sources/load-balance-provider.js +163 -0
- package/dist/services/providers/provider-sources/load-balance-provider.js.map +1 -0
- package/dist/services/providers/provider-sources/moralis-provider.d.ts +25 -0
- package/dist/services/providers/provider-sources/moralis-provider.js +56 -0
- package/dist/services/providers/provider-sources/moralis-provider.js.map +1 -0
- package/dist/services/providers/provider-sources/node-real-provider.d.ts +18 -0
- package/dist/services/providers/provider-sources/node-real-provider.js +35 -0
- package/dist/services/providers/provider-sources/node-real-provider.js.map +1 -0
- package/dist/services/providers/provider-sources/on-finality-provider.d.ts +18 -0
- package/dist/services/providers/provider-sources/on-finality-provider.js +50 -0
- package/dist/services/providers/provider-sources/on-finality-provider.js.map +1 -0
- package/dist/services/providers/provider-sources/one-rpc-provider.d.ts +18 -0
- package/dist/services/providers/provider-sources/one-rpc-provider.js +56 -0
- package/dist/services/providers/provider-sources/one-rpc-provider.js.map +1 -0
- package/dist/services/providers/provider-sources/prioritized-provider-source-combinator.d.ts +10 -0
- package/dist/services/providers/provider-sources/prioritized-provider-source-combinator.js +24 -0
- package/dist/services/providers/provider-sources/prioritized-provider-source-combinator.js.map +1 -0
- package/dist/services/providers/provider-sources/public-rpcs-provider.d.ts +21 -0
- package/dist/services/providers/provider-sources/public-rpcs-provider.js +35 -0
- package/dist/services/providers/provider-sources/public-rpcs-provider.js.map +1 -0
- package/dist/services/providers/provider-sources/tenderly-provider.d.ts +18 -0
- package/dist/services/providers/provider-sources/tenderly-provider.js +48 -0
- package/dist/services/providers/provider-sources/tenderly-provider.js.map +1 -0
- package/dist/services/providers/provider-sources/third-web-provider.d.ts +15 -0
- package/dist/services/providers/provider-sources/third-web-provider.js +58 -0
- package/dist/services/providers/provider-sources/third-web-provider.js.map +1 -0
- package/dist/services/providers/provider-sources/web-sockets-provider.d.ts +9 -0
- package/dist/services/providers/provider-sources/web-sockets-provider.js +21 -0
- package/dist/services/providers/provider-sources/web-sockets-provider.js.map +1 -0
- package/dist/services/providers/types.d.ts +17 -0
- package/dist/services/providers/types.js +3 -0
- package/dist/services/providers/types.js.map +1 -0
- package/dist/services/providers/utils.d.ts +4 -0
- package/dist/services/providers/utils.js +34 -0
- package/dist/services/providers/utils.js.map +1 -0
- package/dist/services/quotes/errors.d.ts +17 -0
- package/dist/services/quotes/errors.js +38 -0
- package/dist/services/quotes/errors.js.map +1 -0
- package/dist/services/quotes/index.d.ts +5 -0
- package/dist/services/quotes/index.js +28 -0
- package/dist/services/quotes/index.js.map +1 -0
- package/dist/services/quotes/quote-compare.d.ts +9 -0
- package/dist/services/quotes/quote-compare.js +144 -0
- package/dist/services/quotes/quote-compare.js.map +1 -0
- package/dist/services/quotes/quote-service.d.ts +117 -0
- package/dist/services/quotes/quote-service.js +302 -0
- package/dist/services/quotes/quote-service.js.map +1 -0
- package/dist/services/quotes/quote-sources/0x-quote-source.d.ts +19 -0
- package/dist/services/quotes/quote-sources/0x-quote-source.js +89 -0
- package/dist/services/quotes/quote-sources/0x-quote-source.js.map +1 -0
- package/dist/services/quotes/quote-sources/1inch-quote-source.d.ts +28 -0
- package/dist/services/quotes/quote-sources/1inch-quote-source.js +102 -0
- package/dist/services/quotes/quote-sources/1inch-quote-source.js.map +1 -0
- package/dist/services/quotes/quote-sources/barter-quote-source.d.ts +28 -0
- package/dist/services/quotes/quote-sources/barter-quote-source.js +126 -0
- package/dist/services/quotes/quote-sources/barter-quote-source.js.map +1 -0
- package/dist/services/quotes/quote-sources/base/always-valid-source.d.ts +8 -0
- package/dist/services/quotes/quote-sources/base/always-valid-source.js +13 -0
- package/dist/services/quotes/quote-sources/base/always-valid-source.js.map +1 -0
- package/dist/services/quotes/quote-sources/bebop-quote-source.d.ts +21 -0
- package/dist/services/quotes/quote-sources/bebop-quote-source.js +97 -0
- package/dist/services/quotes/quote-sources/bebop-quote-source.js.map +1 -0
- package/dist/services/quotes/quote-sources/braindex-quote-source.d.ts +20 -0
- package/dist/services/quotes/quote-sources/braindex-quote-source.js +150 -0
- package/dist/services/quotes/quote-sources/braindex-quote-source.js.map +1 -0
- package/dist/services/quotes/quote-sources/changelly-quote-source.d.ts +20 -0
- package/dist/services/quotes/quote-sources/changelly-quote-source.js +71 -0
- package/dist/services/quotes/quote-sources/changelly-quote-source.js.map +1 -0
- package/dist/services/quotes/quote-sources/conveyor-quote-source.d.ts +19 -0
- package/dist/services/quotes/quote-sources/conveyor-quote-source.js +93 -0
- package/dist/services/quotes/quote-sources/conveyor-quote-source.js.map +1 -0
- package/dist/services/quotes/quote-sources/dodo-quote-source.d.ts +19 -0
- package/dist/services/quotes/quote-sources/dodo-quote-source.js +97 -0
- package/dist/services/quotes/quote-sources/dodo-quote-source.js.map +1 -0
- package/dist/services/quotes/quote-sources/enso-quote-source.d.ts +20 -0
- package/dist/services/quotes/quote-sources/enso-quote-source.js +85 -0
- package/dist/services/quotes/quote-sources/enso-quote-source.js.map +1 -0
- package/dist/services/quotes/quote-sources/fly-trade-quote-source.d.ts +20 -0
- package/dist/services/quotes/quote-sources/fly-trade-quote-source.js +99 -0
- package/dist/services/quotes/quote-sources/fly-trade-quote-source.js.map +1 -0
- package/dist/services/quotes/quote-sources/jupiter-quote-source.d.ts +50 -0
- package/dist/services/quotes/quote-sources/jupiter-quote-source.js +111 -0
- package/dist/services/quotes/quote-sources/jupiter-quote-source.js.map +1 -0
- package/dist/services/quotes/quote-sources/kyberswap-quote-source.d.ts +26 -0
- package/dist/services/quotes/quote-sources/kyberswap-quote-source.js +100 -0
- package/dist/services/quotes/quote-sources/kyberswap-quote-source.js.map +1 -0
- package/dist/services/quotes/quote-sources/li-fi-quote-source.d.ts +18 -0
- package/dist/services/quotes/quote-sources/li-fi-quote-source.js +104 -0
- package/dist/services/quotes/quote-sources/li-fi-quote-source.js.map +1 -0
- package/dist/services/quotes/quote-sources/odos-quote-source.d.ts +29 -0
- package/dist/services/quotes/quote-sources/odos-quote-source.js +130 -0
- package/dist/services/quotes/quote-sources/odos-quote-source.js.map +1 -0
- package/dist/services/quotes/quote-sources/okx-dex-quote-source.d.ts +21 -0
- package/dist/services/quotes/quote-sources/okx-dex-quote-source.js +143 -0
- package/dist/services/quotes/quote-sources/okx-dex-quote-source.js.map +1 -0
- package/dist/services/quotes/quote-sources/open-ocean-quote-source.d.ts +19 -0
- package/dist/services/quotes/quote-sources/open-ocean-quote-source.js +113 -0
- package/dist/services/quotes/quote-sources/open-ocean-quote-source.js.map +1 -0
- package/dist/services/quotes/quote-sources/paraswap-quote-source.d.ts +19 -0
- package/dist/services/quotes/quote-sources/paraswap-quote-source.js +84 -0
- package/dist/services/quotes/quote-sources/paraswap-quote-source.js.map +1 -0
- package/dist/services/quotes/quote-sources/portals-fi-quote-source.d.ts +20 -0
- package/dist/services/quotes/quote-sources/portals-fi-quote-source.js +94 -0
- package/dist/services/quotes/quote-sources/portals-fi-quote-source.js.map +1 -0
- package/dist/services/quotes/quote-sources/rango-quote-source.d.ts +21 -0
- package/dist/services/quotes/quote-sources/rango-quote-source.js +115 -0
- package/dist/services/quotes/quote-sources/rango-quote-source.js.map +1 -0
- package/dist/services/quotes/quote-sources/squid-quote-source.d.ts +20 -0
- package/dist/services/quotes/quote-sources/squid-quote-source.js +92 -0
- package/dist/services/quotes/quote-sources/squid-quote-source.js.map +1 -0
- package/dist/services/quotes/quote-sources/sushiswap-quote-source.d.ts +18 -0
- package/dist/services/quotes/quote-sources/sushiswap-quote-source.js +90 -0
- package/dist/services/quotes/quote-sources/sushiswap-quote-source.js.map +1 -0
- package/dist/services/quotes/quote-sources/swing-quote-source.d.ts +28 -0
- package/dist/services/quotes/quote-sources/swing-quote-source.js +148 -0
- package/dist/services/quotes/quote-sources/swing-quote-source.js.map +1 -0
- package/dist/services/quotes/quote-sources/types.d.ts +120 -0
- package/dist/services/quotes/quote-sources/types.js +13 -0
- package/dist/services/quotes/quote-sources/types.js.map +1 -0
- package/dist/services/quotes/quote-sources/uniswap-quote-source.d.ts +16 -0
- package/dist/services/quotes/quote-sources/uniswap-quote-source.js +119 -0
- package/dist/services/quotes/quote-sources/uniswap-quote-source.js.map +1 -0
- package/dist/services/quotes/quote-sources/utils.d.ts +9 -0
- package/dist/services/quotes/quote-sources/utils.js +37 -0
- package/dist/services/quotes/quote-sources/utils.js.map +1 -0
- package/dist/services/quotes/quote-sources/wrappers/buy-to-sell-order-wrapper.d.ts +6 -0
- package/dist/services/quotes/quote-sources/wrappers/buy-to-sell-order-wrapper.js +73 -0
- package/dist/services/quotes/quote-sources/wrappers/buy-to-sell-order-wrapper.js.map +1 -0
- package/dist/services/quotes/quote-sources/wrappers/forced-timeout-wrapper.d.ts +2 -0
- package/dist/services/quotes/quote-sources/wrappers/forced-timeout-wrapper.js +27 -0
- package/dist/services/quotes/quote-sources/wrappers/forced-timeout-wrapper.js.map +1 -0
- package/dist/services/quotes/quote-sources/xy-finance-quote-source.d.ts +16 -0
- package/dist/services/quotes/quote-sources/xy-finance-quote-source.js +87 -0
- package/dist/services/quotes/quote-sources/xy-finance-quote-source.js.map +1 -0
- package/dist/services/quotes/source-lists/batch-api-source-list.d.ts +30 -0
- package/dist/services/quotes/source-lists/batch-api-source-list.js +62 -0
- package/dist/services/quotes/source-lists/batch-api-source-list.js.map +1 -0
- package/dist/services/quotes/source-lists/index.d.ts +1 -0
- package/dist/services/quotes/source-lists/index.js +3 -0
- package/dist/services/quotes/source-lists/index.js.map +1 -0
- package/dist/services/quotes/source-lists/local-source-list.d.ts +21 -0
- package/dist/services/quotes/source-lists/local-source-list.js +157 -0
- package/dist/services/quotes/source-lists/local-source-list.js.map +1 -0
- package/dist/services/quotes/source-lists/overridable-source-list.d.ts +25 -0
- package/dist/services/quotes/source-lists/overridable-source-list.js +70 -0
- package/dist/services/quotes/source-lists/overridable-source-list.js.map +1 -0
- package/dist/services/quotes/source-lists/types.d.ts +44 -0
- package/dist/services/quotes/source-lists/types.js +3 -0
- package/dist/services/quotes/source-lists/types.js.map +1 -0
- package/dist/services/quotes/source-lists/utils.d.ts +5 -0
- package/dist/services/quotes/source-lists/utils.js +29 -0
- package/dist/services/quotes/source-lists/utils.js.map +1 -0
- package/dist/services/quotes/source-registry.d.ts +70 -0
- package/dist/services/quotes/source-registry.js +57 -0
- package/dist/services/quotes/source-registry.js.map +1 -0
- package/dist/services/quotes/types.d.ts +204 -0
- package/dist/services/quotes/types.js +3 -0
- package/dist/services/quotes/types.js.map +1 -0
- package/dist/shared/abis/erc20.d.ts +86 -0
- package/dist/shared/abis/erc20.js +116 -0
- package/dist/shared/abis/erc20.js.map +1 -0
- package/dist/shared/alchemy.d.ts +7 -0
- package/dist/shared/alchemy.js +35 -0
- package/dist/shared/alchemy.js.map +1 -0
- package/dist/shared/auto-update-cache.d.ts +23 -0
- package/dist/shared/auto-update-cache.js +38 -0
- package/dist/shared/auto-update-cache.js.map +1 -0
- package/dist/shared/concurrent-lru-cache.d.ts +66 -0
- package/dist/shared/concurrent-lru-cache.js +156 -0
- package/dist/shared/concurrent-lru-cache.js.map +1 -0
- package/dist/shared/constants.d.ts +12 -0
- package/dist/shared/constants.js +20 -0
- package/dist/shared/constants.js.map +1 -0
- package/dist/shared/contracts.d.ts +27 -0
- package/dist/shared/contracts.js +41 -0
- package/dist/shared/contracts.js.map +1 -0
- package/dist/shared/deferred.d.ts +12 -0
- package/dist/shared/deferred.js +32 -0
- package/dist/shared/deferred.js.map +1 -0
- package/dist/shared/defi-llama.d.ts +72 -0
- package/dist/shared/defi-llama.js +247 -0
- package/dist/shared/defi-llama.js.map +1 -0
- package/dist/shared/index.d.ts +10 -0
- package/dist/shared/index.js +51 -0
- package/dist/shared/index.js.map +1 -0
- package/dist/shared/requirements-and-support.d.ts +14 -0
- package/dist/shared/requirements-and-support.js +110 -0
- package/dist/shared/requirements-and-support.js.map +1 -0
- package/dist/shared/timeouts.d.ts +10 -0
- package/dist/shared/timeouts.js +41 -0
- package/dist/shared/timeouts.js.map +1 -0
- package/dist/shared/triggerable-promise.d.ts +9 -0
- package/dist/shared/triggerable-promise.js +16 -0
- package/dist/shared/triggerable-promise.js.map +1 -0
- package/dist/shared/utils.d.ts +39 -0
- package/dist/shared/utils.js +119 -0
- package/dist/shared/utils.js.map +1 -0
- package/dist/shared/viem.d.ts +5 -0
- package/dist/shared/viem.js +18 -0
- package/dist/shared/viem.js.map +1 -0
- package/dist/shared/wait.d.ts +7 -0
- package/dist/shared/wait.js +34 -0
- package/dist/shared/wait.js.map +1 -0
- package/dist/types.d.ts +99 -0
- package/dist/types.js +13 -0
- package/dist/types.js.map +1 -0
- package/dist/utility-types.d.ts +46 -0
- package/dist/utility-types.js +3 -0
- package/dist/utility-types.js.map +1 -0
- package/package.json +2 -1
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ChainId, TimeString, TokenAddress } from '../../../types';
|
|
2
|
+
import { CacheConfig } from '../../../shared/concurrent-lru-cache';
|
|
3
|
+
import { AllowanceInput, IAllowanceSource, OwnerAddress, SpenderAddress } from '../types';
|
|
4
|
+
export declare class CachedAllowanceSource implements IAllowanceSource {
|
|
5
|
+
private readonly source;
|
|
6
|
+
private readonly cache;
|
|
7
|
+
constructor(source: IAllowanceSource, config: CacheConfig);
|
|
8
|
+
supportedChains(): ChainId[];
|
|
9
|
+
getAllowances({ allowances, config, }: {
|
|
10
|
+
allowances: AllowanceInput[];
|
|
11
|
+
config?: {
|
|
12
|
+
timeout?: TimeString;
|
|
13
|
+
};
|
|
14
|
+
}): Promise<Record<ChainId, Record<TokenAddress, Record<OwnerAddress, Record<SpenderAddress, bigint>>>>>;
|
|
15
|
+
private fetchTokens;
|
|
16
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CachedAllowanceSource = void 0;
|
|
4
|
+
const concurrent_lru_cache_1 = require("../../../shared/concurrent-lru-cache");
|
|
5
|
+
class CachedAllowanceSource {
|
|
6
|
+
constructor(source, config) {
|
|
7
|
+
this.source = source;
|
|
8
|
+
this.cache = new concurrent_lru_cache_1.ConcurrentLRUCache({
|
|
9
|
+
calculate: (ownerSpendersInChain) => this.fetchTokens(ownerSpendersInChain),
|
|
10
|
+
config,
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
supportedChains() {
|
|
14
|
+
return this.source.supportedChains();
|
|
15
|
+
}
|
|
16
|
+
async getAllowances({ allowances, config, }) {
|
|
17
|
+
const keys = allowanceChecksToKeys(allowances);
|
|
18
|
+
const result = await this.cache.getOrCalculate({ keys, timeout: config?.timeout });
|
|
19
|
+
return keyResultsToResult(result);
|
|
20
|
+
}
|
|
21
|
+
async fetchTokens(keys) {
|
|
22
|
+
const allowances = keysToAllowanceChecks(keys);
|
|
23
|
+
const result = await this.source.getAllowances({ allowances });
|
|
24
|
+
return resultsToKeyResults(result);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
exports.CachedAllowanceSource = CachedAllowanceSource;
|
|
28
|
+
function allowanceChecksToKeys(allowances) {
|
|
29
|
+
return allowances.map(({ chainId, token, owner, spender }) => toKey(chainId, token, owner, spender));
|
|
30
|
+
}
|
|
31
|
+
function resultsToKeyResults(result) {
|
|
32
|
+
const keyResults = {};
|
|
33
|
+
for (const chainId in result) {
|
|
34
|
+
for (const token in result[chainId]) {
|
|
35
|
+
for (const owner in result[chainId][token]) {
|
|
36
|
+
for (const spender in result[chainId][token][owner]) {
|
|
37
|
+
const key = toKey(Number(chainId), token, owner, spender);
|
|
38
|
+
keyResults[key] = result[chainId][token][owner][spender];
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return keyResults;
|
|
44
|
+
}
|
|
45
|
+
function keysToAllowanceChecks(keys) {
|
|
46
|
+
return keys.map(fromKey);
|
|
47
|
+
}
|
|
48
|
+
function keyResultsToResult(keyResults) {
|
|
49
|
+
const result = {};
|
|
50
|
+
for (const [key, amount] of Object.entries(keyResults)) {
|
|
51
|
+
const { chainId, token, owner, spender } = fromKey(key);
|
|
52
|
+
if (!(chainId in result))
|
|
53
|
+
result[chainId] = {};
|
|
54
|
+
if (!(token in result[chainId]))
|
|
55
|
+
result[chainId][token] = {};
|
|
56
|
+
if (!(owner in result[chainId][token]))
|
|
57
|
+
result[chainId][token][owner] = {};
|
|
58
|
+
result[chainId][token][owner][spender] = amount;
|
|
59
|
+
}
|
|
60
|
+
return result;
|
|
61
|
+
}
|
|
62
|
+
function toKey(chainId, token, owner, spender) {
|
|
63
|
+
return `${chainId}-${token}-${owner}-${spender}`;
|
|
64
|
+
}
|
|
65
|
+
function fromKey(key) {
|
|
66
|
+
const [chainId, token, owner, spender] = key.split('-');
|
|
67
|
+
return { chainId: Number(chainId), token, owner, spender };
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=cached-allowance-source.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cached-allowance-source.js","sourceRoot":"","sources":["../../../../src/services/allowances/allowance-sources/cached-allowance-source.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ChainId, TimeString, TokenAddress } from '../../../types';
|
|
2
|
+
import { AllowanceInput, IAllowanceSource, OwnerAddress, SpenderAddress } from '../types';
|
|
3
|
+
import { IProviderService } from '../../providers';
|
|
4
|
+
export declare class RPCAllowanceSource implements IAllowanceSource {
|
|
5
|
+
private readonly providerService;
|
|
6
|
+
constructor(providerService: IProviderService);
|
|
7
|
+
supportedChains(): ChainId[];
|
|
8
|
+
getAllowances({ allowances, config, }: {
|
|
9
|
+
allowances: AllowanceInput[];
|
|
10
|
+
config?: {
|
|
11
|
+
timeout?: TimeString;
|
|
12
|
+
};
|
|
13
|
+
}): Promise<Record<ChainId, Record<TokenAddress, Record<OwnerAddress, Record<SpenderAddress, bigint>>>>>;
|
|
14
|
+
private getAllowancesInChain;
|
|
15
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.RPCAllowanceSource = void 0;
|
|
7
|
+
const timeouts_1 = require("../../../shared/timeouts");
|
|
8
|
+
const utils_1 = require("../../../shared/utils");
|
|
9
|
+
const erc20_1 = __importDefault(require("../../../shared/abis/erc20"));
|
|
10
|
+
const utils_2 = require("../../providers/utils");
|
|
11
|
+
class RPCAllowanceSource {
|
|
12
|
+
constructor(providerService) {
|
|
13
|
+
this.providerService = providerService;
|
|
14
|
+
}
|
|
15
|
+
supportedChains() {
|
|
16
|
+
return this.providerService.supportedChains();
|
|
17
|
+
}
|
|
18
|
+
async getAllowances({ allowances, config, }) {
|
|
19
|
+
const groupedByChain = (0, utils_1.groupByChain)(allowances);
|
|
20
|
+
const promises = Object.entries(groupedByChain).map(async ([chainId, checks]) => [
|
|
21
|
+
Number(chainId),
|
|
22
|
+
await (0, timeouts_1.timeoutPromise)(this.getAllowancesInChain(Number(chainId), checks), config?.timeout, { reduceBy: '100' }),
|
|
23
|
+
]);
|
|
24
|
+
return Object.fromEntries(await (0, utils_1.filterRejectedResults)(promises));
|
|
25
|
+
}
|
|
26
|
+
async getAllowancesInChain(chainId, checks) {
|
|
27
|
+
const contracts = checks.map(({ token, owner, spender }) => ({
|
|
28
|
+
address: token,
|
|
29
|
+
abi: erc20_1.default,
|
|
30
|
+
functionName: 'allowance',
|
|
31
|
+
args: [owner, spender],
|
|
32
|
+
}));
|
|
33
|
+
const multicallResults = contracts.length
|
|
34
|
+
? await this.providerService
|
|
35
|
+
.getViemPublicClient({ chainId })
|
|
36
|
+
.multicall({ multicallAddress: utils_2.MULTICALL_CONTRACT.address(chainId), contracts, batchSize: 0 })
|
|
37
|
+
: [];
|
|
38
|
+
const result = {};
|
|
39
|
+
for (let i = 0; i < multicallResults.length; i++) {
|
|
40
|
+
const multicallResult = multicallResults[i];
|
|
41
|
+
if (multicallResult.status === 'failure')
|
|
42
|
+
continue;
|
|
43
|
+
const { token, owner, spender } = checks[i];
|
|
44
|
+
if (!(token in result))
|
|
45
|
+
result[token] = {};
|
|
46
|
+
if (!(owner in result[token]))
|
|
47
|
+
result[token][owner] = {};
|
|
48
|
+
result[token][owner][spender] = multicallResult.result;
|
|
49
|
+
}
|
|
50
|
+
return result;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
exports.RPCAllowanceSource = RPCAllowanceSource;
|
|
54
|
+
//# sourceMappingURL=rpc-allowance-source.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rpc-allowance-source.js","sourceRoot":"","sources":["../../../../src/services/allowances/allowance-sources/rpc-allowance-source.ts"],"names":[],"mappings":";;;;;;AAEA,+CAAkD;AAClD,yCAAoE;AACpE,+DAA2C;AAG3C,qDAA+D;AAE/D,MAAa,kBAAkB;IAC7B,YAA6B,eAAiC;QAAjC,oBAAe,GAAf,eAAe,CAAkB;IAAG,CAAC;IAElE,eAAe;QACb,OAAO,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,EAClB,UAAU,EACV,MAAM,GAIP;QACC,MAAM,cAAc,GAAG,IAAA,oBAAY,EAAC,UAAU,CAAC,CAAC;QAEhD,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;YAC/E,MAAM,CAAC,OAAO,CAAC;YACf,MAAM,IAAA,yBAAc,EAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;SAC/G,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,IAAA,6BAAqB,EAAC,QAAQ,CAAC,CAAC,CAAC;IACnE,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAAC,OAAgB,EAAE,MAAyC;QAC5F,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;YAC3D,OAAO,EAAE,KAAoB;YAC7B,GAAG,EAAE,eAAS;YACd,YAAY,EAAE,WAAW;YACzB,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC;SACvB,CAAC,CAAC,CAAC;QACJ,MAAM,gBAAgB,GAAG,SAAS,CAAC,MAAM;YACvC,CAAC,CAAC,MAAM,IAAI,CAAC,eAAe;iBACvB,mBAAmB,CAAC,EAAE,OAAO,EAAE,CAAC;iBAChC,SAAS,CAAC,EAAE,gBAAgB,EAAE,0BAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;YAClG,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,MAAM,GAA+E,EAAE,CAAC;QAC9F,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACjD,MAAM,eAAe,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;YAC5C,IAAI,eAAe,CAAC,MAAM,KAAK,SAAS;gBAAE,SAAS;YACnD,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAC5C,IAAI,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC;gBAAE,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;YAC3C,IAAI,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;gBAAE,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;YACzD,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,eAAe,CAAC,MAA2B,CAAC;QAC9E,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AA9CD,gDA8CC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { IAllowanceService, IAllowanceSource, AllowanceInput } from './types';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/allowances/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Address, ChainId, TimeString, TokenAddress } from '../../types';
|
|
2
|
+
export type OwnerAddress = Address;
|
|
3
|
+
export type SpenderAddress = Address;
|
|
4
|
+
export type IAllowanceService = {
|
|
5
|
+
supportedChains(): ChainId[];
|
|
6
|
+
getAllowanceInChain(_: {
|
|
7
|
+
chainId: ChainId;
|
|
8
|
+
token: TokenAddress;
|
|
9
|
+
owner: OwnerAddress;
|
|
10
|
+
spender: SpenderAddress;
|
|
11
|
+
config?: {
|
|
12
|
+
timeout?: TimeString;
|
|
13
|
+
};
|
|
14
|
+
}): Promise<bigint>;
|
|
15
|
+
getAllowancesInChain(_: {
|
|
16
|
+
chainId: ChainId;
|
|
17
|
+
allowances: Omit<AllowanceInput, 'chainId'>[];
|
|
18
|
+
config?: {
|
|
19
|
+
timeout?: TimeString;
|
|
20
|
+
};
|
|
21
|
+
}): Promise<Record<TokenAddress, Record<OwnerAddress, Record<SpenderAddress, bigint>>>>;
|
|
22
|
+
getAllowances(_: {
|
|
23
|
+
allowances: AllowanceInput[];
|
|
24
|
+
config?: {
|
|
25
|
+
timeout?: TimeString;
|
|
26
|
+
};
|
|
27
|
+
}): Promise<Record<ChainId, Record<TokenAddress, Record<OwnerAddress, Record<SpenderAddress, bigint>>>>>;
|
|
28
|
+
};
|
|
29
|
+
export type IAllowanceSource = {
|
|
30
|
+
supportedChains(): ChainId[];
|
|
31
|
+
getAllowances(_: {
|
|
32
|
+
allowances: AllowanceInput[];
|
|
33
|
+
config?: {
|
|
34
|
+
timeout?: TimeString;
|
|
35
|
+
};
|
|
36
|
+
}): Promise<Record<ChainId, Record<TokenAddress, Record<OwnerAddress, Record<SpenderAddress, bigint>>>>>;
|
|
37
|
+
};
|
|
38
|
+
export type AllowanceInput = {
|
|
39
|
+
chainId: ChainId;
|
|
40
|
+
token: TokenAddress;
|
|
41
|
+
owner: Address;
|
|
42
|
+
spender: Address;
|
|
43
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/services/allowances/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { Address, ChainId, TimeString, TokenAddress } from '../../types';
|
|
2
|
+
import { BalanceInput, IBalanceService, IBalanceSource } from './types';
|
|
3
|
+
export declare class BalanceService implements IBalanceService {
|
|
4
|
+
private readonly source;
|
|
5
|
+
constructor(source: IBalanceSource);
|
|
6
|
+
supportedChains(): ChainId[];
|
|
7
|
+
getBalancesForAccountInChain({ chainId, account, tokens, config, }: {
|
|
8
|
+
chainId: ChainId;
|
|
9
|
+
account: Address;
|
|
10
|
+
tokens: TokenAddress[];
|
|
11
|
+
config?: {
|
|
12
|
+
timeout?: TimeString;
|
|
13
|
+
};
|
|
14
|
+
}): Promise<Record<TokenAddress, bigint>>;
|
|
15
|
+
getBalancesForAccount({ account, tokens, config, }: {
|
|
16
|
+
account: Address;
|
|
17
|
+
tokens: Omit<BalanceInput, 'account'>[];
|
|
18
|
+
config?: {
|
|
19
|
+
timeout?: TimeString;
|
|
20
|
+
};
|
|
21
|
+
}): Promise<Record<ChainId, Record<TokenAddress, bigint>>>;
|
|
22
|
+
getBalancesInChain({ chainId, tokens, config, }: {
|
|
23
|
+
chainId: ChainId;
|
|
24
|
+
tokens: Omit<BalanceInput, 'chainId'>[];
|
|
25
|
+
config?: {
|
|
26
|
+
timeout?: TimeString;
|
|
27
|
+
};
|
|
28
|
+
}): Promise<Record<string, Record<string, bigint>>>;
|
|
29
|
+
getBalances({ tokens, config }: {
|
|
30
|
+
tokens: BalanceInput[];
|
|
31
|
+
config?: {
|
|
32
|
+
timeout?: TimeString;
|
|
33
|
+
};
|
|
34
|
+
}): Promise<Record<ChainId, Record<string, Record<string, bigint>>>>;
|
|
35
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BalanceService = void 0;
|
|
4
|
+
const timeouts_1 = require("../../shared/timeouts");
|
|
5
|
+
class BalanceService {
|
|
6
|
+
constructor(source) {
|
|
7
|
+
this.source = source;
|
|
8
|
+
}
|
|
9
|
+
supportedChains() {
|
|
10
|
+
return this.source.supportedChains();
|
|
11
|
+
}
|
|
12
|
+
async getBalancesForAccountInChain({ chainId, account, tokens, config, }) {
|
|
13
|
+
const result = await this.getBalancesForAccount({
|
|
14
|
+
account,
|
|
15
|
+
tokens: tokens.map((token) => ({ chainId, token })),
|
|
16
|
+
config,
|
|
17
|
+
});
|
|
18
|
+
return result[chainId] ?? {};
|
|
19
|
+
}
|
|
20
|
+
async getBalancesForAccount({ account, tokens, config, }) {
|
|
21
|
+
const result = await this.getBalances({ tokens: tokens.map((token) => ({ account, ...token })), config });
|
|
22
|
+
const entries = Object.entries(result)
|
|
23
|
+
.map(([chainId, result]) => [Number(chainId), result[account]])
|
|
24
|
+
.filter((entry) => entry[1] !== undefined);
|
|
25
|
+
return Object.fromEntries(entries);
|
|
26
|
+
}
|
|
27
|
+
async getBalancesInChain({ chainId, tokens, config, }) {
|
|
28
|
+
const result = await this.getBalances({ tokens: tokens.map((token) => ({ chainId, ...token })), config });
|
|
29
|
+
return result[chainId] ?? {};
|
|
30
|
+
}
|
|
31
|
+
getBalances({ tokens, config }) {
|
|
32
|
+
return (0, timeouts_1.timeoutPromise)(this.source.getBalances({ tokens, config }), config?.timeout);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
exports.BalanceService = BalanceService;
|
|
36
|
+
//# sourceMappingURL=balance-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"balance-service.js","sourceRoot":"","sources":["../../../src/services/balances/balance-service.ts"],"names":[],"mappings":";;;AAEA,+CAAkD;AAElD,MAAa,cAAc;IACzB,YAA6B,MAAsB;QAAtB,WAAM,GAAN,MAAM,CAAgB;IAAG,CAAC;IAEvD,eAAe;QACb,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,4BAA4B,CAAC,EACjC,OAAO,EACP,OAAO,EACP,MAAM,EACN,MAAM,GAMP;QACC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC;YAC9C,OAAO;YACP,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YACnD,MAAM;SACP,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,EAC1B,OAAO,EACP,MAAM,EACN,MAAM,GAKP;QACC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1G,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;aACnC,GAAG,CAAsD,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;aACnH,MAAM,CAAC,CAAC,KAAK,EAAoD,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;QAC/F,OAAO,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,EACvB,OAAO,EACP,MAAM,EACN,MAAM,GAKP;QACC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1G,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IAC/B,CAAC;IAED,WAAW,CAAC,EAAE,MAAM,EAAE,MAAM,EAAiE;QAC3F,OAAO,IAAA,yBAAc,EAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACtF,CAAC;CACF;AA1DD,wCA0DC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Address, ChainId, TimeString, TokenAddress } from '../../../types';
|
|
2
|
+
import { CacheConfig } from '../../../shared/concurrent-lru-cache';
|
|
3
|
+
import { BalanceInput, IBalanceSource } from '../types';
|
|
4
|
+
export declare class CachedBalanceSource implements IBalanceSource {
|
|
5
|
+
private readonly source;
|
|
6
|
+
private readonly cache;
|
|
7
|
+
constructor(source: IBalanceSource, config: CacheConfig);
|
|
8
|
+
supportedChains(): ChainId[];
|
|
9
|
+
getBalances({ tokens, config, }: {
|
|
10
|
+
tokens: BalanceInput[];
|
|
11
|
+
config?: {
|
|
12
|
+
timeout?: TimeString;
|
|
13
|
+
};
|
|
14
|
+
}): Promise<Record<ChainId, Record<Address, Record<TokenAddress, bigint>>>>;
|
|
15
|
+
private fetchBalancesForTokens;
|
|
16
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CachedBalanceSource = void 0;
|
|
4
|
+
const concurrent_lru_cache_1 = require("../../../shared/concurrent-lru-cache");
|
|
5
|
+
class CachedBalanceSource {
|
|
6
|
+
constructor(source, config) {
|
|
7
|
+
this.source = source;
|
|
8
|
+
this.cache = new concurrent_lru_cache_1.ConcurrentLRUCacheWithContext({
|
|
9
|
+
calculate: (config, keysTokenInChain) => this.fetchBalancesForTokens(keysTokenInChain, config),
|
|
10
|
+
config,
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
supportedChains() {
|
|
14
|
+
return this.source.supportedChains();
|
|
15
|
+
}
|
|
16
|
+
async getBalances({ tokens, config, }) {
|
|
17
|
+
const keys = tokens.map(({ chainId, account, token }) => toKeyTokenInChain(chainId, account, token));
|
|
18
|
+
const amountsInChain = await this.cache.getOrCalculate({
|
|
19
|
+
keys,
|
|
20
|
+
timeout: config?.timeout,
|
|
21
|
+
context: config,
|
|
22
|
+
});
|
|
23
|
+
const result = {};
|
|
24
|
+
for (const key in amountsInChain) {
|
|
25
|
+
const { chainId, account, token } = fromKeyTokenInChain(key);
|
|
26
|
+
if (!(chainId in result))
|
|
27
|
+
result[chainId] = {};
|
|
28
|
+
if (!(account in result[chainId]))
|
|
29
|
+
result[chainId][account] = {};
|
|
30
|
+
result[chainId][account][token] = amountsInChain[key];
|
|
31
|
+
}
|
|
32
|
+
return result;
|
|
33
|
+
}
|
|
34
|
+
async fetchBalancesForTokens(keys, config) {
|
|
35
|
+
const tokens = keys.map((key) => fromKeyTokenInChain(key));
|
|
36
|
+
const balances = await this.source.getBalances({ tokens, config });
|
|
37
|
+
const result = {};
|
|
38
|
+
for (const key of keys) {
|
|
39
|
+
const { chainId, account, token } = fromKeyTokenInChain(key);
|
|
40
|
+
const balance = balances?.[chainId]?.[account]?.[token];
|
|
41
|
+
if (balance !== undefined) {
|
|
42
|
+
result[key] = balance;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return result;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
exports.CachedBalanceSource = CachedBalanceSource;
|
|
49
|
+
function toKeyTokenInChain(chainId, account, token) {
|
|
50
|
+
return `${chainId}-${account}-${token}`;
|
|
51
|
+
}
|
|
52
|
+
function fromKeyTokenInChain(key) {
|
|
53
|
+
const [chainId, account, token] = key.split('-');
|
|
54
|
+
return { chainId: Number(chainId), account, token };
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=cached-balance-source.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cached-balance-source.js","sourceRoot":"","sources":["../../../../src/services/balances/balance-sources/cached-balance-source.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Address, ChainId, TimeString, TokenAddress } from '../../../types';
|
|
2
|
+
import { ILogsService } from '../../logs';
|
|
3
|
+
import { IBalanceSource, BalanceInput } from '../types';
|
|
4
|
+
export declare class FastestBalanceSource implements IBalanceSource {
|
|
5
|
+
private readonly sources;
|
|
6
|
+
private readonly logger;
|
|
7
|
+
constructor(sources: IBalanceSource[], logs: ILogsService);
|
|
8
|
+
supportedChains(): ChainId[];
|
|
9
|
+
getBalances({ tokens, config, }: {
|
|
10
|
+
tokens: BalanceInput[];
|
|
11
|
+
config?: {
|
|
12
|
+
timeout?: TimeString;
|
|
13
|
+
};
|
|
14
|
+
}): Promise<Record<ChainId, Record<Address, Record<TokenAddress, bigint>>>>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FastestBalanceSource = void 0;
|
|
4
|
+
const timeouts_1 = require("../../../shared/timeouts");
|
|
5
|
+
const _chains_1 = require("../../../chains");
|
|
6
|
+
const utils_1 = require("./utils");
|
|
7
|
+
// This source will take a list of sources and combine the results of each one to try to fulfil
|
|
8
|
+
// the request. As soon as there there is a response that is valid for the request, it will be returned
|
|
9
|
+
class FastestBalanceSource {
|
|
10
|
+
constructor(sources, logs) {
|
|
11
|
+
this.sources = sources;
|
|
12
|
+
if (sources.length === 0)
|
|
13
|
+
throw new Error('No sources were specified');
|
|
14
|
+
this.logger = logs.getLogger({ name: 'FastestBalanceSource' });
|
|
15
|
+
}
|
|
16
|
+
supportedChains() {
|
|
17
|
+
return (0, _chains_1.chainsUnion)(this.sources.map((source) => source.supportedChains()));
|
|
18
|
+
}
|
|
19
|
+
getBalances({ tokens, config, }) {
|
|
20
|
+
const sourcesInChains = (0, utils_1.getSourcesThatSupportRequestOrFail)(tokens, this.sources);
|
|
21
|
+
const reducedTimeout = (0, timeouts_1.reduceTimeout)(config?.timeout, '100');
|
|
22
|
+
return new Promise(async (resolve, reject) => {
|
|
23
|
+
const result = {};
|
|
24
|
+
const allPromises = sourcesInChains.map((source) => (0, timeouts_1.timeoutPromise)(source.getBalances({
|
|
25
|
+
tokens: (0, utils_1.filterRequestForSource)(tokens, source),
|
|
26
|
+
config: { timeout: reducedTimeout },
|
|
27
|
+
}), reducedTimeout).then((response) => {
|
|
28
|
+
(0, utils_1.fillResponseWithNewResult)(result, response);
|
|
29
|
+
if ((0, utils_1.doesResponseFulfilRequest)(result, tokens).ok) {
|
|
30
|
+
resolve(result);
|
|
31
|
+
}
|
|
32
|
+
}));
|
|
33
|
+
Promise.allSettled(allPromises).then(() => {
|
|
34
|
+
const isOk = (0, utils_1.doesResponseFulfilRequest)(result, tokens);
|
|
35
|
+
if (!isOk.ok) {
|
|
36
|
+
// We couldn't fulfil the request, so we know we didn't resolve. We will revert then
|
|
37
|
+
const missingText = isOk.missing.map(({ chainId, account, token }) => `${chainId}-${account}-${token}`).join(',');
|
|
38
|
+
reject(new Error(`Failed to fulfil request: missing: ${missingText}`));
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.FastestBalanceSource = FastestBalanceSource;
|
|
45
|
+
//# sourceMappingURL=fastest-balance-source.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fastest-balance-source.js","sourceRoot":"","sources":["../../../../src/services/balances/balance-sources/fastest-balance-source.ts"],"names":[],"mappings":";;;AAAA,+CAAiE;AAEjE,qCAAsC;AAEtC,mCAA2I;AAG3I,+FAA+F;AAC/F,uGAAuG;AACvG,MAAa,oBAAoB;IAG/B,YAA6B,OAAyB,EAAE,IAAkB;QAA7C,YAAO,GAAP,OAAO,CAAkB;QACpD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QACvE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,eAAe;QACb,OAAO,IAAA,qBAAW,EAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED,WAAW,CAAC,EACV,MAAM,EACN,MAAM,GAIP;QACC,MAAM,eAAe,GAAG,IAAA,0CAAkC,EAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACjF,MAAM,cAAc,GAAG,IAAA,wBAAa,EAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QAC7D,OAAO,IAAI,OAAO,CAAiE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;YAC3G,MAAM,MAAM,GAAmE,EAAE,CAAC;YAClF,MAAM,WAAW,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CACjD,IAAA,yBAAc,EACZ,MAAM,CAAC,WAAW,CAAC;gBACjB,MAAM,EAAE,IAAA,8BAAsB,EAAC,MAAM,EAAE,MAAM,CAAC;gBAC9C,MAAM,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE;aACpC,CAAC,EACF,cAAc,CACf,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;gBAClB,IAAA,iCAAyB,EAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;gBAC5C,IAAI,IAAA,iCAAyB,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC;oBACjD,OAAO,CAAC,MAAM,CAAC,CAAC;gBAClB,CAAC;YACH,CAAC,CAAC,CACH,CAAC;YAEF,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;gBACxC,MAAM,IAAI,GAAG,IAAA,iCAAyB,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBACvD,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;oBACb,oFAAoF;oBACpF,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,GAAG,OAAO,IAAI,OAAO,IAAI,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAClH,MAAM,CAAC,IAAI,KAAK,CAAC,sCAAsC,WAAW,EAAE,CAAC,CAAC,CAAC;gBACzE,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAhDD,oDAgDC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Address, ChainId, TimeString, TokenAddress } from '../../../types';
|
|
2
|
+
import { BalanceInput, IBalanceSource } from '../types';
|
|
3
|
+
import { IProviderService } from '../../providers/types';
|
|
4
|
+
import { ILogsService } from '../../logs';
|
|
5
|
+
export type RPCBalanceSourceConfig = {
|
|
6
|
+
batching?: {
|
|
7
|
+
maxSizeInBytes: number;
|
|
8
|
+
};
|
|
9
|
+
};
|
|
10
|
+
export declare class RPCBalanceSource implements IBalanceSource {
|
|
11
|
+
private readonly providerService;
|
|
12
|
+
private readonly config?;
|
|
13
|
+
private readonly logger;
|
|
14
|
+
constructor(providerService: IProviderService, logs: ILogsService, config?: RPCBalanceSourceConfig | undefined);
|
|
15
|
+
getBalances({ tokens, config, }: {
|
|
16
|
+
tokens: BalanceInput[];
|
|
17
|
+
config?: {
|
|
18
|
+
timeout?: TimeString;
|
|
19
|
+
};
|
|
20
|
+
}): Promise<Record<ChainId, Record<Address, Record<TokenAddress, bigint>>>>;
|
|
21
|
+
supportedChains(): ChainId[];
|
|
22
|
+
private fetchBalancesInChain;
|
|
23
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.RPCBalanceSource = void 0;
|
|
7
|
+
const viem_1 = require("viem");
|
|
8
|
+
const erc20_1 = __importDefault(require("../../../shared/abis/erc20"));
|
|
9
|
+
const utils_1 = require("../../providers/utils");
|
|
10
|
+
const utils_2 = require("../../../shared/utils");
|
|
11
|
+
const constants_1 = require("../../../shared/constants");
|
|
12
|
+
const timeouts_1 = require("../../../shared/timeouts");
|
|
13
|
+
class RPCBalanceSource {
|
|
14
|
+
constructor(providerService, logs, config) {
|
|
15
|
+
this.providerService = providerService;
|
|
16
|
+
this.config = config;
|
|
17
|
+
this.logger = logs.getLogger({ name: 'RPCBalanceSource' });
|
|
18
|
+
}
|
|
19
|
+
async getBalances({ tokens, config, }) {
|
|
20
|
+
const groupedByChain = (0, utils_2.groupByChain)(tokens);
|
|
21
|
+
const promises = Object.entries(groupedByChain).map(async ([chainId, tokens]) => [
|
|
22
|
+
Number(chainId),
|
|
23
|
+
await (0, timeouts_1.timeoutPromise)(this.fetchBalancesInChain(Number(chainId), tokens), config?.timeout, {
|
|
24
|
+
reduceBy: '100',
|
|
25
|
+
onTimeout: (timeout) => this.logger.debug(`Fetch balances in chain ${chainId} timeouted after ${timeout}`),
|
|
26
|
+
}),
|
|
27
|
+
]);
|
|
28
|
+
return Object.fromEntries(await (0, utils_2.filterRejectedResults)(promises));
|
|
29
|
+
}
|
|
30
|
+
supportedChains() {
|
|
31
|
+
return this.providerService.supportedChains();
|
|
32
|
+
}
|
|
33
|
+
async fetchBalancesInChain(chainId, tokens, config) {
|
|
34
|
+
if (tokens.length === 0)
|
|
35
|
+
return {};
|
|
36
|
+
const contracts = tokens.map(({ account, token }) => (0, utils_2.isSameAddress)(token, constants_1.Addresses.NATIVE_TOKEN)
|
|
37
|
+
? {
|
|
38
|
+
abi: MULTICALL_ABI,
|
|
39
|
+
functionName: 'getEthBalance',
|
|
40
|
+
args: [account],
|
|
41
|
+
address: utils_1.MULTICALL_CONTRACT.address(chainId),
|
|
42
|
+
}
|
|
43
|
+
: {
|
|
44
|
+
address: token,
|
|
45
|
+
abi: erc20_1.default,
|
|
46
|
+
functionName: 'balanceOf',
|
|
47
|
+
args: [account],
|
|
48
|
+
});
|
|
49
|
+
const multicallResults = await this.providerService.getViemPublicClient({ chainId }).multicall({
|
|
50
|
+
contracts,
|
|
51
|
+
multicallAddress: utils_1.MULTICALL_CONTRACT.address(chainId),
|
|
52
|
+
batchSize: this.config?.batching?.maxSizeInBytes ?? 0,
|
|
53
|
+
});
|
|
54
|
+
const result = {};
|
|
55
|
+
for (let i = 0; i < tokens.length; i++) {
|
|
56
|
+
const multicallResult = multicallResults[i];
|
|
57
|
+
if (multicallResult.status === 'failure')
|
|
58
|
+
continue;
|
|
59
|
+
const { account, token } = tokens[i];
|
|
60
|
+
if (!(account in result))
|
|
61
|
+
result[account] = {};
|
|
62
|
+
result[account][token] = multicallResult.result;
|
|
63
|
+
}
|
|
64
|
+
return result;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
exports.RPCBalanceSource = RPCBalanceSource;
|
|
68
|
+
// The Multicall3 contract has this function that we can use to fetch all native balances in one call
|
|
69
|
+
const MULTICALL_ABI = (0, viem_1.parseAbi)(['function getEthBalance(address addr) external view returns (uint256 balance)']);
|
|
70
|
+
//# sourceMappingURL=rpc-balance-source.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rpc-balance-source.js","sourceRoot":"","sources":["../../../../src/services/balances/balance-sources/rpc-balance-source.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Address, ChainId, TokenAddress } from '../../../types';
|
|
2
|
+
import { IBalanceSource, BalanceInput } from '../types';
|
|
3
|
+
export declare function fillResponseWithNewResult(result: Record<ChainId, Record<Address, Record<TokenAddress, bigint>>>, newResult: Record<ChainId, Record<Address, Record<TokenAddress, bigint>>>): void;
|
|
4
|
+
export declare function doesResponseFulfilRequest(result: Record<ChainId, Record<Address, Record<TokenAddress, bigint>>>, request: BalanceInput[]): {
|
|
5
|
+
ok: true;
|
|
6
|
+
} | {
|
|
7
|
+
ok: false;
|
|
8
|
+
missing: {
|
|
9
|
+
chainId: ChainId;
|
|
10
|
+
account: Address;
|
|
11
|
+
token: TokenAddress;
|
|
12
|
+
}[];
|
|
13
|
+
};
|
|
14
|
+
export declare function filterRequestForSource(request: BalanceInput[], source: IBalanceSource): BalanceInput[];
|
|
15
|
+
export declare function getSourcesThatSupportRequestOrFail(request: BalanceInput[], sources: IBalanceSource[]): IBalanceSource[];
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getSourcesThatSupportRequestOrFail = exports.filterRequestForSource = exports.doesResponseFulfilRequest = exports.fillResponseWithNewResult = void 0;
|
|
4
|
+
function fillResponseWithNewResult(result, newResult) {
|
|
5
|
+
for (const chainId in newResult) {
|
|
6
|
+
if (!(chainId in result))
|
|
7
|
+
result[chainId] = {};
|
|
8
|
+
for (const address in newResult[chainId]) {
|
|
9
|
+
if (!(address in result[chainId]))
|
|
10
|
+
result[chainId][address] = {};
|
|
11
|
+
for (const token in newResult[chainId][address]) {
|
|
12
|
+
if (!result[chainId]?.[address]?.[token]) {
|
|
13
|
+
result[chainId][address][token] = newResult[chainId][address][token];
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
exports.fillResponseWithNewResult = fillResponseWithNewResult;
|
|
20
|
+
function doesResponseFulfilRequest(result, request) {
|
|
21
|
+
const missing = [];
|
|
22
|
+
for (const { chainId, token, account } of request) {
|
|
23
|
+
if (typeof result[chainId]?.[account]?.[token] === 'undefined') {
|
|
24
|
+
missing.push({ chainId, account, token });
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return missing.length > 0 ? { ok: false, missing } : { ok: true };
|
|
28
|
+
}
|
|
29
|
+
exports.doesResponseFulfilRequest = doesResponseFulfilRequest;
|
|
30
|
+
function filterRequestForSource(request, source) {
|
|
31
|
+
const support = source.supportedChains();
|
|
32
|
+
return request.filter(({ chainId }) => support.includes(chainId));
|
|
33
|
+
}
|
|
34
|
+
exports.filterRequestForSource = filterRequestForSource;
|
|
35
|
+
function getSourcesThatSupportRequestOrFail(request, sources) {
|
|
36
|
+
const chainsInRequest = new Set(request.map(({ chainId }) => chainId));
|
|
37
|
+
const sourcesInChain = sources.filter((source) => source.supportedChains().some((chainId) => chainsInRequest.has(chainId)));
|
|
38
|
+
if (sourcesInChain.length === 0)
|
|
39
|
+
throw new Error('Operation not supported');
|
|
40
|
+
return sourcesInChain;
|
|
41
|
+
}
|
|
42
|
+
exports.getSourcesThatSupportRequestOrFail = getSourcesThatSupportRequestOrFail;
|
|
43
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/services/balances/balance-sources/utils.ts"],"names":[],"mappings":";;;AAGA,SAAgB,yBAAyB,CACvC,MAAsE,EACtE,SAAyE;IAEzE,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE,CAAC;QAChC,IAAI,CAAC,CAAC,OAAO,IAAI,MAAM,CAAC;YAAE,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QAC/C,KAAK,MAAM,OAAO,IAAI,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;YACzC,IAAI,CAAC,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC;gBAAE,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;YACjE,KAAK,MAAM,KAAK,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;gBAChD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;oBACzC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC;gBACvE,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAfD,8DAeC;AAED,SAAgB,yBAAyB,CACvC,MAAsE,EACtE,OAAuB;IAEvB,MAAM,OAAO,GAAkE,EAAE,CAAC;IAClF,KAAK,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,OAAO,EAAE,CAAC;QAClD,IAAI,OAAO,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,WAAW,EAAE,CAAC;YAC/D,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACpE,CAAC;AAXD,8DAWC;AAED,SAAgB,sBAAsB,CAAC,OAAuB,EAAE,MAAsB;IACpF,MAAM,OAAO,GAAG,MAAM,CAAC,eAAe,EAAE,CAAC;IACzC,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AACpE,CAAC;AAHD,wDAGC;AAED,SAAgB,kCAAkC,CAAC,OAAuB,EAAE,OAAyB;IACnG,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACvE,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC5H,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC5E,OAAO,cAAc,CAAC;AACxB,CAAC;AALD,gFAKC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { IBalanceService, IBalanceSource, BalanceInput } from './types';
|