{"_id":"chainhopper-sdk","_rev":"40-8ec1fe107e83401008715d2ac5bc9a7c","name":"chainhopper-sdk","dist-tags":{"latest":"0.2.10"},"versions":{"0.1.0":{"name":"chainhopper-sdk","version":"0.1.0","license":"MIT","_id":"chainhopper-sdk@0.1.0","maintainers":[{"name":"asood123","email":"asood123@yahoo.com"}],"dist":{"shasum":"c686698ccedff80f9a0d7cf9d69a43d3239fee2d","tarball":"https://registry.npmjs.org/chainhopper-sdk/-/chainhopper-sdk-0.1.0.tgz","fileCount":2,"integrity":"sha512-v2wMSIehl4jBMhTN7hCadCost2oPXdee0MI7bEWN2Y4tnp6L3cAp4wpDp2JNte01BvGaCL47VXbjKgxGEPq71A==","signatures":[{"sig":"MEQCIEu0BkNQw/dj0IJj5A5cI1eSCDAsdlL3XOBRDB94SbplAiAS8+BP6QMihx1+3Pttjcf5hnItmzmEkJRBkU4Tr1iP3g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1421},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"index.ts","gitHead":"2d9b779b21e6a5bc82ee83dbbea7f9698d037452","scripts":{"lint":"eslint --fix","build":"tsc","format":"prettier --write --ignore-unknown","prepublishOnly":"npm run build"},"_npmUser":{"name":"asood123","email":"asood123@yahoo.com"},"_npmVersion":"10.8.2","description":"Chainhopper Protocol SDK","directories":{},"lint-staged":{"*.{css,md}":"prettier --write --ignore-unknown","*.{ts,tsx}":["eslint --fix","prettier --write"]},"_nodeVersion":"20.18.1","dependencies":{"viem":"^2.23.2","ethers":"^5.7.2","@uniswap/v3-sdk":"^3.24.0","@uniswap/v4-sdk":"^1.21.0","@uniswap/sdk-core":"^7.7.2","@uniswap/v4-periphery":"^1.0.1","@across-protocol/app-sdk":"^0.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.23.0","@eslint/js":"^9.23.0","@types/bun":"latest","typescript-eslint":"^8.28.0","eslint-plugin-unicorn":"^58.0.0","eslint-plugin-prettier":"^5.2.4","eslint-plugin-security":"^3.0.1"},"peerDependencies":{"typescript":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/chainhopper-sdk_0.1.0_1744220061612_0.8669393115224777","host":"s3://npm-registry-packages-npm-production"}},"0.1.12":{"name":"chainhopper-sdk","version":"0.1.12","license":"MIT","_id":"chainhopper-sdk@0.1.12","maintainers":[{"name":"asood123","email":"asood123@yahoo.com"}],"dist":{"shasum":"d633909ab3986a8cc484cddb2b29be2d581354e7","tarball":"https://registry.npmjs.org/chainhopper-sdk/-/chainhopper-sdk-0.1.12.tgz","fileCount":150,"integrity":"sha512-hbZAIRER8fA+2i1z6920FhPByDa/eGiMzGVDjOu/Kmf/uWWNaosdV4oix6U2RLpACutDZgMBnKVM/dzo0cMxVA==","signatures":[{"sig":"MEYCIQDDGybL1mLxJvhkHc/8nICp90tlGOEDos1R/IHFxELlZgIhAO8cGDnM/uGeGh13u4hBnMdEP2EcaiuXPF4YjQXuGPyv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":591874},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"src/index.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"6b931a2af5c68be124d9b8000fb0c3ce0d2ba32d","scripts":{"lint":"eslint --fix","build":"tsc","types":"tsc --emitDeclarationOnly --declaration --declarationDir ./dist","format":"prettier --write --ignore-unknown","prepublishOnly":"npm run build && npm run types"},"_npmUser":{"name":"asood123","email":"asood123@yahoo.com"},"_npmVersion":"10.8.2","description":"Chainhopper Protocol SDK","directories":{},"lint-staged":{"*.{css,md}":"prettier --write --ignore-unknown","*.{ts,tsx}":["eslint --fix","prettier --write"]},"_nodeVersion":"20.18.1","dependencies":{"viem":"^2.23.2","ethers":"^5.7.2","@uniswap/v3-sdk":"3.25.2","@uniswap/v4-sdk":"1.21.2","@uniswap/sdk-core":"7.7.0","@uniswap/v4-periphery":"1.0.1","@across-protocol/app-sdk":"^0.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.23.0","@eslint/js":"^9.23.0","@types/bun":"latest","typescript":"^5.0.0","typescript-eslint":"^8.28.0","eslint-plugin-unicorn":"^58.0.0","eslint-plugin-prettier":"^5.2.4","eslint-plugin-security":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/chainhopper-sdk_0.1.12_1744854553747_0.8370177732091915","host":"s3://npm-registry-packages-npm-production"}},"0.1.13":{"name":"chainhopper-sdk","version":"0.1.13","license":"MIT","_id":"chainhopper-sdk@0.1.13","maintainers":[{"name":"asood123","email":"asood123@yahoo.com"}],"dist":{"shasum":"1a939b15ce693313c49ac3b7cdf4b7fd05be4a37","tarball":"https://registry.npmjs.org/chainhopper-sdk/-/chainhopper-sdk-0.1.13.tgz","fileCount":168,"integrity":"sha512-E1rQ/98BDhCRKdO0l6o9HwgWgyJeRSEJd69c6T+IIQQNACLxpXjcbMudsPkhyImq4sdIgvAYBj1VuGV9agyu4Q==","signatures":[{"sig":"MEQCIFXto9drkdTMaG+N6hse5cBnBQXryEsPmwKJvpQtYrNIAiB2ZxyoVQBv6nAYDkenZqC5lURINKhtNN4XK7kfNgmPFg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":682169},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"src/index.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"85a8f81647ef19e9c2b02ce7192233204fb0d1bf","scripts":{"lint":"eslint --fix","test":"bun test","build":"tsc","types":"tsc --emitDeclarationOnly --declaration --declarationDir ./dist","format":"prettier --write --ignore-unknown","prepublishOnly":"npm run build && npm run types"},"_npmUser":{"name":"asood123","email":"asood123@yahoo.com"},"_npmVersion":"10.8.2","description":"Chainhopper Protocol SDK","directories":{},"lint-staged":{"*.{css,md}":"prettier --write --ignore-unknown","*.{ts,tsx}":["eslint --fix","prettier --write"]},"_nodeVersion":"20.18.1","dependencies":{"jsbi":"3.1.4","viem":"^2.23.2","ethers":"^5.7.2","@uniswap/v3-sdk":"3.25.2","@uniswap/v4-sdk":"1.21.2","@uniswap/sdk-core":"7.7.1","@uniswap/v4-periphery":"1.0.1","@across-protocol/app-sdk":"^0.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.23.0","@eslint/js":"^9.23.0","@types/bun":"latest","typescript":"^5.0.0","typescript-eslint":"^8.28.0","eslint-plugin-unicorn":"^58.0.0","eslint-plugin-prettier":"^5.2.4","eslint-plugin-security":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/chainhopper-sdk_0.1.13_1745610805812_0.6298189769432689","host":"s3://npm-registry-packages-npm-production"}},"0.1.14":{"name":"chainhopper-sdk","version":"0.1.14","license":"MIT","_id":"chainhopper-sdk@0.1.14","maintainers":[{"name":"asood123","email":"asood123@yahoo.com"}],"dist":{"shasum":"18ad29fbe2b28c491a3ffdd4230901883096463e","tarball":"https://registry.npmjs.org/chainhopper-sdk/-/chainhopper-sdk-0.1.14.tgz","fileCount":175,"integrity":"sha512-oAd8q5sHEtne4R8gj4EU+f0aU61kKr/l0ub8YIQEh4+VS3STqUAQhYre8ASwK5iSi8B/V7dR2uNOmOCU8pImEA==","signatures":[{"sig":"MEQCIFnt3wz6/AQmObf30IVXV2JugoDm1K3XaJgYq3afKBRfAiAzIgS47Y2thsMMFsaMCtT+jSwVFmjt75mk2zvZj1wpuw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":693112},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"src/index.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"fea5819c09de345a338b5477ed912eb1709121bd","scripts":{"lint":"eslint --fix","test":"bun test","build":"tsc","types":"tsc --emitDeclarationOnly --declaration --declarationDir ./dist","format":"prettier --write --ignore-unknown","prepublishOnly":"npm run build && npm run types"},"_npmUser":{"name":"asood123","email":"asood123@yahoo.com"},"_npmVersion":"10.8.2","description":"Chainhopper Protocol SDK","directories":{},"lint-staged":{"*.{css,md}":"prettier --write --ignore-unknown","*.{ts,tsx}":["eslint --fix","prettier --write"]},"_nodeVersion":"20.18.1","dependencies":{"jsbi":"3.2.0","viem":"^2.23.2","ethers":"^5.7.2","@uniswap/v3-sdk":"3.25.2","@uniswap/v4-sdk":"1.21.2","@uniswap/sdk-core":"7.7.1","@uniswap/v4-periphery":"1.0.1","@across-protocol/app-sdk":"^0.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.23.0","@eslint/js":"^9.23.0","@types/bun":"latest","typescript":"^5.0.0","typescript-eslint":"^8.28.0","eslint-plugin-unicorn":"^58.0.0","eslint-plugin-prettier":"^5.2.4","eslint-plugin-security":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/chainhopper-sdk_0.1.14_1746216341971_0.0646813920284961","host":"s3://npm-registry-packages-npm-production"}},"0.1.15":{"name":"chainhopper-sdk","version":"0.1.15","license":"MIT","_id":"chainhopper-sdk@0.1.15","maintainers":[{"name":"asood123","email":"asood123@yahoo.com"}],"dist":{"shasum":"8442d6dbf9def659cd528e62b1c5ea7405df4799","tarball":"https://registry.npmjs.org/chainhopper-sdk/-/chainhopper-sdk-0.1.15.tgz","fileCount":175,"integrity":"sha512-O3zoUygo7yzlC+QM+e4RAKXY/khnFYnOtMYV9lq03hRdjnS43YKYJu2aTGD6SK3EcQPhsAwIu6AQT9JscgkkRw==","signatures":[{"sig":"MEUCIQCp5IM3mZX3M+IEC5t2GGO5luqxvHk6fI7OZwEDMqpj0QIgOP2CIIhgZPokXISNqmmK26jq9FiRL/6cytsRjlQM5ho=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":695951},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"src/index.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"bc06805c97d347ee31e1d9d4990635b8805841ef","scripts":{"lint":"eslint --fix","test":"bun test","build":"tsc","types":"tsc --emitDeclarationOnly --declaration --declarationDir ./dist","format":"prettier --write --ignore-unknown","prepublishOnly":"npm run build && npm run types"},"_npmUser":{"name":"asood123","email":"asood123@yahoo.com"},"_npmVersion":"10.8.2","description":"Chainhopper Protocol SDK","directories":{},"lint-staged":{"*.{css,md}":"prettier --write --ignore-unknown","*.{ts,tsx}":["eslint --fix","prettier --write"]},"_nodeVersion":"20.18.1","dependencies":{"jsbi":"3.2.0","viem":"^2.23.2","ethers":"^5.7.2","@uniswap/v3-sdk":"3.25.2","@uniswap/v4-sdk":"1.21.2","@uniswap/sdk-core":"7.7.1","@uniswap/v4-periphery":"1.0.1","@across-protocol/app-sdk":"^0.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.23.0","@eslint/js":"^9.23.0","@types/bun":"latest","typescript":"^5.0.0","typescript-eslint":"^8.28.0","eslint-plugin-unicorn":"^58.0.0","eslint-plugin-prettier":"^5.2.4","eslint-plugin-security":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/chainhopper-sdk_0.1.15_1746651090013_0.38579816698612346","host":"s3://npm-registry-packages-npm-production"}},"0.1.16":{"name":"chainhopper-sdk","version":"0.1.16","license":"MIT","_id":"chainhopper-sdk@0.1.16","maintainers":[{"name":"asood123","email":"asood123@yahoo.com"}],"dist":{"shasum":"57d5c48940a503f1260b61dde57d8fcb16ccf6fe","tarball":"https://registry.npmjs.org/chainhopper-sdk/-/chainhopper-sdk-0.1.16.tgz","fileCount":175,"integrity":"sha512-opAj3OPw7F72XcYehnWuOkpOZB1FHBFUqrlAMHYfVE1BCl2W5lredrN6pBhJOtIG2KodRM+f58rUCi8IcFATjQ==","signatures":[{"sig":"MEYCIQCsy0XBUI+hbus/YjILomUA+Mt8Ti7XuL5lWgJJvuG8swIhAOokwvyJq8F9PNJWoEL1xDij6+Jv4Mp+mvFRuMzsDBM2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":695995},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"src/index.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"ce4c86f398a0b226400e77ff895d9e1fa12b7a44","scripts":{"lint":"eslint --fix","test":"bun test","build":"tsc","types":"tsc --emitDeclarationOnly --declaration --declarationDir ./dist","format":"prettier --write --ignore-unknown","prepublishOnly":"npm run build && npm run types"},"_npmUser":{"name":"asood123","email":"asood123@yahoo.com"},"_npmVersion":"10.8.2","description":"Chainhopper Protocol SDK","directories":{},"lint-staged":{"*.{css,md}":"prettier --write --ignore-unknown","*.{ts,tsx}":["eslint --fix","prettier --write"]},"_nodeVersion":"20.18.1","dependencies":{"jsbi":"3.2.0","viem":"^2.23.2","ethers":"^5.7.2","@uniswap/v3-sdk":"3.25.2","@uniswap/v4-sdk":"1.21.2","@uniswap/sdk-core":"7.7.1","@uniswap/v4-periphery":"1.0.1","@across-protocol/app-sdk":"^0.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.23.0","@eslint/js":"^9.23.0","@types/bun":"latest","typescript":"^5.0.0","typescript-eslint":"^8.28.0","eslint-plugin-unicorn":"^58.0.0","eslint-plugin-prettier":"^5.2.4","eslint-plugin-security":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/chainhopper-sdk_0.1.16_1746811400672_0.14700853025313965","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"chainhopper-sdk","version":"0.2.1","license":"MIT","_id":"chainhopper-sdk@0.2.1","maintainers":[{"name":"asood123","email":"asood123@yahoo.com"}],"dist":{"shasum":"882062df3940978273dec9d82c593987a849b086","tarball":"https://registry.npmjs.org/chainhopper-sdk/-/chainhopper-sdk-0.2.1.tgz","fileCount":184,"integrity":"sha512-a3pTa6ENSQ8eR1HtCqlQelgLD9XvUyN3EJxmU9lUVQL0HB3n3pXAeB6zrDwNxx/JdBRWvou5WJqnu1wj0k2sCw==","signatures":[{"sig":"MEUCIEU1K7cpEbI+oiI9DKbM/iiDwBI1t5c14NiTpfoGRGrGAiEAiT6zbrPJcxg725hK0KDOXCqzBGsC1tj4+sAO2xdmh2g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":721753},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"src/index.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"9063a47c3cafc10551d3895669f74f7703ed5997","scripts":{"lint":"eslint --fix","test":"bun test","build":"tsc","types":"tsc --emitDeclarationOnly --declaration --declarationDir ./dist","format":"prettier --write --ignore-unknown","prepublishOnly":"npm run build && npm run types"},"_npmUser":{"name":"asood123","email":"asood123@yahoo.com"},"_npmVersion":"10.8.2","description":"Chainhopper Protocol SDK","directories":{},"lint-staged":{"*.{css,md}":"prettier --write --ignore-unknown","*.{ts,tsx}":["eslint --fix","prettier --write"]},"_nodeVersion":"20.18.1","dependencies":{"jsbi":"3.2.0","viem":"^2.23.2","ethers":"^5.7.2","@uniswap/v3-sdk":"3.25.2","@uniswap/v4-sdk":"1.21.2","@uniswap/sdk-core":"7.7.1","@uniswap/v4-periphery":"1.0.1","@across-protocol/app-sdk":"^0.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.23.0","@eslint/js":"^9.23.0","@types/bun":"latest","typescript":"^5.0.0","typescript-eslint":"^8.28.0","eslint-plugin-unicorn":"^58.0.0","eslint-plugin-prettier":"^5.2.4","eslint-plugin-security":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/chainhopper-sdk_0.2.1_1748523510034_0.7380593339573052","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"chainhopper-sdk","version":"0.2.2","license":"MIT","_id":"chainhopper-sdk@0.2.2","maintainers":[{"name":"asood123","email":"asood123@yahoo.com"}],"dist":{"shasum":"c5cd81bdfb099e3ac37acc90f968fe058932882e","tarball":"https://registry.npmjs.org/chainhopper-sdk/-/chainhopper-sdk-0.2.2.tgz","fileCount":184,"integrity":"sha512-bDehIA5ARkYKzMvFW7gjBFcZre6C57QvtUNOWGw3wGXIj7/uLecVpszWo6yKDhp9/XUS2/LmoTpSAU9PJDQfhQ==","signatures":[{"sig":"MEYCIQD4S5YiIeGsbUwThMOlZThhfOJ//ZjuhQ5pwe/B2X60YwIhAL0msVGGNLduikhBxh9MX+nWcDtAwUzlrsaj0s2TNkPX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":744753},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"src/index.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"39623aadfaba6b11ab9065796b0c25d2c5d43734","scripts":{"lint":"eslint --fix","test":"bun test","build":"tsc","types":"tsc --emitDeclarationOnly --declaration --declarationDir ./dist","format":"prettier --write --ignore-unknown","prepublishOnly":"npm run build && npm run types"},"_npmUser":{"name":"asood123","email":"asood123@yahoo.com"},"_npmVersion":"10.8.2","description":"Chainhopper Protocol SDK","directories":{},"lint-staged":{"*.{css,md}":"prettier --write --ignore-unknown","*.{ts,tsx}":["eslint --fix","prettier --write"]},"_nodeVersion":"20.18.1","dependencies":{"jsbi":"3.2.0","viem":"^2.23.2","ethers":"^5.7.2","@uniswap/v3-sdk":"3.25.2","@uniswap/v4-sdk":"1.21.2","@uniswap/sdk-core":"7.7.1","@uniswap/v4-periphery":"1.0.1","@across-protocol/app-sdk":"^0.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.23.0","@eslint/js":"^9.23.0","@types/bun":"latest","typescript":"^5.0.0","typescript-eslint":"^8.28.0","eslint-plugin-unicorn":"^58.0.0","eslint-plugin-prettier":"^5.2.4","eslint-plugin-security":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/chainhopper-sdk_0.2.2_1748615579305_0.7332430919143356","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"chainhopper-sdk","version":"0.2.3","license":"MIT","_id":"chainhopper-sdk@0.2.3","maintainers":[{"name":"asood123","email":"asood123@yahoo.com"}],"dist":{"shasum":"d3b5291089f3f37c5115e4c18db0126851126d45","tarball":"https://registry.npmjs.org/chainhopper-sdk/-/chainhopper-sdk-0.2.3.tgz","fileCount":184,"integrity":"sha512-zvN7esJp54/llsZQx2DC1t8uVOk61Fd4OUMsBl7Oj6yiCu42SsMoCt7KAwVwI3SWRv1G5SLzvbY4nNOuZvJysg==","signatures":[{"sig":"MEUCIQCZZ39jP1JdbJ4nzXam0rw0Wv9iMVTiO4rNhoR2lD3mmgIgTlr3cUFrkd596u+RcRlrc8BRcO5PXy2f619jvjc/09E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":745668},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"src/index.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"7a8d3b8342a8a9b5f3a09bf7b4562c84b4ad8765","scripts":{"lint":"eslint --fix","test":"bun test","build":"tsc","types":"tsc --emitDeclarationOnly --declaration --declarationDir ./dist","format":"prettier --write --ignore-unknown","prepublishOnly":"npm run build && npm run types"},"_npmUser":{"name":"asood123","email":"asood123@yahoo.com"},"_npmVersion":"10.8.2","description":"Chainhopper Protocol SDK","directories":{},"lint-staged":{"*.{css,md}":"prettier --write --ignore-unknown","*.{ts,tsx}":["eslint --fix","prettier --write"]},"_nodeVersion":"20.18.1","dependencies":{"jsbi":"3.2.0","viem":"^2.23.2","ethers":"^5.7.2","@uniswap/v3-sdk":"3.25.2","@uniswap/v4-sdk":"1.21.2","@uniswap/sdk-core":"7.7.1","@uniswap/v4-periphery":"1.0.1","@across-protocol/app-sdk":"^0.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.23.0","@eslint/js":"^9.23.0","@types/bun":"latest","typescript":"^5.0.0","typescript-eslint":"^8.28.0","eslint-plugin-unicorn":"^58.0.0","eslint-plugin-prettier":"^5.2.4","eslint-plugin-security":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/chainhopper-sdk_0.2.3_1748891424170_0.7489821147047127","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"chainhopper-sdk","version":"0.2.4","license":"MIT","_id":"chainhopper-sdk@0.2.4","maintainers":[{"name":"asood123","email":"asood123@yahoo.com"}],"dist":{"shasum":"236c5338302577e7c48379232c0791bbf3a7e035","tarball":"https://registry.npmjs.org/chainhopper-sdk/-/chainhopper-sdk-0.2.4.tgz","fileCount":184,"integrity":"sha512-UYfKcMiQyT+E/12mZNgNgOn0me6yfrli1ED2xIL/+AyEzAQ4p4M8Wms4wz2ZUIne4UnK7UF/+FnEYtcLag01dA==","signatures":[{"sig":"MEUCIQDFo1EH8kACglsDtLaw94AjxwyJFlnubpAom19e7fCAcQIgOfum1Vl/vKDQZ/AuVMg678OlEYqSUYMf8KrYHkPNuq4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":745764},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"src/index.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"f2fa23fa3685a2ba38fb4e05f26b74d612ae3cda","scripts":{"lint":"eslint --fix","test":"bun test","build":"tsc","types":"tsc --emitDeclarationOnly --declaration --declarationDir ./dist","format":"prettier --write --ignore-unknown","prepublishOnly":"npm run build && npm run types"},"_npmUser":{"name":"asood123","email":"asood123@yahoo.com"},"_npmVersion":"10.8.2","description":"Chainhopper Protocol SDK","directories":{},"lint-staged":{"*.{css,md}":"prettier --write --ignore-unknown","*.{ts,tsx}":["eslint --fix","prettier --write"]},"_nodeVersion":"20.18.1","dependencies":{"jsbi":"3.2.0","viem":"^2.23.2","ethers":"^5.7.2","@uniswap/v3-sdk":"3.25.2","@uniswap/v4-sdk":"1.21.2","@uniswap/sdk-core":"7.7.1","@uniswap/v4-periphery":"1.0.1","@across-protocol/app-sdk":"^0.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.23.0","@eslint/js":"^9.23.0","@types/bun":"latest","typescript":"^5.0.0","typescript-eslint":"^8.28.0","eslint-plugin-unicorn":"^58.0.0","eslint-plugin-prettier":"^5.2.4","eslint-plugin-security":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/chainhopper-sdk_0.2.4_1748912047431_0.7476134153737355","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"chainhopper-sdk","version":"0.2.5","license":"MIT","_id":"chainhopper-sdk@0.2.5","maintainers":[{"name":"asood123","email":"asood123@yahoo.com"}],"dist":{"shasum":"964b44a83966c1bce363da3a663159ffe1309ab5","tarball":"https://registry.npmjs.org/chainhopper-sdk/-/chainhopper-sdk-0.2.5.tgz","fileCount":192,"integrity":"sha512-zhUav2GE+OYnTZQg1dE/M7pemO2cgm8+kE+H76NuDQPMfEpgSWHOyr6hltY0SLbPSTizvCaMTbJNLymb/R7HMA==","signatures":[{"sig":"MEUCIEblgmUGiU+5802kjXwttcNtuBmg4r80phu1d6tTV6MrAiEAwdZyulqXwkIfhSamtYJV0e4mUQToN55tUTcplPyyv9Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":778320},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"src/index.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"5cac3c898fd592f206b97ca25008c50388c070e7","scripts":{"lint":"eslint --fix","test":"bun test","build":"tsc","types":"tsc --emitDeclarationOnly --declaration --declarationDir ./dist","format":"prettier --write --ignore-unknown","prepublishOnly":"npm run build && npm run types"},"_npmUser":{"name":"asood123","email":"asood123@yahoo.com"},"_npmVersion":"10.8.2","description":"Chainhopper Protocol SDK","directories":{},"lint-staged":{"*.{css,md}":"prettier --write --ignore-unknown","*.{ts,tsx}":["eslint --fix","prettier --write"]},"_nodeVersion":"20.18.1","dependencies":{"jsbi":"3.2.0","viem":"^2.23.2","ethers":"^5.7.2","@uniswap/v3-sdk":"3.25.2","@uniswap/v4-sdk":"1.21.2","@uniswap/sdk-core":"7.7.1","@uniswap/v4-periphery":"1.0.1","@across-protocol/app-sdk":"^0.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.23.0","@eslint/js":"^9.23.0","@types/bun":"latest","typescript":"^5.0.0","typescript-eslint":"^8.28.0","eslint-plugin-unicorn":"^58.0.0","eslint-plugin-prettier":"^5.2.4","eslint-plugin-security":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/chainhopper-sdk_0.2.5_1749500220606_0.8082759068005614","host":"s3://npm-registry-packages-npm-production"}},"0.2.6":{"name":"chainhopper-sdk","version":"0.2.6","license":"MIT","_id":"chainhopper-sdk@0.2.6","maintainers":[{"name":"asood123","email":"asood123@yahoo.com"}],"dist":{"shasum":"2f61f69091b437314e3ae4ec46345dc374d4bee7","tarball":"https://registry.npmjs.org/chainhopper-sdk/-/chainhopper-sdk-0.2.6.tgz","fileCount":207,"integrity":"sha512-fcdOANv/0cMwPrcLfT+LUp+3gvKuQ+GEK57vyB070B/1yyJ89Ov4h/UAQfLGERT2Iz4OvjKrRLr3biu8ZbBh8Q==","signatures":[{"sig":"MEUCIDfUbtZvz8Ob6StpgzR85DobeQIr43nZQTTbrZ5v1iWGAiEA9b4IAYbqHPD6QeXuf4oq74fRzF3evgYwVS0iHaIF89s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":810813},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"src/index.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"454be7315836c0d35aaec76ec91449d0349639b5","scripts":{"lint":"eslint --fix","test":"bun test","build":"tsc","types":"tsc --emitDeclarationOnly --declaration --declarationDir ./dist","format":"prettier --write --ignore-unknown","prepublishOnly":"npm run build && npm run types"},"_npmUser":{"name":"asood123","actor":{"name":"asood123","type":"user","email":"asood123@yahoo.com"},"email":"asood123@yahoo.com"},"_npmVersion":"10.8.2","description":"Chainhopper Protocol SDK","directories":{},"lint-staged":{"*.{css,md}":"prettier --write --ignore-unknown","*.{ts,tsx}":["eslint --fix","prettier --write"]},"_nodeVersion":"20.18.1","dependencies":{"jsbi":"3.2.0","viem":"^2.23.2","ethers":"^5.7.2","@uniswap/v3-sdk":"3.25.2","@uniswap/v4-sdk":"1.21.2","@uniswap/sdk-core":"7.7.1","@uniswap/v4-periphery":"1.0.1","@across-protocol/app-sdk":"^0.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.23.0","@eslint/js":"^9.23.0","@types/bun":"latest","typescript":"^5.0.0","typescript-eslint":"^8.28.0","eslint-plugin-unicorn":"^58.0.0","eslint-plugin-prettier":"^5.2.4","eslint-plugin-security":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/chainhopper-sdk_0.2.6_1750260742096_0.27402334545014684","host":"s3://npm-registry-packages-npm-production"}},"0.2.7":{"name":"chainhopper-sdk","version":"0.2.7","license":"MIT","_id":"chainhopper-sdk@0.2.7","maintainers":[{"name":"asood123","email":"asood123@yahoo.com"}],"dist":{"shasum":"a3a0ae85750e3869c930c4c2300a2495c0334e9a","tarball":"https://registry.npmjs.org/chainhopper-sdk/-/chainhopper-sdk-0.2.7.tgz","fileCount":234,"integrity":"sha512-L5V/UFUT8Qxzz/yi9PB7WuImXEeDeoC5avHgA1VGMTQZ8RzZN03feKeI1oGDBQK7izlR1fSCvyyv8y83m4TI5g==","signatures":[{"sig":"MEUCIFjNXSHVJStXawwKFz++X24vySbfyGmngFeVmHAhCCZ8AiEA0Igy7WTVuCSjyqxcTldsr18KoKCfMQrr+acbK5ppm7c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":904591},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"src/index.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"7da3ce3d9b65d1757e1e6409e6d4adb729ed2f0b","scripts":{"lint":"eslint --fix","test":"bun test","build":"tsc","types":"tsc --emitDeclarationOnly --declaration --declarationDir ./dist","format":"prettier --write --ignore-unknown","prepublishOnly":"npm run build && npm run types"},"_npmUser":{"name":"asood123","email":"asood123@yahoo.com"},"_npmVersion":"10.8.2","description":"Chainhopper Protocol SDK","directories":{},"lint-staged":{"*.{css,md}":"prettier --write --ignore-unknown","*.{ts,tsx}":["eslint --fix","prettier --write"]},"_nodeVersion":"20.18.1","dependencies":{"jsbi":"3.2.0","viem":"^2.23.2","ethers":"^5.7.2","@uniswap/v3-sdk":"3.25.2","@uniswap/v4-sdk":"1.21.2","@uniswap/sdk-core":"7.7.1","@uniswap/v4-periphery":"1.0.1","@across-protocol/app-sdk":"^0.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.23.0","@eslint/js":"^9.23.0","@types/bun":"latest","typescript":"^5.0.0","typescript-eslint":"^8.28.0","eslint-plugin-unicorn":"^58.0.0","eslint-plugin-prettier":"^5.2.4","eslint-plugin-security":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/chainhopper-sdk_0.2.7_1755284473838_0.5972511750667511","host":"s3://npm-registry-packages-npm-production"}},"0.2.8":{"name":"chainhopper-sdk","version":"0.2.8","license":"MIT","_id":"chainhopper-sdk@0.2.8","maintainers":[{"name":"asood123","email":"asood123@yahoo.com"}],"dist":{"shasum":"77cbc38a1a95db2ad3a3cdab07a630287cc3ec9c","tarball":"https://registry.npmjs.org/chainhopper-sdk/-/chainhopper-sdk-0.2.8.tgz","fileCount":234,"integrity":"sha512-aNGsdNkt5YtkW52qkZ8PtUL1Lt6TV8e2i/G7+NwnjRLLrPlZHs1f+YIYYgNCMy93WE7WslmiZBN1rouhFyriSw==","signatures":[{"sig":"MEUCIQD9eXAx+CZ3ZotcO/4kNtwryngHUdZ+2PHvwbiCeA6bCQIgdjdmv9cYauQ2hm9/FGAjfeVuIaEH3drpyw3+41Z9ZjQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":906685},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"src/index.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"cc5fdd1cbba510a77024bcbb352f73058ae48234","scripts":{"lint":"eslint --fix","test":"bun test","build":"tsc","types":"tsc --emitDeclarationOnly --declaration --declarationDir ./dist","format":"prettier --write --ignore-unknown","prepublishOnly":"npm run build && npm run types"},"_npmUser":{"name":"asood123","email":"asood123@yahoo.com"},"_npmVersion":"10.8.2","description":"Chainhopper Protocol SDK","directories":{},"lint-staged":{"*.{css,md}":"prettier --write --ignore-unknown","*.{ts,tsx}":["eslint --fix","prettier --write"]},"_nodeVersion":"20.18.1","dependencies":{"jsbi":"3.2.0","viem":"^2.23.2","ethers":"^5.7.2","@uniswap/v3-sdk":"3.25.2","@uniswap/v4-sdk":"1.21.2","@uniswap/sdk-core":"7.7.1","@uniswap/v4-periphery":"1.0.1","@across-protocol/app-sdk":"^0.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.23.0","@eslint/js":"^9.23.0","@types/bun":"latest","typescript":"^5.0.0","typescript-eslint":"^8.28.0","eslint-plugin-unicorn":"^58.0.0","eslint-plugin-prettier":"^5.2.4","eslint-plugin-security":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/chainhopper-sdk_0.2.8_1755608405250_0.4293631868977068","host":"s3://npm-registry-packages-npm-production"}},"0.2.9":{"name":"chainhopper-sdk","version":"0.2.9","license":"MIT","_id":"chainhopper-sdk@0.2.9","maintainers":[{"name":"asood123","email":"asood123@yahoo.com"}],"dist":{"shasum":"3da61eb3101e40ef17d85fa95de0b99cae22c799","tarball":"https://registry.npmjs.org/chainhopper-sdk/-/chainhopper-sdk-0.2.9.tgz","fileCount":263,"integrity":"sha512-5nMOP81qrqwG6N7NOkczUDZwioaWFJmrVFRgtmkun7d4ZLfZRdnIKQKH0kLOiH8MVzRI00f2o0I+uLriZj000A==","signatures":[{"sig":"MEQCICW670KXXP68fDJXcckhWNey1Xond+fHmPPh7nenT97sAiASfdO6eBI+RBL324OMIbx/KJRHCFnl9sBuQsju06EpHg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1052756},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"src/index.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"fa2e08ca929bf9160fd36a4b58d6f7b1e8434037","scripts":{"lint":"eslint --fix","test":"bun test","build":"tsc","types":"tsc --emitDeclarationOnly --declaration --declarationDir ./dist","format":"prettier --write --ignore-unknown","prepublishOnly":"npm run build && npm run types"},"_npmUser":{"name":"asood123","email":"asood123@yahoo.com"},"_npmVersion":"10.8.2","description":"Chainhopper Protocol SDK","directories":{},"lint-staged":{"*.{css,md}":"prettier --write --ignore-unknown","*.{ts,tsx}":["eslint --fix","prettier --write"]},"_nodeVersion":"20.18.1","dependencies":{"jsbi":"3.2.0","viem":"^2.23.2","ethers":"^5.7.2","@uniswap/v3-sdk":"3.25.2","@uniswap/v4-sdk":"1.21.2","@uniswap/sdk-core":"7.7.1","@uniswap/v4-periphery":"1.0.1","@across-protocol/app-sdk":"^0.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.23.0","@eslint/js":"^9.23.0","@types/bun":"latest","typescript":"^5.0.0","typescript-eslint":"^8.28.0","eslint-plugin-unicorn":"^58.0.0","eslint-plugin-prettier":"^5.2.4","eslint-plugin-security":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/chainhopper-sdk_0.2.9_1757006606651_0.9042330102796368","host":"s3://npm-registry-packages-npm-production"}},"0.2.10":{"name":"chainhopper-sdk","module":"src/index.ts","version":"0.2.10","description":"Chainhopper Protocol SDK","license":"MIT","type":"module","main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"publishConfig":{"access":"public"},"devDependencies":{"@eslint/js":"^9.23.0","@types/bun":"latest","eslint":"^9.23.0","eslint-plugin-prettier":"^5.2.4","eslint-plugin-security":"^3.0.1","eslint-plugin-unicorn":"^58.0.0","typescript":"^5.0.0","typescript-eslint":"^8.28.0"},"dependencies":{"@across-protocol/app-sdk":"^0.2.0","@uniswap/sdk-core":"7.7.1","@uniswap/v3-sdk":"3.25.2","@uniswap/v4-periphery":"1.0.1","@uniswap/v4-sdk":"1.21.2","ethers":"^5.7.2","jsbi":"3.2.0","viem":"^2.23.2"},"lint-staged":{"*.{ts,tsx}":["eslint --fix","prettier --write"],"*.{css,md}":"prettier --write --ignore-unknown"},"scripts":{"lint":"eslint --fix","format":"prettier --write --ignore-unknown src/**/*.ts test/**/*.ts","test":"bun test","build":"tsc","types":"tsc --emitDeclarationOnly --declaration --declarationDir ./dist","prepublishOnly":"npm run build && npm run types"},"_id":"chainhopper-sdk@0.2.10","gitHead":"d4cdfdf1b2e95d558ed259600c31c8a93fceb3f3","_nodeVersion":"20.18.1","_npmVersion":"10.8.2","dist":{"integrity":"sha512-eYqLXpjN3s7RG6ZJhrduPc1RmrLXl7saGJUSKV4tNTS+nsksSAQUvzQuXnWCPo+YoLxu3IWVx3tchANcqO5Rpw==","shasum":"c0d5785f29a31c2a98afc5389e285dbe48f319da","tarball":"https://registry.npmjs.org/chainhopper-sdk/-/chainhopper-sdk-0.2.10.tgz","fileCount":264,"unpackedSize":1095146,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCICOxV4wFJWw/beXBIpUpjmO6ZgEGMOjfYMzgemh0bLGeAiAa6t2mBPzWS1YBc5OYYsmLnalqRrfaS8zqPgU/RjHJrg=="}]},"_npmUser":{"name":"asood123","email":"asood123@yahoo.com"},"directories":{},"maintainers":[{"name":"asood123","email":"asood123@yahoo.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/chainhopper-sdk_0.2.10_1757449131437_0.19050604371576307"},"_hasShrinkwrap":false}},"time":{"created":"2025-04-09T17:34:21.505Z","modified":"2025-09-09T20:18:51.869Z","0.1.0":"2025-04-09T17:34:21.774Z","0.1.1":"2025-04-09T17:49:30.634Z","0.1.2":"2025-04-09T17:54:39.680Z","0.1.3":"2025-04-09T18:02:48.575Z","0.1.4":"2025-04-09T18:15:52.188Z","0.1.5":"2025-04-09T18:28:22.450Z","0.1.6":"2025-04-09T18:35:25.377Z","0.1.7":"2025-04-09T18:43:06.909Z","0.1.8":"2025-04-14T20:14:15.263Z","0.1.9":"2025-04-16T14:30:34.913Z","0.1.10":"2025-04-16T21:48:36.549Z","0.1.11":"2025-04-17T01:21:03.069Z","0.1.12":"2025-04-17T01:49:13.984Z","0.1.13":"2025-04-25T19:53:26.026Z","0.1.14":"2025-05-02T20:05:42.221Z","0.1.15":"2025-05-07T20:51:30.350Z","0.1.16":"2025-05-09T17:23:20.960Z","0.2.0":"2025-05-27T18:11:44.566Z","0.2.1":"2025-05-29T12:58:30.217Z","0.2.2":"2025-05-30T14:32:59.511Z","0.2.3":"2025-06-02T19:10:24.471Z","0.2.4":"2025-06-03T00:54:07.683Z","0.2.5":"2025-06-09T20:17:00.819Z","0.2.6":"2025-06-18T15:32:22.291Z","0.2.7":"2025-08-15T19:01:14.207Z","0.2.8":"2025-08-19T13:00:05.558Z","0.2.9":"2025-09-04T17:23:26.944Z","0.2.10":"2025-09-09T20:18:51.688Z"},"license":"MIT","description":"Chainhopper Protocol SDK","maintainers":[{"name":"asood123","email":"asood123@yahoo.com"}],"readme":"# ChainHopper Protocol SDK\n\n[ChainHopper Protocol](https://github.com/meliopolis/chainhopper-protocol) allows Uniswap v3, v4 and Aerodrome LP positions to migrate between supported chains with a single click.\n\nSupports:\n\n- One-click migration from any v3/v4/Aerodrome pool to any v3/v4/Aerodrome pool\n- Smart bridging: Single or Dual Token migrations\n- Native token support for v4\n- Initialize new pools through the migration, if needed\n- Live on: Mainnet, Unichain, Base, Arbitrum, Optimism\n\nWe are grateful to [Uniswap Foundation](https://www.uniswapfoundation.org/) for funding and support!\n\n## Why use ChainHopper?\n\nTo move an LP position to another chain, it takes 4-5 manual steps:\n\n1. Remove liquidity & collect fees\n2. Swap/bridge \"other\" token\n3. Bridge WETH [Wait for confirmations...]\n4. Swap back, if needed\n5. Mint new position\n\nPlus: you need gas tokens on destination chain 😫.\n\nWith ChainHopper, you can do all this with one transaction.\n\nUse this Typescript SDK to quickly and integrate with ChainHopper protocol with a few lines of code.\n\n## Installation\n\n```\nbun install chainhopper-sdk viem\n```\n\n## Quick Start\n\n### 1. Setup the ChainHopperClient\n\n```typescript\nimport { ChainHopperClient } from 'chainhopper-sdk';\n\nexport const client = ChainHopperClient.create({\n  rpcUrls: {\n    1: Bun.env.MAINNET_RPC_URL,\n    10: Bun.env.OPTIMISM_RPC_URL,\n    130: Bun.env.UNICHAIN_RPC_URL,\n    8453: Bun.env.BASE_RPC_URL,\n    42161: Bun.env.ARBITRUM_RPC_URL,\n  },\n});\n```\n\n### 2. Retrieve Migration Data\n\nTo initiate a migration, you must provide the SDK with a single source LP position (`sourcePosition`) to be migrated along with parameters for at least one migration. Each migration requested requires a destination (`destination`) specifying the desired migration output parameters, and a path specification (either `pathFilter` or `exactPath`) specifying information about how the migration should be executed. The SDK then returns all the relevant data for submitting a migration transaction based on the parameters provided.\n\nIf the parameters provided allow for multiple destinations and paths, the various migration options will be returned in `migrations` in descending order of the estimated destination position value. If a migration requested is not available it will be returned in `unavailableMigrations` on the response along with the reasons why it is not available. If a single migration with an `ExactPath` is requested and that combination of migration and path are not available, it will throw an exception.\n\nYou can use both `requestMigration` with `PathFilter` to look for all migration requests matching the `pathFilter` or `requestExactMigration` for `ExactPath` requests where all of the paths are completely specified. In other words, when `exactPath` is used only the exact paths will be considered. If a `pathFilter` is used, specifiying an optional value will constrain the options to use that value. If an optional parameter is not specified in a `PathFilter`, all options for that parameter will be searched with the exception of `slippageInBps` which, if omitted, will default to 100 basis points or 1%.\n\nIn addition to `requestMigration` and `requestExactMigration`, corresponding functions `requestMigrations` and `requestExactMigrations` are available for requesting multiple combinations of `destination` and `path` (`migrations`) at once.\n\n```typescript\nexport type ExactPath = {\n  bridgeType: BridgeType;\n  migrationMethod: MigrationMethod;\n  slippageInBps: number;\n};\n\nexport type PathFilter = {\n  bridgeType?: BridgeType; // searches all available bridges unless specified\n  migrationMethod?: MigrationMethod; // searches all available methods unless specified\n  slippageInBps?: number; // defaults to 100bps/1% if not specifed\n};\n```\n\n```typescript\nimport {\n  RequestMigrationParams, // requires a PathFilter for a destination\n  RequestExactMigrationParams, // requires an ExactPath for a destination\n  RequestMigrationsParams, // requires multiple destination / pathFilter combinations\n  RequestExactMigrationsParams, // requires multiple destination / exactPath combinations\n  Protocol,\n  chainConfigs,\n} from 'chainhopper-sdk';\nimport { zeroAddress } from 'viem';\n\n// For a open-ended migration request using pathFilter:\n\nconst migrationParams: RequestMigrationParams = {\n  sourcePosition: {\n    chainId: 8453, // Base, in this example\n    protocol: Protocol.UniswapV3, // source protocol: UniswapV3, UniswapV4, or Aerodrome (Base only)\n    tokenId: 1806423n, // change to the position you want to migrate\n  },\n  destination: {\n    chainId: 130, // Unichain, in this example\n    token0: zeroAddress, // native ETH on destination chain; can be any ERC20\n    token1: chainConfigs[130].usdcAddress, // any ERC20; must be sorted token0 < token1\n    fee: 500, // specify the fee for the pool\n    tickSpacing: 10, // tick spacing for the pool; only needed for v4\n    hooks: zeroAddress, // the hooks contract for the pool; only needed for v4\n    tickLower: -250000, // SDK will automatically calculate the nearest usable tick\n    tickUpper: -150000, // SDK will automatically calculate the nearest usable tick\n  },\n  pathFilter: { bridgeType: BridgeType.Across }, // search all options using Across\n};\n\nconst migrationResponse = await client.requestMigration(migrationParams);\n\n// For an exact migration, where you want to specify the exact path precisely\n\nconst exactMigrationParams: RequestExactMigrationParams = {\n  sourcePosition: {\n    chainId: 8453,\n    protocol: Protocol.UniswapV3,\n    tokenId: 1806423n,\n  },\n  destination: {\n    chainId: 130,\n    token0: zeroAddress,\n    token1: chainConfigs[130].usdcAddress,\n    fee: 500,\n    tickSpacing: 10,\n    hooks: zeroAddress,\n    tickLower: -250000,\n    tickUpper: -150000,\n  },\n  exactPath: {\n    bridgeType: BridgeType.Across, // specify the bridge type\n    migrationMethod: MigrationMethod.SingleToken, // or DualToken\n    slippageInBps: 50, // specify slippage in bps\n  },\n};\n\nconst exactMigrationResponse = await client.requestExactMigration(exactMigrationParams);\n\n// For `requestExactMigrations` use `migrations` with `exactPath` to request\n// multiple destination/path combinations:\n\nconst exactMigrationsParams: RequestExactMigrationsParams = {\n  sourcePosition: {\n    chainId: 8453,\n    protocol: Protocol.UniswapV3,\n    tokenId: 1806423n,\n  },\n  migrations: [\n    {\n      destination: {\n        chainId: 130,\n        protocol: Protocol.UniswapV4,\n        token0: zeroAddress,\n        token1: chainConfigs[130].usdcAddress,\n        fee: 500,\n        tickSpacing: 10,\n        hooks: zeroAddress,\n        tickLower: -250000,\n        tickUpper: -150000,\n      },\n      exactPath: {\n        bridgeType: BridgeType.Across,\n        migrationMethod: MigrationMethod.SingleToken,\n        slippageInBps: 100,\n      },\n    },\n    {\n      destination: {\n        chainId: 130,\n        protocol: Protocol.UniswapV4,\n        token0: zeroAddress,\n        token1: chainConfigs[130].usdcAddress,\n        fee: 100,\n        tickSpacing: 1,\n        hooks: zeroAddress,\n        tickLower: -250000,\n        tickUpper: -150000,\n      },\n      exactPath: {\n        bridgeType: BridgeType.Across,\n        migrationMethod: MigrationMethod.SingleToken,\n        slippageInBps: 100,\n      },\n    },\n  ],\n};\n\nconst exactMigrationsResponse =\n  await client.requestExactMigrations(exactMigrationsParams);\n\n// For `requestMigrations` use `migrations` with `pathFilter` to request\n// multiple destination/path combinations:\n\nconst migrationParams: RequestMigrationsParams = {\n  sourcePosition: {\n    chainId: 8453,\n    protocol: Protocol.UniswapV3,\n    tokenId: 1806423n,\n  },\n  migrations: [\n    {\n      destination: {\n        chainId: 130,\n        protocol: Protocol.UniswapV4,\n        token0: zeroAddress,\n        token1: chainConfigs[130].usdcAddress,\n        fee: 500,\n        tickSpacing: 10,\n        hooks: zeroAddress,\n        tickLower: -250000,\n        tickUpper: -150000,\n      },\n      pathFilter: {\n        slippageInBps: 100,\n      },\n    },\n    {\n      destination: {\n        chainId: 130,\n        protocol: Protocol.UniswapV4,\n        token0: zeroAddress,\n        token1: chainConfigs[130].usdcAddress,\n        fee: 100,\n        tickSpacing: 1,\n        hooks: zeroAddress,\n        tickLower: -250000,\n        tickUpper: -150000,\n      },\n      pathFilter: {\n        slippageInBps: 100,\n      },\n    },\n  ],\n};\n\nconst exactMigrationsResponse = \n  await client.requestExactMigrations(exactMigrationsParams);\n```\n\n### 3. Execute the Migration\n\nYou can execute the migration by using the data returned from either the general or exact migration requests:\n\n```typescript\nimport { createWalletClient, simulateContract, writeContract } from 'viem';\nimport { base } from 'viem/chains';\nimport { config } from './config';\nimport { NFTSafeTransferFrom } from 'chainhopper-sdk';\n\nexport const walletClient = createWalletClient({\n  chain: base,\n  transport: custom(window.ethereum!),\n});\n\n// Select a migration from the migrationResponse:\nconst migration = migrationResponse.migrations[0];\n// migrations are sorted by highest to lowest expected value of the destination\n\n// If needed, inspect unavailableMigrations to show migrations matching pathFilter\n// but not currently available with the reasons why they are not available:\nconsole.log(migrationResponse.unavailableMigrations);\n\nconst { request } = await walletClient.simulateContract({\n  ...migration.executionParams,\n  account: migrationResponse.sourcePosition.owner,\n});\n\n// execute the request\nconst result = await writeContract(config, request);\n\n// For exact migration, only one migration is available:\n\nconst { request: exactRequest } = await walletClient.simulateContract({\n  ...exactMigrationResponse.migration.executionParams,\n  account: exactMigrationResponse.sourcePosition.owner,\n});\n\n// execute the exact request\nconst exactResult = await writeContract(config, exactRequest);\n\n// Select a migration from the migrationsResponse:\nconst migration = migrationsResponse.migrations[0][0];\n// for a migration request with multiple destinations, outputs are grouped\n// per destination (and sorted by value per requested destination)\n\nconst { request: selectedMigration } = await walletClient.simulateContract({\n  ...migration.executionParams,\n  account: migrationsResponse.sourcePosition.owner,\n});\n\n// execute the selected migration\nconst exactResult = await writeContract(config, selectedMigration);\n```\n\nCalling `writeContract` open up a wallet window for signing the transaction and initiating the migration process.\n\n## Advanced Options\n\n### Sender Fees\n\nChainHopper protocol is designed to charge a protocol fee (currently set to 0) for any completed migration. Additionally, integrators can specify their own fees (for completed migrations), which the protocol will split with a percentage going to the specified recipient.\n\n```typescript\nconst migrationParams: RequestMigrationParams = {\n  // ... previous params\n  senderShareBps: 15,\n  senderFeeRecipient: '0x...', // address for fee recipient\n};\n```\n\n### Migration Methods: Single Token vs Dual Token\n\nChainHopper Protocol supports two migration methods:\n\n- **Single Token**: Converts the entire position to WETH (or USDC), migrates it, and then swaps back to the other token at the destination.\n- **Dual Token**: Moves both tokens independently, reconstructing the position at the destination.\n\nFor example, to request a Dual Token route use `pathFilter` or `exactPath` to speciy it:\n\n```typescript\nconst migrationParams: RequestMigrationParams = {\n  sourcePosition: {\n    // ... source position info\n  },\n  destination: {\n    // ... destination info\n  },\n  pathFilter: {\n    migrationMethod: MigrationMethod.DualToken, // specify DualToken\n  },\n  // ... rest of params\n};\n```\n\n### Slippage Parameters\n\nBy default, the SDK allows for 1% slippage, divided evenly across the source and destination chains. You can adjust this by specifying the `slippageInBps` parameter:\n\n```typescript\nconst migrationParams: RequestMigrationParams = {\n  // ... previous params\n  path: {\n    // ... other params\n    slippageInBps: 100, // allows for up to 1% slippage\n  },\n};\n```\n\n### Creating a New Pool\n\nChainHopper Protocol (the smart contracts) supports creating a pool if it doesn't exist already. If you want to do this, you can specify a `sqrtPriceX96` to initialize the new pool and a new pool will be initialized with this price to support the migration:\n\n```typescript\nconst migrationParams: RequestMigrationParams = {\n  sourcePosition: {\n    // ... source position info\n  },\n  destination: {\n    // ... other destination info\n    // specifying sqrtPriceX96 will initialize a new pool at this price:\n    sqrtPriceX96: 736087614829673861315061733n,\n  },\n  pathFilter: {\n    // ... path filter\n  },\n  // ... rest of params\n};\n```\n\n## FAQs\n\n_1. What chains are supported?_\n\nCurrently, we support Ethereum, Optimism, Arbitrum, Base and Unichain. Aerodrome protocol is supported on Base only. Please get in touch if you want us to support additional chains.\n\n_2. Do you have plans to support additional bridges?_\n\nCurrently, we only support Across. We are considering adding Wormhole and Native Interop. If you have a request, please let us know.\n\n_3. What types of pools or tokens are supported?_\n\nBesides Fee-on-transfer and rebasing tokens, we support all tokens.\n\nFor pools, as long as there is a bridgeable asset in a pool, we can support it. Though, we caution users when using any pool with hooks, as those can lead to unpredictable scenarios.\n\n_4. Is this protocol Audited?_\n\nYes. You can find the audit reports in protocol repository: [ChainHopper Protocol](https://github.com/meliopolis/chainhopper-protocol).\n\n_5. How long does a migration typically take?_\n\nMost migrations with reasonable slippage (~1%) finish within 10 seconds.\n\n_6. How do fees work?_\n\nYou, as the interface, can specify a fee and a recipient address to share that fee with. The protocol takes a 0.1% fee and additionally takes a 15% cut of the interface fee. So, if you specified 0.15% as the interface fee, the user will pay 0.25% which will be split 0.1225% for protocol and 0.1275% for you.\n\n_7. What happens if migration fails midway?_\n\nIf migration fails on the source chain, nothing happens. User still owns the LP token and can retry.\n\nIf migration fails on the destination chian, the bridged asset will be delivered to the user's wallet **on destination chain**. And we will not take any fees for a failed migration.\n\nIn extremely rare scenarios, it's possible that an Across relayer was unable to deliver the asset on destination chain. In those situations, the attempted bridged asset - ETH, WETH, USDC - will be returned to the user _on source chain_.\n\n## Questions/Comments\n\nYou can open an issue on this repo or reach us at [chainhopper@melio.io](mailto:chainhopper@melio.io).\n","readmeFilename":"README.md"}