{"_id":"@centurion_project/universal-router-sdk","_rev":"16-cfb1afc445147bab7163fe18e1a73236","name":"@centurion_project/universal-router-sdk","dist-tags":{"ctn":"5.1.0-ctn.1","latest":"5.9.10"},"versions":{"5.1.0-ctn.0":{"name":"@centurion_project/universal-router-sdk","version":"5.1.0-ctn.0","keywords":["uniswap","ethereum"],"license":"MIT","_id":"@centurion_project/universal-router-sdk@5.1.0-ctn.0","maintainers":[{"name":"centurionproject","email":"centurionlabs@outlook.com"}],"homepage":"https://github.com/Uniswap/sdks#readme","bugs":{"url":"https://github.com/Uniswap/sdks/issues"},"dist":{"shasum":"ef4573ef6270780a2270637a738235b78ec8fabf","tarball":"https://registry.npmjs.org/@centurion_project/universal-router-sdk/-/universal-router-sdk-5.1.0-ctn.0.tgz","fileCount":121,"integrity":"sha512-P3qTBbIhdGZbY+nK2nYbEudi2xQrD77Fhbjj9sDHNCOaTYEMllwlzk6kSVUk7ExXcGYzBkcwZuXPGMZkQ57zBA==","signatures":[{"sig":"MEUCIGzEl0m1NKrhyhbfqoHpDzheCOR6YDZEYrCSLnj+8C5aAiEAuMf0LkPuaZdR3GYQMgnSuPYwOqcxwA7vYQll53zreK4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":417245},"main":"./dist/cjs/src/index.js","module":"./dist/esm/src/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/types/src/index.d.ts","import":"./dist/esm/src/index.js","require":"./dist/cjs/src/index.js"}},"scripts":{"docs":"typedoc","lint":"bun run prettier","test":"bun run test:hardhat && bun run test:forge","build":"bun run clean && tsc -p tsconfig.cjs.json && tsc -p tsconfig.esm.json && tsc -p tsconfig.types.json","clean":"rm -rf dist","release":"changeset publish","lint:fix":"bun run prettier:fix && bun run forge:fix","prettier":"prettier --check '**/*.ts' && prettier --check '**/*.json'","forge:fix":"forge fmt","test:forge":"forge test","prettier:fix":"prettier --write '**/*.ts' && prettier --write '**/*.json'","test:hardhat":"env TS_NODE_COMPILER_OPTIONS='{\"module\": \"commonjs\" }' hardhat test"},"typings":"./dist/types/src/index.d.ts","_npmUser":{"name":"centurionproject","email":"centurionlabs@outlook.com"},"prettier":{"semi":false,"printWidth":120,"singleQuote":true,"trailingComma":"es5"},"repository":{"url":"git+https://github.com/Uniswap/sdks.git","type":"git"},"_npmVersion":"11.12.0","description":"sdk for integrating with the Universal Router contracts","directories":{},"sideEffects":false,"_nodeVersion":"22.13.1","dependencies":{"jsbi":"^3.1.4","tslib":"^2.3.0","ethers":"^5.7.0","bignumber.js":"^9.0.2","tiny-invariant":"^1.1.0","@uniswap/v4-sdk":"^2.0.0","@uniswap/v2-core":"^1.0.1","@uniswap/v3-core":"1.0.0","@ethersproject/abi":"^5.5.0","@openzeppelin/contracts":"4.7.0","@centurion_project/v2-sdk":"^4.20.0-ctn.0","@centurion_project/v3-sdk":"^3.30.0-ctn.0","@uniswap/universal-router":"2.1.0","@centurion_project/sdk-core":"^7.13.0-ctn.1","@centurion_project/router-sdk":"^2.9.0-ctn.0","@centurion_project/permit2-sdk":"^1.4.0-ctn.0","@ethersproject/abstract-signer":"^5.7.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.6","dotenv":"^16.0.3","hardhat":"^2.25.0","ts-node":"^10.9.1","typedoc":"^0.21.2","prettier":"^2.4.1","typescript":"^4.3.3","@types/chai":"^4.3.3","@types/node":"^18.7.16","@types/mocha":"^9.1.1","@types/node-fetch":"^2.6.2","eslint-plugin-prettier":"^3.4.1"},"_npmOperationalInternal":{"tmp":"tmp/universal-router-sdk_5.1.0-ctn.0_1775129396891_0.04885197673627051","host":"s3://npm-registry-packages-npm-production"}},"5.1.0-ctn.1":{"name":"@centurion_project/universal-router-sdk","version":"5.1.0-ctn.1","keywords":["centurion","dex","ethereum"],"license":"MIT","_id":"@centurion_project/universal-router-sdk@5.1.0-ctn.1","maintainers":[{"name":"centurionproject","email":"centurionlabs@outlook.com"}],"homepage":"https://github.com/CenturionDEX/centurion-dex-sdks#readme","bugs":{"url":"https://github.com/CenturionDEX/centurion-dex-sdks/issues"},"dist":{"shasum":"ec69740ad11c595783494ddfddcca176c3f6756d","tarball":"https://registry.npmjs.org/@centurion_project/universal-router-sdk/-/universal-router-sdk-5.1.0-ctn.1.tgz","fileCount":123,"integrity":"sha512-J8MXrnZ4rs/N1NxcqIYMHFVmCVfI1lajgg/kE7bWvuKmosX+kCONc1j4Lelmp2FpbFYxYzb2NI+KKNnz5z/vxw==","signatures":[{"sig":"MEUCIQCtUPcPJ+I32pYJjPLh050VnlIOSRepyitfQjq8ExFhhAIgfur6ZuuUliWzW9oih3X/2rT63rTMwXQnV4b7p06kTCY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":614140},"main":"./dist/cjs/src/index.js","module":"./dist/esm/src/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/types/src/index.d.ts","import":"./dist/esm/src/index.js","require":"./dist/cjs/src/index.js"}},"scripts":{"docs":"typedoc","lint":"bun run prettier","test":"bun run test:hardhat && bun run test:forge","build":"bun run clean && tsc -p tsconfig.cjs.json && tsc -p tsconfig.esm.json && tsc -p tsconfig.types.json","clean":"rm -rf dist","release":"changeset publish","lint:fix":"bun run prettier:fix && bun run forge:fix","prettier":"prettier --check '**/*.ts' && prettier --check '**/*.json'","forge:fix":"forge fmt","test:forge":"forge test","prettier:fix":"prettier --write '**/*.ts' && prettier --write '**/*.json'","test:hardhat":"env TS_NODE_COMPILER_OPTIONS='{\"module\": \"commonjs\" }' hardhat test"},"typings":"./dist/types/src/index.d.ts","_npmUser":{"name":"centurionproject","email":"centurionlabs@outlook.com"},"prettier":{"semi":false,"printWidth":120,"singleQuote":true,"trailingComma":"es5"},"repository":{"url":"git+https://github.com/CenturionDEX/centurion-dex-sdks.git","type":"git"},"_npmVersion":"11.12.0","description":"Centurion Universal Router SDK","directories":{},"sideEffects":false,"_nodeVersion":"22.13.1","dependencies":{"jsbi":"^3.1.4","tslib":"^2.3.0","ethers":"^5.7.0","bignumber.js":"^9.0.2","tiny-invariant":"^1.1.0","@ethersproject/abi":"^5.5.0","@openzeppelin/contracts":"4.7.0","@centurion_project/v2-sdk":"^4.20.0-ctn.0","@centurion_project/v3-sdk":"^3.30.0-ctn.0","@centurion_project/v4-sdk":"^2.0.0-ctn.0","@centurion_project/sdk-core":"^7.13.0-ctn.1","@centurion_project/router-sdk":"^2.9.0-ctn.0","@centurion_project/permit2-sdk":"^1.4.0-ctn.0","@ethersproject/abstract-signer":"^5.7.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.3.6","dotenv":"^16.0.3","hardhat":"^2.25.0","ts-node":"^10.9.1","typedoc":"^0.21.2","prettier":"^2.4.1","typescript":"^4.3.3","@types/chai":"^4.3.3","@types/node":"^18.7.16","@types/mocha":"^9.1.1","@types/node-fetch":"^2.6.2","eslint-plugin-prettier":"^3.4.1"},"_npmOperationalInternal":{"tmp":"tmp/universal-router-sdk_5.1.0-ctn.1_1775130261277_0.015097710638624084","host":"s3://npm-registry-packages-npm-production"}},"5.1.0":{"name":"@centurion_project/universal-router-sdk","version":"5.1.0","keywords":["centurion","dex","ethereum"],"license":"MIT","_id":"@centurion_project/universal-router-sdk@5.1.0","maintainers":[{"name":"centurionproject","email":"centurionlabs@outlook.com"}],"homepage":"https://github.com/CenturionDEX/centurion-dex-sdks#readme","bugs":{"url":"https://github.com/CenturionDEX/centurion-dex-sdks/issues"},"dist":{"shasum":"fe275b2abcf84d479733328de1a7972af18a3e92","tarball":"https://registry.npmjs.org/@centurion_project/universal-router-sdk/-/universal-router-sdk-5.1.0.tgz","fileCount":123,"integrity":"sha512-v7YkJ7aIRoW9x62Ody5Z3/PRo1MHdCXQh2G90XZD7miWCdgydMHA/d7OTCvxYGyaJ8hrH59jThmNknlsBnr+3A==","signatures":[{"sig":"MEYCIQD6+VeAtL7EQ8o90FDBa2Sxw57+2giUV/TlNAlSJglb7AIhAKVBPoN3dtaL9qv1iECYeg/afn6BaoyPbtkSGpeZwiO1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":614098},"main":"./dist/cjs/src/index.js","module":"./dist/esm/src/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/types/src/index.d.ts","import":"./dist/esm/src/index.js","require":"./dist/cjs/src/index.js"}},"gitHead":"18700218444dca7f8c83298731715ddde286d833","scripts":{"docs":"typedoc","lint":"bun run prettier","test":"bun run test:hardhat && bun run test:forge","build":"bun run clean && tsc -p tsconfig.cjs.json && tsc -p tsconfig.esm.json && tsc -p tsconfig.types.json","clean":"rm -rf dist","release":"changeset publish","lint:fix":"bun run prettier:fix && bun run forge:fix","prettier":"prettier --check '**/*.ts' && prettier --check '**/*.json'","forge:fix":"forge fmt","test:forge":"forge test","prettier:fix":"prettier --write '**/*.ts' && prettier --write '**/*.json'","test:hardhat":"env TS_NODE_COMPILER_OPTIONS='{\"module\": \"commonjs\" }' hardhat test"},"typings":"./dist/types/src/index.d.ts","_npmUser":{"name":"centurionproject","email":"centurionlabs@outlook.com"},"prettier":{"semi":false,"printWidth":120,"singleQuote":true,"trailingComma":"es5"},"repository":{"url":"git+https://github.com/CenturionDEX/centurion-dex-sdks.git","type":"git"},"_npmVersion":"11.12.0","description":"Centurion Universal Router SDK","directories":{},"sideEffects":false,"_nodeVersion":"22.13.1","dependencies":{"jsbi":"^3.1.4","tslib":"^2.3.0","ethers":"^5.7.0","bignumber.js":"^9.0.2","tiny-invariant":"^1.1.0","@ethersproject/abi":"^5.5.0","@openzeppelin/contracts":"4.7.0","@centurion_project/v2-sdk":"^4.20.0","@centurion_project/v3-sdk":"^3.30.0","@centurion_project/v4-sdk":"^2.0.0","@centurion_project/sdk-core":"^7.13.0","@centurion_project/router-sdk":"^2.9.0","@centurion_project/permit2-sdk":"^1.4.0","@ethersproject/abstract-signer":"^5.7.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.6","dotenv":"^16.0.3","hardhat":"^2.25.0","ts-node":"^10.9.1","typedoc":"^0.21.2","prettier":"^2.4.1","typescript":"^4.3.3","@types/chai":"^4.3.3","@types/node":"^18.7.16","@types/mocha":"^9.1.1","@types/node-fetch":"^2.6.2","eslint-plugin-prettier":"^3.4.1"},"_npmOperationalInternal":{"tmp":"tmp/universal-router-sdk_5.1.0_1775657383679_0.10548065483552427","host":"s3://npm-registry-packages-npm-production"}},"5.1.1":{"name":"@centurion_project/universal-router-sdk","version":"5.1.1","keywords":["centurion","dex","ethereum"],"license":"MIT","_id":"@centurion_project/universal-router-sdk@5.1.1","maintainers":[{"name":"centurionproject","email":"centurionlabs@outlook.com"}],"homepage":"https://github.com/CenturionDEX/centurion-dex-sdks#readme","bugs":{"url":"https://github.com/CenturionDEX/centurion-dex-sdks/issues"},"dist":{"shasum":"7c07bb94db05211e1b8fbe246656152c96f959bc","tarball":"https://registry.npmjs.org/@centurion_project/universal-router-sdk/-/universal-router-sdk-5.1.1.tgz","fileCount":123,"integrity":"sha512-9OsHl0TxTOW5k8Y8Qe8otbBPRIyQo71chMIkowj7bgyxw47DMi2y6LRA8hRRlJF5RCQ1Dkaq85gNpWCZghbO0g==","signatures":[{"sig":"MEUCIDgIey9H/mWbG075fri9eP9YE++3eulqdXQIrxjaauAzAiEAupENga0hPSPDJrUDO43Hv/nPgROOBh4HWFsuGymwG7Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":614098},"main":"./dist/cjs/src/index.js","module":"./dist/esm/src/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/types/src/index.d.ts","import":"./dist/esm/src/index.js","require":"./dist/cjs/src/index.js"}},"gitHead":"b3629f6248857f08ee55764d7faa9b83c3733c9b","scripts":{"docs":"typedoc","lint":"bun run prettier","test":"bun run test:hardhat && bun run test:forge","build":"bun run clean && tsc -p tsconfig.cjs.json && tsc -p tsconfig.esm.json && tsc -p tsconfig.types.json","clean":"rm -rf dist","release":"changeset publish","lint:fix":"bun run prettier:fix && bun run forge:fix","prettier":"prettier --check '**/*.ts' && prettier --check '**/*.json'","forge:fix":"forge fmt","test:forge":"forge test","prettier:fix":"prettier --write '**/*.ts' && prettier --write '**/*.json'","test:hardhat":"env TS_NODE_COMPILER_OPTIONS='{\"module\": \"commonjs\" }' hardhat test"},"typings":"./dist/types/src/index.d.ts","_npmUser":{"name":"centurionproject","email":"centurionlabs@outlook.com"},"prettier":{"semi":false,"printWidth":120,"singleQuote":true,"trailingComma":"es5"},"repository":{"url":"git+https://github.com/CenturionDEX/centurion-dex-sdks.git","type":"git"},"_npmVersion":"11.12.0","description":"Centurion Universal Router SDK","directories":{},"sideEffects":false,"_nodeVersion":"22.13.1","dependencies":{"jsbi":"^3.1.4","tslib":"^2.3.0","ethers":"^5.7.0","bignumber.js":"^9.0.2","tiny-invariant":"^1.1.0","@ethersproject/abi":"^5.5.0","@openzeppelin/contracts":"4.7.0","@centurion_project/v2-sdk":"^4.20.3","@centurion_project/v3-sdk":"^3.30.3","@centurion_project/v4-sdk":"^2.0.0","@centurion_project/sdk-core":"^7.13.1","@centurion_project/router-sdk":"^2.9.1","@centurion_project/permit2-sdk":"^1.4.1","@ethersproject/abstract-signer":"^5.7.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.6","dotenv":"^16.0.3","hardhat":"^2.25.0","ts-node":"^10.9.1","typedoc":"^0.21.2","prettier":"^2.4.1","typescript":"^4.3.3","@types/chai":"^4.3.3","@types/node":"^18.7.16","@types/mocha":"^9.1.1","@types/node-fetch":"^2.6.2","eslint-plugin-prettier":"^3.4.1"},"_npmOperationalInternal":{"tmp":"tmp/universal-router-sdk_5.1.1_1777630051047_0.5030475168717539","host":"s3://npm-registry-packages-npm-production"}},"5.1.2":{"name":"@centurion_project/universal-router-sdk","version":"5.1.2","keywords":["centurion","dex","ethereum"],"license":"MIT","_id":"@centurion_project/universal-router-sdk@5.1.2","maintainers":[{"name":"centurionproject","email":"centurionlabs@outlook.com"}],"homepage":"https://github.com/CenturionDEX/centurion-dex-sdks#readme","bugs":{"url":"https://github.com/CenturionDEX/centurion-dex-sdks/issues"},"dist":{"shasum":"1d7b0cb23b70fff0f4f43818aae5f5f3f0e6ef86","tarball":"https://registry.npmjs.org/@centurion_project/universal-router-sdk/-/universal-router-sdk-5.1.2.tgz","fileCount":123,"integrity":"sha512-h3KfOL+07WhYl0B44xwxbx4wd9+B1k0r9fGrLvlf50HkQQEZKrjkvGqxevd/ReCVR5CqcpifY59zJEE18PRN5Q==","signatures":[{"sig":"MEUCIQDoBEssyXdtvW+JmXkdzH1wPSjrVmdf9PY1wfZWOVFjoQIgBpjrioR/BZVlXtFf7dAPVBn081suGS+JihWHl02dWVY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":614098},"main":"./dist/cjs/src/index.js","module":"./dist/esm/src/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/types/src/index.d.ts","import":"./dist/esm/src/index.js","require":"./dist/cjs/src/index.js"}},"gitHead":"b3629f6248857f08ee55764d7faa9b83c3733c9b","scripts":{"docs":"typedoc","lint":"bun run prettier","test":"bun run test:hardhat && bun run test:forge","build":"bun run clean && tsc -p tsconfig.cjs.json && tsc -p tsconfig.esm.json && tsc -p tsconfig.types.json","clean":"rm -rf dist","release":"changeset publish","lint:fix":"bun run prettier:fix && bun run forge:fix","prettier":"prettier --check '**/*.ts' && prettier --check '**/*.json'","forge:fix":"forge fmt","test:forge":"forge test","prettier:fix":"prettier --write '**/*.ts' && prettier --write '**/*.json'","test:hardhat":"env TS_NODE_COMPILER_OPTIONS='{\"module\": \"commonjs\" }' hardhat test"},"typings":"./dist/types/src/index.d.ts","_npmUser":{"name":"centurionproject","email":"centurionlabs@outlook.com"},"prettier":{"semi":false,"printWidth":120,"singleQuote":true,"trailingComma":"es5"},"repository":{"url":"git+https://github.com/CenturionDEX/centurion-dex-sdks.git","type":"git"},"_npmVersion":"11.12.0","description":"Centurion Universal Router SDK","directories":{},"sideEffects":false,"_nodeVersion":"22.13.1","dependencies":{"jsbi":"^3.1.4","tslib":"^2.3.0","ethers":"^5.7.0","bignumber.js":"^9.0.2","tiny-invariant":"^1.1.0","@ethersproject/abi":"^5.5.0","@openzeppelin/contracts":"4.7.0","@centurion_project/v2-sdk":"^4.20.4","@centurion_project/v3-sdk":"^3.30.4","@centurion_project/v4-sdk":"^2.0.0","@centurion_project/sdk-core":"^7.13.2","@centurion_project/router-sdk":"^2.9.2","@centurion_project/permit2-sdk":"^1.4.2","@ethersproject/abstract-signer":"^5.7.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.6","dotenv":"^16.0.3","hardhat":"^2.25.0","ts-node":"^10.9.1","typedoc":"^0.21.2","prettier":"^2.4.1","typescript":"^4.3.3","@types/chai":"^4.3.3","@types/node":"^18.7.16","@types/mocha":"^9.1.1","@types/node-fetch":"^2.6.2","eslint-plugin-prettier":"^3.4.1"},"_npmOperationalInternal":{"tmp":"tmp/universal-router-sdk_5.1.2_1777654822298_0.9455148405899381","host":"s3://npm-registry-packages-npm-production"}},"5.9.1":{"name":"@centurion_project/universal-router-sdk","version":"5.9.1","keywords":["centurion","dex","ethereum"],"license":"MIT","_id":"@centurion_project/universal-router-sdk@5.9.1","maintainers":[{"name":"centurionproject","email":"centurionlabs@outlook.com"}],"homepage":"https://github.com/CenturionDEX/centurion-dex-sdks#readme","bugs":{"url":"https://github.com/CenturionDEX/centurion-dex-sdks/issues"},"dist":{"shasum":"b216a68ba8841ad935685b6030eb7b90634a3f57","tarball":"https://registry.npmjs.org/@centurion_project/universal-router-sdk/-/universal-router-sdk-5.9.1.tgz","fileCount":170,"integrity":"sha512-kzmUXTUVsM/ut3E9mdAYN4kwmA7Xo4IovN7DMw8lUQESJgRxzCIyf9UUQax3yS30yl90AuIh/4HyXh8aEs5WiA==","signatures":[{"sig":"MEUCIQCCB830aooFoAjWshd7B/Y4dsk6AUxbmtTQVn/SBMg+2gIgToH94w2LBIXBO4qljt0gqciFxHpm1HBgf3KdH9/wQfE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":545226},"main":"./dist/cjs/src/index.js","module":"./dist/esm/src/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/types/src/index.d.ts","import":"./dist/esm/src/index.js","require":"./dist/cjs/src/index.js"}},"gitHead":"a277bf165591f9772b518b87af81ce74f5e735c7","scripts":{"docs":"typedoc","lint":"bun run prettier","test":"bun run test:hardhat && bun run test:forge","build":"bun run clean && tsc -p tsconfig.cjs.json && tsc -p tsconfig.esm.json && tsc -p tsconfig.types.json","clean":"rm -rf dist","release":"changeset publish","lint:fix":"bun run prettier:fix && bun run forge:fix","prettier":"prettier --check '**/*.ts' && prettier --check '**/*.json'","forge:fix":"forge fmt","test:forge":"forge test","prettier:fix":"prettier --write '**/*.ts' && prettier --write '**/*.json'","test:hardhat":"env TS_NODE_COMPILER_OPTIONS='{\"module\": \"commonjs\" }' hardhat test"},"typings":"./dist/types/src/index.d.ts","_npmUser":{"name":"centurionproject","email":"centurionlabs@outlook.com"},"prettier":{"semi":false,"printWidth":120,"singleQuote":true,"trailingComma":"es5"},"repository":{"url":"git+https://github.com/CenturionDEX/centurion-dex-sdks.git","type":"git"},"_npmVersion":"11.12.0","description":"Centurion Universal Router SDK","directories":{},"sideEffects":false,"_nodeVersion":"22.13.1","dependencies":{"jsbi":"^3.1.4","tslib":"^2.3.0","ethers":"^5.7.0","bignumber.js":"^9.0.2","tiny-invariant":"^1.1.0","@uniswap/v2-core":"^1.0.1","@uniswap/v3-core":"1.0.0","@ethersproject/abi":"^5.5.0","@openzeppelin/contracts":"4.7.0","@centurion_project/v2-sdk":"^4.21.1","@centurion_project/v3-sdk":"^3.31.1","@centurion_project/v4-sdk":"^2.0.0","@uniswap/universal-router":"2.1.0","@centurion_project/sdk-core":"^7.18.1","@centurion_project/router-sdk":"^2.11.1","@centurion_project/permit2-sdk":"^1.4.3","@ethersproject/abstract-signer":"^5.7.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.6","dotenv":"^16.0.3","hardhat":"^2.25.0","ts-node":"^10.9.1","typedoc":"^0.21.2","prettier":"^2.4.1","typescript":"^4.3.3","@types/chai":"^4.3.3","@types/node":"^18.7.16","@types/mocha":"^9.1.1","@types/node-fetch":"^2.6.2","eslint-plugin-prettier":"^3.4.1"},"_npmOperationalInternal":{"tmp":"tmp/universal-router-sdk_5.9.1_1782983268394_0.2373885436749048","host":"s3://npm-registry-packages-npm-production"}},"5.9.2":{"name":"@centurion_project/universal-router-sdk","version":"5.9.2","keywords":["centurion","dex","ethereum"],"license":"MIT","_id":"@centurion_project/universal-router-sdk@5.9.2","maintainers":[{"name":"centurionproject","email":"centurionlabs@outlook.com"}],"homepage":"https://github.com/CenturionDEX/centurion-dex-sdks#readme","bugs":{"url":"https://github.com/CenturionDEX/centurion-dex-sdks/issues"},"dist":{"shasum":"3b801865b50cd6906c76ffab8ab94db3121a5216","tarball":"https://registry.npmjs.org/@centurion_project/universal-router-sdk/-/universal-router-sdk-5.9.2.tgz","fileCount":170,"integrity":"sha512-OTWaeWydaWmyoyDoAyVnC5YEq+lldoQOrbdM/seb4nJhOFxlcHhpB7H0GplO0/xOLeNw3vcEH4m4dj2WmHJzWw==","signatures":[{"sig":"MEUCICcqWAAhJ5XzT1Tzaz7bKHYkN3d65FmlU3gZhc+OfVfxAiEAyo6dDrYz99UXHE08P5zx6JRnX+GiOseuudr6TglsQAQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":545218},"main":"./dist/cjs/src/index.js","module":"./dist/esm/src/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/types/src/index.d.ts","import":"./dist/esm/src/index.js","require":"./dist/cjs/src/index.js"}},"gitHead":"1d78e02591e92f7829fd97ea933ffbe0787e45b9","scripts":{"docs":"typedoc","lint":"bun run prettier","test":"bun run test:hardhat && bun run test:forge","build":"bun run clean && tsc -p tsconfig.cjs.json && tsc -p tsconfig.esm.json && tsc -p tsconfig.types.json","clean":"rm -rf dist","release":"changeset publish","lint:fix":"bun run prettier:fix && bun run forge:fix","prettier":"prettier --check '**/*.ts' && prettier --check '**/*.json'","forge:fix":"forge fmt","test:forge":"forge test","prettier:fix":"prettier --write '**/*.ts' && prettier --write '**/*.json'","test:hardhat":"env TS_NODE_COMPILER_OPTIONS='{\"module\": \"commonjs\" }' hardhat test"},"typings":"./dist/types/src/index.d.ts","_npmUser":{"name":"centurionproject","email":"centurionlabs@outlook.com"},"prettier":{"semi":false,"printWidth":120,"singleQuote":true,"trailingComma":"es5"},"repository":{"url":"git+https://github.com/CenturionDEX/centurion-dex-sdks.git","type":"git"},"_npmVersion":"11.12.0","description":"Centurion Universal Router SDK","directories":{},"sideEffects":false,"_nodeVersion":"22.13.1","dependencies":{"jsbi":"^3.1.4","tslib":"^2.3.0","ethers":"^5.7.0","bignumber.js":"^9.0.2","tiny-invariant":"^1.1.0","@uniswap/v2-core":"^1.0.1","@uniswap/v3-core":"1.0.0","@ethersproject/abi":"^5.5.0","@openzeppelin/contracts":"4.7.0","@centurion_project/v2-sdk":"^4.21.3","@centurion_project/v3-sdk":"^3.31.3","@centurion_project/v4-sdk":"^2.0.0","@uniswap/universal-router":"2.1.0","@centurion_project/sdk-core":"^7.18.3","@centurion_project/router-sdk":"^2.11.2","@centurion_project/permit2-sdk":"^1.4.4","@ethersproject/abstract-signer":"^5.7.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.6","dotenv":"^16.0.3","hardhat":"^2.25.0","ts-node":"^10.9.1","typedoc":"^0.21.2","prettier":"^2.4.1","typescript":"^4.3.3","@types/chai":"^4.3.3","@types/node":"^18.7.16","@types/mocha":"^9.1.1","@types/node-fetch":"^2.6.2","eslint-plugin-prettier":"^3.4.1"},"_npmOperationalInternal":{"tmp":"tmp/universal-router-sdk_5.9.2_1784043167583_0.6513902954255251","host":"s3://npm-registry-packages-npm-production"}},"5.9.3":{"name":"@centurion_project/universal-router-sdk","version":"5.9.3","keywords":["centurion","dex","ethereum"],"license":"MIT","_id":"@centurion_project/universal-router-sdk@5.9.3","maintainers":[{"name":"centurionproject","email":"centurionlabs@outlook.com"}],"homepage":"https://github.com/CenturionDEX/centurion-dex-sdks#readme","bugs":{"url":"https://github.com/CenturionDEX/centurion-dex-sdks/issues"},"dist":{"shasum":"c953948c9c8a4ffbfb11f503f69d34e622377d5a","tarball":"https://registry.npmjs.org/@centurion_project/universal-router-sdk/-/universal-router-sdk-5.9.3.tgz","fileCount":170,"integrity":"sha512-7tRNvFdP0Ca641EqnaKQUZGiPpGvY2audrQaY86qcxrauCJYHegWEiu8nXYPze7+2DgABNfUw81y7oN9xDwnLg==","signatures":[{"sig":"MEUCIQDWjLAeUxues6n/IrbYE+VyqYIPqqk2cR2lmO2muCm5FAIgbTKGjV58FOyDK02V99KFcljRV5+JuJazxe80Qb+tVx4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":545218},"main":"./dist/cjs/src/index.js","module":"./dist/esm/src/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/types/src/index.d.ts","import":"./dist/esm/src/index.js","require":"./dist/cjs/src/index.js"}},"gitHead":"002e25cd293aa8c1b41fdccd9a0b0bb0957d2525","scripts":{"docs":"typedoc","lint":"bun run prettier","test":"bun run test:hardhat && bun run test:forge","build":"bun run clean && tsc -p tsconfig.cjs.json && tsc -p tsconfig.esm.json && tsc -p tsconfig.types.json","clean":"rm -rf dist","release":"changeset publish","lint:fix":"bun run prettier:fix && bun run forge:fix","prettier":"prettier --check '**/*.ts' && prettier --check '**/*.json'","forge:fix":"forge fmt","test:forge":"forge test","prettier:fix":"prettier --write '**/*.ts' && prettier --write '**/*.json'","test:hardhat":"env TS_NODE_COMPILER_OPTIONS='{\"module\": \"commonjs\" }' hardhat test"},"typings":"./dist/types/src/index.d.ts","_npmUser":{"name":"centurionproject","email":"centurionlabs@outlook.com"},"prettier":{"semi":false,"printWidth":120,"singleQuote":true,"trailingComma":"es5"},"repository":{"url":"git+https://github.com/CenturionDEX/centurion-dex-sdks.git","type":"git"},"_npmVersion":"11.12.0","description":"Centurion Universal Router SDK","directories":{},"sideEffects":false,"_nodeVersion":"22.13.1","dependencies":{"jsbi":"^3.1.4","tslib":"^2.3.0","ethers":"^5.7.0","bignumber.js":"^9.0.2","tiny-invariant":"^1.1.0","@uniswap/v2-core":"^1.0.1","@uniswap/v3-core":"1.0.0","@ethersproject/abi":"^5.5.0","@openzeppelin/contracts":"4.7.0","@centurion_project/v2-sdk":"^4.21.4","@centurion_project/v3-sdk":"^3.31.4","@centurion_project/v4-sdk":"^2.0.0","@uniswap/universal-router":"2.1.0","@centurion_project/sdk-core":"^7.18.4","@centurion_project/router-sdk":"^2.11.3","@centurion_project/permit2-sdk":"^1.4.5","@ethersproject/abstract-signer":"^5.7.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.6","dotenv":"^16.0.3","hardhat":"^2.25.0","ts-node":"^10.9.1","typedoc":"^0.21.2","prettier":"^2.4.1","typescript":"^4.3.3","@types/chai":"^4.3.3","@types/node":"^18.7.16","@types/mocha":"^9.1.1","@types/node-fetch":"^2.6.2","eslint-plugin-prettier":"^3.4.1"},"_npmOperationalInternal":{"tmp":"tmp/universal-router-sdk_5.9.3_1784070720999_0.8722147371022715","host":"s3://npm-registry-packages-npm-production"}},"5.9.4":{"name":"@centurion_project/universal-router-sdk","version":"5.9.4","keywords":["centurion","dex","ethereum"],"license":"MIT","_id":"@centurion_project/universal-router-sdk@5.9.4","maintainers":[{"name":"centurionproject","email":"centurionlabs@outlook.com"}],"homepage":"https://github.com/CenturionDEX/centurion-dex-sdks#readme","bugs":{"url":"https://github.com/CenturionDEX/centurion-dex-sdks/issues"},"dist":{"shasum":"d30d5545ee574094d7a1cb8c9254919972947dc4","tarball":"https://registry.npmjs.org/@centurion_project/universal-router-sdk/-/universal-router-sdk-5.9.4.tgz","fileCount":170,"integrity":"sha512-fo866pnAtCWeccKhkoPZPEjbNUFw/RnP0GwcGpOQtsW54CNcJYgqowDWHYMLzPfGfXnIRBkLvbRYHU65t8D4yQ==","signatures":[{"sig":"MEUCIQDSuSvGgHuBorhnDgkYGYL5uIsCgGflEwlKSTMowoR1JAIgTAkhd7J2u8PeiZKsPDCjRJQwwt8J+5+GViS9cW/m/bM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":545718},"main":"./dist/cjs/src/index.js","module":"./dist/esm/src/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/types/src/index.d.ts","import":"./dist/esm/src/index.js","require":"./dist/cjs/src/index.js"}},"gitHead":"219bec38fa46dad0e19f9398815c438f6ad7bae0","scripts":{"docs":"typedoc","lint":"bun run prettier","test":"bun run test:hardhat && bun run test:forge","build":"bun run clean && tsc -p tsconfig.cjs.json && tsc -p tsconfig.esm.json && tsc -p tsconfig.types.json","clean":"rm -rf dist","release":"changeset publish","lint:fix":"bun run prettier:fix && bun run forge:fix","prettier":"prettier --check '**/*.ts' && prettier --check '**/*.json'","forge:fix":"forge fmt","test:forge":"forge test","prettier:fix":"prettier --write '**/*.ts' && prettier --write '**/*.json'","test:hardhat":"env TS_NODE_COMPILER_OPTIONS='{\"module\": \"commonjs\" }' hardhat test","test:centurion":"bun run test:centurion:hardhat","test:centurion:hardhat":"hardhat test test/utils/constants.test.ts test/utils/permit2.test.ts test/unit/signedRoutes.test.ts test/centurionV2V3Trades.test.ts --no-compile && hardhat test test/unit/perHopSlippage.test.ts --grep 'V2 routes|V3 routes|Mixed routes' --no-compile"},"typings":"./dist/types/src/index.d.ts","_npmUser":{"name":"centurionproject","email":"centurionlabs@outlook.com"},"prettier":{"semi":false,"printWidth":120,"singleQuote":true,"trailingComma":"es5"},"repository":{"url":"git+https://github.com/CenturionDEX/centurion-dex-sdks.git","type":"git"},"_npmVersion":"11.12.0","description":"Centurion Universal Router SDK","directories":{},"sideEffects":false,"_nodeVersion":"22.13.1","dependencies":{"jsbi":"^3.1.4","tslib":"^2.3.0","ethers":"^5.7.0","bignumber.js":"^9.0.2","tiny-invariant":"^1.1.0","@uniswap/v2-core":"^1.0.1","@uniswap/v3-core":"1.0.0","@ethersproject/abi":"^5.5.0","@openzeppelin/contracts":"4.7.0","@centurion_project/v2-sdk":"^4.21.5","@centurion_project/v3-sdk":"^3.31.5","@centurion_project/v4-sdk":"^2.0.0","@uniswap/universal-router":"2.1.0","@centurion_project/sdk-core":"^7.18.5","@centurion_project/router-sdk":"^2.11.4","@centurion_project/permit2-sdk":"^1.4.6","@ethersproject/abstract-signer":"^5.7.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.6","dotenv":"^16.0.3","hardhat":"^2.25.0","ts-node":"^10.9.1","typedoc":"^0.21.2","prettier":"^2.4.1","typescript":"^4.3.3","@types/chai":"^4.3.3","@types/node":"^18.7.16","@types/mocha":"^9.1.1","@types/node-fetch":"^2.6.2","eslint-plugin-prettier":"^3.4.1"},"centurionUpstream":{"ref":"ab3a18a62922c0bda493130e53f2c8f6fad59558","name":"@uniswap/universal-router-sdk","version":"5.9.0"},"_npmOperationalInternal":{"tmp":"tmp/universal-router-sdk_5.9.4_1784207234100_0.6302410911967378","host":"s3://npm-registry-packages-npm-production"}},"5.9.5":{"name":"@centurion_project/universal-router-sdk","version":"5.9.5","keywords":["centurion","dex","ethereum"],"license":"MIT","_id":"@centurion_project/universal-router-sdk@5.9.5","maintainers":[{"name":"centurionproject","email":"centurionlabs@outlook.com"}],"homepage":"https://github.com/CenturionDEX/centurion-dex-sdks#readme","bugs":{"url":"https://github.com/CenturionDEX/centurion-dex-sdks/issues"},"dist":{"shasum":"67b44c8d4ac0ad304341a284e8cbdd5ae453b2ea","tarball":"https://registry.npmjs.org/@centurion_project/universal-router-sdk/-/universal-router-sdk-5.9.5.tgz","fileCount":172,"integrity":"sha512-LDfYaEWHgdGyFkCpwweLqPVJ8A08WSNiSWpEQMLcp1qKVhCbvQKEMDgbUfHLH040da8WB5wZ4R+7l58Xgn7h6g==","signatures":[{"sig":"MEYCIQC4tEvvDRU9JnG4e6gQ2k7Ou1KQTv1t2p+8isJao0IQ8wIhAKDGuTnuJnMkHH6woGLMfIrX0psUMH/nl62rzowhlAvE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":587535},"main":"./dist/cjs/src/index.js","module":"./dist/esm/src/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/types/src/index.d.ts","import":"./dist/esm/src/index.js","require":"./dist/cjs/src/index.js"}},"gitHead":"0c0b22d985e7968c52ec90daa16b4e92150658ca","scripts":{"docs":"typedoc","lint":"bun run prettier","test":"bun run test:hardhat && bun run test:forge","build":"bun run clean && tsc -p tsconfig.cjs.json && tsc -p tsconfig.esm.json && tsc -p tsconfig.types.json","clean":"rm -rf dist","release":"changeset publish","lint:fix":"bun run prettier:fix && bun run forge:fix","prettier":"prettier --check '**/*.ts' && prettier --check '**/*.json'","forge:fix":"forge fmt","test:forge":"forge test","prettier:fix":"prettier --write '**/*.ts' && prettier --write '**/*.json'","test:hardhat":"env TS_NODE_COMPILER_OPTIONS='{\"module\": \"commonjs\" }' hardhat test","test:centurion":"bun run test:centurion:hardhat","test:centurion:hardhat":"hardhat test test/utils/constants.test.ts test/utils/permit2.test.ts test/unit/signedRoutes.test.ts test/centurionV2V3Trades.test.ts --no-compile && hardhat test test/unit/perHopSlippage.test.ts --grep 'V2 routes|V3 routes|Mixed routes' --no-compile"},"typings":"./dist/types/src/index.d.ts","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:db40e15d-4989-4a30-aca6-4c77764c7ace"}},"prettier":{"semi":false,"printWidth":120,"singleQuote":true,"trailingComma":"es5"},"repository":{"url":"git+https://github.com/CenturionDEX/centurion-dex-sdks.git","type":"git"},"_npmVersion":"11.16.0","description":"Centurion Universal Router SDK","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","dependencies":{"jsbi":"^3.1.4","tslib":"^2.3.0","ethers":"^5.7.0","bignumber.js":"^9.0.2","tiny-invariant":"^1.1.0","@ethersproject/abi":"^5.5.0","@centurion_project/v2-sdk":"^4.21.5","@centurion_project/v3-sdk":"^3.31.6","@centurion_project/v4-sdk":"^2.0.0","@centurion_project/sdk-core":"^7.18.5","@centurion_project/router-sdk":"^2.11.5","@centurion_project/permit2-sdk":"^1.4.6","@ethersproject/abstract-signer":"^5.7.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.6","dotenv":"^16.0.3","hardhat":"^2.25.0","ts-node":"^10.9.1","typedoc":"^0.21.2","prettier":"^2.4.1","typescript":"^4.3.3","@types/chai":"^4.3.3","@types/node":"^18.7.16","@types/mocha":"^9.1.1","@uniswap/v2-core":"1.0.1","@uniswap/v3-core":"1.0.0","@types/node-fetch":"^2.6.2","eslint-plugin-prettier":"^3.4.1","@openzeppelin/contracts":"4.7.0","@uniswap/universal-router":"2.1.0"},"centurionUpstream":{"ref":"ab3a18a62922c0bda493130e53f2c8f6fad59558","name":"@uniswap/universal-router-sdk","version":"5.9.0"},"_npmOperationalInternal":{"tmp":"tmp/universal-router-sdk_5.9.5_1784654974758_0.776454201829013","host":"s3://npm-registry-packages-npm-production"}},"5.9.6":{"name":"@centurion_project/universal-router-sdk","version":"5.9.6","keywords":["centurion","dex","ethereum"],"license":"MIT","_id":"@centurion_project/universal-router-sdk@5.9.6","maintainers":[{"name":"centurionproject","email":"centurionlabs@outlook.com"}],"homepage":"https://github.com/CenturionDEX/centurion-dex-sdks#readme","bugs":{"url":"https://github.com/CenturionDEX/centurion-dex-sdks/issues"},"dist":{"shasum":"4d8e94907d101496aea334cb3fe643105cd42c9f","tarball":"https://registry.npmjs.org/@centurion_project/universal-router-sdk/-/universal-router-sdk-5.9.6.tgz","fileCount":172,"integrity":"sha512-PH1SZqZQB4eC4KaWlFVC1ip2bab8Z6KVtNYAKflkF51pjglqLU73xa3qJU27ZSjaWy74k2eT52AvAuVQuukLzw==","signatures":[{"sig":"MEQCIG+AGsZFC6K8vlGo8qd9dBV3e/TvyG2l4p2J8uLsj5YxAiBuNQtBRX9IEHptH+zqEez/8UVLTsN7A1fgtbuxqQYFJQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":587527},"main":"./dist/cjs/src/index.js","module":"./dist/esm/src/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/types/src/index.d.ts","import":"./dist/esm/src/index.js","require":"./dist/cjs/src/index.js"}},"gitHead":"20d732d339cb5311242b8c9932f9413ca9dc2f28","scripts":{"docs":"typedoc","lint":"bun run prettier","test":"bun run test:hardhat && bun run test:forge","build":"bun run clean && tsc -p tsconfig.cjs.json && tsc -p tsconfig.esm.json && tsc -p tsconfig.types.json","clean":"rm -rf dist","release":"changeset publish","lint:fix":"bun run prettier:fix && bun run forge:fix","prettier":"prettier --check '**/*.ts' && prettier --check '**/*.json'","forge:fix":"forge fmt","test:forge":"forge test","prettier:fix":"prettier --write '**/*.ts' && prettier --write '**/*.json'","test:hardhat":"env TS_NODE_COMPILER_OPTIONS='{\"module\": \"commonjs\" }' hardhat test","test:centurion":"bun run test:centurion:hardhat","test:centurion:hardhat":"hardhat test test/utils/constants.test.ts test/utils/permit2.test.ts test/unit/signedRoutes.test.ts test/centurionV2V3Trades.test.ts --no-compile && hardhat test test/unit/perHopSlippage.test.ts --grep 'V2 routes|V3 routes|Mixed routes' --no-compile"},"typings":"./dist/types/src/index.d.ts","_npmUser":{"name":"centurionproject","email":"centurionlabs@outlook.com"},"prettier":{"semi":false,"printWidth":120,"singleQuote":true,"trailingComma":"es5"},"repository":{"url":"git+https://github.com/CenturionDEX/centurion-dex-sdks.git","type":"git"},"_npmVersion":"11.12.0","description":"Centurion Universal Router SDK","directories":{},"sideEffects":false,"_nodeVersion":"22.13.1","dependencies":{"jsbi":"^3.1.4","tslib":"^2.3.0","ethers":"^5.7.0","bignumber.js":"^9.0.2","tiny-invariant":"^1.1.0","@ethersproject/abi":"^5.5.0","@centurion_project/v2-sdk":"^4.21.6","@centurion_project/v3-sdk":"^3.31.7","@centurion_project/v4-sdk":"^2.0.0","@centurion_project/sdk-core":"^7.18.6","@centurion_project/router-sdk":"^2.11.6","@centurion_project/permit2-sdk":"^1.4.7","@ethersproject/abstract-signer":"^5.7.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.6","dotenv":"^16.0.3","hardhat":"^2.25.0","ts-node":"^10.9.1","typedoc":"^0.21.2","prettier":"^2.4.1","typescript":"^4.3.3","@types/chai":"^4.3.3","@types/node":"^18.7.16","@types/mocha":"^9.1.1","@uniswap/v2-core":"1.0.1","@uniswap/v3-core":"1.0.0","@types/node-fetch":"^2.6.2","eslint-plugin-prettier":"^3.4.1","@openzeppelin/contracts":"4.7.0","@uniswap/universal-router":"2.1.0"},"centurionUpstream":{"ref":"ab3a18a62922c0bda493130e53f2c8f6fad59558","name":"@uniswap/universal-router-sdk","version":"5.9.0"},"_npmOperationalInternal":{"tmp":"tmp/universal-router-sdk_5.9.6_1785208796695_0.0944276744179895","host":"s3://npm-registry-packages-npm-production"}},"5.9.7":{"name":"@centurion_project/universal-router-sdk","version":"5.9.7","keywords":["centurion","dex","ethereum"],"license":"MIT","_id":"@centurion_project/universal-router-sdk@5.9.7","maintainers":[{"name":"centurionproject","email":"centurionlabs@outlook.com"}],"homepage":"https://github.com/CenturionDEX/centurion-dex-sdks#readme","bugs":{"url":"https://github.com/CenturionDEX/centurion-dex-sdks/issues"},"dist":{"shasum":"48ac61795ea767bab34bdc1844a07228a4126193","tarball":"https://registry.npmjs.org/@centurion_project/universal-router-sdk/-/universal-router-sdk-5.9.7.tgz","fileCount":172,"integrity":"sha512-vEILunfnwPXWcC4yebiXLLS2QMsXUehwMJL8wiGvPU7eRbvMZSjZnT4uk9iif4xt3UZtHBkJrawmgbX6ObzjLQ==","signatures":[{"sig":"MEYCIQD/2ECltpha9UY6erlZgH5GOUPy2ITieN/ILqIdXMegDgIhAPRfYJPGx6UVqyycczMubjb/2NrROGPZSBENUaoZLw+f","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":587527},"main":"./dist/cjs/src/index.js","module":"./dist/esm/src/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/types/src/index.d.ts","import":"./dist/esm/src/index.js","require":"./dist/cjs/src/index.js"}},"gitHead":"20d732d339cb5311242b8c9932f9413ca9dc2f28","scripts":{"docs":"typedoc","lint":"bun run prettier","test":"bun run test:hardhat && bun run test:forge","build":"bun run clean && tsc -p tsconfig.cjs.json && tsc -p tsconfig.esm.json && tsc -p tsconfig.types.json","clean":"rm -rf dist","release":"changeset publish","lint:fix":"bun run prettier:fix && bun run forge:fix","prettier":"prettier --check '**/*.ts' && prettier --check '**/*.json'","forge:fix":"forge fmt","test:forge":"forge test","prettier:fix":"prettier --write '**/*.ts' && prettier --write '**/*.json'","test:hardhat":"env TS_NODE_COMPILER_OPTIONS='{\"module\": \"commonjs\" }' hardhat test","test:centurion":"bun run test:centurion:hardhat","test:centurion:hardhat":"hardhat test test/utils/constants.test.ts test/utils/permit2.test.ts test/unit/signedRoutes.test.ts test/centurionV2V3Trades.test.ts --no-compile && hardhat test test/unit/perHopSlippage.test.ts --grep 'V2 routes|V3 routes|Mixed routes' --no-compile"},"typings":"./dist/types/src/index.d.ts","_npmUser":{"name":"centurionproject","email":"centurionlabs@outlook.com"},"prettier":{"semi":false,"printWidth":120,"singleQuote":true,"trailingComma":"es5"},"repository":{"url":"git+https://github.com/CenturionDEX/centurion-dex-sdks.git","type":"git"},"_npmVersion":"11.12.0","description":"Centurion Universal Router SDK","directories":{},"sideEffects":false,"_nodeVersion":"22.13.1","dependencies":{"jsbi":"^3.1.4","tslib":"^2.3.0","ethers":"^5.7.0","bignumber.js":"^9.0.2","tiny-invariant":"^1.1.0","@ethersproject/abi":"^5.5.0","@centurion_project/v2-sdk":"^4.21.7","@centurion_project/v3-sdk":"^3.31.8","@centurion_project/v4-sdk":"^2.0.0","@centurion_project/sdk-core":"^7.19.1","@centurion_project/router-sdk":"^2.11.7","@centurion_project/permit2-sdk":"^1.4.8","@ethersproject/abstract-signer":"^5.7.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.6","dotenv":"^16.0.3","hardhat":"^2.25.0","ts-node":"^10.9.1","typedoc":"^0.21.2","prettier":"^2.4.1","typescript":"^4.3.3","@types/chai":"^4.3.3","@types/node":"^18.7.16","@types/mocha":"^9.1.1","@uniswap/v2-core":"1.0.1","@uniswap/v3-core":"1.0.0","@types/node-fetch":"^2.6.2","eslint-plugin-prettier":"^3.4.1","@openzeppelin/contracts":"4.7.0","@uniswap/universal-router":"2.1.0"},"centurionUpstream":{"ref":"ab3a18a62922c0bda493130e53f2c8f6fad59558","name":"@uniswap/universal-router-sdk","version":"5.9.0"},"_npmOperationalInternal":{"tmp":"tmp/universal-router-sdk_5.9.7_1786180057328_0.23828807242275007","host":"s3://npm-registry-packages-npm-production"}},"5.9.8":{"name":"@centurion_project/universal-router-sdk","version":"5.9.8","keywords":["centurion","dex","ethereum"],"license":"MIT","_id":"@centurion_project/universal-router-sdk@5.9.8","maintainers":[{"name":"centurionproject","email":"centurionlabs@outlook.com"}],"homepage":"https://github.com/CenturionDEX/centurion-dex-sdks#readme","bugs":{"url":"https://github.com/CenturionDEX/centurion-dex-sdks/issues"},"dist":{"shasum":"606bc487c2db10e42c9fce28fa990e86cd212c35","tarball":"https://registry.npmjs.org/@centurion_project/universal-router-sdk/-/universal-router-sdk-5.9.8.tgz","fileCount":172,"integrity":"sha512-+R1222PNqIvlvUf6gS56hyUI4vbJTkmVS4Vd9rAd4e9hORNvbO87mD4sWcr39YE27EVutOb+QEt1JkxpmsBuCw==","signatures":[{"sig":"MEYCIQDxC2gvHyLf5sXGL7c9WIuGuBOH0Du3jMlSMiBh2KVx4wIhAOqAaIM6HyZXMh/Wr1FPILNQuBKrXsRzP2cp9BYtmGGs","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":587543},"main":"./dist/cjs/src/index.js","module":"./dist/esm/src/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/types/src/index.d.ts","import":"./dist/esm/src/index.js","require":"./dist/cjs/src/index.js"}},"gitHead":"a161e52c6a695fa9993afba0217371d8968af1b5","scripts":{"docs":"typedoc","lint":"bun run prettier","test":"bun run test:hardhat && bun run test:forge","build":"bun run clean && tsc -p tsconfig.cjs.json && tsc -p tsconfig.esm.json && tsc -p tsconfig.types.json","clean":"rm -rf dist","release":"changeset publish","lint:fix":"bun run prettier:fix && bun run forge:fix","prettier":"prettier --check '**/*.ts' && prettier --check '**/*.json'","forge:fix":"forge fmt","test:forge":"forge test","prettier:fix":"prettier --write '**/*.ts' && prettier --write '**/*.json'","test:hardhat":"env TS_NODE_COMPILER_OPTIONS='{\"module\": \"commonjs\" }' hardhat test","test:centurion":"bun run test:centurion:hardhat","test:centurion:hardhat":"hardhat test test/utils/constants.test.ts test/utils/permit2.test.ts test/unit/signedRoutes.test.ts test/centurionV2V3Trades.test.ts --no-compile && hardhat test test/unit/perHopSlippage.test.ts --grep 'V2 routes|V3 routes|Mixed routes' --no-compile"},"typings":"./dist/types/src/index.d.ts","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:db40e15d-4989-4a30-aca6-4c77764c7ace"}},"prettier":{"semi":false,"printWidth":120,"singleQuote":true,"trailingComma":"es5"},"repository":{"url":"git+https://github.com/CenturionDEX/centurion-dex-sdks.git","type":"git"},"_npmVersion":"11.19.0","description":"Centurion Universal Router SDK","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","dependencies":{"jsbi":"^3.1.4","tslib":"^2.3.0","ethers":"^5.7.0","bignumber.js":"^9.0.2","tiny-invariant":"^1.1.0","@ethersproject/abi":"^5.5.0","@centurion_project/v2-sdk":"^4.21.8","@centurion_project/v3-sdk":"^3.31.9","@centurion_project/v4-sdk":"^2.0.0","@centurion_project/sdk-core":"^7.19.2","@centurion_project/router-sdk":"^2.11.8","@centurion_project/permit2-sdk":"^1.4.9","@ethersproject/abstract-signer":"^5.7.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.6","dotenv":"^16.0.3","hardhat":"^2.25.0","ts-node":"^10.9.1","typedoc":"^0.21.2","prettier":"^2.4.1","typescript":"^4.3.3","@types/chai":"^4.3.3","@types/node":"^18.7.16","@types/mocha":"^9.1.1","@uniswap/v2-core":"1.0.1","@uniswap/v3-core":"1.0.0","@types/node-fetch":"^2.6.2","eslint-plugin-prettier":"^3.4.1","@openzeppelin/contracts":"4.7.0","@uniswap/universal-router":"2.1.0"},"centurionUpstream":{"ref":"ab3a18a62922c0bda493130e53f2c8f6fad59558","name":"@uniswap/universal-router-sdk","version":"5.9.0"},"_npmOperationalInternal":{"tmp":"tmp/universal-router-sdk_5.9.8_1789112287749_0.10176743981708247","host":"s3://npm-registry-packages-npm-production"}},"5.9.9":{"name":"@centurion_project/universal-router-sdk","version":"5.9.9","keywords":["centurion","dex","ethereum"],"license":"MIT","_id":"@centurion_project/universal-router-sdk@5.9.9","maintainers":[{"name":"centurionproject","email":"centurionlabs@outlook.com"}],"homepage":"https://github.com/CenturionDEX/centurion-dex-sdks#readme","bugs":{"url":"https://github.com/CenturionDEX/centurion-dex-sdks/issues"},"dist":{"shasum":"f701db66bece4e3944e0c7345f489bc94796457e","tarball":"https://registry.npmjs.org/@centurion_project/universal-router-sdk/-/universal-router-sdk-5.9.9.tgz","fileCount":172,"integrity":"sha512-WVVCcZi2bJZFmHwfRy+iJiS4z5JG/FEEZ6v37/cNASYQqDuiAz0AWYyzzZQob0jVKQ/pdChjjNZTcbKQXolE/g==","signatures":[{"sig":"MEUCIQCshv155M5GL0PF5S31ZibXsM20ZOWQRCQi94bh5hvxuwIgG8cEMNt/tiiisFmUS8db08f5u4J/ptZBxa0ymQjcLJw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCr9FiRnG4OdTmb7c8KAKP0RwcNUrpJOrDQqmYZ9izdLgIgQ/N3El4k0CTGdlz7zsHX1a0VNRRrgxeeSfO/OYTRRS4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":587545},"main":"./dist/cjs/src/index.js","module":"./dist/esm/src/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/types/src/index.d.ts","import":"./dist/esm/src/index.js","require":"./dist/cjs/src/index.js"}},"gitHead":"381d575eb7dc642ad362fa7a9cadd40375d82a7e","scripts":{"docs":"typedoc","lint":"bun run prettier","test":"bun run test:hardhat && bun run test:forge","build":"bun run clean && tsc -p tsconfig.cjs.json && tsc -p tsconfig.esm.json && tsc -p tsconfig.types.json","clean":"rm -rf dist","release":"changeset publish","lint:fix":"bun run prettier:fix && bun run forge:fix","prettier":"prettier --check '**/*.ts' && prettier --check '**/*.json'","forge:fix":"forge fmt","test:forge":"forge test","prettier:fix":"prettier --write '**/*.ts' && prettier --write '**/*.json'","test:hardhat":"env TS_NODE_COMPILER_OPTIONS='{\"module\": \"commonjs\" }' hardhat test","test:centurion":"bun run test:centurion:hardhat","test:centurion:hardhat":"hardhat test test/utils/constants.test.ts test/utils/permit2.test.ts test/unit/signedRoutes.test.ts test/centurionV2V3Trades.test.ts --no-compile && hardhat test test/unit/perHopSlippage.test.ts --grep 'V2 routes|V3 routes|Mixed routes' --no-compile"},"typings":"./dist/types/src/index.d.ts","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:db40e15d-4989-4a30-aca6-4c77764c7ace"}},"prettier":{"semi":false,"printWidth":120,"singleQuote":true,"trailingComma":"es5"},"repository":{"url":"git+https://github.com/CenturionDEX/centurion-dex-sdks.git","type":"git"},"_npmVersion":"11.19.0","description":"Centurion Universal Router SDK","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","dependencies":{"jsbi":"^3.1.4","tslib":"^2.3.0","ethers":"^5.7.0","bignumber.js":"^9.0.2","tiny-invariant":"^1.1.0","@ethersproject/abi":"^5.5.0","@centurion_project/v2-sdk":"^4.21.9","@centurion_project/v3-sdk":"^3.31.10","@centurion_project/v4-sdk":"^2.0.0","@centurion_project/sdk-core":"^7.19.3","@centurion_project/router-sdk":"^2.11.9","@centurion_project/permit2-sdk":"^1.4.10","@ethersproject/abstract-signer":"^5.7.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.6","dotenv":"^16.0.3","hardhat":"^2.25.0","ts-node":"^10.9.1","typedoc":"^0.21.2","prettier":"^2.4.1","typescript":"^4.3.3","@types/chai":"^4.3.3","@types/node":"^18.7.16","@types/mocha":"^9.1.1","@uniswap/v2-core":"1.0.1","@uniswap/v3-core":"1.0.0","@types/node-fetch":"^2.6.2","eslint-plugin-prettier":"^3.4.1","@openzeppelin/contracts":"4.7.0","@uniswap/universal-router":"2.1.0"},"centurionUpstream":{"ref":"ab3a18a62922c0bda493130e53f2c8f6fad59558","name":"@uniswap/universal-router-sdk","version":"5.9.0"},"_npmOperationalInternal":{"tmp":"tmp/universal-router-sdk_5.9.9_1790055620226_0.028785592557456496","host":"s3://npm-registry-packages-npm-production"}},"5.9.10":{"_id":"@centurion_project/universal-router-sdk@5.9.10","bugs":{"url":"https://github.com/CenturionDEX/centurion-dex-sdks/issues"},"dist":{"shasum":"611e8d1517ca45ee3ec30bc0315173bbf41e239e","tarball":"https://registry.npmjs.org/@centurion_project/universal-router-sdk/-/universal-router-sdk-5.9.10.tgz","fileCount":172,"integrity":"sha512-VVRFOFvCO2g9D6t51+BR4irUmnQpzaaGwFxV/Ok8MAWk6b7RGOUvxuOeIR9L5BS4DKdMawwQs/ZVIjlVZ12DVQ==","signatures":[{"sig":"MEUCIQD6dvyhPAbW6ufkHhOWXlBXhqOrfJDKXcNHatoTVQzJPAIgcPNanQ2Z0I+93JH4rZ+uBlbP3lO7PTeXIy6ZmMIkWFE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDJKb50BICMiMLOEjxF7aUR1op1xdgSRKcfOlp0EQlmxwIhAIgPowhjpuUeCC+JpsDxNmSWt87e+IM/9VMKK7o+Hx1c"}],"unpackedSize":587530},"main":"./dist/cjs/src/index.js","name":"@centurion_project/universal-router-sdk","_from":"file:/Users/marcos/Documents/CenturionDEX/deployment-records/new-gcp-stack-20261001.KU1f79/npm-artifacts/centurion_project-universal-router-sdk-5.9.10.tgz","module":"./dist/esm/src/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/types/src/index.d.ts","import":"./dist/esm/src/index.js","require":"./dist/cjs/src/index.js"}},"license":"MIT","scripts":{"docs":"typedoc","lint":"bun run prettier","test":"bun run test:hardhat && bun run test:forge","build":"bun run clean && tsc -p tsconfig.cjs.json && tsc -p tsconfig.esm.json && tsc -p tsconfig.types.json","clean":"rm -rf dist","release":"changeset publish","lint:fix":"bun run prettier:fix && bun run forge:fix","prettier":"prettier --check '**/*.ts' && prettier --check '**/*.json'","forge:fix":"forge fmt","test:forge":"forge test","prettier:fix":"prettier --write '**/*.ts' && prettier --write '**/*.json'","test:hardhat":"env TS_NODE_COMPILER_OPTIONS='{\"module\": \"commonjs\" }' hardhat test","test:centurion":"bun run test:centurion:hardhat","test:centurion:hardhat":"hardhat test test/utils/constants.test.ts test/utils/permit2.test.ts test/unit/signedRoutes.test.ts test/centurionV2V3Trades.test.ts --no-compile && hardhat test test/unit/perHopSlippage.test.ts --grep 'V2 routes|V3 routes|Mixed routes' --no-compile"},"typings":"./dist/types/src/index.d.ts","version":"5.9.10","_npmUser":{"name":"centurionproject","email":"centurionlabs@outlook.com"},"homepage":"https://github.com/CenturionDEX/centurion-dex-sdks#readme","keywords":["centurion","dex","ethereum"],"prettier":{"semi":false,"printWidth":120,"singleQuote":true,"trailingComma":"es5"},"_resolved":"/Users/marcos/Documents/CenturionDEX/deployment-records/new-gcp-stack-20261001.KU1f79/npm-artifacts/centurion_project-universal-router-sdk-5.9.10.tgz","_integrity":"sha512-VVRFOFvCO2g9D6t51+BR4irUmnQpzaaGwFxV/Ok8MAWk6b7RGOUvxuOeIR9L5BS4DKdMawwQs/ZVIjlVZ12DVQ==","repository":{"url":"git+https://github.com/CenturionDEX/centurion-dex-sdks.git","type":"git"},"_npmVersion":"10.9.2","description":"Centurion Universal Router SDK","directories":{},"maintainers":[{"name":"centurionproject","email":"centurionlabs@outlook.com"}],"sideEffects":false,"_nodeVersion":"22.13.1","dependencies":{"jsbi":"^3.1.4","tslib":"^2.3.0","ethers":"^5.7.0","bignumber.js":"^9.0.2","tiny-invariant":"^1.1.0","@ethersproject/abi":"^5.5.0","@centurion_project/v2-sdk":"^4.21.9","@centurion_project/v3-sdk":"^3.31.10","@centurion_project/v4-sdk":"^2.0.0","@centurion_project/sdk-core":"^7.19.3","@centurion_project/router-sdk":"^2.11.9","@centurion_project/permit2-sdk":"^1.4.10","@ethersproject/abstract-signer":"^5.7.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.6","dotenv":"^16.0.3","hardhat":"^2.25.0","ts-node":"^10.9.1","typedoc":"^0.21.2","prettier":"^2.4.1","typescript":"^4.3.3","@types/chai":"^4.3.3","@types/node":"^18.7.16","@types/mocha":"^9.1.1","@uniswap/v2-core":"1.0.1","@uniswap/v3-core":"1.0.0","@types/node-fetch":"^2.6.2","eslint-plugin-prettier":"^3.4.1","@openzeppelin/contracts":"4.7.0","@uniswap/universal-router":"2.1.0"},"centurionUpstream":{"ref":"ab3a18a62922c0bda493130e53f2c8f6fad59558","name":"@uniswap/universal-router-sdk","version":"5.9.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/universal-router-sdk_5.9.10_1790824168469_0.8078655663581391"}}},"time":{"created":"2026-04-02T11:29:56.772Z","modified":"2026-10-01T03:09:29.074Z","5.1.0-ctn.0":"2026-04-02T11:29:57.062Z","5.1.0-ctn.1":"2026-04-02T11:44:21.441Z","5.1.0":"2026-04-08T14:09:43.844Z","5.1.1":"2026-05-01T10:07:31.214Z","5.1.2":"2026-05-01T17:00:22.472Z","5.9.1":"2026-07-02T09:07:48.543Z","5.9.2":"2026-07-14T15:32:47.741Z","5.9.3":"2026-07-14T23:12:01.153Z","5.9.4":"2026-07-16T13:07:14.266Z","5.9.5":"2026-07-21T17:29:34.997Z","5.9.6":"2026-07-28T03:19:56.865Z","5.9.7":"2026-08-08T09:07:37.471Z","5.9.8":"2026-09-11T07:38:07.876Z","5.9.9":"2026-09-22T05:40:20.317Z","5.9.10":"2026-10-01T03:09:28.600Z"},"bugs":{"url":"https://github.com/CenturionDEX/centurion-dex-sdks/issues"},"license":"MIT","homepage":"https://github.com/CenturionDEX/centurion-dex-sdks#readme","keywords":["centurion","dex","ethereum"],"repository":{"url":"git+https://github.com/CenturionDEX/centurion-dex-sdks.git","type":"git"},"description":"Centurion Universal Router SDK","maintainers":[{"name":"centurionproject","email":"centurionlabs@outlook.com"}],"readme":"# universal-router-sdk\n\nThis SDK facilitates interactions with the contracts in [Universal Router](https://github.com/Uniswap/universal-router)\n\n## Usage\n\nInstall latest version of universal-router-sdk. Then import the corresponding Trade class and Data object for each protocol you'd like to interact with.\n\n### Trading on Uniswap\n\nwarning: `swapERC20CallParameters()` to be deprecated in favor of `swapCallParameters()`\n\n```typescript\nimport { TradeType } from '@centurion_project/sdk-core'\nimport { Trade as V2TradeSDK } from '@centurion_project/v2-sdk'\nimport { Trade as V3TradeSDK } from '@centurion_project/v3-sdk'\nimport { MixedRouteTrade, MixedRouteSDK, Trade as RouterTrade } from '@centurion_project/router-sdk'\n\nconst options = { slippageTolerance, recipient }\nconst routerTrade = new RouterTrade({ v2Routes, v3Routes, mixedRoutes, tradeType: TradeType.EXACT_INPUT })\n// Use the raw calldata and value returned to call into Universal Swap Router contracts\nconst { calldata, value } = SwapRouter.swapCallParameters(routerTrade, options)\n```\n\nThis SDK has two entry points for encoding swap calldata:\n\n- **`SwapRouter.swapCallParameters(trade, options)`** — builds calldata from a high-level `RouterTrade` (shown above). Best when your swap fits as one or more independent linear routes through pools.\n- **`SwapRouter.encodeSwaps(spec, swapSteps)`** — takes Universal Router commands directly, with the SDK adding ingress, fee, and settlement calldata around them. Best for topologies that don't fit a Trade, routing-service integrations, or advanced V4 compositions. See [Encoding Router-Provided Swap Steps](#encoding-router-provided-swap-steps-encodeswaps).\n\n## Running this package\n\nMake sure you are running `node v18`\nInstall dependencies and run typescript unit tests\n\n```bash\nyarn install\nyarn test:hardhat\n```\n\nRun forge integration tests\n\n```bash\nforge install\nyarn test:forge\n```\n\n## Encoding Router-Provided Swap Steps (`encodeSwaps`)\n\n`SwapRouter.encodeSwaps(spec, swapSteps)` is an alternative entry point for callers that already produce explicit `SwapStep[]` plans (e.g. routing services) and want the SDK to wrap them in a safety envelope. It decouples route topology from SDK trade construction.\n\nThe router owns `swapSteps` (V2/V3/V4 swaps + any `WRAP_ETH` / `UNWRAP_WETH`). The SDK owns ingress, fees, final settlement, exact-output refund, and optional `safeMode`.\n\n### Swap Step Types\n\nEach `SwapStep` is a 1:1 representation of a Universal Router command:\n\n- `V2_SWAP_EXACT_IN` / `V2_SWAP_EXACT_OUT` — V2 swap (multi-hop via `path: address[]`)\n- `V3_SWAP_EXACT_IN` / `V3_SWAP_EXACT_OUT` — V3 swap (multi-hop via packed `path: bytes`)\n- `V4_SWAP` — wraps a sequence of V4 actions (`SWAP_EXACT_IN`, `SETTLE`, `TAKE`, etc.) for the V4 router module\n- `WRAP_ETH` / `UNWRAP_WETH` — required when the route bridges native ETH and WETH\n\nRouters compose these to express any supported route topology. The SDK does not infer wrap/unwrap commands — routers must include them when their route depends on it.\n\n### Basic Usage\n\n```typescript\nimport { SwapRouter, ROUTER_AS_RECIPIENT } from '@centurion_project/universal-router-sdk'\nimport { CurrencyAmount, Percent, TradeType } from '@centurion_project/sdk-core'\n\nconst { calldata, value } = SwapRouter.encodeSwaps(\n  {\n    tradeType: TradeType.EXACT_INPUT,\n    routing: {\n      inputToken: USDC,\n      outputToken: WETH,\n      amount: CurrencyAmount.fromRawAmount(USDC, '1000000000'),\n      quote: CurrencyAmount.fromRawAmount(WETH, '500000000000000000'),\n    },\n    slippageTolerance: new Percent(50, 10000), // 0.5%\n    recipient: '0x...',\n  },\n  [\n    {\n      type: 'V3_SWAP_EXACT_IN',\n      recipient: ROUTER_AS_RECIPIENT,\n      amountIn: '1000000000',\n      amountOutMin: '0', // SDK enforces final slippage via the trailing SWEEP\n      path: '0x...', // packed V3 path\n    },\n  ]\n)\n```\n\n### What the SDK adds around `swapSteps`\n\n1. **Ingress**: `PERMIT2_TRANSFER_FROM` for ERC20 input, or `proxy.execute()` wrapping for `ApproveProxy`. Native input flows through `msg.value`.\n2. **Fee deduction** before settlement: portion (`PAY_PORTION` / `PAY_PORTION_FULL_PRECISION`) on exact-input, flat (`TRANSFER`) on exact-output.\n3. **Final SWEEP** of `outputToken` to recipient with the slippage-bounded floor.\n4. **Exact-output refund**: SWEEPs unused input back to recipient.\n5. **safeMode** (optional): trailing zero-min ETH SWEEP to recover dust or unintended `msg.value`.\n\n### Constraints\n\n- All swap step recipients must be `ROUTER_AS_RECIPIENT` — the SDK's settlement sweeps need router custody to see the funds.\n- `payerIsUser` is hardcoded to `false`; ingress runs once up-front via `PERMIT2_TRANSFER_FROM`.\n- Routers must end with output in `routing.outputToken`. For exact-output, unused input must end in `routing.inputToken`.\n- The final top-level `SWEEP` is appended by the SDK — don't include it in `swapSteps`.\n\n### Per-Hop Slippage\n\nPer-hop bounds require Universal Router v2.1.1+ — set `urVersion: UniversalRouterVersion.V2_1_1` on `spec` to enable.\n\n`encodeSwaps` accepts per-hop bounds as `minHopPriceX36` on each swap step, matching the contract parameter name. The value is a 1e36-scaled price floor.\n\n```typescript\n{\n  type: 'V3_SWAP_EXACT_IN',\n  // ...\n  minHopPriceX36: ['995000000000000000000000000000000000', ...], // one per hop\n}\n```\n\n## Signed Routes (Universal Router v2.1)\n\nUniversal Router v2.1 supports EIP712-signed route execution, enabling gasless transactions and intent-based trading.\n\n**Important**: The SDK does not perform signing. It provides utilities to prepare EIP712 payloads and encode signed calldata. You sign with your own mechanism (wallet, KMS, hardware, etc.).\n\n### Basic Flow\n\n```typescript\nimport { SwapRouter, NONCE_SKIP_CHECK } from '@centurion_project/universal-router-sdk'\nimport { Wallet } from '@ethersproject/wallet'\n\nconst wallet = new Wallet('0x...')\nconst chainId = 1\nconst routerAddress = '0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD'\nconst deadline = Math.floor(Date.now() / 1000) + 60 * 20\n\n// 1. Generate regular swap calldata\nconst { calldata, value } = SwapRouter.swapCallParameters(trade, {\n  slippageTolerance: new Percent(50, 10000),\n  recipient: wallet.address,\n  deadline,\n})\n\n// 2. Get EIP712 payload to sign\nconst payload = SwapRouter.getExecuteSignedPayload(\n  calldata,\n  {\n    intent: '0x' + '0'.repeat(64), // Application-specific intent\n    data: '0x' + '0'.repeat(64), // Application-specific data\n    sender: wallet.address, // Or address(0) to skip sender verification\n  },\n  deadline,\n  chainId,\n  routerAddress\n)\n\n// 3. Sign externally (wallet/KMS/hardware)\nconst signature = await wallet._signTypedData(payload.domain, payload.types, payload.value)\n\n// 4. Encode for executeSigned()\nconst { calldata: signedCalldata, value: signedValue } = SwapRouter.encodeExecuteSigned(\n  calldata,\n  signature,\n  {\n    intent: payload.value.intent,\n    data: payload.value.data,\n    sender: payload.value.sender,\n    nonce: payload.value.nonce, // Must match what was signed\n  },\n  deadline,\n  BigNumber.from(value)\n)\n\n// 5. Submit transaction\nawait wallet.sendTransaction({\n  to: routerAddress,\n  data: signedCalldata,\n  value: signedValue,\n})\n```\n\n### Nonce Management\n\n- **Random nonce (default)**: Omit `nonce` parameter - SDK generates random nonce\n- **Skip nonce check**: Use `NONCE_SKIP_CHECK` sentinel to allow signature reuse\n- **Custom nonce**: Provide your own nonce for ordering\n\n```typescript\nimport { NONCE_SKIP_CHECK } from '@centurion_project/universal-router-sdk'\n\n// Reusable signature (no nonce check)\nconst payload = SwapRouter.getExecuteSignedPayload(\n  calldata,\n  {\n    intent: '0x...',\n    data: '0x...',\n    sender: '0x0000000000000000000000000000000000000000', // Skip sender verification too\n    nonce: NONCE_SKIP_CHECK, // Allow signature reuse\n  },\n  deadline,\n  chainId,\n  routerAddress\n)\n```\n\n### Sender Verification\n\n- **Verify sender**: Pass the actual sender address (e.g., `wallet.address`)\n- **Skip verification**: Pass `'0x0000000000000000000000000000000000000000'`\n\nThe SDK automatically sets `verifySender` based on whether sender is address(0).\n\n## Cross-Chain Bridging with Across (Universal Router v2.1)\n\nUniversal Router v2.1 integrates with Across Protocol V3 to enable seamless cross-chain bridging after swaps. This allows you to swap tokens on one chain and automatically bridge them to another chain in a single transaction.\n\n### Basic Usage\n\n```typescript\nimport { SwapRouter } from '@centurion_project/universal-router-sdk'\nimport { BigNumber } from 'ethers'\n\n// 1. Prepare your swap (e.g., USDC → WETH on mainnet)\nconst { calldata, value } = SwapRouter.swapCallParameters(trade, swapOptions, [\n  {\n    // Bridge configuration\n    depositor: userAddress,\n    recipient: userAddress, // Recipient on destination chain\n    inputToken: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', // WETH mainnet\n    outputToken: '0x4200000000000000000000000000000000000006', // WETH optimism\n    inputAmount: BigNumber.from('1000000000000000000'), // 1 WETH\n    outputAmount: BigNumber.from('990000000000000000'), // 0.99 WETH (with fees)\n    destinationChainId: 10, // Optimism\n    exclusiveRelayer: '0x0000000000000000000000000000000000000000',\n    quoteTimestamp: Math.floor(Date.now() / 1000),\n    fillDeadline: Math.floor(Date.now() / 1000) + 3600,\n    exclusivityDeadline: 0,\n    message: '0x',\n    useNative: false,\n  },\n])\n```\n\n### Swap + Bridge Example\n\n```typescript\n// Swap USDC to WETH, then bridge WETH to Optimism\nconst bridgeParams = {\n  depositor: userAddress,\n  recipient: userAddress, // Can be different address on destination\n  inputToken: WETH_MAINNET,\n  outputToken: WETH_OPTIMISM,\n  inputAmount: CONTRACT_BALANCE, // Use entire swap output\n  outputAmount: expectedOutputAmount,\n  destinationChainId: 10,\n  exclusiveRelayer: '0x0000000000000000000000000000000000000000',\n  quoteTimestamp: Math.floor(Date.now() / 1000),\n  fillDeadline: Math.floor(Date.now() / 1000) + 3600,\n  exclusivityDeadline: 0,\n  message: '0x', // Optional message to execute on destination\n  useNative: false, // Set to true to bridge native ETH\n}\n\nconst { calldata, value } = SwapRouter.swapCallParameters(\n  trade,\n  swapOptions,\n  [bridgeParams] // Array of bridge operations\n)\n```\n\n### Using CONTRACT_BALANCE\n\nWhen bridging after a swap, you often don't know the exact output amount. Use `CONTRACT_BALANCE` to bridge the entire contract balance:\n\n```typescript\nimport { CONTRACT_BALANCE } from '@centurion_project/universal-router-sdk'\n\nconst bridgeParams = {\n  // ... other params\n  inputAmount: CONTRACT_BALANCE, // Bridge entire balance after swap\n  // ... other params\n}\n```\n\n### Multiple Bridge Operations\n\nYou can perform multiple bridge operations after a swap:\n\n```typescript\nconst { calldata, value } = SwapRouter.swapCallParameters(trade, swapOptions, [\n  {\n    // Bridge 50% to Optimism\n    inputToken: WETH_MAINNET,\n    outputToken: WETH_OPTIMISM,\n    inputAmount: BigNumber.from('500000000000000000'),\n    destinationChainId: 10,\n    // ... other params\n  },\n  {\n    // Bridge remaining USDC to Arbitrum\n    inputToken: USDC_MAINNET,\n    outputToken: USDC_ARBITRUM,\n    inputAmount: CONTRACT_BALANCE,\n    destinationChainId: 42161,\n    // ... other params\n  },\n])\n```\n\n### Native ETH Bridging\n\nTo bridge native ETH instead of WETH:\n\n```typescript\nconst bridgeParams = {\n  inputToken: WETH_ADDRESS, // Must be WETH address\n  outputToken: WETH_ON_DESTINATION,\n  useNative: true, // Bridge as native ETH\n  // ... other params\n}\n```\n\n### Important Notes\n\n1. **Across Quote**: Bridge parameters (especially `outputAmount`, `quoteTimestamp`, `fillDeadline`) should come from the Across API quote\n2. **Recipient Address**: Can be different from the sender, allowing cross-chain transfers to other addresses\n3. **Message Passing**: The `message` field allows executing arbitrary calls on the destination chain\n4. **Slippage**: The `outputAmount` already accounts for bridge fees and slippage\n","readmeFilename":"README.md"}