{"_id":"@ekubo/yul-router-sdk","_rev":"11-b02aafba50b3cb54981d6cae56d4013a","name":"@ekubo/yul-router-sdk","dist-tags":{"latest":"0.8.0"},"versions":{"0.1.0":{"name":"@ekubo/yul-router-sdk","version":"0.1.0","_id":"@ekubo/yul-router-sdk@0.1.0","maintainers":[{"name":"moodysalem","email":"moody.salem@gmail.com"},{"name":"yohantz","email":"tyohan2000@icloud.com"}],"dist":{"shasum":"29c83c51bc683cd632b2e75959f2f2199c5f1f05","tarball":"https://registry.npmjs.org/@ekubo/yul-router-sdk/-/yul-router-sdk-0.1.0.tgz","fileCount":3,"integrity":"sha512-Lkwu5PmS8WoEw/Ybso52lz4CBd7w4jOGlA/+GZZkIsq746kyymVLDZZC5IKLx05XFXc5wM/g1SHjVs4QVoFuhg==","signatures":[{"sig":"MEQCIEIzQ1xbfQ4asChjj3Ko+nnDiOdmt8dUcEkg4jLGZiLYAiA0rUBrEfpS6yGjO7XmEvKMK4WF2+ugkIqrjpaD4zYnVQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10113},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"9a019cccbcae85a324498664aca437be8dd5787c","scripts":{"test":"vitest run","build":"tsc -p tsconfig.json","prepublishOnly":"npm run build && npm test","generate-foundry-testdata":"npm run --silent build && node scripts/generate-foundry-testdata.mjs"},"_npmUser":{"name":"moodysalem","email":"moody.salem@gmail.com"},"_npmVersion":"11.12.1","directories":{},"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"devDependencies":{"viem":"^2.31.7","vitest":"^3.2.4","typescript":"^5.8.3"},"peerDependencies":{"viem":"^2.31.7"},"_npmOperationalInternal":{"tmp":"tmp/yul-router-sdk_0.1.0_1783350924900_0.0985617979119644","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@ekubo/yul-router-sdk","version":"0.2.0","_id":"@ekubo/yul-router-sdk@0.2.0","maintainers":[{"name":"moodysalem","email":"moody.salem@gmail.com"},{"name":"yohantz","email":"tyohan2000@icloud.com"}],"dist":{"shasum":"4e42b98f19aad5b03774135fa853cfda9de006d1","tarball":"https://registry.npmjs.org/@ekubo/yul-router-sdk/-/yul-router-sdk-0.2.0.tgz","fileCount":3,"integrity":"sha512-rkKUjooLWOrIGzPJ4KaQsald8CNhyFvJTZCUmYtsvzYEcivOjAM8iLAWAsundVZGWM/QU3/PSp2hsmDuqTwMnA==","signatures":[{"sig":"MEUCIQDulMs8B8OKckXor8vAAJO2PL8Vgir3fRpfijsG55g2rQIgDbSXsr4z2Lcy04v4xhI9rUnRhFB/yOXgndlHneHdyYk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13460},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"2cb73b7108f0d39c9a94cac0b1e9f0b85fabe609","scripts":{"test":"bun test test/index.test.ts","build":"tsc -p tsconfig.json","prepublishOnly":"bun run build && bun run test","generate-foundry-testdata":"bun scripts/generate-foundry-testdata.mjs"},"_npmUser":{"name":"moodysalem","email":"moody.salem@gmail.com"},"_npmVersion":"11.12.1","directories":{},"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"devDependencies":{"viem":"^2.31.7","typescript":"^5.8.3"},"peerDependencies":{"viem":"^2.31.7"},"_npmOperationalInternal":{"tmp":"tmp/yul-router-sdk_0.2.0_1783539795666_0.27403029427267356","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@ekubo/yul-router-sdk","version":"0.4.0","_id":"@ekubo/yul-router-sdk@0.4.0","maintainers":[{"name":"moodysalem","email":"moody.salem@gmail.com"},{"name":"yohantz","email":"tyohan2000@icloud.com"}],"dist":{"shasum":"5de115a8ada7982ce6dfa23086f0b1735597e702","tarball":"https://registry.npmjs.org/@ekubo/yul-router-sdk/-/yul-router-sdk-0.4.0.tgz","fileCount":3,"integrity":"sha512-oMBzWo5xrdZhJLutmek+82a3ThDHW4ai1emceogf7w0AiVOEGesbaLjROeGp//NzP2H5ZzapdDItwwCiG0n2Xw==","signatures":[{"sig":"MEYCIQCB25za5/RToze4p55Ar9SNF6CL31hRmVtKgcNv+LgQgwIhAIPmIWoniz5ceLS5NaPupRQTEOb047E58aP6qnQ/SL5g","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12828},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"871c5eee86dd3613490c47260730f997c99f16be","scripts":{"test":"bun test test/index.test.ts","build":"tsc -p tsconfig.json","prepublishOnly":"bun run build && bun run test","generate-foundry-testdata":"bun scripts/generate-foundry-testdata.mjs"},"_npmUser":{"name":"moodysalem","email":"moody.salem@gmail.com"},"_npmVersion":"11.12.1","directories":{},"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"devDependencies":{"viem":"^2.31.7","typescript":"^5.8.3"},"peerDependencies":{"viem":"^2.31.7"},"_npmOperationalInternal":{"tmp":"tmp/yul-router-sdk_0.4.0_1784131821862_0.041328296873494486","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@ekubo/yul-router-sdk","version":"0.5.0","_id":"@ekubo/yul-router-sdk@0.5.0","maintainers":[{"name":"moodysalem","email":"moody.salem@gmail.com"},{"name":"yohantz","email":"tyohan2000@icloud.com"}],"homepage":"https://github.com/EkuboProtocol/yul-router#readme","bugs":{"url":"https://github.com/EkuboProtocol/yul-router/issues"},"dist":{"shasum":"a6452648e8bce6f3247b4f19e48773302e5e6dde","tarball":"https://registry.npmjs.org/@ekubo/yul-router-sdk/-/yul-router-sdk-0.5.0.tgz","fileCount":3,"integrity":"sha512-ztuXNaJO+wJOn1xvGf6AMJVgakIf1vKFXopJTMSGboYSGXmxMAfJx6MfqUes2BgG42gqh5I+qm8wkIFJ7jfr+A==","signatures":[{"sig":"MEUCIQCgtxWvHo+jhhTR/jGt6HsioBhpw5cwUzX25s6KbvtsXgIgb5Sd+mNeQsvk7NKUKwSwn6JWIPzxLH8ofER5/2uWryU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ekubo%2fyul-router-sdk@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13526},"main":"./dist/index.js","type":"module","_from":"file:ekubo-yul-router-sdk-0.5.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"bun test test/index.test.ts","build":"tsc -p tsconfig.json","prepublishOnly":"bun run build && bun run test","generate-foundry-testdata":"bun scripts/generate-foundry-testdata.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a522b203-5fbb-4a96-833b-a65068eb074d"}},"_resolved":"/home/runner/work/yul-router/yul-router/sdk/ekubo-yul-router-sdk-0.5.0.tgz","_integrity":"sha512-ztuXNaJO+wJOn1xvGf6AMJVgakIf1vKFXopJTMSGboYSGXmxMAfJx6MfqUes2BgG42gqh5I+qm8wkIFJ7jfr+A==","repository":{"url":"git+https://github.com/EkuboProtocol/yul-router.git","type":"git","directory":"sdk"},"_npmVersion":"11.18.0","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"devDependencies":{"viem":"^2.31.7","typescript":"^5.8.3"},"peerDependencies":{"viem":"^2.31.7"},"_npmOperationalInternal":{"tmp":"tmp/yul-router-sdk_0.5.0_1784845255671_0.6107225832966046","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@ekubo/yul-router-sdk","version":"0.6.0","_id":"@ekubo/yul-router-sdk@0.6.0","maintainers":[{"name":"moodysalem","email":"moody.salem@gmail.com"},{"name":"yohantz","email":"tyohan2000@icloud.com"}],"homepage":"https://github.com/EkuboProtocol/yul-router#readme","bugs":{"url":"https://github.com/EkuboProtocol/yul-router/issues"},"dist":{"shasum":"727a741a949c3afae98c6849503a53842ca992d3","tarball":"https://registry.npmjs.org/@ekubo/yul-router-sdk/-/yul-router-sdk-0.6.0.tgz","fileCount":3,"integrity":"sha512-cDtCJ4eVkxYDu2PfEE0d6aUq4q6svfCAADiuIqX1NvjlWWvMmqzHrJ8pJnh9mhIc9lo42+gDvop8VAdwcT/jKA==","signatures":[{"sig":"MEYCIQDdfgm8js0iTGv1zXiBNhQP4wSwB8VtC/yELjZVoZpTqwIhAPCQ+Lo2ZfCmdsW82+M7MSMvc4IcHSNadRer3ZE8qV7K","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ekubo%2fyul-router-sdk@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16682},"main":"./dist/index.js","type":"module","_from":"file:ekubo-yul-router-sdk-0.6.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"bun test test/index.test.ts","build":"tsc -p tsconfig.json","prepublishOnly":"bun run build && bun run test","generate-foundry-testdata":"bun scripts/generate-foundry-testdata.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a522b203-5fbb-4a96-833b-a65068eb074d"}},"_resolved":"/home/runner/work/yul-router/yul-router/sdk/ekubo-yul-router-sdk-0.6.0.tgz","_integrity":"sha512-cDtCJ4eVkxYDu2PfEE0d6aUq4q6svfCAADiuIqX1NvjlWWvMmqzHrJ8pJnh9mhIc9lo42+gDvop8VAdwcT/jKA==","repository":{"url":"git+https://github.com/EkuboProtocol/yul-router.git","type":"git","directory":"sdk"},"_npmVersion":"11.18.0","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"devDependencies":{"viem":"^2.31.7","typescript":"^5.8.3"},"peerDependencies":{"viem":"^2.31.7"},"_npmOperationalInternal":{"tmp":"tmp/yul-router-sdk_0.6.0_1785193204725_0.643128998080932","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@ekubo/yul-router-sdk","version":"0.7.0","_id":"@ekubo/yul-router-sdk@0.7.0","maintainers":[{"name":"moodysalem","email":"moody.salem@gmail.com"},{"name":"yohantz","email":"tyohan2000@icloud.com"}],"homepage":"https://github.com/EkuboProtocol/yul-router#readme","bugs":{"url":"https://github.com/EkuboProtocol/yul-router/issues"},"dist":{"shasum":"1b7f211bcb76fb4e825a016dfc3cb1cb4997fdd8","tarball":"https://registry.npmjs.org/@ekubo/yul-router-sdk/-/yul-router-sdk-0.7.0.tgz","fileCount":3,"integrity":"sha512-Jl7IpDksAOcMHfFUsw3Frtwo6siIwzphHSvcty5MjVrfueRzr2EYIPidqv16zGWexQpApzR+49AzY5PrOkaOPw==","signatures":[{"sig":"MEUCIGqxOU3t7X2qMrpFefrQK/tFXN4iF6F1Z1NuZrWTP8ZcAiEA4BDrKV7/ZMbyHY7F9QyzgMA0QA/YtSG/xhfaA5JRQyM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ekubo%2fyul-router-sdk@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16682},"main":"./dist/index.js","type":"module","_from":"file:ekubo-yul-router-sdk-0.7.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"bun test test/index.test.ts","build":"tsc -p tsconfig.json","prepublishOnly":"bun run build && bun run test","generate-foundry-testdata":"bun scripts/generate-foundry-testdata.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a522b203-5fbb-4a96-833b-a65068eb074d"}},"_resolved":"/home/runner/work/yul-router/yul-router/sdk/ekubo-yul-router-sdk-0.7.0.tgz","_integrity":"sha512-Jl7IpDksAOcMHfFUsw3Frtwo6siIwzphHSvcty5MjVrfueRzr2EYIPidqv16zGWexQpApzR+49AzY5PrOkaOPw==","repository":{"url":"git+https://github.com/EkuboProtocol/yul-router.git","type":"git","directory":"sdk"},"_npmVersion":"11.18.0","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"devDependencies":{"viem":"^2.31.7","typescript":"^5.8.3"},"peerDependencies":{"viem":"^2.31.7"},"_npmOperationalInternal":{"tmp":"tmp/yul-router-sdk_0.7.0_1786161297213_0.24358873984686036","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"@ekubo/yul-router-sdk","version":"0.7.1","keywords":["ekubo","swap","router","quote","calldata","amm","dex","evm","cryptocurrency","blockchain"],"_id":"@ekubo/yul-router-sdk@0.7.1","maintainers":[{"name":"moodysalem","email":"moody.salem@gmail.com"},{"name":"yohantz","email":"tyohan2000@icloud.com"}],"homepage":"https://ekubo.org","bugs":{"url":"https://github.com/EkuboProtocol/yul-router/issues"},"dist":{"shasum":"48269c185656749fe69a7b9e5c4785866b3e662c","tarball":"https://registry.npmjs.org/@ekubo/yul-router-sdk/-/yul-router-sdk-0.7.1.tgz","fileCount":4,"integrity":"sha512-9HNkF5PTU37P+uL3/wuqMQBaqLIHHwoEMmFLT4XSiO8M0YgOMqj8gmyeDGZr0oMj8/LWYgWoV9HZJQwYyKwzvw==","signatures":[{"sig":"MEYCIQDBZKVcbxtMZPOsGcjkRPou+STY5ihlKJjE/xguMBbcMQIhAMAqiAZm8zY21IHewqHsjgVa3iHAcckI1gi8hgWVT35w","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ekubo%2fyul-router-sdk@0.7.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":20336},"main":"./dist/index.js","type":"module","_from":"file:ekubo-yul-router-sdk-0.7.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"bun test test/index.test.ts","build":"tsc -p tsconfig.json","prepublishOnly":"bun run build && bun run test","generate-foundry-testdata":"bun scripts/generate-foundry-testdata.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a522b203-5fbb-4a96-833b-a65068eb074d"}},"_resolved":"/home/runner/work/yul-router/yul-router/sdk/ekubo-yul-router-sdk-0.7.1.tgz","_integrity":"sha512-9HNkF5PTU37P+uL3/wuqMQBaqLIHHwoEMmFLT4XSiO8M0YgOMqj8gmyeDGZr0oMj8/LWYgWoV9HZJQwYyKwzvw==","repository":{"url":"git+https://github.com/EkuboProtocol/yul-router.git","type":"git","directory":"sdk"},"_npmVersion":"11.18.0","description":"Constructs swap transaction calldata and price quotation calldata for the Ekubo Yul Router on EVM chains","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"devDependencies":{"viem":"^2.31.7","typescript":"^5.8.3"},"peerDependencies":{"viem":"^2.31.7"},"_npmOperationalInternal":{"tmp":"tmp/yul-router-sdk_0.7.1_1786164463230_0.8389781372494218","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"_id":"@ekubo/yul-router-sdk@0.8.0","bugs":{"url":"https://github.com/EkuboProtocol/yul-router/issues"},"dist":{"shasum":"f50809ed0f0d382ea7c0f02a625ef6bc56d01add","tarball":"https://registry.npmjs.org/@ekubo/yul-router-sdk/-/yul-router-sdk-0.8.0.tgz","fileCount":4,"integrity":"sha512-bGWo9+VjkkH+o4luFT4Nu7+bT1pJLN69HhFbWFNAAUgcKINLka3UrmGAWX94rYdBDwXfcFW6X7fDpbOamQfNAw==","signatures":[{"sig":"MEYCIQDYTIHLnd3gLKfiODi4zm13/+r4ttmY8SfIPUK2Q/gyiAIhAPgJ3V+uySfUvcjLeUE7qto320Az+lOcNNjsOqRG90IS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIFdTNfOrireE4x1bVXQNA1Z0Fr39rE9DbcHiNXgb93vhAiBC4lFl/cz98M0bjvMXGV4GAQfLogJczkBY7UoBcRTLrw=="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ekubo%2fyul-router-sdk@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":21389},"main":"./dist/index.js","name":"@ekubo/yul-router-sdk","type":"module","_from":"file:ekubo-yul-router-sdk-0.8.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"lint":"eslint .","test":"bun test test/index.test.ts","build":"tsc -p tsconfig.json","lint:prune":"eslint . --prune-suppressions","prepublishOnly":"bun run build && bun run test","generate-foundry-testdata":"bun scripts/generate-foundry-testdata.mjs"},"version":"0.8.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"a522b203-5fbb-4a96-833b-a65068eb074d"}},"homepage":"https://ekubo.org","keywords":["ekubo","swap","router","quote","calldata","amm","dex","evm","cryptocurrency","blockchain"],"_resolved":"/home/runner/work/yul-router/yul-router/sdk/ekubo-yul-router-sdk-0.8.0.tgz","_integrity":"sha512-bGWo9+VjkkH+o4luFT4Nu7+bT1pJLN69HhFbWFNAAUgcKINLka3UrmGAWX94rYdBDwXfcFW6X7fDpbOamQfNAw==","repository":{"url":"git+https://github.com/EkuboProtocol/yul-router.git","type":"git","directory":"sdk"},"_npmVersion":"11.18.0","description":"Constructs swap transaction calldata and price quotation calldata for the Ekubo Yul Router on EVM chains","directories":{},"maintainers":[{"name":"moodysalem","email":"moody.salem@gmail.com"}],"_nodeVersion":"24.21.0","_hasShrinkwrap":false,"devDependencies":{"viem":"^2.31.7","eslint":"10.9.1","typescript":"^5.8.3","@typescript-eslint/parser":"8.68.0"},"peerDependencies":{"viem":"^2.31.7"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/yul-router-sdk_0.8.0_1790728930693_0.9202402266168888"}}},"time":{"created":"2026-07-06T15:15:24.800Z","modified":"2026-09-30T00:42:11.250Z","0.1.0":"2026-07-06T15:15:25.039Z","0.2.0":"2026-07-08T19:43:15.797Z","0.3.0":"2026-07-15T16:00:24.937Z","0.4.0":"2026-07-15T16:10:21.991Z","0.5.0":"2026-07-23T22:20:55.835Z","0.6.0":"2026-07-27T23:00:04.882Z","0.7.0":"2026-08-08T03:54:57.384Z","0.7.1":"2026-08-08T04:47:43.392Z","0.8.0":"2026-09-30T00:42:10.780Z"},"bugs":{"url":"https://github.com/EkuboProtocol/yul-router/issues"},"homepage":"https://ekubo.org","keywords":["ekubo","swap","router","quote","calldata","amm","dex","evm","cryptocurrency","blockchain"],"repository":{"url":"git+https://github.com/EkuboProtocol/yul-router.git","type":"git","directory":"sdk"},"description":"Constructs swap transaction calldata and price quotation calldata for the Ekubo Yul Router on EVM chains","maintainers":[{"name":"moodysalem","email":"moody.salem@gmail.com"}],"readme":"# @ekubo/yul-router-sdk\n\nBuilds the packed swap calldata for the [Ekubo](https://ekubo.org) Yul Router on EVM chains,\nand the calldata for reading a price quotation for that same route.\n\nThe router takes custom packed calldata rather than a conventional ABI-encoded function call.\nThis SDK is what produces those bytes: you describe a route as a list of hops, and it returns\nthe `0x…` calldata to send to the router address.\n\n## Installation\n\n```sh\nnpm install @ekubo/yul-router-sdk\n# or\nbun add @ekubo/yul-router-sdk\n```\n\n`viem` is a peer dependency.\n\n## Constructing a swap transaction\n\n`encodeRoutes(...)` / `generateCalldata(...)` take a set of multi-hops and return the calldata\nfor the swap. Every multi-hop starts from the same `specifiedToken` and ends at the same\n`calculatedToken`; the router executes them all under one Core lock, aggregates the amounts,\napplies a single slippage check, and settles once.\n\n```ts\nimport { generateCalldata, YUL_ROUTER_ADDRESS } from \"@ekubo/yul-router-sdk\";\n\nconst data = generateCalldata({\n  multiHops: [\n    {\n      specifiedAmount: 10n ** 18n,\n      hops: [{ poolKey, sqrtRatioLimit: MIN_SQRT_RATIO }],\n    },\n  ],\n  specifiedToken: tokenIn,\n  calculatedToken: tokenOut,\n  calculatedAmountThreshold: minimumOut, // required; guards slippage\n  recipient,\n});\n\n// Send with any EVM client:\nawait walletClient.sendTransaction({ to: YUL_ROUTER_ADDRESS, data, value });\n```\n\n`calculatedAmountThreshold` is mandatory — a positive minimum output for exact-input routes, a\nnegative maximum input for exact-output. Omitting it throws rather than silently encoding an\nunbounded slippage threshold.\n\nExact-input amounts are positive; exact-output amounts are negative.\n\n## Obtaining a price quotation\n\n`generateQuoteCalldata(...)` / `encodeQuoteCalldata(...)` produce the calldata for the router's\n`quote(bytes)` entrypoint, which runs the identical route inside a Core lock and returns the\nresulting amounts without settling. No token balance and no approval are required, and all pool\nand extension state changes are rolled back.\n\n```ts\nimport { generateQuoteCalldata } from \"@ekubo/yul-router-sdk\";\n\nconst data = generateQuoteCalldata({ multiHops, specifiedToken, calculatedToken });\nconst { data: result } = await publicClient.call({ to: YUL_ROUTER_ADDRESS, data });\n// decodes to (specifiedToken, calculatedToken, specifiedAmount, calculatedAmount)\n```\n\nDirect execution, forwarding, and quoting all return the same four-word tuple for the same route\nand starting state, so a quotation and the swap built from it stay byte-for-byte comparable.\n\n## Hop types\n\n| Hop | Use |\n|---|---|\n| `CoreHop` | A swap against an Ekubo Core pool |\n| `ForwardedHop` | A swap routed through an extension's forward callback |\n| `SignedExclusiveSwapHop` | A swap filled against a signed exclusive quote |\n| `WrapperHop` | A token wrap or unwrap step |\n\n## Also exported\n\n- `encodeRoute(...)` — encode a single route body\n- `encodeSignedSwapMeta(...)` — encode the metadata for a signed exclusive swap\n- `encodePoolBalanceUpdate(...)` — encode a pool balance delta\n- `calldataSize(...)` — byte length of encoded calldata\n- `YUL_ROUTER_ADDRESS`, `YUL_ROUTER_ABI`, and the sqrt-ratio and threshold bounds\n\n## License\n\nSee the [repository](https://github.com/EkuboProtocol/yul-router).\n","readmeFilename":"README.md"}