{"_id":"@airdao/smart-order-router","_rev":"1-fff08f0785a888765597c65baf74fec7","name":"@airdao/smart-order-router","description":"Uniswap Smart Order Router","dist-tags":{"latest":"3.17.3-airdao.0"},"versions":{"3.33.1":{"name":"@airdao/smart-order-router","version":"3.33.1","keywords":[],"license":"GPL","_id":"@airdao/smart-order-router@3.33.1","maintainers":[{"name":"november-pain","email":"m.chikita@inc4.net"},{"name":"tech_airdao","email":"support@airdao.io"}],"homepage":"https://github.com/Uniswap/smart-order-router#readme","bugs":{"url":"https://github.com/Uniswap/smart-order-router/issues"},"dist":{"shasum":"4308baedb702264449803ee362c1409130866636","tarball":"https://registry.npmjs.org/@airdao/smart-order-router/-/smart-order-router-3.33.1.tgz","fileCount":434,"integrity":"sha512-r6GvZwH4S4nDdpRRHaV0II0neSRVRODNpCOGdOOEqrIRm29YHSrxFtsqdG3+s4fO7tk9tgqvTKAD30jc9UI70Q==","signatures":[{"sig":"MEYCIQD7vTRIxhLR69ILewlR9SEffxhBsj++M/BzWSH0pE7isQIhAJKxroPjiUg83BNmXLZ41bL9+tjjleppVD2TAV2nhH59","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":3440202},"main":"build/main/index.js","oclif":{"commands":"./cli/commands"},"module":"build/module/index.js","engines":{"node":">=10"},"gitHead":"6391e74e25556c71fecdf2ec48c89feb70547235","scripts":{"fix":"run-s fix:*","test":"jest test/unit","build":"run-p compile-v3-types compile-v2-types compile-router compile-narwhal compile-external-types && run-p build:*","fix:lint":"eslint src --ext .ts --fix","build:main":"tsc -p tsconfig.json","integ-test":"TS_NODE=true jest test/integ --testRunner='jest-circus/runner'","build:module":"tsc -p tsconfig.module.json","fix:prettier":"prettier \"src/**/*.ts\" --write","compile-router":"npx typechain --target ethers-v5 --out-dir src/types/other './node_modules/@uniswap/swap-router-contracts/artifacts/contracts/**/*.json'","compile-narwhal":"npx typechain --target ethers-v5 --out-dir src/types/other './node_modules/@uniswap/narwhal/artifacts/contracts/**/*.json'","prepare-release":"run-s cov:check doc:html version doc:publish","compile-v2-types":"npx typechain --target ethers-v5 --out-dir src/types/v2 './node_modules/@uniswap/?(v2-core|v2-periphery)/build/*UniswapV2*.json'","compile-v3-types":"npx typechain --target ethers-v5 --out-dir src/types/v3 './node_modules/@uniswap/?(v3-core|v3-periphery)/artifacts/contracts/**/*.json'","compile-external-types":"npx typechain --target ethers-v5 --out-dir src/types/other 'src/abis/**/*.json'"},"typings":"build/main/index.d.ts","_npmUser":{"name":"tech_airdao","email":"support@airdao.io"},"prettier":{"singleQuote":true},"repository":{"url":"git+https://github.com/Uniswap/smart-order-router.git","type":"git"},"_npmVersion":"10.5.2","description":"Uniswap Smart Order Router","directories":{},"_nodeVersion":"20.13.1","dependencies":{"axios":"^0.21.1","brotli":"^1.3.3","bunyan":"^1.8.15","ethers":"^5.7.2","lodash":"^4.17.21","graphql":"^15.5.0","mnemonist":"^0.38.3","node-cache":"^5.1.2","stats-lite":"^2.2.0","async-retry":"^1.3.1","@types/brotli":"^1.3.4","await-timeout":"^1.1.1","@uniswap/v2-sdk":"^4.3.2","@uniswap/v3-sdk":"^3.11.2","graphql-request":"^3.4.0","bunyan-blackhole":"^1.1.1","@eth-optimism/sdk":"^3.2.2","@uniswap/sdk-core":"^5.0.0","@uniswap/router-sdk":"^1.9.2","@uniswap/permit2-sdk":"^1.2.0","@uniswap/token-lists":"^1.0.0-beta.31","@uniswap/universal-router":"^1.6.0","@uniswap/default-token-list":"^11.13.0","@uniswap/universal-router-sdk":"^2.1.0","@uniswap/swap-router-contracts":"^1.3.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.6","sinon":"^11.1.2","dotenv":"^10.0.0","eslint":"^7.8.0","hardhat":"^2.12.2","ts-jest":"^27.0.4","ts-node":"^10.8.1","open-cli":"^6.0.1","prettier":"^2.1.1","jest-mock":"^27.0.6","typechain":"^5.0.0","jest-sinon":"^1.0.4","typescript":"^4.2.2","@types/jest":"^27.0.0","@types/node":"^15.0.2","jest-circus":"^27.5.1","npm-run-all":"^4.1.5","@types/sinon":"^10.0.2","@oclif/errors":"^1.3.5","@types/bunyan":"^1.8.6","@types/lodash":"^4.14.168","@oclif/command":"^1.8.0","@uniswap/v2-core":"^1.0.1","@uniswap/v3-core":"^1.0.0","@types/jest-sinon":"^1.0.2","@types/stats-lite":"^2.2.0","@types/async-retry":"^1.4.4","bunyan-debug-stream":"^2.0.0","jest-expect-message":"^1.0.2","@typechain/ethers-v5":"^7.0.1","@types/await-timeout":"^0.3.1","eslint-plugin-import":"^2.22.0","@uniswap/v2-periphery":"^1.1.0-beta.0","@uniswap/v3-periphery":"^1.1.1","eslint-config-prettier":"^6.11.0","@types/bunyan-blackhole":"^0.2.2","@ethersproject/providers":"^5.4.0","jest-environment-hardhat":"^1.1.8","@nomiclabs/hardhat-ethers":"^2.0.6","@typescript-eslint/parser":"^4.0.1","eslint-plugin-eslint-comments":"^3.2.0","@typescript-eslint/eslint-plugin":"^4.0.1","prettier-plugin-organize-imports":"^2.1.0","@istanbuljs/nyc-config-typescript":"^1.0.1"},"peerDependencies":{"jsbi":"^3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/smart-order-router_3.33.1_1717093583249_0.9606203594615159","host":"s3://npm-registry-packages"}},"3.17.3-airdao.0":{"name":"@airdao/smart-order-router","version":"3.17.3-airdao.0","description":"Uniswap Smart Order Router","main":"build/main/index.js","typings":"build/main/index.d.ts","module":"build/module/index.js","repository":{"type":"git","url":"git+https://github.com/Uniswap/smart-order-router.git"},"license":"GPL","keywords":[],"scripts":{"compile-v3-types":"npx typechain --target ethers-v5 --out-dir src/types/v3 './node_modules/@uniswap/?(v3-core|v3-periphery)/artifacts/contracts/**/*.json'","compile-v2-types":"npx typechain --target ethers-v5 --out-dir src/types/v2 './node_modules/@uniswap/?(v2-core|v2-periphery)/build/*UniswapV2*.json'","compile-router":"npx typechain --target ethers-v5 --out-dir src/types/other './node_modules/@uniswap/swap-router-contracts/artifacts/contracts/**/*.json'","compile-narwhal":"npx typechain --target ethers-v5 --out-dir src/types/other './node_modules/@uniswap/narwhal/artifacts/contracts/**/*.json'","compile-external-types":"npx typechain --target ethers-v5 --out-dir src/types/other 'src/abis/**/*.json'","build":"run-p compile-v3-types compile-v2-types compile-router compile-narwhal compile-external-types && run-p build:*","build:main":"tsc -p tsconfig.json","build:module":"tsc -p tsconfig.module.json","fix":"run-s fix:*","fix:prettier":"prettier \"src/**/*.ts\" --write","fix:lint":"eslint src --ext .ts --fix","prepare-release":"run-s cov:check doc:html version doc:publish","test":"jest test/unit","integ-test":"TS_NODE=true jest test/integ"},"engines":{"node":">=10"},"dependencies":{"@uniswap/default-token-list":"^11.2.0","@uniswap/permit2-sdk":"^1.2.0","@airdao/router-sdk":"1.6.0-airdao.0","@uniswap/swap-router-contracts":"^1.3.0","@uniswap/token-lists":"^1.0.0-beta.31","@uniswap/universal-router":"^1.0.1","@airdao/universal-router-sdk":"1.5.8-airdao.0","@airdao/v2-sdk":"3.2.3-airdao.0","@airdao/v3-sdk":"3.10.0-airdao.0","@airdao/sdk-core":"4.0.7-airdao.0","async-retry":"^1.3.1","await-timeout":"^1.1.1","axios":"^0.21.1","bunyan":"^1.8.15","bunyan-blackhole":"^1.1.1","ethers":"^5.7.2","graphql":"^15.5.0","graphql-request":"^3.4.0","lodash":"^4.17.21","mnemonist":"^0.38.3","node-cache":"^5.1.2","stats-lite":"^2.2.0"},"devDependencies":{"@ethersproject/providers":"^5.4.0","@istanbuljs/nyc-config-typescript":"^1.0.1","@nomiclabs/hardhat-ethers":"^2.0.6","@oclif/command":"^1.8.0","@oclif/errors":"^1.3.5","@typechain/ethers-v5":"^7.0.1","@types/async-retry":"^1.4.4","@types/await-timeout":"^0.3.1","@types/bunyan":"^1.8.6","@types/bunyan-blackhole":"^0.2.2","@types/jest":"^27.0.0","@types/jest-sinon":"^1.0.2","@types/lodash":"^4.14.168","@types/node":"^15.0.2","@types/sinon":"^10.0.2","@types/stats-lite":"^2.2.0","@typescript-eslint/eslint-plugin":"^4.0.1","@typescript-eslint/parser":"^4.0.1","@uniswap/v2-core":"^1.0.1","@uniswap/v2-periphery":"^1.1.0-beta.0","@uniswap/v3-core":"^1.0.0","@uniswap/v3-periphery":"^1.1.1","bunyan-debug-stream":"^2.0.0","dotenv":"^10.0.0","eslint":"^7.8.0","eslint-config-prettier":"^6.11.0","eslint-plugin-eslint-comments":"^3.2.0","eslint-plugin-import":"^2.22.0","hardhat":"^2.12.2","jest":"^27.0.6","jest-environment-hardhat":"^1.1.8","jest-expect-message":"^1.0.2","jest-mock":"^27.0.6","jest-sinon":"^1.0.4","npm-run-all":"^4.1.5","open-cli":"^6.0.1","prettier":"^2.1.1","prettier-plugin-organize-imports":"^2.1.0","sinon":"^11.1.2","ts-jest":"^27.0.4","ts-node":"^10.8.1","typechain":"^5.0.0","typescript":"4.7.2"},"peerDependencies":{"jsbi":"^3.2.0"},"prettier":{"singleQuote":true},"oclif":{"commands":"./cli/commands"},"_id":"@airdao/smart-order-router@3.17.3-airdao.0","gitHead":"c701a6003066b5d457393fa2e48da37f83e97a7e","bugs":{"url":"https://github.com/Uniswap/smart-order-router/issues"},"homepage":"https://github.com/Uniswap/smart-order-router#readme","_nodeVersion":"20.13.1","_npmVersion":"10.5.2","dist":{"integrity":"sha512-AKnLRrOylFGrBqGGS8xKovf1FQQ9zG0/iB0MIc5Lg0WHzNOxWfhVW2E8dSdHPaZpNPvq7nj1hrHomWPSk492bw==","shasum":"6b14080a602ab850722c9ca489875848db9ab8ef","tarball":"https://registry.npmjs.org/@airdao/smart-order-router/-/smart-order-router-3.17.3-airdao.0.tgz","fileCount":430,"unpackedSize":3298888,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDsGPdv4bvZgIrypl7zs/2sSxBn6lb5BFnHXjsuuCSlOAIhANQaL7DEFtqrQBBYYRh/IKAnqMAFiJxLcdJHn98HGp80"}]},"_npmUser":{"name":"tech_airdao","email":"support@airdao.io"},"directories":{},"maintainers":[{"name":"november-pain","email":"m.chikita@inc4.net"},{"name":"tech_airdao","email":"support@airdao.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/smart-order-router_3.17.3-airdao.0_1717148605556_0.048453295302214094"},"_hasShrinkwrap":false}},"time":{"created":"2024-05-30T18:26:23.094Z","modified":"2024-05-31T09:43:26.102Z","3.33.1":"2024-05-30T18:26:23.691Z","3.17.3-airdao.0":"2024-05-31T09:43:25.905Z"},"maintainers":[{"name":"november-pain","email":"m.chikita@inc4.net"},{"name":"tech_airdao","email":"support@airdao.io"}],"repository":{"type":"git","url":"git+https://github.com/Uniswap/smart-order-router.git"},"keywords":[],"license":"GPL","homepage":"https://github.com/Uniswap/smart-order-router#readme","bugs":{"url":"https://github.com/Uniswap/smart-order-router/issues"},"readme":"# Uniswap Smart Order Router\n\nThis repository contains routing logic for the Uniswap V3 protocol.\n\nIt searches for the most efficient way to swap token A for token B, considering splitting swaps across multiple routes and gas costs.\n\n## Testing\n\n### Unit Tests\n\nFirst make sure you have run `npm install` and `npm run build`.\n\n```\nnpm run test\n```\n\n### Integration Tests\n\nMake sure the `.env` file is configured to connect to mainnet and other chains. See the [CLI](#cli) section below for more details.\n\n```\nnpm run integ-test\n```\n\n### Tenderly Simulations\n\nQuotes can be simulated on Tenderly\n\nEnsure you set the following environment variables:\n\n```\nprocess.env.TENDERLY_BASE_URL!,\nprocess.env.TENDERLY_USER!,\nprocess.env.TENDERLY_PROJECT!,\nprocess.env.TENDERLY_ACCESS_KEY!,\n```\n\n### CLI\n\nThe package can be run as a CLI for testing purposes.\n\nFirst create a `.env` file in the root of the project and configure:\n\n```\nJSON_RPC_PROVIDER = '<JSON_RPC_PROVIDER>'\n```\n\nTo run on chains other than mainnet set up a connection by specifying the environment variable\n\n```\nJSON_RPC_PROVIDER_GORLI = '<JSON_RPC_PROVIDER>'\nJSON_RPC_PROVIDER_OPTIMISM = '<JSON_RPC_PROVIDER>'\nJSON_RPC_PROVIDER_OPTIMISM_GOERLI = '<JSON_RPC_PROVIDER>'\nJSON_RPC_PROVIDER_ARBITRUM_ONE = '<JSON_RPC_PROVIDER>'\nJSON_RPC_PROVIDER_ARBITRUM_GOERLI = '<JSON_RPC_PROVIDER>'\nJSON_RPC_PROVIDER_POLYGON = '<JSON_RPC_PROVIDER>'\nJSON_RPC_PROVIDER_POLYGON_MUMBAI = '<JSON_RPC_PROVIDER>'\nJSON_RPC_PROVIDER_CELO = '<JSON_RPC_PROVIDER>'\nJSON_RPC_PROVIDER_CELO_ALFAJORES = '<JSON_RPC_PROVIDER>'\nJSON_RPC_PROVIDER_BNB = '<JSON_RPC_PROVIDER>'\nJSON_RPC_PROVIDER_AVALANCHE = '<JSON_RPC_PROVIDER>'\nJSON_RPC_PROVIDER_BASE = '<JSON_RPC_PROVIDER>'\n```\n\nThen from the root directory you can execute the CLI.\n\n## Examples\n\nSome examples to use for manual CLI testing.\n\n### Mainnet\n\n```\n./bin/cli quote --tokenIn 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 --tokenOut 0x1f9840a85d5af5bf1d1762f925bdaddc4201f984 --amount 1000 --exactIn --recipient 0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B --protocols v2,v3\n\nBest Route:\n100.00% = USDC -- 0.3% --> UNI\n\tRaw Quote Out:\n\t\t35.72\n\tGas Adjusted Quote Out:\n\t\t34.03\n\nGas Used Quote Token: 1.691772\nGas Used USD: 47.592951\nCalldata: 0x414bf389000000000000...\nValue: 0x00\n\n  blockNumber: \"13088815\"\n  estimatedGasUsed: \"113000\"\n  gasPriceWei: \"130000000000\"\n\n\n./bin/cli quote-to-ratio --token0 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 --token1 0xdac17f958d2ee523a2206206994597c13d831ec7 --feeAmount 3000 --recipient 0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B  --token0Balance 1000 --token1Balance 2000 --tickLower -120 --tickUpper 120\n\nBest Route:\n100.00% = USDT -- 0.05% --> USDC\nRaw Quote Exact In:\n\t392.68\nGas Adjusted Quote In}:\n\t346.13\n\nGas Used Quote Token: 46.550010\nGas Used USD: 46.342899\nCalldata: 0x414bf389000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000000000000000000000000000000000000000001f4000000000000000000000000ab5801a7d398351b8be11c439e05c5b3259aec9b000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000000000000000176a736c000000000000000000000000000000000000000000000000000000001764f8650000000000000000000000000000000000000000000000000000000000000000\n\tValue: 0x00\n\n\tblockNumber: \"13239188\"\n\testimatedGasUsed: \"113000\"\n\tgasPriceWei: \"116690684398\"\n\n./bin/cli quote --tokenIn 0x0391D2021f89DC339F60Fff84546EA23E337750f --tokenOut 0x4d224452801ACEd8B2F0aebE155379bb5D594381 --amount 10000 --exactIn --recipient 0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B --protocols v2,v3,mixed\nBest Route:\n[V2 + V3] 100.00% = BOND -- [0x6591c4BcD6D7A1eb4E537DA8B78676C1576Ba244] --> USDC -- 0.3% [0xB07Fe2F407F971125D4EB1977f8aCEe8846C7324] --> APE\n\tRaw Quote Exact In:\n\t\t10437.85\n\tGas Adjusted Quote In:\n\t\t10433.83\n\nGas Used Quote Token: 4.018625\nGas Used USD: 29.669402\nCalldata: 0x5ae401dc0000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000000e4472b43f300000000000000000000000000000000000000000000021e19e0c9bab240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020000000000000000000000000391d2021f89dc339f60fff84546ea23e337750f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104b858183f00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000080000000000000000000000000ab5801a7d398351b8be11c439e05c5b3259aec9b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002358df5b3b4459a3f5b000000000000000000000000000000000000000000000000000000000000002ba0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000bb84d224452801aced8b2f0aebe155379bb5d59438100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\nValue: 0x00\n\n  blockNumber: \"15303839\"\n  estimatedGasUsed: \"434000\"\n  gasPriceWei: \"38218865879\"\nTotal ticks crossed: 7\n```\n\n## Rinkeby\n\n```\n./bin/cli quote --tokenIn 0x5592ec0cfb4dbc12d3ab100b257153436a1f0fea --tokenOut 0x4DBCdF9B62e891a7cec5A2568C3F4FAF9E8Abe2b --amount 200000 --exactIn --minSplits 1 --router alpha --chainId 4\n```\n\n## Sepolia\n\n```\n./bin/cli quote --tokenIn 0x7AF17A48a6336F7dc1beF9D485139f7B6f4FB5C8 --tokenOut 0x6f14C02Fc1F78322cFd7d707aB90f18baD3B54f5 --amount 10 --exactIn --minSplits 1 --router alpha --chainId 11155111\n```\n\n## Kovan\n\n```\n./bin/cli quote --tokenIn 0x4f96fe3b7a6cf9725f59d353f723c1bdb64ca6aa --tokenOut 0xd0a1e359811322d97991e03f863a0c30c2cf029c --amount 10 --exactIn --minSplits 1 --router alpha --chainId 42\n```\n\n## Ropsten\n\n```\n./bin/cli quote --tokenIn 0x07865c6e87b9f70255377e024ace6630c1eaa37f --tokenOut 0xc778417e063141139fce010982780140aa0cd5ab --amount 200000 --exactIn --minSplits 1 --router alpha --chainId 3\n```\n\n## Optimism\n\n```\n./bin/cli quote --tokenIn 0x7F5c764cBc14f9669B88837ca1490cCa17c31607 --tokenOut 0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1 --amount 200000 --exactIn --minSplits 1 --router alpha --chainId 10\n\n```\n\n## Optimism-Goerli\n\n```\n./bin/cli quote --tokenIn 0x7E07E15D2a87A24492740D16f5bdF58c16db0c4E --tokenOut 0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1 --amount 200000 --exactIn --minSplits 1 --router alpha --chainId 420\n```\n\n## Optimistic-Kovan\n\n```\n./bin/cli quote --tokenIn 0x7F5c764cBc14f9669B88837ca1490cCa17c31607 --tokenOut 0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1 --amount 200 --exactIn --minSplits 1 --router alpha --chainId 69\n```\n\n## Arbitrum\n\n```\n./bin/cli quote --tokenIn 0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9 --tokenOut 0x82af49447d8a07e3bd95bd0d56f35241523fbab1 --amount 20000 --exactIn --minSplits 1 --router alpha --chainId 42161 --debug\n```\n\n## Arbitrum-Rinkeby\n\n```\n./bin/cli quote --tokenIn 0x09b98f8b2395d076514037ff7d39a091a536206c --tokenOut 0xb47e6a5f8b33b3f17603c83a0535a9dcd7e32681 --amount 200 --exactIn --minSplits 1 --router alpha --chainId 421611\n```\n\n## Arbitrum-Goerli\n\n```\n./bin/cli quote --tokenIn 0xe39ab88f8a4777030a534146a9ca3b52bd5d43a3 --tokenOut 0x8FB1E3fC51F3b789dED7557E680551d93Ea9d892 --amount 200 --exactIn --minSplits 1 --router alpha --chainId 421613\n```\n\n## Polygon Mumbai\n\n```\n./bin/cli quote --tokenIn 0x001b3b4d0f3714ca98ba10f6042daebf0b1b7b6f --tokenOut 0x9c3c9283d3e44854697cd22d3faa240cfb032889 --amount 1 --exactIn --protocols v3 --recipient 0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B --minSplits 1 --router alpha --chainId 80001\n```\n\n## Polygon Mainnet\n\n```\n./bin/cli quote --tokenIn 0x2791bca1f2de4661ed88a30c99a7a9449aa84174 --tokenOut 0x7ceb23fd6bc0add59e62ac25578270cff1b9f619 --amount 5 --exactIn --minSplits 1 --protocols v3 --router alpha --chainId 137\n```\n\n## Celo Mainnet\n\n```\n./bin/cli quote --tokenIn CELO --tokenOut 0x765DE816845861e75A25fCA122bb6898B8B1282a --amount 5 --exactIn --minSplits 1 --protocols v3 --router alpha --chainId 42220\n```\n\n## BNB Mainnet\n\n```\n./bin/cli quote --tokenIn 0x55d398326f99059fF775485246999027B3197955 --tokenOut 0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d --amount 1 --exactIn --minSplits 1 --protocols v3 --router alpha --chainId 56\n```\n\n## AVAX Mainnet\n\n```\n./bin/cli quote --tokenIn 0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E --tokenOut 0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7 --amount 1000 --exactIn --minSplits 1 --protocols v3 --router alpha --chainId 43114\n```\n\n## BASE Mainnet\n\n```\n./bin/cli quote --tokenIn 0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA --tokenOut 0x4200000000000000000000000000000000000006 --amount 10 --exactIn --minSplits 1 --protocols v3 --router alpha --chainId 8453\n```\n\n\n## Adding a new Chain\n\nThe main components to complete are:\n\n- Deploy contracts on chain, add the pools to subgraph\n- Populate v3 providers in `src/providers/v3/subgraph-provider` and `src/providers/v3/static-subgraph-provider`\n- Populate chainId and addresses in `src/util/chains.ts` and `src/util/addresses.ts`\n- Populate token providers in `src/providers/caching-token-provider` and `src/providers/token-provider.ts`\n- Populate gas constants in `src/routers/alpha-router/gas-models/*`\n- Populate bases in `src/routers/legacy-router/bases.ts`\n- Populate `test/integ/routers/alpha-router/alpha-router.integration.test.ts` and `src/providers/v2/static-subgraph-provider.ts`\n- Populate `src/routers/alpha-router/*`\n- Add a log to `/CHANGELOG.md`\n- Run `npm run integ-test` successfully\n\n# Troubleshooting\n\n## ProviderGasLimit errors\n\nThe package sends many large multicall requests to nodes. You must ensure that your node provider's `eth_call` gas limit is high enough to successfully process the RPC calls.\n\nBy default each `eth_call` will consume up to:\n\n- 132,000,000 gas on Optimism\n- 120,000,000 gas on Arbitrum\n- 50,000,000 gas on Celo\n- 150,000,000 gas on every other network (Mainnet, Goerli, etc.)\n\nThese parameters should work on Infura and Alchemy by default.\n\nThis total amount of gas each `eth_call` can consume is equal to the `multicallChunk` config value multiplied by the `gasLimitPerCall` config value. If you are using a node provider with a lower gas limit per `eth_call` you will need to override the default `V3QuoteProvider` with an instance that lowers the `multicallChunk` and `gasLimitPerCall` parameters such that the multiplication is below your node providers limit. Lowering these values will cause each multicall to consume less gas. See [here](https://github.com/Uniswap/smart-order-router/blob/98c58bdee9981fd9ffac9e7d7a97b18302d5f77a/src/routers/alpha-router/alpha-router.ts#L415-L416) for examples of how to set these values. Note some providers have different limits per chain.\n\nIf you are running your own node, we recommend you configure start your node with a higher gas limit per call. For example, on Geth you can use the command line argument `--rpc.gascap 150000000` to raise the limit to 150m, which is enough to run the default configuration of this package.\n\nIf you are using Hardhat mainnet forking, you should add `blockGasLimit: 150_000_000` to your Hardhat config to use the default package configuration.\n","readmeFilename":"README.md"}