{"_id":"@0xthoth/smart-order-router","_rev":"11-85b277db90ba12c69b35b0ac53a0ec19","name":"@0xthoth/smart-order-router","dist-tags":{"latest":"4.14.5"},"versions":{"4.14.3":{"name":"@0xthoth/smart-order-router","version":"4.14.3","keywords":[],"license":"GPL","_id":"@0xthoth/smart-order-router@4.14.3","maintainers":[{"name":"0xthothdev","email":"0xthoth@gmail.com"}],"homepage":"https://github.com/Uniswap/smart-order-router#readme","bugs":{"url":"https://github.com/Uniswap/smart-order-router/issues"},"dist":{"shasum":"96a884a6f269b623896f2772cb8c56886359fdca","tarball":"https://registry.npmjs.org/@0xthoth/smart-order-router/-/smart-order-router-4.14.3.tgz","fileCount":510,"integrity":"sha512-Bns27WwgiDfUh3fIq6eXlvfPmPzX87ZsfaBoDYjroNQN/jBUlNY/lP/+IK1eC+UGmkB2w3Oa/l/xAykW+etWFQ==","signatures":[{"sig":"MEUCIFdyYvxap2vCfuZHZq/JX6LwRQhlJcG+ObQVTKKm4ZIuAiEA0kbzKgyqrf37ttVA6DkfL+kc+q36dff8z4qRC93gBxM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":4187185},"main":"build/main/index.js","oclif":{"commands":"./cli/commands"},"module":"build/module/index.js","engines":{"node":">=10"},"gitHead":"6f8dbc03aa38a11326b43217482dfd9493403226","scripts":{"fix":"run-s fix:*","test":"jest test/unit","build":"run-p compile-v4-types compile-v3-types compile-v2-types compile-router compile-narwhal compile-external-types && run-p build:*","prepare":"husky","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-v4-types":"npx typechain --target ethers-v5 --out-dir src/types/v4 './node_modules/@uniswap/?(v4-core|v4-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":"0xthothdev","email":"0xthoth@gmail.com"},"prettier":{"singleQuote":true},"repository":{"url":"git+https://github.com/Uniswap/smart-order-router.git","type":"git"},"_npmVersion":"11.0.0","description":"Uniswap Smart Order Router","directories":{},"_nodeVersion":"22.12.0","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.9.0","@uniswap/v3-sdk":"^3.21.0","@uniswap/v4-sdk":"^1.15.0","graphql-request":"^3.4.0","bunyan-blackhole":"^1.1.1","@eth-optimism/sdk":"^3.2.2","@uniswap/sdk-core":"^7.1.0","@uniswap/router-sdk":"^1.18.0","@uniswap/permit2-sdk":"^1.3.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":"^4.10.0","@uniswap/swap-router-contracts":"^1.3.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.6","husky":"^9.1.5","sinon":"^11.1.2","dotenv":"^10.0.0","eslint":"^7.8.0","hardhat":"^2.22.15","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_4.14.3_1737442395864_0.9051153353778001","host":"s3://npm-registry-packages-npm-production"}},"4.14.4":{"name":"@0xthoth/smart-order-router","version":"4.14.4","keywords":[],"license":"GPL","_id":"@0xthoth/smart-order-router@4.14.4","maintainers":[{"name":"0xthothdev","email":"0xthoth@gmail.com"}],"homepage":"https://github.com/Uniswap/smart-order-router#readme","bugs":{"url":"https://github.com/Uniswap/smart-order-router/issues"},"dist":{"shasum":"99809c0be26255909f7553a8d8305dab7a62f593","tarball":"https://registry.npmjs.org/@0xthoth/smart-order-router/-/smart-order-router-4.14.4.tgz","fileCount":510,"integrity":"sha512-BdRYJo2lFZDfA4fw9wLK8ugxOL/Y2kHmWjlPBpHSQoMXkteNMsGMVYCbiRxYl2wXa8qIw+x7g92PSVTDT9SAeQ==","signatures":[{"sig":"MEQCIA80H3u0Jk34X8wZCm69V9Fdqz5/tB3mJKaHL4BOO3RJAiAZrtiGphr/v7RxQg/ggo6bBRI8DjxmvPVdA3IcJh1pVg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":4187185},"main":"build/main/index.js","oclif":{"commands":"./cli/commands"},"module":"build/module/index.js","engines":{"node":">=10"},"gitHead":"2af757834cf1ac30982303277f3612b2d2a59cb0","scripts":{"fix":"run-s fix:*","test":"jest test/unit","build":"run-p compile-v4-types compile-v3-types compile-v2-types compile-router compile-narwhal compile-external-types && run-p build:*","prepare":"husky","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-v4-types":"npx typechain --target ethers-v5 --out-dir src/types/v4 './node_modules/@uniswap/?(v4-core|v4-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":"0xthothdev","email":"0xthoth@gmail.com"},"prettier":{"singleQuote":true},"repository":{"url":"git+https://github.com/Uniswap/smart-order-router.git","type":"git"},"_npmVersion":"10.8.2","description":"Uniswap Smart Order Router","directories":{},"_nodeVersion":"18.20.5","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.9.0","@uniswap/v3-sdk":"^3.21.0","@uniswap/v4-sdk":"^1.15.0","graphql-request":"^3.4.0","bunyan-blackhole":"^1.1.1","@eth-optimism/sdk":"^3.2.2","@uniswap/sdk-core":"^7.1.0","@uniswap/router-sdk":"^1.18.0","@uniswap/permit2-sdk":"^1.3.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":"^4.10.0","@uniswap/swap-router-contracts":"^1.3.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.6","husky":"^9.1.5","sinon":"^11.1.2","dotenv":"^10.0.0","eslint":"^7.8.0","hardhat":"^2.22.15","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_4.14.4_1737442502180_0.6032530199522774","host":"s3://npm-registry-packages-npm-production"}},"4.14.5":{"name":"@0xthoth/smart-order-router","version":"4.14.5","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-v4-types":"npx typechain --target ethers-v5 --out-dir src/types/v4 './node_modules/@uniswap/?(v4-core|v4-periphery)/artifacts/contracts/**/*.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-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-v4-types 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 --testRunner='jest-circus/runner'","prepare":"husky","npm:publish":"npm publish --access public"},"engines":{"node":">=10"},"dependencies":{"@eth-optimism/sdk":"^3.2.2","@types/brotli":"^1.3.4","@uniswap/default-token-list":"^11.13.0","@uniswap/permit2-sdk":"^1.3.0","@uniswap/router-sdk":"^1.18.0","@uniswap/sdk-core":"^7.1.0","@uniswap/swap-router-contracts":"^1.3.1","@uniswap/token-lists":"^1.0.0-beta.31","@uniswap/universal-router":"^1.6.0","@uniswap/universal-router-sdk":"^4.10.0","@uniswap/v2-sdk":"^4.9.0","@uniswap/v3-sdk":"^3.21.0","@uniswap/v4-sdk":"^1.15.0","async-retry":"^1.3.1","await-timeout":"^1.1.1","axios":"^0.21.1","brotli":"^1.3.3","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.22.15","husky":"^9.1.5","jest":"^27.0.6","jest-circus":"^27.5.1","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.2.2"},"peerDependencies":{"jsbi":"^3.2.0"},"prettier":{"singleQuote":true},"oclif":{"commands":"./cli/commands"},"_id":"@0xthoth/smart-order-router@4.14.5","gitHead":"1b36992853c45e1add641c567061dc88664f9ba8","bugs":{"url":"https://github.com/Uniswap/smart-order-router/issues"},"homepage":"https://github.com/Uniswap/smart-order-router#readme","_nodeVersion":"18.20.6","_npmVersion":"10.8.2","dist":{"integrity":"sha512-3D7HLF3Dd1t+f0QjLWFKL4e8NAc36zWE3sBeeDitaqETB3TJ4Rn3G7Hpi7W/kD1JBDkAx+gPuELJDtL2Yy1hTQ==","shasum":"fcdf892db3703622f4b8b5fa937444eaf8ba487c","tarball":"https://registry.npmjs.org/@0xthoth/smart-order-router/-/smart-order-router-4.14.5.tgz","fileCount":510,"unpackedSize":4198593,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIH6jELOYmk9PptO8gIxMAgI9mQUTtmTviwJIYDZ/RmE/AiADI523QrJ78mjZKavhTuEdxDlIQU+uJpyqj60frR1O3w=="}]},"_npmUser":{"name":"0xthothdev","email":"0xthoth@gmail.com"},"directories":{},"maintainers":[{"name":"0xthothdev","email":"0xthoth@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/smart-order-router_4.14.5_1738641801711_0.6649168208679559"},"_hasShrinkwrap":false}},"time":{"created":"2025-01-21T06:53:15.754Z","modified":"2025-02-04T04:03:22.325Z","4.9.3":"2025-01-07T09:05:54.000Z","4.9.4":"2025-01-07T09:13:04.070Z","4.9.2":"2025-01-07T09:23:42.112Z","4.9.5":"2025-01-07T09:48:26.111Z","4.14.3":"2025-01-21T06:53:16.098Z","4.14.4":"2025-01-21T06:55:02.411Z","4.14.5":"2025-02-04T04:03:22.103Z"},"bugs":{"url":"https://github.com/Uniswap/smart-order-router/issues"},"license":"GPL","homepage":"https://github.com/Uniswap/smart-order-router#readme","keywords":[],"repository":{"type":"git","url":"git+https://github.com/Uniswap/smart-order-router.git"},"description":"Uniswap Smart Order Router","maintainers":[{"name":"0xthothdev","email":"0xthoth@gmail.com"}],"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```\nBASE\n ./bin/cli quote --tokenIn 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 --tokenOut 0x4200000000000000000000000000000000000006 --amount 100 --exactIn --recipient 0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B --protocols v3 --chainId 8453\n\nETH\n./bin/cli quote --tokenIn 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 --tokenOut 0x1f9840a85d5af5bf1d1762f925bdaddc4201f984 --amount 1000 --exactIn --recipient 0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B --protocols v2,v3\n\n./bin/cli quote --tokenIn 0xdAC17F958D2ee523a2206206994597C13D831ec7 --tokenOut 0x1f9840a85d5af5bf1d1762f925bdaddc4201f984 --amount 10 --exactIn --recipient 0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B --protocols v3\n\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\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```\n./bin/cli quote --tokenIn 0x7F5c764cBc14f9669B88837ca1490cCa17c31607 --tokenOut 0x4200000000000000000000000000000000000042 --amount 1 --exactIn --minSplits 1 --protocols v2 --router alpha --chainId 10\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## ZKSYNC Mainnet\n\n```\n./bin/cli quote --tokenIn 0x5aea5775959fbc2557cc8789bc1bf90a239d9a91 --tokenOut 0x1d17cbcf0d6d143135ae902365d2e5e2a16538d4 --amount 10 --exactIn --minSplits 1 --protocols v3 --router alpha --chainId 324\n```\n\n## WorldChain Mainnet\n\n```\n./bin/cli quote --tokenIn 0x4200000000000000000000000000000000000006 --tokenOut 0x79A02482A880bCE3F13e09Da970dC34db4CD24d1 --amount 0.1 --exactIn --minSplits 1 --protocols v3 --router alpha --chainId 480\n```\n\n## UNICHAIN Sepolia\n\n```\n./bin/cli quote --tokenIn 0x4200000000000000000000000000000000000006 --tokenOut 0x31d0220469e10c4E71834a79b1f276d740d3768F --amount 0.1 --exactIn --minSplits 1 --protocols v3 --router alpha --chainId 1301\n```\n\n## Monad Testnet\n\n```\n./bin/cli quote --tokenIn 0x760AfE86e5de5fa0Ee542fc7B7B713e1c5425701 --tokenOut 0xfBC2D240A5eD44231AcA3A9e9066bc4b33f01149 --amount 0.1 --exactIn --minSplits 1 --protocols v2 --router alpha --chainId 10143\n```\n\n## Base Sepolia\n\n```\n./bin/cli quote --tokenIn 0x4200000000000000000000000000000000000006 --tokenOut 0x036CbD53842c5426634e7929541eC2318f3dCF7e --amount 0.1 --exactIn --minSplits 1 --protocols v3 --router alpha --chainId 84532\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"}