@0xkoaj/sdk 0.0.1-beta.1 → 0.0.1-beta.2
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 +304 -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,144 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.compareQuotesBy = exports.chooseQuotesBy = exports.sortQuotesBy = exports.COMPARE_USING = exports.COMPARE_BY = void 0;
|
|
4
|
+
const utils_1 = require("../../shared/utils");
|
|
5
|
+
exports.COMPARE_BY = [
|
|
6
|
+
// Compare spent gas and prioritize the ones with the least spent gas
|
|
7
|
+
'least-gas',
|
|
8
|
+
// Compare rates in terms of input vs output and prioritize the ones with the better rate
|
|
9
|
+
'most-swapped',
|
|
10
|
+
// Compare input vs output but take gas into account. So if a quote has a better rate but it's far more
|
|
11
|
+
// expensive in terms of gas, then it won't be prioritized. This compare method needs the usd price of the tokens
|
|
12
|
+
// to be available. If it isn't, it will default to 'most-swapped'
|
|
13
|
+
'most-swapped-accounting-for-gas',
|
|
14
|
+
];
|
|
15
|
+
exports.COMPARE_USING = ['sell/buy amounts', 'max sell/min buy amounts'];
|
|
16
|
+
function sortQuotesBy(quotes, sortBy, using) {
|
|
17
|
+
const compareFtn = getCompareFtn(sortBy);
|
|
18
|
+
return quotes.sort((q1, q2) => compareFtn(q1, q2, using));
|
|
19
|
+
}
|
|
20
|
+
exports.sortQuotesBy = sortQuotesBy;
|
|
21
|
+
function chooseQuotesBy(quotes, sortBy, using) {
|
|
22
|
+
if (quotes.length === 0)
|
|
23
|
+
throw new Error(`There are no quotes to choose from`);
|
|
24
|
+
const compareFtn = getCompareFtn(sortBy);
|
|
25
|
+
return quotes.reduce((q1, q2) => (compareFtn(q1, q2, using) <= 0 ? q1 : q2));
|
|
26
|
+
}
|
|
27
|
+
exports.chooseQuotesBy = chooseQuotesBy;
|
|
28
|
+
function compareQuotesBy(sortBy, using) {
|
|
29
|
+
const compareFtn = getCompareFtn(sortBy);
|
|
30
|
+
return (quote1, quote2) => compareFtn(quote1, quote2, using);
|
|
31
|
+
}
|
|
32
|
+
exports.compareQuotesBy = compareQuotesBy;
|
|
33
|
+
function getCompareFtn(compareBy) {
|
|
34
|
+
let prioritizedCompareFns;
|
|
35
|
+
switch (compareBy) {
|
|
36
|
+
case 'most-swapped-accounting-for-gas':
|
|
37
|
+
prioritizedCompareFns = [compareMostProfit, compareByMostSwapped, compareLeastGas];
|
|
38
|
+
break;
|
|
39
|
+
case 'most-swapped':
|
|
40
|
+
prioritizedCompareFns = [compareByMostSwapped, compareLeastGas];
|
|
41
|
+
break;
|
|
42
|
+
case 'least-gas':
|
|
43
|
+
prioritizedCompareFns = [compareLeastGas, compareMostProfit, compareByMostSwapped];
|
|
44
|
+
break;
|
|
45
|
+
}
|
|
46
|
+
return mergeCompareFtns(prioritizedCompareFns);
|
|
47
|
+
}
|
|
48
|
+
function amountExtractor(using) {
|
|
49
|
+
return using === 'sell/buy amounts'
|
|
50
|
+
? ({ sellAmount, buyAmount }) => ({ sellAmount, buyAmount })
|
|
51
|
+
: ({ maxSellAmount, minBuyAmount }) => ({ sellAmount: maxSellAmount, buyAmount: minBuyAmount });
|
|
52
|
+
}
|
|
53
|
+
function mergeCompareFtns(prioritizedCompareFns) {
|
|
54
|
+
return (quote1, quote2, using) => prioritizedCompareFns.reduce((accumCompareValue, compare) => accumCompareValue || compare(quote1, quote2, using), 0);
|
|
55
|
+
}
|
|
56
|
+
function compareMostProfit(quote1, quote2, using) {
|
|
57
|
+
const [profit1, profit2] = [calculateProfit(quote1, using), calculateProfit(quote2, using)];
|
|
58
|
+
if (!profit1 || !profit2) {
|
|
59
|
+
if (!profit1 && !profit2) {
|
|
60
|
+
return 0;
|
|
61
|
+
}
|
|
62
|
+
else if (profit1) {
|
|
63
|
+
return -1;
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
return 1;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
else if (profit1 === profit2) {
|
|
70
|
+
return 0;
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
return profit1 > profit2 ? -1 : 1;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
function compareByMostSwapped(quote1, quote2, using) {
|
|
77
|
+
if (!(0, utils_1.isSameAddress)(quote1.sellToken.address, quote2.sellToken.address) || !(0, utils_1.isSameAddress)(quote1.buyToken.address, quote2.buyToken.address)) {
|
|
78
|
+
// If we are compating for different pairs, then we'll check profit without gas
|
|
79
|
+
const [profit1, profit2] = [calculateProfitWithoutGas(quote1, using), calculateProfitWithoutGas(quote2, using)];
|
|
80
|
+
if (!profit1 || !profit2) {
|
|
81
|
+
if (!profit1 && !profit2) {
|
|
82
|
+
return 0;
|
|
83
|
+
}
|
|
84
|
+
else if (profit1) {
|
|
85
|
+
return -1;
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
return 1;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
else if (profit1 === profit2) {
|
|
92
|
+
return 0;
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
return profit1 > profit2 ? -1 : 1;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
// If we are comparing quotes for the same pair of tokens, then will simply compare swap ammounts
|
|
99
|
+
const extract = amountExtractor(using);
|
|
100
|
+
const { sellAmount: sellAmount1, buyAmount: buyAmount1 } = extract(quote1);
|
|
101
|
+
const { sellAmount: sellAmount2, buyAmount: buyAmount2 } = extract(quote2);
|
|
102
|
+
const quote1BuyAmountRelativeToQuote2 = (0, utils_1.ruleOfThree)({ a: sellAmount1.amount, matchA: buyAmount1.amount, b: sellAmount2.amount });
|
|
103
|
+
if (BigInt(quote1BuyAmountRelativeToQuote2) > BigInt(buyAmount2.amount)) {
|
|
104
|
+
return -1;
|
|
105
|
+
}
|
|
106
|
+
else if (BigInt(quote1BuyAmountRelativeToQuote2) < BigInt(buyAmount2.amount)) {
|
|
107
|
+
return 1;
|
|
108
|
+
}
|
|
109
|
+
return 0;
|
|
110
|
+
}
|
|
111
|
+
function compareLeastGas(quote1, quote2) {
|
|
112
|
+
if (!quote1.gas || !quote2.gas) {
|
|
113
|
+
if (!quote1.gas && !quote2.gas) {
|
|
114
|
+
return 0;
|
|
115
|
+
}
|
|
116
|
+
else if (quote1.gas) {
|
|
117
|
+
return -1;
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
return 1;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
else if (BigInt(quote1.gas.estimatedGas) < BigInt(quote2.gas.estimatedGas)) {
|
|
124
|
+
return -1;
|
|
125
|
+
}
|
|
126
|
+
else if (BigInt(quote1.gas.estimatedGas) > BigInt(quote2.gas.estimatedGas)) {
|
|
127
|
+
return 1;
|
|
128
|
+
}
|
|
129
|
+
return 0;
|
|
130
|
+
}
|
|
131
|
+
function calculateProfit(quote, using) {
|
|
132
|
+
const { sellAmount, buyAmount } = amountExtractor(using)(quote);
|
|
133
|
+
const soldUSD = sellAmount.amountInUSD && Number(sellAmount.amountInUSD);
|
|
134
|
+
const boughtUSD = buyAmount.amountInUSD && Number(buyAmount.amountInUSD);
|
|
135
|
+
const gasCostUSD = quote.gas?.estimatedCostInUSD && Number(quote.gas.estimatedCostInUSD);
|
|
136
|
+
return !soldUSD || !boughtUSD || !gasCostUSD ? undefined : boughtUSD - soldUSD - gasCostUSD;
|
|
137
|
+
}
|
|
138
|
+
function calculateProfitWithoutGas(quote, using) {
|
|
139
|
+
const { sellAmount, buyAmount } = amountExtractor(using)(quote);
|
|
140
|
+
const soldUSD = sellAmount.amountInUSD && Number(sellAmount.amountInUSD);
|
|
141
|
+
const boughtUSD = buyAmount.amountInUSD && Number(buyAmount.amountInUSD);
|
|
142
|
+
return !soldUSD || !boughtUSD ? undefined : boughtUSD - soldUSD;
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=quote-compare.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quote-compare.js","sourceRoot":"","sources":["../../../src/services/quotes/quote-compare.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { BigIntish, ChainId, SupportInChain, TimeString } from '../../types';
|
|
2
|
+
import { FailedResponse, IQuoteService, QuoteRequest, QuoteResponse, IgnoreFailedResponses, SourceId, SourceMetadata, QuoteTransaction, EstimatedQuoteRequest, EstimatedQuoteResponse, QuoteResponseWithTx } from './types';
|
|
3
|
+
import { CompareQuotesBy, CompareQuotesUsing } from './quote-compare';
|
|
4
|
+
import { IQuoteSourceList } from './source-lists/types';
|
|
5
|
+
import { BaseTokenMetadata, IMetadataService } from '../metadata/types';
|
|
6
|
+
import { DefaultGasValues, IGasService } from '../gas/types';
|
|
7
|
+
import { IPriceService } from '../prices/types';
|
|
8
|
+
import { SourceConfig } from './source-registry';
|
|
9
|
+
type ConstructorParameters = {
|
|
10
|
+
priceService: IPriceService;
|
|
11
|
+
gasService: IGasService<DefaultGasValues>;
|
|
12
|
+
metadataService: IMetadataService<BaseTokenMetadata>;
|
|
13
|
+
sourceList: IQuoteSourceList;
|
|
14
|
+
defaultConfig: SourceConfig | undefined;
|
|
15
|
+
};
|
|
16
|
+
export declare class QuoteService implements IQuoteService {
|
|
17
|
+
private readonly priceService;
|
|
18
|
+
private readonly gasService;
|
|
19
|
+
private readonly metadataService;
|
|
20
|
+
private readonly sourceList;
|
|
21
|
+
private readonly defaultConfig;
|
|
22
|
+
constructor({ priceService, gasService, metadataService, sourceList, defaultConfig }: ConstructorParameters);
|
|
23
|
+
supportedSources(): {
|
|
24
|
+
[k: string]: SourceMetadata;
|
|
25
|
+
};
|
|
26
|
+
supportedChains(): ChainId[];
|
|
27
|
+
supportedSourcesInChain({ chainId }: {
|
|
28
|
+
chainId: ChainId;
|
|
29
|
+
}): {
|
|
30
|
+
[k: string]: SourceMetadata;
|
|
31
|
+
};
|
|
32
|
+
supportedGasSpeeds(): Record<ChainId, SupportInChain<DefaultGasValues>>;
|
|
33
|
+
estimateQuotes({ request, config }: {
|
|
34
|
+
request: EstimatedQuoteRequest;
|
|
35
|
+
config?: {
|
|
36
|
+
timeout?: TimeString;
|
|
37
|
+
};
|
|
38
|
+
}): any;
|
|
39
|
+
estimateAllQuotes<IgnoreFailed extends boolean = true>({ request, config, }: {
|
|
40
|
+
request: EstimatedQuoteRequest;
|
|
41
|
+
config?: {
|
|
42
|
+
ignoredFailed?: IgnoreFailed;
|
|
43
|
+
sort?: {
|
|
44
|
+
by: CompareQuotesBy;
|
|
45
|
+
using?: CompareQuotesUsing;
|
|
46
|
+
};
|
|
47
|
+
timeout?: TimeString;
|
|
48
|
+
};
|
|
49
|
+
}): Promise<IgnoreFailedResponses<IgnoreFailed, EstimatedQuoteResponse>[]>;
|
|
50
|
+
getQuotes({ request, config }: {
|
|
51
|
+
request: QuoteRequest;
|
|
52
|
+
config?: {
|
|
53
|
+
timeout?: TimeString;
|
|
54
|
+
};
|
|
55
|
+
}): Record<SourceId, Promise<QuoteResponse>>;
|
|
56
|
+
getAllQuotes<IgnoreFailed extends boolean = true>({ request, config, }: {
|
|
57
|
+
request: QuoteRequest;
|
|
58
|
+
config?: {
|
|
59
|
+
ignoredFailed?: IgnoreFailed;
|
|
60
|
+
sort?: {
|
|
61
|
+
by: CompareQuotesBy;
|
|
62
|
+
using?: CompareQuotesUsing;
|
|
63
|
+
};
|
|
64
|
+
timeout?: TimeString;
|
|
65
|
+
};
|
|
66
|
+
}): Promise<IgnoreFailedResponses<IgnoreFailed, QuoteResponse>[]>;
|
|
67
|
+
getBestQuote({ request, config, }: {
|
|
68
|
+
request: QuoteRequest;
|
|
69
|
+
config?: {
|
|
70
|
+
choose?: {
|
|
71
|
+
by: CompareQuotesBy;
|
|
72
|
+
using?: CompareQuotesUsing;
|
|
73
|
+
};
|
|
74
|
+
timeout?: TimeString;
|
|
75
|
+
};
|
|
76
|
+
}): Promise<QuoteResponse>;
|
|
77
|
+
getAllQuotesWithTxs<IgnoreFailed extends boolean = true>({ request, config, }: {
|
|
78
|
+
request: QuoteRequest;
|
|
79
|
+
config?: {
|
|
80
|
+
ignoredFailed?: IgnoreFailed;
|
|
81
|
+
sort?: {
|
|
82
|
+
by: CompareQuotesBy;
|
|
83
|
+
using?: CompareQuotesUsing;
|
|
84
|
+
};
|
|
85
|
+
timeout?: TimeString;
|
|
86
|
+
};
|
|
87
|
+
}): Promise<IgnoreFailedResponses<IgnoreFailed, QuoteResponseWithTx>[]>;
|
|
88
|
+
buildTxs({ quotes, config, sourceConfig, }: {
|
|
89
|
+
quotes: Record<SourceId, Promise<QuoteResponse>> | Record<SourceId, QuoteResponse>;
|
|
90
|
+
sourceConfig?: SourceConfig;
|
|
91
|
+
config?: {
|
|
92
|
+
timeout?: TimeString;
|
|
93
|
+
};
|
|
94
|
+
}): Record<SourceId, Promise<QuoteTransaction>>;
|
|
95
|
+
buildAllTxs<IgnoreFailed extends boolean = true>({ quotes, sourceConfig, config, }: {
|
|
96
|
+
quotes: Record<SourceId, Promise<QuoteResponse>> | Promise<Record<SourceId, QuoteResponse>> | Record<SourceId, QuoteResponse>;
|
|
97
|
+
sourceConfig?: SourceConfig;
|
|
98
|
+
config?: {
|
|
99
|
+
timeout?: TimeString;
|
|
100
|
+
ignoredFailed?: IgnoreFailed;
|
|
101
|
+
};
|
|
102
|
+
}): Promise<Record<SourceId, IgnoreFailedResponses<IgnoreFailed, QuoteTransaction>>>;
|
|
103
|
+
private listResponseToQuoteResponse;
|
|
104
|
+
private calculateSources;
|
|
105
|
+
private calculateExternalPromises;
|
|
106
|
+
private metadataChainFilter;
|
|
107
|
+
private calculateConfig;
|
|
108
|
+
}
|
|
109
|
+
export declare function calculateGasDetails(gasTokenSymbol: string, gasCostNativeToken: BigIntish, nativeTokenPrice?: number): {
|
|
110
|
+
estimatedCost: bigint;
|
|
111
|
+
estimatedCostInUnits: string;
|
|
112
|
+
estimatedCostInUSD: undefined;
|
|
113
|
+
gasTokenPrice: number | undefined;
|
|
114
|
+
gasTokenSymbol: string;
|
|
115
|
+
};
|
|
116
|
+
export declare function handleResponseFailure<Response>(sourceId: SourceId, response: Promise<Response>, sources: Record<SourceId, SourceMetadata>): Promise<FailedResponse | Response>;
|
|
117
|
+
export {};
|
|
@@ -0,0 +1,304 @@
|
|
|
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.handleResponseFailure = exports.calculateGasDetails = exports.QuoteService = void 0;
|
|
7
|
+
const quote_compare_1 = require("./quote-compare");
|
|
8
|
+
const _chains_1 = require("../../chains");
|
|
9
|
+
const utils_1 = require("../../shared/utils");
|
|
10
|
+
const constants_1 = require("../../shared/constants");
|
|
11
|
+
const timeouts_1 = require("../../shared/timeouts");
|
|
12
|
+
const viem_1 = require("viem");
|
|
13
|
+
const triggerable_promise_1 = require("../../shared/triggerable-promise");
|
|
14
|
+
const requirements_and_support_1 = require("../../shared/requirements-and-support");
|
|
15
|
+
const errors_1 = require("./errors");
|
|
16
|
+
const deepmerge_1 = __importDefault(require("deepmerge"));
|
|
17
|
+
const REQUIREMENTS = {
|
|
18
|
+
requirements: { symbol: 'required', decimals: 'required' },
|
|
19
|
+
default: 'can ignore',
|
|
20
|
+
};
|
|
21
|
+
class QuoteService {
|
|
22
|
+
constructor({ priceService, gasService, metadataService, sourceList, defaultConfig }) {
|
|
23
|
+
this.priceService = priceService;
|
|
24
|
+
this.gasService = gasService;
|
|
25
|
+
this.metadataService = metadataService;
|
|
26
|
+
this.sourceList = sourceList;
|
|
27
|
+
this.defaultConfig = defaultConfig;
|
|
28
|
+
}
|
|
29
|
+
supportedSources() {
|
|
30
|
+
const filterOutUnsupportedChains = this.metadataChainFilter();
|
|
31
|
+
const entries = Object.entries(this.sourceList.supportedSources()).map(([sourceId, metadata]) => [
|
|
32
|
+
sourceId,
|
|
33
|
+
filterOutUnsupportedChains(metadata),
|
|
34
|
+
]);
|
|
35
|
+
return Object.fromEntries(entries);
|
|
36
|
+
}
|
|
37
|
+
supportedChains() {
|
|
38
|
+
const allChains = Object.values(this.supportedSources()).map(({ supports: { chains } }) => chains);
|
|
39
|
+
return (0, _chains_1.chainsUnion)(allChains);
|
|
40
|
+
}
|
|
41
|
+
supportedSourcesInChain({ chainId }) {
|
|
42
|
+
const sourcesInChain = Object.entries(this.supportedSources()).filter(([, source]) => source.supports.chains.includes(chainId));
|
|
43
|
+
return Object.fromEntries(sourcesInChain);
|
|
44
|
+
}
|
|
45
|
+
supportedGasSpeeds() {
|
|
46
|
+
return this.gasService.supportedSpeeds();
|
|
47
|
+
}
|
|
48
|
+
estimateQuotes({ request, config }) {
|
|
49
|
+
const quotes = this.getQuotes({ request: estimatedToQuoteRequest(request), config });
|
|
50
|
+
const entries = Object.entries(quotes).map(([sourceId, quote]) => [sourceId, quote.then(quoteResponseToEstimated)]);
|
|
51
|
+
return Object.fromEntries(entries);
|
|
52
|
+
}
|
|
53
|
+
async estimateAllQuotes({ request, config, }) {
|
|
54
|
+
const allResponses = await this.getAllQuotes({ request: estimatedToQuoteRequest(request), config });
|
|
55
|
+
return allResponses.map((response) => ifNotFailed(response, quoteResponseToEstimated));
|
|
56
|
+
}
|
|
57
|
+
getQuotes({ request, config }) {
|
|
58
|
+
const { promises, external } = this.calculateExternalPromises(request, config);
|
|
59
|
+
const sources = this.calculateSources(request);
|
|
60
|
+
const responses = this.sourceList.getQuotes({
|
|
61
|
+
...request,
|
|
62
|
+
sources,
|
|
63
|
+
external,
|
|
64
|
+
quoteTimeout: config?.timeout,
|
|
65
|
+
sourceConfig: this.calculateConfig(request.sourceConfig),
|
|
66
|
+
});
|
|
67
|
+
const entries = Object.entries(responses).map(([sourceId, response]) => [
|
|
68
|
+
sourceId,
|
|
69
|
+
this.listResponseToQuoteResponse({ request, response, promises }),
|
|
70
|
+
]);
|
|
71
|
+
return Object.fromEntries(entries);
|
|
72
|
+
}
|
|
73
|
+
async getAllQuotes({ request, config, }) {
|
|
74
|
+
const metadata = this.supportedSources();
|
|
75
|
+
const quotes = Object.entries(this.getQuotes({ request, config })).map(([sourceId, response]) => handleResponseFailure(sourceId, response, metadata));
|
|
76
|
+
const responses = await Promise.all(quotes);
|
|
77
|
+
const successfulQuotes = responses.filter((response) => !('failed' in response));
|
|
78
|
+
const failedQuotes = config?.ignoredFailed === false ? responses.filter((response) => 'failed' in response) : [];
|
|
79
|
+
const sortedQuotes = (0, quote_compare_1.sortQuotesBy)(successfulQuotes, config?.sort?.by ?? 'most-swapped', config?.sort?.using ?? 'sell/buy amounts');
|
|
80
|
+
return [...sortedQuotes, ...failedQuotes];
|
|
81
|
+
}
|
|
82
|
+
async getBestQuote({ request, config, }) {
|
|
83
|
+
const allQuotes = await this.getAllQuotes({
|
|
84
|
+
request,
|
|
85
|
+
config: {
|
|
86
|
+
timeout: config?.timeout,
|
|
87
|
+
sort: config?.choose,
|
|
88
|
+
ignoredFailed: true,
|
|
89
|
+
},
|
|
90
|
+
});
|
|
91
|
+
if (allQuotes.length === 0) {
|
|
92
|
+
throw new errors_1.FailedToGenerateAnyQuotesError(request.chainId, request.sellToken, request.buyToken);
|
|
93
|
+
}
|
|
94
|
+
return allQuotes[0];
|
|
95
|
+
}
|
|
96
|
+
async getAllQuotesWithTxs({ request, config, }) {
|
|
97
|
+
const quotes = this.getQuotes({ request, config });
|
|
98
|
+
const txs = this.buildTxs({ quotes, sourceConfig: request.sourceConfig, config });
|
|
99
|
+
const metadata = this.supportedSources();
|
|
100
|
+
const promises = Object.keys(quotes).map((sourceId) => handleResponseFailure(sourceId, Promise.all([quotes[sourceId], txs[sourceId]]).then(([quote, tx]) => ({ ...quote, tx })), metadata));
|
|
101
|
+
const responses = await Promise.all(promises);
|
|
102
|
+
const successfulQuotes = responses.filter((response) => !('failed' in response));
|
|
103
|
+
const failedQuotes = config?.ignoredFailed === false ? responses.filter((response) => 'failed' in response) : [];
|
|
104
|
+
const sortedQuotes = (0, quote_compare_1.sortQuotesBy)(successfulQuotes, config?.sort?.by ?? 'most-swapped', config?.sort?.using ?? 'sell/buy amounts');
|
|
105
|
+
return [...sortedQuotes, ...failedQuotes];
|
|
106
|
+
}
|
|
107
|
+
buildTxs({ quotes, config, sourceConfig, }) {
|
|
108
|
+
const entries = Object.entries(quotes).map(([sourceId, response]) => (response instanceof Promise ? [sourceId, response] : [sourceId, Promise.resolve(response)]));
|
|
109
|
+
const input = Object.fromEntries(entries);
|
|
110
|
+
return this.sourceList.buildTxs({
|
|
111
|
+
quotes: input,
|
|
112
|
+
quoteTimeout: config?.timeout,
|
|
113
|
+
sourceConfig: this.calculateConfig(sourceConfig),
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
async buildAllTxs({ quotes, sourceConfig, config, }) {
|
|
117
|
+
const txs = this.buildTxs({ quotes: await quotes, sourceConfig, config });
|
|
118
|
+
const metadata = this.supportedSources();
|
|
119
|
+
const entries = await Promise.all(Object.entries(txs).map(async ([sourceId, tx]) => [
|
|
120
|
+
sourceId,
|
|
121
|
+
await handleResponseFailure(sourceId, tx, metadata),
|
|
122
|
+
]));
|
|
123
|
+
const result = Object.fromEntries(entries);
|
|
124
|
+
if (config?.ignoredFailed !== false) {
|
|
125
|
+
for (const sourceId in result) {
|
|
126
|
+
if ('failed' in result[sourceId]) {
|
|
127
|
+
delete result[sourceId];
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
return result;
|
|
132
|
+
}
|
|
133
|
+
async listResponseToQuoteResponse({ request, response: responsePromise, promises, }) {
|
|
134
|
+
const [response, tokens, prices, gasCalculator] = await Promise.all([
|
|
135
|
+
responsePromise,
|
|
136
|
+
promises.tokens,
|
|
137
|
+
promises.prices,
|
|
138
|
+
promises.gasCalculator,
|
|
139
|
+
]);
|
|
140
|
+
if (!tokens)
|
|
141
|
+
throw new Error(`Failed to fetch the quote's tokens`);
|
|
142
|
+
if (!gasCalculator)
|
|
143
|
+
throw new Error(`Failed to fetch gas data`);
|
|
144
|
+
const sellToken = { ...tokens[request.sellToken], price: prices?.[request.sellToken]?.price };
|
|
145
|
+
const buyToken = { ...tokens[request.buyToken], price: prices?.[request.buyToken]?.price };
|
|
146
|
+
let gas;
|
|
147
|
+
if (response.estimatedGas) {
|
|
148
|
+
// Note: some sources provide a tx as part of the custom data, so we'll pass it just in case
|
|
149
|
+
const gasCost = gasCalculator.calculateGasCost({ gasEstimation: response.estimatedGas, tx: response.customData.tx });
|
|
150
|
+
const { gasCostNativeToken } = gasCost[request.gasSpeed?.speed ?? 'standard'] ?? gasCost['standard'];
|
|
151
|
+
gas = {
|
|
152
|
+
estimatedGas: response.estimatedGas,
|
|
153
|
+
...calculateGasDetails((0, _chains_1.getChainByKeyOrFail)(request.chainId).nativeCurrency.symbol, gasCostNativeToken, prices?.[constants_1.Addresses.NATIVE_TOKEN]?.price),
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
return {
|
|
157
|
+
chainId: request.chainId,
|
|
158
|
+
sellToken: { ...sellToken, address: request.sellToken },
|
|
159
|
+
buyToken: { ...buyToken, address: request.buyToken },
|
|
160
|
+
sellAmount: (0, utils_1.toAmountsOfToken)({ ...sellToken, amount: response.sellAmount }),
|
|
161
|
+
buyAmount: (0, utils_1.toAmountsOfToken)({ ...buyToken, amount: response.buyAmount }),
|
|
162
|
+
maxSellAmount: (0, utils_1.toAmountsOfToken)({ ...sellToken, amount: response.maxSellAmount }),
|
|
163
|
+
minBuyAmount: (0, utils_1.toAmountsOfToken)({ ...buyToken, amount: response.minBuyAmount }),
|
|
164
|
+
gas,
|
|
165
|
+
accounts: { takerAddress: request.takerAddress, recipient: response.recipient },
|
|
166
|
+
source: response.source,
|
|
167
|
+
type: response.type,
|
|
168
|
+
customData: response.customData,
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
calculateSources({ filters, includeNonTransferSourcesWhenRecipientIsSet, estimateBuyOrdersWithSellOnlySources, ...request }) {
|
|
172
|
+
const sourcesInChain = this.supportedSourcesInChain(request);
|
|
173
|
+
let sourceIds = Object.keys(sourcesInChain);
|
|
174
|
+
if (filters?.includeSources) {
|
|
175
|
+
sourceIds = sourceIds.filter((id) => filters.includeSources.includes(id));
|
|
176
|
+
}
|
|
177
|
+
else if (filters?.excludeSources) {
|
|
178
|
+
sourceIds = sourceIds.filter((id) => !filters.excludeSources.includes(id));
|
|
179
|
+
}
|
|
180
|
+
if (request.order.type === 'buy' && !estimateBuyOrdersWithSellOnlySources) {
|
|
181
|
+
sourceIds = sourceIds.filter((sourceIds) => sourcesInChain[sourceIds].supports.buyOrders);
|
|
182
|
+
}
|
|
183
|
+
if (request.recipient && request.recipient !== request.takerAddress && !includeNonTransferSourcesWhenRecipientIsSet) {
|
|
184
|
+
sourceIds = sourceIds.filter((sourceIds) => sourcesInChain[sourceIds].supports.swapAndTransfer);
|
|
185
|
+
}
|
|
186
|
+
return sourceIds;
|
|
187
|
+
}
|
|
188
|
+
calculateExternalPromises(request, config) {
|
|
189
|
+
const reducedTimeout = (0, timeouts_1.reduceTimeout)(config?.timeout, '200');
|
|
190
|
+
const selectedGasSpeed = request.gasSpeed?.speed ?? 'standard';
|
|
191
|
+
const tokens = this.metadataService
|
|
192
|
+
.getMetadataInChain({
|
|
193
|
+
chainId: request.chainId,
|
|
194
|
+
tokens: [request.sellToken, request.buyToken],
|
|
195
|
+
config: {
|
|
196
|
+
timeout: reducedTimeout,
|
|
197
|
+
fields: REQUIREMENTS,
|
|
198
|
+
},
|
|
199
|
+
})
|
|
200
|
+
.catch(() => undefined);
|
|
201
|
+
const prices = this.priceService
|
|
202
|
+
.getCurrentPricesInChain({
|
|
203
|
+
chainId: request.chainId,
|
|
204
|
+
tokens: [request.sellToken, request.buyToken, constants_1.Addresses.NATIVE_TOKEN],
|
|
205
|
+
config: { timeout: reducedTimeout },
|
|
206
|
+
})
|
|
207
|
+
.catch(() => undefined);
|
|
208
|
+
const gasCalculator = this.gasService
|
|
209
|
+
.getQuickGasCalculator({
|
|
210
|
+
chainId: request.chainId,
|
|
211
|
+
config: {
|
|
212
|
+
timeout: reducedTimeout,
|
|
213
|
+
fields: {
|
|
214
|
+
requirements: {
|
|
215
|
+
[selectedGasSpeed]: request.gasSpeed?.requirement ?? 'best effort',
|
|
216
|
+
standard: 'required',
|
|
217
|
+
},
|
|
218
|
+
default: 'can ignore',
|
|
219
|
+
},
|
|
220
|
+
},
|
|
221
|
+
})
|
|
222
|
+
.catch(() => undefined);
|
|
223
|
+
return {
|
|
224
|
+
promises: { tokens, prices, gasCalculator },
|
|
225
|
+
external: {
|
|
226
|
+
tokenData: new triggerable_promise_1.TriggerablePromise(() => tokens.then((tokens) => {
|
|
227
|
+
return tokens
|
|
228
|
+
? { sellToken: tokens[request.sellToken], buyToken: tokens[request.buyToken] }
|
|
229
|
+
: Promise.reject(new Error(`Failed to fetch the quote's tokens`));
|
|
230
|
+
})),
|
|
231
|
+
gasPrice: new triggerable_promise_1.TriggerablePromise(() => gasCalculator.then((calculator) => {
|
|
232
|
+
if (!calculator)
|
|
233
|
+
return Promise.reject(new Error(`Failed to fetch gas data`));
|
|
234
|
+
const gasPrice = calculator.getGasPrice();
|
|
235
|
+
return gasPrice[selectedGasSpeed] ?? gasPrice['standard'];
|
|
236
|
+
})),
|
|
237
|
+
},
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
// There are some properties that are necessary for the quote service to work, so we'll filter out chains where
|
|
241
|
+
// those properties are not available
|
|
242
|
+
metadataChainFilter() {
|
|
243
|
+
const tokenProperties = this.metadataService.supportedProperties();
|
|
244
|
+
return (metadata) => ({
|
|
245
|
+
...metadata,
|
|
246
|
+
supports: {
|
|
247
|
+
...metadata.supports,
|
|
248
|
+
chains: metadata.supports.chains.filter((chainId) => (0, requirements_and_support_1.couldSupportMeetRequirements)(tokenProperties[chainId], REQUIREMENTS)),
|
|
249
|
+
},
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
calculateConfig(sourceConfigs) {
|
|
253
|
+
return {
|
|
254
|
+
global: (0, deepmerge_1.default)(this.defaultConfig?.global ?? {}, sourceConfigs?.global ?? {}),
|
|
255
|
+
custom: (0, deepmerge_1.default)(this.defaultConfig?.custom ?? {}, sourceConfigs?.custom ?? {}),
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
exports.QuoteService = QuoteService;
|
|
260
|
+
function ifNotFailed(response, mapped) {
|
|
261
|
+
return ('failed' in response ? response : mapped(response));
|
|
262
|
+
}
|
|
263
|
+
function estimatedToQuoteRequest(request) {
|
|
264
|
+
return {
|
|
265
|
+
...request,
|
|
266
|
+
sourceConfig: {
|
|
267
|
+
...request.sourceConfig,
|
|
268
|
+
global: {
|
|
269
|
+
...request.sourceConfig?.global,
|
|
270
|
+
disableValidation: true,
|
|
271
|
+
},
|
|
272
|
+
},
|
|
273
|
+
takerAddress: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045', // We set a random taker address so that txs can be built at the source level
|
|
274
|
+
};
|
|
275
|
+
}
|
|
276
|
+
function quoteResponseToEstimated({ accounts, ...response }) {
|
|
277
|
+
return response;
|
|
278
|
+
}
|
|
279
|
+
function calculateGasDetails(gasTokenSymbol, gasCostNativeToken, nativeTokenPrice) {
|
|
280
|
+
return {
|
|
281
|
+
estimatedCost: BigInt(gasCostNativeToken),
|
|
282
|
+
estimatedCostInUnits: (0, viem_1.formatUnits)(BigInt(gasCostNativeToken), 18),
|
|
283
|
+
estimatedCostInUSD: (0, utils_1.amountToUSD)(18, gasCostNativeToken, nativeTokenPrice),
|
|
284
|
+
gasTokenPrice: nativeTokenPrice,
|
|
285
|
+
gasTokenSymbol,
|
|
286
|
+
};
|
|
287
|
+
}
|
|
288
|
+
exports.calculateGasDetails = calculateGasDetails;
|
|
289
|
+
function handleResponseFailure(sourceId, response, sources) {
|
|
290
|
+
return response.catch((e) => {
|
|
291
|
+
const metadata = sources[sourceId];
|
|
292
|
+
return {
|
|
293
|
+
failed: true,
|
|
294
|
+
source: {
|
|
295
|
+
id: sourceId,
|
|
296
|
+
name: metadata.name,
|
|
297
|
+
logoURI: metadata.logoURI,
|
|
298
|
+
},
|
|
299
|
+
error: e instanceof Error ? e.message : JSON.stringify(e),
|
|
300
|
+
};
|
|
301
|
+
});
|
|
302
|
+
}
|
|
303
|
+
exports.handleResponseFailure = handleResponseFailure;
|
|
304
|
+
//# sourceMappingURL=quote-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quote-service.js","sourceRoot":"","sources":["../../../src/services/quotes/quote-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { IQuoteSource, QuoteParams, QuoteSourceMetadata, SourceQuoteResponse, SourceQuoteTransaction, BuildTxParams } from './types';
|
|
2
|
+
type ZRXConfig = {
|
|
3
|
+
apiKey: string;
|
|
4
|
+
};
|
|
5
|
+
type ZRXSupport = {
|
|
6
|
+
buyOrders: false;
|
|
7
|
+
swapAndTransfer: false;
|
|
8
|
+
};
|
|
9
|
+
type ZRXData = {
|
|
10
|
+
tx: SourceQuoteTransaction;
|
|
11
|
+
};
|
|
12
|
+
export declare class ZRXQuoteSource implements IQuoteSource<ZRXSupport, ZRXConfig, ZRXData> {
|
|
13
|
+
getMetadata(): QuoteSourceMetadata<ZRXSupport>;
|
|
14
|
+
quote({ components: { fetchService }, request: { chainId, sellToken, buyToken, order, config: { slippagePercentage, timeout }, accounts: { takeFrom }, }, config, }: QuoteParams<ZRXSupport, ZRXConfig>): Promise<SourceQuoteResponse<ZRXData>>;
|
|
15
|
+
buildTx({ request }: BuildTxParams<ZRXConfig, ZRXData>): Promise<SourceQuoteTransaction>;
|
|
16
|
+
isConfigAndContextValidForQuoting(config: Partial<ZRXConfig> | undefined): config is ZRXConfig;
|
|
17
|
+
isConfigAndContextValidForTxBuilding(config: Partial<ZRXConfig> | undefined): config is ZRXConfig;
|
|
18
|
+
}
|
|
19
|
+
export {};
|