{"_id":"@circle-fin/adapter-viem-v2","_rev":"54-b35a4aba8733b54dc7e52713a0a3eb26","name":"@circle-fin/adapter-viem-v2","dist-tags":{"alpha":"0.0.2-alpha.6","latest":"1.18.0"},"versions":{"0.0.2-alpha.6":{"name":"@circle-fin/adapter-viem-v2","version":"0.0.2-alpha.6","_id":"@circle-fin/adapter-viem-v2@0.0.2-alpha.6","maintainers":[{"name":"circle-smartin","email":"sarah.martin@circle.com"},{"name":"elvin-circle","email":"elvin.du@circle.com"},{"name":"ashuk-circle","email":"ashutosh.ukey@circle.com"},{"name":"prakashb-circle","email":"prakashb@circle.com"},{"name":"deepakgummi-circle","email":"deepakreddy.gummi@circle.com"},{"name":"tomleicircle","email":"mengda.lei@circle.com"}],"dist":{"shasum":"1eb89eb12b361c221befca0bbc94f7ca5e2dadf8","tarball":"https://registry.npmjs.org/@circle-fin/adapter-viem-v2/-/adapter-viem-v2-0.0.2-alpha.6.tgz","fileCount":8,"integrity":"sha512-/4w4gZYuqqwFiXpaW0or9tm6ScTL79mXHduWQyHaMZiosaYz55ruPO5gTjYrsd6pF1vVD9aflGDJZZhRii0quw==","signatures":[{"sig":"MEYCIQC2+khqMbTlqp18WUc3PFIYXZW2jbCptr4kXr9mUGxZiAIhAJJSQSRMR7VcR3BE53pfAjeEZqonnJ8BZxjqjlfVSW5U","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":713903},"main":"./index.cjs.js","types":"./index.d.ts","module":"./index.mjs","exports":{".":{"types":"./index.d.ts","import":"./index.mjs","default":"./index.cjs.js"},"./package.json":"./package.json"},"gitHead":"ce5def7bf3577664cf8243d1d7f8fc3d5a3ac079","_npmUser":{"name":"ashuk-circle","email":"ashutosh.ukey@circle.com"},"_npmVersion":"10.9.3","description":"<div align=\"center\">","directories":{},"_nodeVersion":"22.18.0","dependencies":{"zod":"3.25.67","bs58":"^6.0.0","abitype":"1.0.8","@solana/web3.js":"^1.90.0","@ethersproject/bytes":"^5.8.0","@ethersproject/units":"^5.8.0","@ethersproject/address":"^5.8.0"},"publishConfig":{"directory":"../../dist/adapters/viem.v2"},"_hasShrinkwrap":false,"peerDependencies":{"viem":"^2.30.5"},"_npmOperationalInternal":{"tmp":"tmp/adapter-viem-v2_0.0.2-alpha.6_1756213530560_0.718851814760465","host":"s3://npm-registry-packages-npm-production"}},"0.0.2-alpha.7":{"name":"@circle-fin/adapter-viem-v2","version":"0.0.2-alpha.7","_id":"@circle-fin/adapter-viem-v2@0.0.2-alpha.7","maintainers":[{"name":"circle-smartin","email":"sarah.martin@circle.com"},{"name":"elvin-circle","email":"elvin.du@circle.com"},{"name":"ashuk-circle","email":"ashutosh.ukey@circle.com"},{"name":"prakashb-circle","email":"prakashb@circle.com"},{"name":"deepakgummi-circle","email":"deepakreddy.gummi@circle.com"},{"name":"tomleicircle","email":"mengda.lei@circle.com"}],"dist":{"shasum":"0b9bd9b2f761d44c303fd30f47014dbb6cc4cfb1","tarball":"https://registry.npmjs.org/@circle-fin/adapter-viem-v2/-/adapter-viem-v2-0.0.2-alpha.7.tgz","fileCount":8,"integrity":"sha512-yaDdyrrOH2cGzJqGjqjdPjf67eTUfGErBfpmP9lsJIo367vWoGgmbmJJQhsdkJkYJfAO83X7iGp2WNe+Ucrp+g==","signatures":[{"sig":"MEQCIBposXusi0isgeAnBl/ruJJj/2WnN3MKAXzz5255C/DMAiBrMwEIt5+wh+Q2O15Yn2yWylYZ5sTQqiw3c7QvFzmW6Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":846216},"main":"./index.cjs.js","types":"./index.d.ts","module":"./index.mjs","exports":{".":{"types":"./index.d.ts","import":"./index.mjs","default":"./index.cjs.js"},"./package.json":"./package.json"},"gitHead":"4e52f40576dc83effaca889b35e7c7a4c0f323a4","_npmUser":{"name":"ashuk-circle","email":"ashutosh.ukey@circle.com"},"_npmVersion":"10.9.3","description":"<div align=\"center\">","directories":{},"_nodeVersion":"22.20.0","dependencies":{"zod":"3.25.67","bs58":"6.0.0","abitype":"1.0.8","@solana/web3.js":"^1.90.0","@ethersproject/bytes":"^5.8.0","@ethersproject/units":"^5.8.0","@ethersproject/address":"^5.8.0"},"publishConfig":{"directory":"../../dist/adapters/viem.v2"},"_hasShrinkwrap":false,"peerDependencies":{"viem":"2.32.0"},"_npmOperationalInternal":{"tmp":"tmp/adapter-viem-v2_0.0.2-alpha.7_1759934316671_0.5286822871217995","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@circle-fin/adapter-viem-v2","version":"1.0.0","_id":"@circle-fin/adapter-viem-v2@1.0.0","maintainers":[{"name":"circle-smartin","email":"sarah.martin@circle.com"},{"name":"elvin-circle","email":"elvin.du@circle.com"},{"name":"ashuk-circle","email":"ashutosh.ukey@circle.com"},{"name":"prakashb-circle","email":"prakashb@circle.com"},{"name":"deepakgummi-circle","email":"deepakreddy.gummi@circle.com"},{"name":"tomleicircle","email":"mengda.lei@circle.com"}],"dist":{"shasum":"ca9b527ce5a2e9dce45d3a60e02e943a93ba2f99","tarball":"https://registry.npmjs.org/@circle-fin/adapter-viem-v2/-/adapter-viem-v2-1.0.0.tgz","fileCount":8,"integrity":"sha512-1v26CjlL5BkgpywKsrpb6XNQ2WnnmgAwO0qaT8i65kp5ynF7uBwHSGxf9/DchxJ9OSYt6WWzgFQyEPd0GMvx6A==","signatures":[{"sig":"MEYCIQDuccmWLh8A3NAKbzAHB0QXRx502WPnKpj4eQt1jjy4nQIhAI+H/A+k/+7jYTz7FJgwvKX0sMAF1FlZMFgwnsMTMGJa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":835840},"main":"./index.cjs.js","types":"./index.d.ts","module":"./index.mjs","exports":{".":{"types":"./index.d.ts","import":"./index.mjs","default":"./index.cjs.js"},"./package.json":"./package.json"},"gitHead":"6f1d57b6d1b6fa99dbf56299e27facd487b6a360","_npmUser":{"name":"ashuk-circle","email":"ashutosh.ukey@circle.com"},"_npmVersion":"10.9.3","description":"<div align=\"center\">","directories":{},"_nodeVersion":"22.20.0","dependencies":{"zod":"3.25.67","bs58":"6.0.0","abitype":"^1.1.0","@solana/web3.js":"^1.98.4","@ethersproject/bytes":"^5.8.0","@ethersproject/units":"^5.8.0","@ethersproject/address":"^5.8.0"},"publishConfig":{"directory":"../../dist/adapters/viem.v2"},"_hasShrinkwrap":false,"peerDependencies":{"viem":"^2.30.0"},"_npmOperationalInternal":{"tmp":"tmp/adapter-viem-v2_1.0.0_1760456230385_0.364785960483047","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@circle-fin/adapter-viem-v2","version":"1.0.1","_id":"@circle-fin/adapter-viem-v2@1.0.1","maintainers":[{"name":"circle-smartin","email":"sarah.martin@circle.com"},{"name":"elvin-circle","email":"elvin.du@circle.com"},{"name":"ashuk-circle","email":"ashutosh.ukey@circle.com"},{"name":"tomleicircle","email":"mengda.lei@circle.com"},{"name":"igaskin-circle","email":"isaac.gaskin@circle.com"},{"name":"circle-npm-ci","email":"devops@circle.com"}],"dist":{"shasum":"df2393702ad1d4aec000229ceaf9413dff11a552","tarball":"https://registry.npmjs.org/@circle-fin/adapter-viem-v2/-/adapter-viem-v2-1.0.1.tgz","fileCount":8,"integrity":"sha512-p6aF1cGMKLqIM1kt2RWf2kymCLN4oD88yq9OU3Du0WPDYzKqUf4yHpGvrtYAgHeuPOAV1d0YvwdcXCeTznwMFA==","signatures":[{"sig":"MEUCIEGaRh5L42ES2d4CWqvlClPuhkhbT6S+9AJHPKpzjXPZAiEA5G1uryS/+MVnb2ZurfHCOXw2msKTKZFshAm5ug5CSTI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":866826},"main":"./index.cjs.js","types":"./index.d.ts","module":"./index.mjs","exports":{".":{"types":"./index.d.ts","import":"./index.mjs","default":"./index.cjs.js"},"./package.json":"./package.json"},"gitHead":"9fdbf13761db407c8877b8d83f891fb2503fffbe","_npmUser":{"name":"circle-npm-ci","email":"devops@circle.com"},"_npmVersion":"10.9.4","description":"EVM blockchain adapter powered by Viem v2","directories":{},"_nodeVersion":"22.21.0","dependencies":{"zod":"3.25.67","bs58":"6.0.0","abitype":"^1.1.0","@solana/web3.js":"^1.98.4","@ethersproject/bytes":"^5.8.0","@ethersproject/units":"^5.8.0","@ethersproject/address":"^5.8.0"},"publishConfig":{"access":"public","directory":"../../dist/adapters/viem.v2"},"_hasShrinkwrap":false,"peerDependencies":{"viem":"^2.30.0"},"_npmOperationalInternal":{"tmp":"tmp/adapter-viem-v2_1.0.1_1761680388178_0.20290896992065477","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@circle-fin/adapter-viem-v2","version":"1.1.0","_id":"@circle-fin/adapter-viem-v2@1.1.0","maintainers":[{"name":"tomleicircle","email":"mengda.lei@circle.com"},{"name":"igaskin-circle","email":"isaac.gaskin@circle.com"},{"name":"circle-npm-ci","email":"devops@circle.com"}],"dist":{"shasum":"9223b25f226f657ebe536b4a04379f95242644aa","tarball":"https://registry.npmjs.org/@circle-fin/adapter-viem-v2/-/adapter-viem-v2-1.1.0.tgz","fileCount":9,"integrity":"sha512-OpnUTyNWUJh4MdVn2esd/UGfF7dsblLFuqSIwHDFCEk7VJ84xNx4WUzASp/h98YtUdqo6fHQEB1QtHn5t8CQbQ==","signatures":[{"sig":"MEYCIQDvxZF2uoQKFEAUyijJII12jyTM+WUAjQM8ha7Q5EBITwIhAIP3ZTlE6geSXx5eteZYnWVIKMhn3C66qoid5QhAhP/G","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":873104},"main":"./index.cjs","types":"./index.d.ts","module":"./index.mjs","exports":{".":{"types":"./index.d.ts","import":"./index.mjs","default":"./index.cjs","require":"./index.cjs"},"./package.json":"./package.json"},"gitHead":"99d2830afba4c6ec75ec21006b1ab89218aa42c5","_npmUser":{"name":"circle-npm-ci","email":"devops@circle.com"},"_npmVersion":"10.9.4","description":"EVM blockchain adapter powered by Viem v2","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"3.25.67","bs58":"6.0.0","abitype":"^1.1.0","@solana/web3.js":"^1.98.4","@ethersproject/bytes":"^5.8.0","@ethersproject/units":"^5.8.0","@ethersproject/address":"^5.8.0"},"publishConfig":{"access":"public","directory":"../../dist/adapters/viem.v2"},"_hasShrinkwrap":false,"peerDependencies":{"viem":"^2.30.0"},"_npmOperationalInternal":{"tmp":"tmp/adapter-viem-v2_1.1.0_1762363840802_0.5260837245246885","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@circle-fin/adapter-viem-v2","version":"1.1.1","_id":"@circle-fin/adapter-viem-v2@1.1.1","maintainers":[{"name":"tomleicircle","email":"mengda.lei@circle.com"},{"name":"igaskin-circle","email":"isaac.gaskin@circle.com"},{"name":"circle-npm-ci","email":"devops@circle.com"}],"dist":{"shasum":"4c404ddd7cca5403b6c144f3b8ecc3f17d741fd0","tarball":"https://registry.npmjs.org/@circle-fin/adapter-viem-v2/-/adapter-viem-v2-1.1.1.tgz","fileCount":9,"integrity":"sha512-v6wPbuihLcGRNAbOSLoOEy0dq4eqoGQI3b3SACOOYzfgjcNYMLhaAlmuxlffixdGKUT0OBklEZwwFiC48H1hGQ==","signatures":[{"sig":"MEYCIQDZUGt5tah+5fC8g3idWFBGYJig5IQTybyjIdkjhV+EdgIhAOUpn14E+u6LtZO3nHTkFidkfV4RYrxD6rxhwaeLnt+J","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":920757},"main":"./index.cjs","types":"./index.d.ts","module":"./index.mjs","exports":{".":{"types":"./index.d.ts","import":"./index.mjs","default":"./index.cjs","require":"./index.cjs"},"./package.json":"./package.json"},"gitHead":"d766004cb303d4a31ccaa3eea88fecc215e9da1a","_npmUser":{"name":"circle-npm-ci","email":"devops@circle.com"},"_npmVersion":"10.9.4","description":"EVM blockchain adapter powered by Viem v2","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"3.25.67","bs58":"6.0.0","abitype":"^1.1.0","@solana/web3.js":"^1.98.4","@ethersproject/bytes":"^5.8.0","@ethersproject/units":"^5.8.0","@ethersproject/address":"^5.8.0"},"publishConfig":{"access":"public","directory":"../../dist/adapters/viem.v2"},"_hasShrinkwrap":false,"peerDependencies":{"viem":"^2.30.0"},"_npmOperationalInternal":{"tmp":"tmp/adapter-viem-v2_1.1.1_1763409542276_0.7208005706153717","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@circle-fin/adapter-viem-v2","version":"1.2.0","_id":"@circle-fin/adapter-viem-v2@1.2.0","maintainers":[{"name":"tomleicircle","email":"mengda.lei@circle.com"},{"name":"igaskin-circle","email":"isaac.gaskin@circle.com"},{"name":"circle-npm-ci","email":"devops@circle.com"}],"dist":{"shasum":"cb3ebc328bccfe92b41017ae3cdda857e928ffae","tarball":"https://registry.npmjs.org/@circle-fin/adapter-viem-v2/-/adapter-viem-v2-1.2.0.tgz","fileCount":9,"integrity":"sha512-NmbtPS5PbploLx5ujWltGEVNjMjqIn0q/7/i4mQEQEt5j6K1Sa6kuuFCraLu/R4QEClSHSIpCSgAdXEX4LT25g==","signatures":[{"sig":"MEUCICS34pkw4/uv6EbFb+Ob7N72lOk3W6p/LjWD5NHGD1nXAiEApBVuOGLFr15jMvzH5XN7eetmlIT8KU9rGyFbDAOAQYw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":951009},"main":"./index.cjs","types":"./index.d.ts","module":"./index.mjs","exports":{".":{"types":"./index.d.ts","import":"./index.mjs","default":"./index.cjs","require":"./index.cjs"},"./package.json":"./package.json"},"gitHead":"ec3282c7613fc5ecea14d1e0d3b13f8d2f7c6a19","_npmUser":{"name":"circle-npm-ci","email":"devops@circle.com"},"_npmVersion":"10.9.4","description":"EVM blockchain adapter powered by Viem v2","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"3.25.67","bs58":"6.0.0","abitype":"^1.1.0","@solana/web3.js":"^1.98.4","@ethersproject/bytes":"^5.8.0","@ethersproject/units":"^5.8.0","@ethersproject/address":"^5.8.0"},"publishConfig":{"access":"public","directory":"../../dist/adapters/viem.v2"},"_hasShrinkwrap":false,"peerDependencies":{"viem":"^2.30.0"},"_npmOperationalInternal":{"tmp":"tmp/adapter-viem-v2_1.2.0_1766143369121_0.7114466137454365","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@circle-fin/adapter-viem-v2","version":"1.3.0","keywords":["circle","cctp","usdc","stablecoin","adapter","sdk","typescript","evm","ethereum","viem","cross-chain","bridge","bridge-kit"],"_id":"@circle-fin/adapter-viem-v2@1.3.0","maintainers":[{"name":"tomleicircle","email":"mengda.lei@circle.com"},{"name":"igaskin-circle","email":"isaac.gaskin@circle.com"},{"name":"circle-npm-ci","email":"devops@circle.com"}],"dist":{"shasum":"ce03b971635dd15118cbe67b9ced8600f8d2e4dc","tarball":"https://registry.npmjs.org/@circle-fin/adapter-viem-v2/-/adapter-viem-v2-1.3.0.tgz","fileCount":9,"integrity":"sha512-ACOLtEnCWpD4J3NUh6EplAXx81Ilv75D0wkgO11HZzB6pbbmI7BZMEVViOIzxzyxKjTj5mykYhk8umCo68e+cA==","signatures":[{"sig":"MEYCIQDr+r8bOgu8vg9CHaVv6U7LU/KC1T8W9WX64v4AeDbS7AIhAMBeF1rof9dOstRrMwwlotIC87KcdqCE7euRS8mQimj4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":967749},"main":"./index.cjs","types":"./index.d.ts","module":"./index.mjs","exports":{".":{"types":"./index.d.ts","import":"./index.mjs","default":"./index.cjs","require":"./index.cjs"},"./package.json":"./package.json"},"gitHead":"a229cc3bfea215b88ab5a7ab486080251395fd6a","_npmUser":{"name":"circle-npm-ci","email":"devops@circle.com"},"_npmVersion":"10.9.4","description":"EVM blockchain adapter powered by Viem v2","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"3.25.67","bs58":"6.0.0","abitype":"^1.1.0","@solana/web3.js":"^1.98.4","@ethersproject/bytes":"^5.8.0","@ethersproject/units":"^5.8.0","@ethersproject/address":"^5.8.0"},"publishConfig":{"access":"public","directory":"../../dist/adapters/viem.v2"},"_hasShrinkwrap":false,"peerDependencies":{"viem":"^2.30.0"},"_npmOperationalInternal":{"tmp":"tmp/adapter-viem-v2_1.3.0_1769100200066_0.07894593352457857","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@circle-fin/adapter-viem-v2","version":"1.4.0","keywords":["circle","cctp","usdc","stablecoin","adapter","sdk","typescript","evm","ethereum","viem","cross-chain","bridge","bridge-kit"],"_id":"@circle-fin/adapter-viem-v2@1.4.0","maintainers":[{"name":"tomleicircle","email":"mengda.lei@circle.com"},{"name":"igaskin-circle","email":"isaac.gaskin@circle.com"},{"name":"circle-npm-ci","email":"devops@circle.com"}],"dist":{"shasum":"14f502c762377bdba548be16a2e3e073168c1e79","tarball":"https://registry.npmjs.org/@circle-fin/adapter-viem-v2/-/adapter-viem-v2-1.4.0.tgz","fileCount":9,"integrity":"sha512-LcPeA0W4ke3mw2Shnimc4qC1nCEgILOo1F3wX8K4q4N7BV27uQM06hUdLkIG6OvgNpiEW5IkrylkKEFmtO44BQ==","signatures":[{"sig":"MEYCIQCYozHW8Wour/WUmMgmtvhnfxO1MPH9D0MJtElsdArHjgIhAMUmVmwCQ1ftP/i5ZCBlwKBGKDZGdeT6pqnle53nmXqM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":974107},"main":"./index.cjs","types":"./index.d.ts","module":"./index.mjs","exports":{".":{"types":"./index.d.ts","import":"./index.mjs","default":"./index.cjs","require":"./index.cjs"},"./package.json":"./package.json"},"gitHead":"a6f0bb0535d2a39376c6e68fbc518f2f0d100ca1","_npmUser":{"name":"circle-npm-ci","email":"devops@circle.com"},"_npmVersion":"10.9.4","description":"EVM blockchain adapter powered by Viem v2","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"3.25.67","bs58":"6.0.0","abitype":"^1.1.0","@solana/web3.js":"^1.98.4","@ethersproject/bytes":"^5.8.0","@ethersproject/units":"^5.8.0","@ethersproject/address":"^5.8.0"},"publishConfig":{"access":"public","directory":"../../dist/adapters/viem.v2"},"_hasShrinkwrap":false,"peerDependencies":{"viem":"^2.30.0"},"_npmOperationalInternal":{"tmp":"tmp/adapter-viem-v2_1.4.0_1769627596327_0.8864383670226756","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@circle-fin/adapter-viem-v2","version":"1.5.0","keywords":["circle","cctp","usdc","stablecoin","adapter","sdk","typescript","evm","ethereum","viem","cross-chain","bridge","bridge-kit"],"_id":"@circle-fin/adapter-viem-v2@1.5.0","maintainers":[{"name":"tomleicircle","email":"mengda.lei@circle.com"},{"name":"igaskin-circle","email":"isaac.gaskin@circle.com"},{"name":"circle-npm-ci","email":"devops@circle.com"}],"dist":{"shasum":"3867571d6bd6061c3d0267d3b3723bf9fa1beac3","tarball":"https://registry.npmjs.org/@circle-fin/adapter-viem-v2/-/adapter-viem-v2-1.5.0.tgz","fileCount":9,"integrity":"sha512-0AYJrL1l+BBsRvlEtRF42Xxd4O1u5QzKtMaS2R7pTPOt4m+64m7nUpvHUGxtr2tHDl0UR9sCLzFC/efTpEzERw==","signatures":[{"sig":"MEUCIQC+egxyj6x5/YvXI4ENz4+G7P3Fr4M/ksdEZlJ5cCfjdQIgEZyDatMM1q8E1WJIRcBeQIhNjg+03WwBbsXM6Rr70pg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1028262},"main":"./index.cjs","types":"./index.d.ts","module":"./index.mjs","exports":{".":{"types":"./index.d.ts","import":"./index.mjs","default":"./index.cjs","require":"./index.cjs"},"./package.json":"./package.json"},"gitHead":"808cdc946335166603f6b3f8686a4516f6eabc23","_npmUser":{"name":"circle-npm-ci","email":"devops@circle.com"},"_npmVersion":"10.9.4","description":"EVM blockchain adapter powered by Viem v2","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"3.25.67","bs58":"6.0.0","abitype":"^1.1.0","@solana/web3.js":"^1.98.4","@ethersproject/bytes":"^5.8.0","@ethersproject/units":"^5.8.0","@ethersproject/address":"^5.8.0"},"publishConfig":{"access":"public","directory":"../../dist/adapters/viem.v2"},"_hasShrinkwrap":false,"peerDependencies":{"viem":"^2.30.0"},"_npmOperationalInternal":{"tmp":"tmp/adapter-viem-v2_1.5.0_1771612242186_0.287902118596443","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"@circle-fin/adapter-viem-v2","version":"1.6.0","keywords":["circle","cctp","usdc","stablecoin","adapter","sdk","typescript","evm","ethereum","viem","cross-chain","bridge","bridge-kit"],"_id":"@circle-fin/adapter-viem-v2@1.6.0","maintainers":[{"name":"tomleicircle","email":"mengda.lei@circle.com"},{"name":"igaskin-circle","email":"isaac.gaskin@circle.com"},{"name":"circle-npm-ci","email":"devops@circle.com"}],"dist":{"shasum":"f59b7eb294fc3a014d8000f1aa731a366ec2b3a4","tarball":"https://registry.npmjs.org/@circle-fin/adapter-viem-v2/-/adapter-viem-v2-1.6.0.tgz","fileCount":9,"integrity":"sha512-RAF6ueM3ZsL4gfp7sTwdHMzeVv4eR1VE5wZ1OYeeVN72ble6URXqaCz+bkoemcDhyX+LjaDV+rY3AP9zAI33zg==","signatures":[{"sig":"MEUCICQfc7tqoFuInQY09QElHpQ/UvLQv26Sh7mLpQic03InAiEAkWZ2/tM6mqYOAHOHf8eFFNiTPQa5QEMQGOpZxqLqTgw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1226488},"main":"./index.cjs","types":"./index.d.ts","module":"./index.mjs","exports":{".":{"types":"./index.d.ts","import":"./index.mjs","default":"./index.cjs","require":"./index.cjs"},"./package.json":"./package.json"},"gitHead":"e92a6d718de13a37fb56100cd3cf875e18aba81c","_npmUser":{"name":"circle-npm-ci","email":"devops@circle.com"},"_npmVersion":"10.9.4","description":"EVM blockchain adapter powered by Viem v2","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"3.25.67","bs58":"6.0.0","abitype":"^1.1.0","@solana/web3.js":"^1.98.4","@ethersproject/bytes":"^5.8.0","@ethersproject/units":"^5.8.0","@ethersproject/address":"^5.8.0"},"publishConfig":{"access":"public","directory":"../../dist/adapters/viem.v2"},"_hasShrinkwrap":false,"peerDependencies":{"viem":"^2.30.0"},"_npmOperationalInternal":{"tmp":"tmp/adapter-viem-v2_1.6.0_1773791989562_0.1246161739279561","host":"s3://npm-registry-packages-npm-production"}},"1.7.0":{"name":"@circle-fin/adapter-viem-v2","version":"1.7.0","keywords":["circle","cctp","usdc","stablecoin","adapter","sdk","typescript","evm","ethereum","viem","cross-chain","bridge","bridge-kit"],"_id":"@circle-fin/adapter-viem-v2@1.7.0","maintainers":[{"name":"tomleicircle","email":"mengda.lei@circle.com"},{"name":"igaskin-circle","email":"isaac.gaskin@circle.com"},{"name":"circle-npm-ci","email":"devops@circle.com"}],"dist":{"shasum":"4710d6556a5e25c1f628d2833fd307cef72500c6","tarball":"https://registry.npmjs.org/@circle-fin/adapter-viem-v2/-/adapter-viem-v2-1.7.0.tgz","fileCount":9,"integrity":"sha512-EG6glneXaMQOn0pAUJG2XFZ631mNzVIjDQDVU9UH6OPfvdbk9QebrenlKL0xHUK1C1Ef1/HG9NGoPBB5usJcQQ==","signatures":[{"sig":"MEQCIAopZQ4emF9ge7/IkszEMdpBnaBesJWKwLKOkH8iowSEAiBVZi85DBPx844Tylzp60SvEXFK5cxGaMlkdYNtwCO4fA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1238676},"main":"./index.cjs","types":"./index.d.ts","module":"./index.mjs","exports":{".":{"types":"./index.d.ts","import":"./index.mjs","default":"./index.cjs","require":"./index.cjs"},"./package.json":"./package.json"},"gitHead":"da2a241ccb420f4c40b52f5f2c4ccaa3a61efad6","_npmUser":{"name":"circle-npm-ci","email":"devops@circle.com"},"_npmVersion":"10.9.4","description":"EVM blockchain adapter powered by Viem v2","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"3.25.67","bs58":"6.0.0","abitype":"^1.1.0","@solana/web3.js":"^1.98.4","@ethersproject/bytes":"^5.8.0","@ethersproject/units":"^5.8.0","@ethersproject/address":"^5.8.0"},"publishConfig":{"access":"public","directory":"../../dist/adapters/viem.v2"},"_hasShrinkwrap":false,"peerDependencies":{"viem":"^2.30.0"},"_npmOperationalInternal":{"tmp":"tmp/adapter-viem-v2_1.7.0_1774042705988_0.513908400543639","host":"s3://npm-registry-packages-npm-production"}},"1.8.0":{"name":"@circle-fin/adapter-viem-v2","version":"1.8.0","keywords":["circle","cctp","usdc","stablecoin","adapter","sdk","typescript","evm","ethereum","viem","cross-chain","bridge","bridge-kit"],"_id":"@circle-fin/adapter-viem-v2@1.8.0","maintainers":[{"name":"tomleicircle","email":"mengda.lei@circle.com"},{"name":"igaskin-circle","email":"isaac.gaskin@circle.com"},{"name":"circle-npm-ci","email":"devops@circle.com"}],"dist":{"shasum":"1c8c135aeb20c77fad16d1111badb76e488053dd","tarball":"https://registry.npmjs.org/@circle-fin/adapter-viem-v2/-/adapter-viem-v2-1.8.0.tgz","fileCount":9,"integrity":"sha512-hls6GShDMuSDylKC8v+a7Im9qRSoMYNxSftUxX/wvJoB3On2VjLyZio/05NlnYmnXu8lfqDWLuua1+EVMs6HTQ==","signatures":[{"sig":"MEUCIQCnkd5RPOnX1e//MRE4D1jbVY+Pe/vvb1/mPMjdd6J8EAIgcy4ekZczwcUlGNHPM+6/5+1I7cj7Qx+B9Jfdtux/Olo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1271440},"main":"./index.cjs","types":"./index.d.ts","module":"./index.mjs","exports":{".":{"types":"./index.d.ts","import":"./index.mjs","default":"./index.cjs","require":"./index.cjs"},"./package.json":"./package.json"},"gitHead":"71eb251b09def4446f2e98842e551cfec2a3558f","_npmUser":{"name":"circle-npm-ci","email":"devops@circle.com"},"_npmVersion":"10.9.7","description":"EVM blockchain adapter powered by Viem v2","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"3.25.67","bs58":"6.0.0","abitype":"^1.1.0","@solana/web3.js":"^1.98.4","@ethersproject/bytes":"^5.8.0","@ethersproject/units":"^5.8.0","@ethersproject/address":"^5.8.0"},"publishConfig":{"access":"public","directory":"../../dist/adapters/viem.v2"},"_hasShrinkwrap":false,"peerDependencies":{"viem":"^2.30.0"},"_npmOperationalInternal":{"tmp":"tmp/adapter-viem-v2_1.8.0_1774883562036_0.9116602503537792","host":"s3://npm-registry-packages-npm-production"}},"1.8.1":{"name":"@circle-fin/adapter-viem-v2","version":"1.8.1","keywords":["circle","cctp","usdc","stablecoin","adapter","sdk","typescript","evm","ethereum","viem","cross-chain","bridge","bridge-kit"],"_id":"@circle-fin/adapter-viem-v2@1.8.1","maintainers":[{"name":"tomleicircle","email":"mengda.lei@circle.com"},{"name":"igaskin-circle","email":"isaac.gaskin@circle.com"},{"name":"circle-npm-ci","email":"devops@circle.com"}],"dist":{"shasum":"af7f21e5382f86b00f26ae1a33d026744bf87268","tarball":"https://registry.npmjs.org/@circle-fin/adapter-viem-v2/-/adapter-viem-v2-1.8.1.tgz","fileCount":9,"integrity":"sha512-12gbc9uDF3sSNqiYF93wfMy8khDC19+g8r/b26cPLyALgvf9mRLslGIcLqz8D3RY7XAV0KTh0fviNOzg89NSpw==","signatures":[{"sig":"MEUCIQCFLr+3bEhWw5vS8V6tdA/S8Kg3ddtBP8zNpjIB9p0arQIgVTf2z8uKXS24d891Ve7nraK0TonoX9StAiWW2Ghccfc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1271518},"main":"./index.cjs","types":"./index.d.ts","module":"./index.mjs","exports":{".":{"types":"./index.d.ts","import":"./index.mjs","default":"./index.cjs","require":"./index.cjs"},"./package.json":"./package.json"},"gitHead":"1360ab07a58d9150c35683182060dc417bcae6df","_npmUser":{"name":"circle-npm-ci","email":"devops@circle.com"},"_npmVersion":"10.9.7","description":"EVM blockchain adapter powered by Viem v2","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"3.25.67","bs58":"6.0.0","abitype":"^1.1.0","@solana/web3.js":"^1.98.4","@ethersproject/bytes":"^5.8.0","@ethersproject/units":"^5.8.0","@ethersproject/address":"^5.8.0"},"publishConfig":{"access":"public","directory":"../../dist/adapters/viem.v2"},"_hasShrinkwrap":false,"peerDependencies":{"viem":"^2.30.0"},"_npmOperationalInternal":{"tmp":"tmp/adapter-viem-v2_1.8.1_1775246741389_0.1213829325692477","host":"s3://npm-registry-packages-npm-production"}},"1.8.2":{"name":"@circle-fin/adapter-viem-v2","version":"1.8.2","keywords":["circle","circle-fin","cctp","usdc","stablecoin","adapter","sdk","typescript","evm","ethereum","viem","cross-chain","bridge","bridge-kit","app-kit","swap-kit"],"_id":"@circle-fin/adapter-viem-v2@1.8.2","maintainers":[{"name":"tomleicircle","email":"mengda.lei@circle.com"},{"name":"igaskin-circle","email":"isaac.gaskin@circle.com"},{"name":"circle-npm-ci","email":"devops@circle.com"}],"dist":{"shasum":"a8f444fee097c06645a758c7942eed3c0df48513","tarball":"https://registry.npmjs.org/@circle-fin/adapter-viem-v2/-/adapter-viem-v2-1.8.2.tgz","fileCount":9,"integrity":"sha512-UoxtFEVg+Oh00NOydRDuzZKBXrJrnJVva6hshQf2VXFwIvhk7sv3BIl4hhBHOM3/RFWYd1XdvusizlyYUj/Dfg==","signatures":[{"sig":"MEQCIBQ77rPP/GjxgZhfCGFSyiLDyXoRGUA+LhPamp3UQQ7VAiAqtuuvWNoMNjBgCKEwCu+GXkOPCbis5i3beT1Rv8BsXQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1279805},"main":"./index.cjs","types":"./index.d.ts","module":"./index.mjs","exports":{".":{"types":"./index.d.ts","import":"./index.mjs","default":"./index.cjs","require":"./index.cjs"},"./package.json":"./package.json"},"gitHead":"fb7023b2d68e64780339930381ed2330be282f71","_npmUser":{"name":"circle-npm-ci","email":"devops@circle.com"},"_npmVersion":"10.9.7","description":"EVM blockchain adapter powered by Viem v2","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"3.25.67","bs58":"6.0.0","abitype":"^1.1.0","@solana/web3.js":"^1.98.4","@ethersproject/bytes":"^5.8.0","@ethersproject/units":"^5.8.0","@ethersproject/address":"^5.8.0"},"publishConfig":{"access":"public","directory":"../../dist/adapters/viem.v2"},"_hasShrinkwrap":false,"peerDependencies":{"viem":"^2.30.0"},"_npmOperationalInternal":{"tmp":"tmp/adapter-viem-v2_1.8.2_1775771526893_0.6421739032873728","host":"s3://npm-registry-packages-npm-production"}},"1.8.3":{"name":"@circle-fin/adapter-viem-v2","version":"1.8.3","keywords":["circle","circle-fin","cctp","usdc","stablecoin","adapter","sdk","typescript","evm","ethereum","viem","cross-chain","bridge","bridge-kit","app-kit","swap-kit"],"_id":"@circle-fin/adapter-viem-v2@1.8.3","maintainers":[{"name":"tomleicircle","email":"mengda.lei@circle.com"},{"name":"igaskin-circle","email":"isaac.gaskin@circle.com"},{"name":"circle-npm-ci","email":"devops@circle.com"}],"dist":{"shasum":"3500ff959e4580bd718d2cf5eb822a05125f402d","tarball":"https://registry.npmjs.org/@circle-fin/adapter-viem-v2/-/adapter-viem-v2-1.8.3.tgz","fileCount":9,"integrity":"sha512-TYwbRKZ98M5HZw/CJf66PaVlk2P7HvBnmMwHo0zhlHedK5CDF8+WZ8x02IphSKa5xsy+U/5OCF0P+yuzLmD5RA==","signatures":[{"sig":"MEUCIQC8ajl9ECVoc07WMw1qmwg9X+ByUIxNQvJTZ3jmJwKzsQIgcNE6PNS4o6nQs1rLTmf1MU1ySPzWzWnNLGCrvTAVPQ0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1528351},"main":"./index.cjs","types":"./index.d.ts","module":"./index.mjs","exports":{".":{"types":"./index.d.ts","import":"./index.mjs","default":"./index.cjs","require":"./index.cjs"},"./package.json":"./package.json"},"gitHead":"84160dc4b00881c26e72b98d60d5112d8b8d1f5f","_npmUser":{"name":"circle-npm-ci","email":"devops@circle.com"},"_npmVersion":"10.9.7","description":"EVM blockchain adapter powered by Viem v2","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"3.25.67","bs58":"6.0.0","abitype":"^1.1.0","@solana/web3.js":"^1.98.4","@ethersproject/bytes":"^5.8.0","@ethersproject/units":"^5.8.0","@ethersproject/address":"^5.8.0"},"publishConfig":{"access":"public","directory":"../../dist/adapters/viem.v2"},"_hasShrinkwrap":false,"peerDependencies":{"viem":"^2.30.0"},"_npmOperationalInternal":{"tmp":"tmp/adapter-viem-v2_1.8.3_1776877850725_0.12680427364626667","host":"s3://npm-registry-packages-npm-production"}},"1.9.0":{"name":"@circle-fin/adapter-viem-v2","version":"1.9.0","keywords":["circle","circle-fin","cctp","usdc","stablecoin","adapter","sdk","typescript","evm","ethereum","viem","cross-chain","bridge","bridge-kit","app-kit","swap-kit"],"_id":"@circle-fin/adapter-viem-v2@1.9.0","maintainers":[{"name":"tomleicircle","email":"mengda.lei@circle.com"},{"name":"igaskin-circle","email":"isaac.gaskin@circle.com"},{"name":"circle-npm-ci","email":"devops@circle.com"}],"dist":{"shasum":"b3ac5f38372f3ad06c4b6ffb4b21e0dc1c5ba4cc","tarball":"https://registry.npmjs.org/@circle-fin/adapter-viem-v2/-/adapter-viem-v2-1.9.0.tgz","fileCount":9,"integrity":"sha512-Vhdmey1cusY+0jvbO1DJExtCogoFIv0Dbe/+8xd7MkWRS9THL9v8Nnu89DJRhHj7vdSxpRrUK3UYpWtdoObb9w==","signatures":[{"sig":"MEUCIQCePKZkF8RyhrreFUFPTAMlNhVIXwg6XfPaDnnUCZc+5QIgZByohzQdFZpWNa1gB2fqoMzKPQGfg+ZKpQD+nsZ5XWw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1538339},"main":"./index.cjs","types":"./index.d.ts","module":"./index.mjs","exports":{".":{"types":"./index.d.ts","import":"./index.mjs","default":"./index.cjs","require":"./index.cjs"},"./package.json":"./package.json"},"gitHead":"1618ab7a978fadeb57af7a87a42d535b4b6fd82f","_npmUser":{"name":"circle-npm-ci","email":"devops@circle.com"},"_npmVersion":"10.9.7","description":"EVM blockchain adapter powered by Viem v2","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"3.25.67","bs58":"6.0.0","abitype":"^1.1.0","@solana/web3.js":"^1.98.4","@ethersproject/bytes":"^5.8.0","@ethersproject/units":"^5.8.0","@ethersproject/address":"^5.8.0"},"publishConfig":{"access":"public","directory":"../../dist/adapters/viem.v2"},"_hasShrinkwrap":false,"peerDependencies":{"viem":"^2.30.0"},"_npmOperationalInternal":{"tmp":"tmp/adapter-viem-v2_1.9.0_1777964467938_0.6890162025822819","host":"s3://npm-registry-packages-npm-production"}},"1.10.0":{"name":"@circle-fin/adapter-viem-v2","version":"1.10.0","keywords":["circle","circle-fin","cctp","usdc","stablecoin","adapter","sdk","typescript","evm","ethereum","viem","cross-chain","bridge","bridge-kit","app-kit","swap-kit"],"_id":"@circle-fin/adapter-viem-v2@1.10.0","maintainers":[{"name":"tomleicircle","email":"mengda.lei@circle.com"},{"name":"jasperkim_crcl","email":"jasper.kim@circle.com"},{"name":"haommmmmm","email":"hao.min@circle.com"},{"name":"han.chen.circle","email":"han.chen@circle.com"},{"name":"bagarwal_crcl","email":"bhushit.agarwal@circle.com"},{"name":"charleszzz_circle","email":"charles.zhang@circle.com"},{"name":"yingyingzhengcrcl","email":"yingying.zheng+1@circle.com"},{"name":"ariayhu","email":"yue.hu@circle.com"},{"name":"elvin-circle","email":"elvin.du@circle.com"},{"name":"igaskin-circle","email":"isaac.gaskin@circle.com"},{"name":"circle-npm-ci","email":"devops@circle.com"}],"dist":{"shasum":"2a01cb0918b068725505011dadd41ccc233a873d","tarball":"https://registry.npmjs.org/@circle-fin/adapter-viem-v2/-/adapter-viem-v2-1.10.0.tgz","fileCount":9,"integrity":"sha512-69loTfwU6TykH1mZea/Zzzp3isWFQOFWCfE1IR1t38cEa3/y1zez4/29WY0VcUov7WPZeM4kFSABB3xnc5dIHg==","signatures":[{"sig":"MEUCIQDKkUYp1+oT27QgT4U24/j9rrGvUiyIqiA5PBl4/mzq2QIgfUc787NfsH085E1hZB1Jgi0lhbxWtEwqDR4Znk1xnkY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1545281},"main":"./index.cjs","types":"./index.d.ts","module":"./index.mjs","exports":{".":{"types":"./index.d.ts","import":"./index.mjs","default":"./index.cjs","require":"./index.cjs"},"./package.json":"./package.json"},"gitHead":"4c80435b3db3e481c813002f5da48736e8763842","_npmUser":{"name":"circle-npm-ci","email":"devops@circle.com"},"_npmVersion":"10.9.7","description":"EVM blockchain adapter powered by Viem v2","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"3.25.67","bs58":"6.0.0","abitype":"^1.1.0","@solana/web3.js":"^1.98.4","@ethersproject/bytes":"^5.8.0","@ethersproject/units":"^5.8.0","@ethersproject/address":"^5.8.0"},"publishConfig":{"access":"public","directory":"../../dist/adapters/viem.v2"},"_hasShrinkwrap":false,"peerDependencies":{"viem":"^2.30.0"},"_npmOperationalInternal":{"tmp":"tmp/adapter-viem-v2_1.10.0_1778289322419_0.5131061367201111","host":"s3://npm-registry-packages-npm-production"}},"1.11.0":{"name":"@circle-fin/adapter-viem-v2","version":"1.11.0","keywords":["circle","circle-fin","cctp","usdc","stablecoin","adapter","sdk","typescript","evm","ethereum","viem","cross-chain","bridge","bridge-kit","app-kit","swap-kit"],"_id":"@circle-fin/adapter-viem-v2@1.11.0","maintainers":[{"name":"tomleicircle","email":"mengda.lei@circle.com"},{"name":"jasperkim_crcl","email":"jasper.kim@circle.com"},{"name":"haommmmmm","email":"hao.min@circle.com"},{"name":"han.chen.circle","email":"han.chen@circle.com"},{"name":"bagarwal_crcl","email":"bhushit.agarwal@circle.com"},{"name":"litao110102","email":"li.tao+2@circle.com"},{"name":"charleszzz_circle","email":"charles.zhang@circle.com"},{"name":"yingyingzhengcrcl","email":"yingying.zheng+1@circle.com"},{"name":"ariayhu","email":"yue.hu@circle.com"},{"name":"elvin-circle","email":"elvin.du@circle.com"},{"name":"mayuroza","email":"mayur.oza@circle.com"},{"name":"harshalbhangale-crcl","email":"harshal.bhangale@circle.com"},{"name":"bipul-sinha_crcl","email":"bipul.sinha@circle.com"},{"name":"igaskin-circle","email":"isaac.gaskin@circle.com"},{"name":"circle-npm-ci","email":"devops@circle.com"}],"dist":{"shasum":"953357ab5393c82365eaf49f73d74781ab54f506","tarball":"https://registry.npmjs.org/@circle-fin/adapter-viem-v2/-/adapter-viem-v2-1.11.0.tgz","fileCount":9,"integrity":"sha512-fe44rpOHUD/+viaO3Zxe/nP3cYvHkR/aVS5pLwU4JCYt20jdvzHXHoVAR4Z7x1sIhsZDhR9kgEBTyyA/bWXibw==","signatures":[{"sig":"MEUCIQCdA5dVrSiuTmL7PPbJkehqsNzid+FXIN0vqco0/vzUQwIgCD+G5dPUlcVn7iBfJ7XPe/7GEtROm5nZ7heWYvfvIbQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1550169},"main":"./index.cjs","types":"./index.d.ts","module":"./index.mjs","exports":{".":{"types":"./index.d.ts","import":"./index.mjs","default":"./index.cjs","require":"./index.cjs"},"./package.json":"./package.json"},"gitHead":"d745ff14913dffb58d4349485768042779986043","_npmUser":{"name":"circle-npm-ci","email":"devops@circle.com"},"_npmVersion":"10.9.7","description":"EVM blockchain adapter powered by Viem v2","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"3.25.67","bs58":"6.0.0","abitype":"^1.1.0","@solana/web3.js":"^1.98.4","@ethersproject/bytes":"^5.8.0","@ethersproject/units":"^5.8.0","@ethersproject/address":"^5.8.0"},"publishConfig":{"access":"public","directory":"../../dist/adapters/viem.v2"},"_hasShrinkwrap":false,"peerDependencies":{"viem":"^2.30.0"},"_npmOperationalInternal":{"tmp":"tmp/adapter-viem-v2_1.11.0_1778722689717_0.14096994934779317","host":"s3://npm-registry-packages-npm-production"}},"1.11.1":{"name":"@circle-fin/adapter-viem-v2","version":"1.11.1","keywords":["circle","circle-fin","cctp","usdc","stablecoin","adapter","sdk","typescript","evm","ethereum","viem","cross-chain","bridge","bridge-kit","app-kit","swap-kit"],"_id":"@circle-fin/adapter-viem-v2@1.11.1","maintainers":[{"name":"tomleicircle","email":"mengda.lei@circle.com"},{"name":"igaskin-circle","email":"isaac.gaskin@circle.com"},{"name":"circle-npm-ci","email":"devops@circle.com"}],"dist":{"shasum":"9366e3414e2a22403dba2b11840ae6f5823e710d","tarball":"https://registry.npmjs.org/@circle-fin/adapter-viem-v2/-/adapter-viem-v2-1.11.1.tgz","fileCount":9,"integrity":"sha512-JZAuEJ0QdNjHxOl8QyAWgLEBFpbMs9wubdwY8Yr5p8sPtDt1jEtFHAUVwu0tVqvMOGApuROxFCORM4sl1K1Qaw==","signatures":[{"sig":"MEUCICHCE3rkkvM1H1GaRBYgkX/gX332OfocviSJaOOrfYqsAiEA4vihxsC8zmQElWSkXQ/XwLxSTbRv2CHGjytLJbgNhG0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1567617},"main":"./index.cjs","types":"./index.d.ts","module":"./index.mjs","exports":{".":{"types":"./index.d.ts","import":"./index.mjs","default":"./index.cjs","require":"./index.cjs"},"./package.json":"./package.json"},"gitHead":"77d189653ad962bf6825e459fa9f2a2a9fddfa78","_npmUser":{"name":"circle-npm-ci","email":"devops@circle.com"},"_npmVersion":"10.9.8","description":"EVM blockchain adapter powered by Viem v2","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"3.25.67","bs58":"6.0.0","abitype":"^1.1.0","@solana/web3.js":"^1.98.4","@ethersproject/bytes":"^5.8.0","@ethersproject/units":"^5.8.0","@ethersproject/address":"^5.8.0"},"publishConfig":{"access":"public","directory":"../../dist/adapters/viem.v2"},"_hasShrinkwrap":false,"peerDependencies":{"viem":"^2.30.0"},"_npmOperationalInternal":{"tmp":"tmp/adapter-viem-v2_1.11.1_1779147290208_0.8898515351369394","host":"s3://npm-registry-packages-npm-production"}},"1.11.2":{"name":"@circle-fin/adapter-viem-v2","version":"1.11.2","keywords":["circle","circle-fin","cctp","usdc","stablecoin","adapter","sdk","typescript","evm","ethereum","viem","cross-chain","bridge","bridge-kit","app-kit","swap-kit"],"_id":"@circle-fin/adapter-viem-v2@1.11.2","maintainers":[{"name":"tomleicircle","email":"mengda.lei@circle.com"},{"name":"igaskin-circle","email":"isaac.gaskin@circle.com"},{"name":"circle-npm-ci","email":"devops@circle.com"}],"dist":{"shasum":"960284b222cedf80d999c5200e8e9544b23aebdf","tarball":"https://registry.npmjs.org/@circle-fin/adapter-viem-v2/-/adapter-viem-v2-1.11.2.tgz","fileCount":9,"integrity":"sha512-kfMk6bS41MVuajkyyZoaBI5cq2iSOVc1vSC6RnayJAWvIgoYmmZ59WQ6pJpgOqA+PqZ8afD+nxRS9/wJsCzbTA==","signatures":[{"sig":"MEUCIQC+4FMNR0N7PagQ9eWcqOzLBOmS3kwiDjLZKh/FJCRpgAIgNtKX5iU7BY5V/hCL83wrP+r+xOivstFySWD9XxszsMI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1567703},"main":"./index.cjs","types":"./index.d.ts","module":"./index.mjs","exports":{".":{"types":"./index.d.ts","import":"./index.mjs","default":"./index.cjs","require":"./index.cjs"},"./package.json":"./package.json"},"gitHead":"bf5ce2b0de083a0f78b4474b8fd466e80c9f9149","_npmUser":{"name":"circle-npm-ci","email":"devops@circle.com"},"_npmVersion":"10.9.8","description":"EVM blockchain adapter powered by Viem v2","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"3.25.67","bs58":"6.0.0","abitype":"^1.1.0","@solana/web3.js":"^1.98.4","@ethersproject/bytes":"^5.8.0","@ethersproject/units":"^5.8.0","@ethersproject/address":"^5.8.0"},"publishConfig":{"access":"public","directory":"../../dist/adapters/viem.v2"},"_hasShrinkwrap":false,"peerDependencies":{"viem":"^2.30.0"},"_npmOperationalInternal":{"tmp":"tmp/adapter-viem-v2_1.11.2_1780010114090_0.007144991855318805","host":"s3://npm-registry-packages-npm-production"}},"1.12.0":{"name":"@circle-fin/adapter-viem-v2","version":"1.12.0","keywords":["circle","circle-fin","cctp","usdc","stablecoin","adapter","sdk","typescript","evm","ethereum","viem","cross-chain","bridge","bridge-kit","app-kit","swap-kit"],"_id":"@circle-fin/adapter-viem-v2@1.12.0","maintainers":[{"name":"tomleicircle","email":"mengda.lei@circle.com"},{"name":"igaskin-circle","email":"isaac.gaskin@circle.com"},{"name":"circle-npm-ci","email":"devops@circle.com"}],"dist":{"shasum":"a0bc83a17e2865523593dc9a70238812be363662","tarball":"https://registry.npmjs.org/@circle-fin/adapter-viem-v2/-/adapter-viem-v2-1.12.0.tgz","fileCount":18,"integrity":"sha512-kpOIGPoU9sVLCHVs3MIQp+0ZJ0E5x7+N3yjqT6x0C2nUdYLmjZaOCRJnapMImsPwLV03G7k/svsuI5J0orkY0A==","signatures":[{"sig":"MEQCIAHFFS/B71jjyvluh68y1mp4tSDg2EuQk1GuxC5qXJ3bAiBg43/G1fodUPeSMvC1iELpH3oslRB1PYkbeoJF2Mf8Wg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4762973},"main":"./index.cjs","type":"module","types":"./index.d.cts","module":"./index.mjs","engines":{"node":">=20.0.0"},"exports":{".":{"types":{"import":"./index.d.mts","require":"./index.d.cts"},"import":"./index.mjs","default":"./index.cjs","require":"./index.cjs"},"./next":{"types":{"import":"./next.d.mts","require":"./next.d.cts"},"import":"./next.mjs","default":"./next.cjs","require":"./next.cjs"},"./package.json":"./package.json"},"gitHead":"1240b913d570266a456f694a4c404f898e3971ac","_npmUser":{"name":"circle-npm-ci","email":"devops@circle.com"},"_npmVersion":"10.9.8","description":"EVM blockchain adapter powered by Viem v2","directories":{},"sideEffects":false,"_nodeVersion":"22.23.0","dependencies":{"zod":"3.25.67","bs58":"6.0.0","pino":"10.1.0","abitype":"^1.1.0","@noble/hashes":"^1.8.0","@solana/web3.js":"^1.98.4","@ethersproject/bytes":"^5.8.0","@ethersproject/units":"^5.8.0","@ethersproject/address":"^5.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"viem":"^2.30.0"},"_npmOperationalInternal":{"tmp":"tmp/adapter-viem-v2_1.12.0_1782258217661_0.10305617844812276","host":"s3://npm-registry-packages-npm-production"}},"1.12.1":{"name":"@circle-fin/adapter-viem-v2","version":"1.12.1","keywords":["circle","circle-fin","cctp","usdc","stablecoin","adapter","sdk","typescript","evm","ethereum","viem","cross-chain","bridge","bridge-kit","app-kit","swap-kit"],"_id":"@circle-fin/adapter-viem-v2@1.12.1","maintainers":[{"name":"tomleicircle","email":"mengda.lei@circle.com"},{"name":"igaskin-circle","email":"isaac.gaskin@circle.com"},{"name":"circle-npm-ci","email":"devops@circle.com"}],"dist":{"shasum":"3a7bae24e052bc7ded691544c40bf2cc1af731c1","tarball":"https://registry.npmjs.org/@circle-fin/adapter-viem-v2/-/adapter-viem-v2-1.12.1.tgz","fileCount":18,"integrity":"sha512-vFQ3oC/KBMUHw7hYopf5j96R19Toh67qY70XOLUzSY8g20R/UHC9J7e7PMOV+MkFmLX01ryBSvwrwCxPzhfN2w==","signatures":[{"sig":"MEYCIQC7hZwsNG9i6c1RTJgeTJTzkBPAfKowblcN43x9p6uxzgIhAKVQOZhSXLRQRjrzK2MYBvpKcW5IomER8pHd7xHrqmP0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4765119},"main":"./index.cjs","type":"module","types":"./index.d.cts","module":"./index.mjs","engines":{"node":">=20.0.0"},"exports":{".":{"types":{"import":"./index.d.mts","require":"./index.d.cts"},"import":"./index.mjs","default":"./index.cjs","require":"./index.cjs"},"./next":{"types":{"import":"./next.d.mts","require":"./next.d.cts"},"import":"./next.mjs","default":"./next.cjs","require":"./next.cjs"},"./package.json":"./package.json"},"gitHead":"1b8bfa2935cce6a2d20990f42432d3887f77139d","_npmUser":{"name":"circle-npm-ci","email":"devops@circle.com"},"_npmVersion":"10.9.8","description":"EVM blockchain adapter powered by Viem v2","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","dependencies":{"zod":"3.25.67","bs58":"6.0.0","pino":"10.1.0","abitype":"^1.1.0","@noble/hashes":"^1.8.0","@solana/web3.js":"^1.98.4","@ethersproject/bytes":"^5.8.0","@ethersproject/units":"^5.8.0","@ethersproject/address":"^5.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"viem":"^2.30.0"},"_npmOperationalInternal":{"tmp":"tmp/adapter-viem-v2_1.12.1_1782328555192_0.43862223327665983","host":"s3://npm-registry-packages-npm-production"}},"1.13.0":{"name":"@circle-fin/adapter-viem-v2","version":"1.13.0","keywords":["circle","circle-fin","cctp","usdc","stablecoin","adapter","sdk","typescript","evm","ethereum","viem","cross-chain","bridge","bridge-kit","app-kit","swap-kit"],"_id":"@circle-fin/adapter-viem-v2@1.13.0","maintainers":[{"name":"tomleicircle","email":"mengda.lei@circle.com"},{"name":"igaskin-circle","email":"isaac.gaskin@circle.com"},{"name":"circle-npm-ci","email":"devops@circle.com"}],"dist":{"shasum":"5d3a318413fa171c723ee9bb682f18b308779bfa","tarball":"https://registry.npmjs.org/@circle-fin/adapter-viem-v2/-/adapter-viem-v2-1.13.0.tgz","fileCount":18,"integrity":"sha512-r0753HHb2F5wf8pJ9VwpZ08Ik71kaxSJeo/n2phqOm6wNz2mel763/eVMbcZ9+BlvhkzeFf+ALxJuY5EAPcvEg==","signatures":[{"sig":"MEQCICgDM0NXxr85Ec9/ssDq0xZBfWqgKdRumDrZO5yYJnG+AiBLdu88I0Sgmj7eJmjtDUK7k8c9yAtZ/FVnBWJFpn+r8w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4777567},"main":"./index.cjs","type":"module","types":"./index.d.cts","module":"./index.mjs","engines":{"node":">=20.0.0"},"exports":{".":{"types":{"import":"./index.d.mts","require":"./index.d.cts"},"import":"./index.mjs","default":"./index.cjs","require":"./index.cjs"},"./next":{"types":{"import":"./next.d.mts","require":"./next.d.cts"},"import":"./next.mjs","default":"./next.cjs","require":"./next.cjs"},"./package.json":"./package.json"},"gitHead":"be9a2da6f763f149630c6c13c5c1f55ff41e088a","_npmUser":{"name":"circle-npm-ci","email":"devops@circle.com"},"_npmVersion":"10.9.8","description":"EVM blockchain adapter powered by Viem v2","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","dependencies":{"zod":"3.25.67","bs58":"6.0.0","pino":"10.1.0","abitype":"^1.1.0","@noble/hashes":"^1.8.0","@solana/web3.js":"^1.98.4","@ethersproject/abi":"^5.8.0","@ethersproject/bytes":"^5.8.0","@ethersproject/units":"^5.8.0","@ethersproject/address":"^5.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"viem":"^2.30.0"},"_npmOperationalInternal":{"tmp":"tmp/adapter-viem-v2_1.13.0_1783370813243_0.3034758015124137","host":"s3://npm-registry-packages-npm-production"}},"1.14.0":{"name":"@circle-fin/adapter-viem-v2","version":"1.14.0","keywords":["circle","circle-fin","cctp","usdc","stablecoin","adapter","sdk","typescript","evm","ethereum","viem","cross-chain","bridge","bridge-kit","app-kit","swap-kit"],"_id":"@circle-fin/adapter-viem-v2@1.14.0","maintainers":[{"name":"tomleicircle","email":"mengda.lei@circle.com"},{"name":"igaskin-circle","email":"isaac.gaskin@circle.com"},{"name":"circle-npm-ci","email":"devops@circle.com"}],"dist":{"shasum":"2e1fec87408af89d7a06bdc9ce0791b04aaf31cc","tarball":"https://registry.npmjs.org/@circle-fin/adapter-viem-v2/-/adapter-viem-v2-1.14.0.tgz","fileCount":18,"integrity":"sha512-n6EbcCb6H8P/3p72qnugbi0AtVi+sb2fSyzlPPeMq3oGbcRIGzCLjRhW5xwy3eYB69NMlWz5oLAEnVCjp0xqyQ==","signatures":[{"sig":"MEYCIQCC4hFa9o4neqXjQzhI9RXYlUfiBQbmkEgt7IrTUKd5QgIhAPwaFcWLL1MrlBTm4MX4fXjmV+3EkiNmmoT7E+R9lIBe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5054080},"main":"./index.cjs","type":"module","types":"./index.d.cts","module":"./index.mjs","engines":{"node":">=20.0.0"},"exports":{".":{"types":{"import":"./index.d.mts","require":"./index.d.cts"},"import":"./index.mjs","default":"./index.cjs","require":"./index.cjs"},"./next":{"types":{"import":"./next.d.mts","require":"./next.d.cts"},"import":"./next.mjs","default":"./next.cjs","require":"./next.cjs"},"./package.json":"./package.json"},"gitHead":"903f729eda4c4daaa041a973d74e885cd5f28d30","_npmUser":{"name":"circle-npm-ci","email":"devops@circle.com"},"_npmVersion":"10.9.8","description":"EVM blockchain adapter powered by Viem v2","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","dependencies":{"zod":"3.25.67","bs58":"6.0.0","pino":"10.1.0","abitype":"^1.1.0","@noble/hashes":"^1.8.0","@solana/web3.js":"^1.98.4","@ethersproject/abi":"^5.8.0","@ethersproject/bytes":"^5.8.0","@ethersproject/units":"^5.8.0","@ethersproject/address":"^5.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"viem":"^2.30.0"},"_npmOperationalInternal":{"tmp":"tmp/adapter-viem-v2_1.14.0_1784139162854_0.4235987509723087","host":"s3://npm-registry-packages-npm-production"}},"1.14.1":{"name":"@circle-fin/adapter-viem-v2","version":"1.14.1","keywords":["circle","circle-fin","cctp","usdc","stablecoin","adapter","sdk","typescript","evm","ethereum","viem","cross-chain","bridge","bridge-kit","app-kit","swap-kit"],"_id":"@circle-fin/adapter-viem-v2@1.14.1","maintainers":[{"name":"tomleicircle","email":"mengda.lei@circle.com"},{"name":"igaskin-circle","email":"isaac.gaskin@circle.com"},{"name":"circle-npm-ci","email":"devops@circle.com"}],"dist":{"shasum":"43c5f51c9a077453ded41c31c35e7cd1c982c1ba","tarball":"https://registry.npmjs.org/@circle-fin/adapter-viem-v2/-/adapter-viem-v2-1.14.1.tgz","fileCount":18,"integrity":"sha512-C6MGBO0EP1zlu14B3QD7+ko3Jg0eUTKo0mG3uAJAXE6BXXqRwRgWVNdiwIi0Sr16duOabq5QMmql3T/yNoT99A==","signatures":[{"sig":"MEUCICxdvglVk0eEF4WtUz3oYYYtLs1RmjuiAi2Q/c9cSeTXAiEAp+SQKv5cRN25bBz4B8jjlZxNU83lq8D+yct/mCpcBQY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5054166},"main":"./index.cjs","type":"module","types":"./index.d.cts","module":"./index.mjs","engines":{"node":">=20.0.0"},"exports":{".":{"types":{"import":"./index.d.mts","require":"./index.d.cts"},"import":"./index.mjs","default":"./index.cjs","require":"./index.cjs"},"./next":{"types":{"import":"./next.d.mts","require":"./next.d.cts"},"import":"./next.mjs","default":"./next.cjs","require":"./next.cjs"},"./package.json":"./package.json"},"gitHead":"191745f9068376056e144e612e74cdd68747fb32","_npmUser":{"name":"circle-npm-ci","email":"devops@circle.com"},"_npmVersion":"10.9.8","description":"EVM blockchain adapter powered by Viem v2","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","dependencies":{"zod":"3.25.67","bs58":"6.0.0","pino":"10.1.0","abitype":"^1.1.0","@noble/hashes":"^1.8.0","@solana/web3.js":"^1.98.4","@ethersproject/abi":"^5.8.0","@ethersproject/bytes":"^5.8.0","@ethersproject/units":"^5.8.0","@ethersproject/address":"^5.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"viem":"^2.30.0"},"_npmOperationalInternal":{"tmp":"tmp/adapter-viem-v2_1.14.1_1785274087537_0.9924001250667613","host":"s3://npm-registry-packages-npm-production"}},"1.15.0":{"name":"@circle-fin/adapter-viem-v2","version":"1.15.0","keywords":["circle","circle-fin","cctp","usdc","stablecoin","adapter","sdk","typescript","evm","ethereum","viem","cross-chain","bridge","bridge-kit","app-kit","swap-kit"],"_id":"@circle-fin/adapter-viem-v2@1.15.0","maintainers":[{"name":"tomleicircle","email":"mengda.lei@circle.com"},{"name":"igaskin-circle","email":"isaac.gaskin@circle.com"},{"name":"circle-npm-ci","email":"devops@circle.com"}],"dist":{"shasum":"e579cef1812a0ae2b0087d139a90cf4ae8025dbf","tarball":"https://registry.npmjs.org/@circle-fin/adapter-viem-v2/-/adapter-viem-v2-1.15.0.tgz","fileCount":18,"integrity":"sha512-KUPJKDI9CAHw5kYGH74OQnFYmtrFw2OOwhiaoJJxSVjl9jpXUnFU+n4ghxm6EZFO8oDI09STRn0WVgKQTJGSEw==","signatures":[{"sig":"MEUCIQDJJFTxpuXF2gVPLlB8z815ZQRlvsbLyKzw9faxsiRa0AIgCoZ9e3AZqcEqnskogrAJoQg9eh7vO47DLb46LuIOl0k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5139922},"main":"./index.cjs","type":"module","types":"./index.d.cts","module":"./index.mjs","engines":{"node":">=20.0.0"},"exports":{".":{"types":{"import":"./index.d.mts","require":"./index.d.cts"},"import":"./index.mjs","default":"./index.cjs","require":"./index.cjs"},"./next":{"types":{"import":"./next.d.mts","require":"./next.d.cts"},"import":"./next.mjs","default":"./next.cjs","require":"./next.cjs"},"./package.json":"./package.json"},"gitHead":"789a49161025a99df1950726437b252becea64bc","_npmUser":{"name":"circle-npm-ci","email":"devops@circle.com"},"_npmVersion":"10.9.8","description":"EVM blockchain adapter powered by Viem v2","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"zod":"3.25.67","bs58":"6.0.0","pino":"10.1.0","abitype":"^1.1.0","@noble/hashes":"^1.8.0","@solana/web3.js":"^1.98.4","@ethersproject/abi":"^5.8.0","@ethersproject/bytes":"^5.8.0","@ethersproject/units":"^5.8.0","@ethersproject/address":"^5.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"viem":"^2.30.0"},"_npmOperationalInternal":{"tmp":"tmp/adapter-viem-v2_1.15.0_1786132759278_0.3113439192339731","host":"s3://npm-registry-packages-npm-production"}},"1.15.1":{"name":"@circle-fin/adapter-viem-v2","version":"1.15.1","keywords":["circle","circle-fin","cctp","usdc","stablecoin","adapter","sdk","typescript","evm","ethereum","viem","cross-chain","bridge","bridge-kit","app-kit","swap-kit"],"_id":"@circle-fin/adapter-viem-v2@1.15.1","maintainers":[{"name":"tomleicircle","email":"mengda.lei@circle.com"},{"name":"igaskin-circle","email":"isaac.gaskin@circle.com"},{"name":"circle-npm-ci","email":"devops@circle.com"}],"dist":{"shasum":"61f0e776caec026a33e01531a7ee1ef7367cbb51","tarball":"https://registry.npmjs.org/@circle-fin/adapter-viem-v2/-/adapter-viem-v2-1.15.1.tgz","fileCount":18,"integrity":"sha512-VzkfPjbqvfA++djJ2adTLievnIKEZVx10h3wbG+9HIJPWgF4hFIhx+MMjBkdRVzcWSga9uAGyLWFvvsMzVwNwQ==","signatures":[{"sig":"MEYCIQC3Bp2a0j5m9INO0aKVyVzrSyD9CBWo/Ukl6lAyqcxGKQIhAPHrjsV0k8yW3kttm+/bxNNIquOlpmS4YeamuTB7D2bf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5559103},"main":"./index.cjs","type":"module","types":"./index.d.cts","module":"./index.mjs","engines":{"node":">=20.0.0"},"exports":{".":{"types":{"import":"./index.d.mts","require":"./index.d.cts"},"import":"./index.mjs","default":"./index.cjs","require":"./index.cjs"},"./next":{"types":{"import":"./next.d.mts","require":"./next.d.cts"},"import":"./next.mjs","default":"./next.cjs","require":"./next.cjs"},"./package.json":"./package.json"},"gitHead":"5a907d6171ecb2b54a4790b06a35eb9df94adbb6","_npmUser":{"name":"circle-npm-ci","email":"devops@circle.com"},"_npmVersion":"10.9.8","description":"EVM blockchain adapter powered by Viem v2","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"zod":"3.25.67","bs58":"6.0.0","pino":"10.1.0","abitype":"^1.1.0","@noble/hashes":"^1.8.0","@solana/web3.js":"^1.98.4","@ethersproject/abi":"^5.8.0","@ethersproject/bytes":"^5.8.0","@ethersproject/units":"^5.8.0","@ethersproject/address":"^5.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"viem":"^2.30.0"},"_npmOperationalInternal":{"tmp":"tmp/adapter-viem-v2_1.15.1_1786655112546_0.832686821269069","host":"s3://npm-registry-packages-npm-production"}},"1.16.0":{"name":"@circle-fin/adapter-viem-v2","version":"1.16.0","keywords":["circle","circle-fin","cctp","usdc","stablecoin","adapter","sdk","typescript","evm","ethereum","viem","cross-chain","bridge","bridge-kit","app-kit","swap-kit"],"_id":"@circle-fin/adapter-viem-v2@1.16.0","maintainers":[{"name":"tomleicircle","email":"mengda.lei@circle.com"},{"name":"igaskin-circle","email":"isaac.gaskin@circle.com"},{"name":"circle-npm-ci","email":"devops@circle.com"}],"dist":{"shasum":"520b003740241ac2b6b75f1ebf645af9a0282345","tarball":"https://registry.npmjs.org/@circle-fin/adapter-viem-v2/-/adapter-viem-v2-1.16.0.tgz","fileCount":18,"integrity":"sha512-t5cBSpzOnUlZpHP6Ge4ouHtLYQe5VCjJFlQXJigeWiJyiEpS41nghbcyvjBEwVL59UkWmrkS4cYcbCW3ulHGAg==","signatures":[{"sig":"MEYCIQCx0FZ0+Jfi6UBFTVBq/sF3NORok36gae3LjXxwYno50QIhAN3epyil9Jf3UPmN1qjZokgunXhYAS//EMytM9lPXuYf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5650952},"main":"./index.cjs","type":"module","types":"./index.d.cts","module":"./index.mjs","engines":{"node":">=20.0.0"},"exports":{".":{"types":{"import":"./index.d.mts","require":"./index.d.cts"},"import":"./index.mjs","default":"./index.cjs","require":"./index.cjs"},"./next":{"types":{"import":"./next.d.mts","require":"./next.d.cts"},"import":"./next.mjs","default":"./next.cjs","require":"./next.cjs"},"./package.json":"./package.json"},"gitHead":"bd2baaedcf8710331a7641968a8382ecd33ef242","_npmUser":{"name":"circle-npm-ci","email":"devops@circle.com"},"_npmVersion":"10.9.8","description":"EVM blockchain adapter powered by Viem v2","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"zod":"3.25.67","bs58":"6.0.0","pino":"10.1.0","abitype":"^1.1.0","@noble/hashes":"^1.8.0","@solana/web3.js":"^1.98.4","@ethersproject/abi":"^5.8.0","@ethersproject/bytes":"^5.8.0","@ethersproject/units":"^5.8.0","@ethersproject/address":"^5.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"viem":"^2.30.0"},"_npmOperationalInternal":{"tmp":"tmp/adapter-viem-v2_1.16.0_1787268341959_0.3023259851990798","host":"s3://npm-registry-packages-npm-production"}},"1.17.0":{"name":"@circle-fin/adapter-viem-v2","version":"1.17.0","keywords":["circle","circle-fin","cctp","usdc","stablecoin","adapter","sdk","typescript","evm","ethereum","viem","cross-chain","bridge","bridge-kit","app-kit","swap-kit"],"_id":"@circle-fin/adapter-viem-v2@1.17.0","maintainers":[{"name":"tomleicircle","email":"mengda.lei@circle.com"},{"name":"igaskin-circle","email":"isaac.gaskin@circle.com"},{"name":"circle-npm-ci","email":"devops@circle.com"}],"dist":{"shasum":"8a0d61ded4c137d201ea266248cc684ee1c3ea7f","tarball":"https://registry.npmjs.org/@circle-fin/adapter-viem-v2/-/adapter-viem-v2-1.17.0.tgz","fileCount":18,"integrity":"sha512-GO8wJ8tYZZ2iSWEqQiZXdQ3XMeEjHwFr31xen/l38zBjW8C3g6UdFi463h3ZWIVEzfdo08oIb6e+U9wcAKIG8Q==","signatures":[{"sig":"MEUCIGOZ0BfIMz9c/ZTa/Kft4/NXOk9OYgHZWhuqS1+mQATlAiEA6yG9CojKw/YBXfzwtmy4tHxJ3Eofam6sY1bTqVd8i6s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5687993},"main":"./index.cjs","type":"module","types":"./index.d.cts","module":"./index.mjs","engines":{"node":">=20.0.0"},"exports":{".":{"types":{"import":"./index.d.mts","require":"./index.d.cts"},"import":"./index.mjs","default":"./index.cjs","require":"./index.cjs"},"./next":{"types":{"import":"./next.d.mts","require":"./next.d.cts"},"import":"./next.mjs","default":"./next.cjs","require":"./next.cjs"},"./package.json":"./package.json"},"gitHead":"d9855bd5f7195ee1b91920206108a9995ff6fa80","_npmUser":{"name":"circle-npm-ci","email":"devops@circle.com"},"_npmVersion":"10.9.8","description":"EVM blockchain adapter powered by Viem v2","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"zod":"3.25.67","bs58":"6.0.0","pino":"10.1.0","abitype":"^1.1.0","@noble/hashes":"^1.8.0","@solana/web3.js":"^1.98.4","@ethersproject/abi":"^5.8.0","@ethersproject/bytes":"^5.8.0","@ethersproject/units":"^5.8.0","@ethersproject/address":"^5.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"viem":"^2.30.0"},"_npmOperationalInternal":{"tmp":"tmp/adapter-viem-v2_1.17.0_1787932907151_0.10985181738145133","host":"s3://npm-registry-packages-npm-production"}},"1.17.1":{"name":"@circle-fin/adapter-viem-v2","version":"1.17.1","keywords":["circle","circle-fin","cctp","usdc","stablecoin","adapter","sdk","typescript","evm","ethereum","viem","cross-chain","bridge","bridge-kit","app-kit","swap-kit"],"_id":"@circle-fin/adapter-viem-v2@1.17.1","maintainers":[{"name":"tomleicircle","email":"mengda.lei@circle.com"},{"name":"igaskin-circle","email":"isaac.gaskin@circle.com"},{"name":"circle-npm-ci","email":"devops@circle.com"}],"dist":{"shasum":"1b0d703c0072ebac65d2ce098290bfdfb84a4543","tarball":"https://registry.npmjs.org/@circle-fin/adapter-viem-v2/-/adapter-viem-v2-1.17.1.tgz","fileCount":18,"integrity":"sha512-clKTuMgDwpcVu3Q5Vcyg68jd/5SJCY/TPwSfTvSwcpNsivipx9a+3WKEexEhiG5NXkYdK+IzFatdutfjuJLJ5g==","signatures":[{"sig":"MEUCIQCnNVOH4wPMN0Y/SG991oLbf5FW02EbRDYEVEWxd7WUdAIgMrF3zR+IojqR/zocNmvf5rD+r0HjZlywN5BWfGav0TE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5716427},"main":"./index.cjs","type":"module","types":"./index.d.cts","module":"./index.mjs","engines":{"node":">=20.0.0"},"exports":{".":{"types":{"import":"./index.d.mts","require":"./index.d.cts"},"import":"./index.mjs","default":"./index.cjs","require":"./index.cjs"},"./next":{"types":{"import":"./next.d.mts","require":"./next.d.cts"},"import":"./next.mjs","default":"./next.cjs","require":"./next.cjs"},"./package.json":"./package.json"},"gitHead":"c2a7a00c58dbca7a65867370c7626c5394e59e5b","_npmUser":{"name":"circle-npm-ci","email":"devops@circle.com"},"_npmVersion":"10.9.8","description":"EVM blockchain adapter powered by Viem v2","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"zod":"3.25.67","bs58":"6.0.0","pino":"10.1.0","abitype":"^1.1.0","@noble/hashes":"^1.8.0","@solana/web3.js":"^1.98.4","@ethersproject/abi":"^5.8.0","@ethersproject/bytes":"^5.8.0","@ethersproject/units":"^5.8.0","@ethersproject/address":"^5.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"viem":"^2.30.0"},"_npmOperationalInternal":{"tmp":"tmp/adapter-viem-v2_1.17.1_1788393439100_0.9783635640320651","host":"s3://npm-registry-packages-npm-production"}},"1.18.0":{"name":"@circle-fin/adapter-viem-v2","version":"1.18.0","description":"EVM blockchain adapter powered by Viem v2","keywords":["circle","circle-fin","cctp","usdc","stablecoin","adapter","sdk","typescript","evm","ethereum","viem","cross-chain","bridge","bridge-kit","app-kit","swap-kit"],"main":"./index.cjs","module":"./index.mjs","types":"./index.d.cts","dependencies":{"zod":"3.25.67","abitype":"^1.1.0","@solana/web3.js":"^1.98.4","@noble/hashes":"^1.8.0","pino":"10.1.0","@ethersproject/abi":"^5.8.0","@ethersproject/address":"^5.8.0","@ethersproject/bytes":"^5.8.0","@ethersproject/units":"^5.8.0","bs58":"6.0.0"},"peerDependencies":{"viem":"^2.30.0"},"exports":{"./package.json":"./package.json",".":{"types":{"import":"./index.d.mts","require":"./index.d.cts"},"import":"./index.mjs","require":"./index.cjs","default":"./index.cjs"},"./next":{"types":{"import":"./next.d.mts","require":"./next.d.cts"},"import":"./next.mjs","require":"./next.cjs","default":"./next.cjs"}},"publishConfig":{"access":"public"},"type":"module","sideEffects":false,"engines":{"node":">=20.0.0"},"_id":"@circle-fin/adapter-viem-v2@1.18.0","gitHead":"5aa7ba5ea62678adf92458d83ef5afe1c61f4a41","_nodeVersion":"22.23.2","_npmVersion":"10.9.8","dist":{"integrity":"sha512-XLqwmxBv/8vkqb8cQ3WeDGnFf2K9Yg62l9HVEqZjuwRG4xRKiDb5dBT1KGZvYKX5EcM0M6N0c/tCIAm0Yhn3wA==","shasum":"dd7b64b2a6f236f0ec8cdaf27fb6ed9cc01e02e0","tarball":"https://registry.npmjs.org/@circle-fin/adapter-viem-v2/-/adapter-viem-v2-1.18.0.tgz","fileCount":18,"unpackedSize":5827561,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIGwzTMUeYq9463CEZI3Y6xlX06QF41J6KxV5K+IAGP6OAiBEoM3kwXTi2MtMiiRyMWL9jVI8/IAbFiUQsizOv7mbUA=="}]},"_npmUser":{"name":"circle-npm-ci","email":"devops@circle.com"},"directories":{},"maintainers":[{"name":"tomleicircle","email":"mengda.lei@circle.com"},{"name":"igaskin-circle","email":"isaac.gaskin@circle.com"},{"name":"circle-npm-ci","email":"devops@circle.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/adapter-viem-v2_1.18.0_1789519010677_0.102721847874095"},"_hasShrinkwrap":false}},"time":{"created":"2025-08-26T13:05:30.500Z","modified":"2026-09-16T00:36:51.072Z","0.0.2-alpha.6":"2025-08-26T13:05:30.750Z","0.0.2-alpha.7":"2025-10-08T14:38:36.893Z","1.0.0":"2025-10-14T15:37:10.604Z","1.0.1":"2025-10-28T19:39:48.377Z","1.1.0":"2025-11-05T17:30:41.041Z","1.1.1":"2025-11-17T19:59:02.516Z","1.2.0":"2025-12-19T11:22:49.311Z","1.3.0":"2026-01-22T16:43:20.280Z","1.4.0":"2026-01-28T19:13:16.509Z","1.5.0":"2026-02-20T18:30:42.354Z","1.6.0":"2026-03-17T23:59:49.719Z","1.7.0":"2026-03-20T21:38:26.249Z","1.8.0":"2026-03-30T15:12:42.312Z","1.8.1":"2026-04-03T20:05:41.641Z","1.8.2":"2026-04-09T21:52:07.099Z","1.8.3":"2026-04-22T17:10:50.940Z","1.9.0":"2026-05-05T07:01:08.097Z","1.10.0":"2026-05-09T01:15:22.677Z","1.11.0":"2026-05-14T01:38:09.927Z","1.11.1":"2026-05-18T23:34:50.403Z","1.11.2":"2026-05-28T23:15:14.278Z","1.12.0":"2026-06-23T23:43:37.846Z","1.12.1":"2026-06-24T19:15:55.378Z","1.13.0":"2026-07-06T20:46:53.439Z","1.14.0":"2026-07-15T18:12:43.076Z","1.14.1":"2026-07-28T21:28:07.772Z","1.15.0":"2026-08-07T19:59:19.663Z","1.15.1":"2026-08-13T21:05:12.727Z","1.16.0":"2026-08-20T23:25:42.200Z","1.17.0":"2026-08-28T16:01:47.332Z","1.17.1":"2026-09-02T23:57:19.319Z","1.18.0":"2026-09-16T00:36:50.868Z"},"keywords":["circle","circle-fin","cctp","usdc","stablecoin","adapter","sdk","typescript","evm","ethereum","viem","cross-chain","bridge","bridge-kit","app-kit","swap-kit"],"description":"EVM blockchain adapter powered by Viem v2","maintainers":[{"name":"tomleicircle","email":"mengda.lei@circle.com"},{"name":"igaskin-circle","email":"isaac.gaskin@circle.com"},{"name":"circle-npm-ci","email":"devops@circle.com"}],"readme":"# Viem v2 Adapter\n\n<div align=\"center\">\n\n[![npm version](https://badge.fury.io/js/@circle-fin%2Fadapter-viem-v2.svg)](https://badge.fury.io/js/@circle-fin%2Fadapter-viem-v2)\n[![TypeScript](https://img.shields.io/badge/TypeScript-strict-blue.svg)](https://www.typescriptlang.org/)\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n[![Discord](https://img.shields.io/discord/473781666251538452?label=Discord&logo=discord)](https://discord.com/invite/buildoncircle)\n\n**Type-safe EVM blockchain adapter powered by Viem v2**\n\n_Seamlessly interact with 16+ EVM networks using a single, strongly-typed interface_\n\n</div>\n\n## Table of Contents\n\n- [Viem v2 Adapter](#viem-v2-adapter)\n  - [Table of Contents](#table-of-contents)\n  - [Overview](#overview)\n    - [Why Viem Adapter?](#why-viem-adapter)\n    - [When and How Should I Use The Viem Adapter?](#when-and-how-should-i-use-the-viem-adapter)\n      - [I'm a developer using a kit](#im-a-developer-using-a-kit)\n        - [Example](#example)\n      - [I'm a developer making a Kit Provider](#im-a-developer-making-a-kit-provider)\n  - [Installation](#installation)\n  - [Peer Dependencies](#peer-dependencies)\n    - [Troubleshooting Version Conflicts](#troubleshooting-version-conflicts)\n  - [Quick Start](#quick-start)\n    - [🚀 Easy Setup with Factory Methods (Recommended)](#-easy-setup-with-factory-methods-recommended)\n    - [🏭 Production Considerations](#-production-considerations)\n    - [🌐 Browser Support with Wallet Providers](#-browser-support-with-wallet-providers)\n    - [🔧 Advanced Manual Setup](#-advanced-manual-setup)\n  - [Next-Generation API (`/next`)](#next-generation-api-next)\n    - [Getting Started with `/next`](#getting-started-with-next)\n    - [Why `/next`?](#why-next)\n    - [Current limitations of `/next`](#current-limitations-of-next)\n    - [Prepared Transactions: Estimate, Simulate, Execute](#prepared-transactions-estimate-simulate-execute)\n    - [Logging](#logging)\n    - [Metrics](#metrics)\n    - [Token Registry](#token-registry)\n    - [Transaction Tuning](#transaction-tuning)\n    - [Migration Path](#migration-path)\n  - [OperationContext Pattern](#operationcontext-pattern)\n    - [Address Context Modes](#address-context-modes)\n      - [`'user-controlled'` (Default, Recommended)](#user-controlled-default-recommended)\n      - [`'developer-controlled'` (For Enterprise/Multi-Address Systems)](#developer-controlled-for-enterprisemulti-address-systems)\n    - [OperationContext Usage](#operationcontext-usage)\n  - [API Reference](#api-reference)\n    - [Constructor Options](#constructor-options)\n      - [`getPublicClient`](#getpublicclient)\n      - [`getWalletClient`](#getwalletclient)\n      - [`capabilities` (Required)](#capabilities-required)\n    - [Methods](#methods)\n      - [`prepare()` Method Details](#prepare-method-details)\n    - [Token Operations via Actions](#token-operations-via-actions)\n  - [Development](#development)\n  - [License](#license)\n\n## Overview\n\nThe Viem v2 Adapter is a strongly-typed implementation of the `Adapter` interface for the **EVM-compatible blockchains**. Built on top of the popular [Viem](https://viem.sh/) library, it provides type-safe blockchain interactions through a unified interface that's designed to work seamlessly with the [Bridge Kit](https://www.npmjs.com/package/@circle-fin/bridge-kit) for cross-chain USDC transfers, as well as any future kits for additional stablecoin operations. It can be used by any Kit built using the App Kits architecture and/or any providers plugged into those kits.\n\n### Why Viem Adapter?\n\n- **⚡ Zero-config defaults** - Built-in reliable RPC endpoints for all supported EVM chains, no setup required\n- **🌐 Full EVM compatibility** - Works with any Ethereum-compatible blockchain\n- **🔧 Bring your own setup**: Use your existing Viem `PublicClient` and `WalletClient` instances\n- **🚀 Instant connectivity** - Connect to Ethereum, Base, Arbitrum, and more without researching RPC providers\n- **🔒 Type-safe**: Built with TypeScript strict mode for complete type safety\n- **🎯 Simple API**: Clean abstraction over complex blockchain operations\n- **🔄 Transaction lifecycle** - Complete prepare/estimate/execute workflow\n- **🌉 Cross-chain ready** - Seamlessly bridge USDC between EVM chains and Solana\n\n### When and How Should I Use The Viem Adapter?\n\n#### I'm a developer using a kit\n\nIf you're using one of the kits to do some action, e.g. bridging from chain 'A' to chain 'B', then you only need to instantiate the adapter for your chain and pass it to the kit.\n\n##### Example\n\n```typescript\n// Private keys can be provided with or without '0x' prefix\nconst adapter = createViemAdapterFromPrivateKey({\n  privateKey: process.env.PRIVATE_KEY as string, // Works with or without '0x'\n})\n\n// Both formats are automatically normalized:\nconst adapter1 = createViemAdapterFromPrivateKey({\n  privateKey: '0x1234...', // With prefix ✅\n})\n\nconst adapter2 = createViemAdapterFromPrivateKey({\n  privateKey: '1234...', // Without prefix ✅ (automatically normalized)\n})\n```\n\n#### I'm a developer making a Kit Provider\n\nIf you are making a provider for other Kit users to plug in to the kit, e.g. a `BridgingProvider`, and you'll need to interact with diff chains, then you'll need to use the abstracted `Adapter` methods to execute on chain.\n\n## Installation\n\n```bash\nnpm install @circle-fin/adapter-viem-v2 viem\n# or\nyarn add @circle-fin/adapter-viem-v2 viem\n```\n\n## Peer Dependencies\n\nThis adapter requires `viem` as a peer dependency. Install it alongside the adapter:\n\n```bash\nnpm install @circle-fin/adapter-viem-v2 viem\n# or\nyarn add @circle-fin/adapter-viem-v2 viem\n```\n\n**Supported Versions:** `^2.30.0` (2.30.x through 2.x.x)\n\n### Troubleshooting Version Conflicts\n\nIf you encounter peer dependency warnings:\n\n- Check your `viem` version: `npm ls viem`\n- Ensure viem is between 2.30.0 and 3.0.0 (exclusive)\n- Use `npm install viem@^2.30.0` to install a compatible version\n\n## Quick Start\n\n### 🚀 Easy Setup with Factory Methods (Recommended)\n\nThe simplest way to get started is with our factory methods. **With reliable default RPC endpoints** - no need to research providers or configure endpoints! Plus, you can create just **one adapter** and use it across different chains!\n\n```typescript\nimport { createViemAdapterFromPrivateKey } from '@circle-fin/adapter-viem-v2'\nimport { Ethereum, Base, Polygon } from '@circle-fin/bridge-kit/chains'\n\nconst adapter = createViemAdapterFromPrivateKey({\n  privateKey: process.env.PRIVATE_KEY as string, // Both '0x...' and '...' work\n  capabilities: {\n    addressContext: 'user-controlled',\n    supportedChains: [Ethereum, Base, Polygon],\n  },\n})\n\n// Ready to use with the Bridge Kit!\n// Address will be automatically resolved during operations\n```\n\n**✨ Key Feature**: All chain definitions include reliable default RPC endpoints with **automatic failover**:\n\n- **Ethereum**: `https://eth.merkle.io` → `https://ethereum.publicnode.com` 🔄\n- **Base**: `https://mainnet.base.org` → `https://base.publicnode.com` 🔄\n- **Polygon**: `https://polygon.publicnode.com` → `https://polygon.drpc.org` 🔄\n- **Unichain**: `https://rpc.unichain.org` → `https://mainnet.unichain.org` 🔄\n- **Arbitrum**: `https://arb1.arbitrum.io/rpc` (single endpoint)\n- **And all other supported EVM chains!**\n\n🚀 **Automatic Failover**: Chains with multiple endpoints automatically switch to backup RPCs if the primary fails!\n\n### 🏭 Production Considerations\n\nWhile the default RPC endpoints are reliable, you may want to use your own RPC providers for production applications:\n\n```typescript\nimport { createViemAdapterFromPrivateKey } from '@circle-fin/adapter-viem-v2'\nimport { Ethereum } from '@circle-fin/bridge-kit/chains'\nimport { createPublicClient, http } from 'viem'\nimport { mainnet } from 'viem/chains'\n\n// Option 1: Use your own PublicClient with custom RPC\nconst customPublicClient = createPublicClient({\n  chain: mainnet,\n  transport: http('https://your-custom-rpc-endpoint.com'),\n})\n\nconst adapter = createViemAdapterFromPrivateKey({\n  privateKey: process.env.PRIVATE_KEY as string,\n  capabilities: {\n    addressContext: 'user-controlled',\n    supportedChains: [Ethereum],\n  },\n  getPublicClient: () => customPublicClient,\n})\n```\n\n**Default RPC Benefits**:\n\n- ✅ **Instant setup** - Start building without provider research\n- ✅ **Reliable uptime** - Cloudflare and official chain endpoints\n- ✅ **No API keys** - Public endpoints with generous rate limits\n- ✅ **Development friendly** - Perfect for prototyping and testing\n\n**When to use custom RPCs**:\n\n- 🎯 **High throughput** - Your app needs dedicated bandwidth\n- 🔧 **Specific features** - Archive nodes, debug APIs, etc.\n- 📊 **Analytics** - Custom monitoring and logging\n- 🔒 **Compliance** - Your organization requires specific providers\n\n```typescript\nimport { createViemAdapterFromPrivateKey } from '@circle-fin/adapter-viem-v2'\nimport { Ethereum, Base, Polygon } from '@circle-fin/bridge-kit/chains'\nimport { createPublicClient, http } from 'viem'\n\n// Production-ready setup with custom RPC endpoints\nconst adapter = createViemAdapterFromPrivateKey({\n  privateKey: process.env.PRIVATE_KEY as `0x${string}`,\n  capabilities: {\n    addressContext: 'user-controlled',\n    supportedChains: [Ethereum, Base, Polygon],\n  },\n  getPublicClient: ({ chain }) =>\n    createPublicClient({\n      chain,\n      transport: http(\n        `https://eth-mainnet.g.alchemy.com/v2/${process.env.ALCHEMY_KEY}`,\n        {\n          retryCount: 3,\n          timeout: 10000,\n        },\n      ),\n    }),\n})\n```\n\n### 🌐 Browser Support with Wallet Providers\n\nFor browser environments with wallet providers like MetaMask:\n\n```typescript\nimport { createViemAdapterFromProvider } from '@circle-fin/adapter-viem-v2'\nimport { Ethereum, Base, Polygon } from '@circle-fin/bridge-kit/chains'\n\n// Create an adapter from a browser wallet\nconst adapter = await createViemAdapterFromProvider({\n  provider: window.ethereum,\n  capabilities: {\n    addressContext: 'user-controlled',\n    supportedChains: [Ethereum, Base, Polygon],\n  },\n})\n```\n\n### 🔧 Advanced Manual Setup\n\nFor advanced patterns like lazy initialization or environment-adaptive configuration:\n\n```typescript\nimport { ViemAdapter } from '@circle-fin/adapter-viem-v2'\nimport { Ethereum, Base, Polygon } from '@circle-fin/bridge-kit/chains'\nimport { createPublicClient, createWalletClient, http } from 'viem'\nimport { mainnet } from 'viem/chains'\nimport { privateKeyToAccount } from 'viem/accounts'\n\n// Create clients manually for full control\nconst account = privateKeyToAccount(process.env.PRIVATE_KEY as string)\n\n// Manual constructor with getter pattern and explicit capabilities\nconst adapter = new ViemAdapter(\n  {\n    getPublicClient: ({ chain }) =>\n      createPublicClient({\n        chain: mainnet,\n        transport: http('https://your-custom-rpc.com'),\n      }),\n    getWalletClient: async ({ chain }) => {\n      // Your custom logic here - sync or async, chain-aware\n      // The chain parameter allows you to create wallet clients for specific chains\n      return createWalletClient({\n        chain,\n        account,\n        transport: http('https://your-custom-rpc.com'),\n      })\n    },\n  },\n  {\n    addressContext: 'user-controlled', // or 'developer-controlled'\n    supportedChains: [Ethereum, Base, Polygon], // Specify supported chains\n  },\n)\n```\n\n**Benefits**: Lazy initialization, environment adaptation, custom caching logic.\n\n## Next-Generation API (`/next`)\n\n> **Preview** — The `/next` entrypoint is the upcoming default adapter architecture. It is at parity with the current entrypoint for the supported bridge flows and fully compatible with all existing kits (Bridge Kit, etc.). In the next major release, `/next` will become the default import and the current entrypoint will be retired. See [Current limitations of `/next`](#current-limitations-of-next) before adopting it.\n\n### Getting Started with `/next`\n\nSwitch to the new architecture by changing a single import path. Everything else stays the same:\n\n```typescript\nimport { createViemAdapterFromPrivateKey } from '@circle-fin/adapter-viem-v2/next'\n\nconst adapter = createViemAdapterFromPrivateKey({\n  privateKey: process.env.PRIVATE_KEY as string,\n})\n\n// Pass it to the Bridge Kit exactly as before — no changes needed downstream\n```\n\nBrowser wallets work identically:\n\n```typescript\nimport { createViemAdapterFromProvider } from '@circle-fin/adapter-viem-v2/next'\nimport { Ethereum, Base, Polygon } from '@circle-fin/bridge-kit/chains'\n\nconst adapter = createViemAdapterFromProvider({\n  provider: window.ethereum,\n  capabilities: {\n    addressContext: 'user-controlled',\n    supportedChains: [Ethereum, Base, Polygon],\n  },\n})\n```\n\n### Why `/next`?\n\n|                        | Current entrypoint           | `/next` entrypoint                                                                                                                     |\n| ---------------------- | ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |\n| **Bundle size**        | Entire adapter is included   | Per-primitive imports unlock tree-shaking; the default factory still pulls the compat shim — see [bundle-size note](#bundle-size-note) |\n| **Prepare result**     | `estimate()` and `execute()` | `estimate()`, `simulate()`, and `execute(overrides?)`                                                                                  |\n| **Fee model**          | `{ gas, gasPrice, fee }`     | `{ fee, units, unitPrice }` — consistent across all ecosystems                                                                         |\n| **Observability**      | Not available                | Built-in logging, metrics, and event instrumentation                                                                                   |\n| **Nonce management**   | Manual                       | Automatic via viem's `nonceManager`                                                                                                    |\n| **Retry & resilience** | Not available                | Configurable retry with exponential backoff for transient failures                                                                     |\n| **Token resolution**   | Hard-coded addresses         | Pluggable token registry — resolve any token by symbol across chains                                                                   |\n| **Transaction tuning** | Fixed gas defaults           | Configurable fee buffer, priority-fee floor, and confirmation timeout                                                                  |\n\n### Bundle-size note\n\nThe `/next` entrypoint's clean architecture is designed to be\ntree-shakable on a per-primitive basis: importing `createPrepare`\nwithout `createBatchExecute` should only ship the prepare path. In\nthe current preview release the default `createAdapter` factory still\npulls in the legacy compat shim (`withLegacyCompat` →\n`@core/adapter-compat`'s action registry) so that consumers can pass\nthe resulting adapter to existing kits and providers without changes.\nThat shim is what makes the default `/next` bundle measure ~11%\nlarger than the legacy entrypoint in our internal benchmarks.\n\nIf bundle size is critical to you, compose primitives directly via\n`assembleAdapter` from `@core/adapter-base` and skip\n`withLegacyCompat`. A future minor release will split the compat\nshim behind a separate entrypoint so the default factory ships the\nnew API only.\n\n### Current limitations of `/next`\n\nThe `/next` Viem adapter is at parity with the current entrypoint for\nthe supported bridge flows, but a few capabilities are still in\nprogress. They are tracked in the project issue tracker for follow-up\nreleases:\n\n- **EIP-5792 batched approve+burn is not yet used by the CCTP `/next`\n  bridge flow.** `batchExecute` supports EIP-5792 `wallet_sendCalls`,\n  but the CCTP `/next` provider still submits approve and burn as two\n  separate transactions; it does not yet collapse them into a single\n  atomic batch.\n- **`createViemAdapterFromAccount` / `createViemAdapterFromWalletClient`\n  are deferred.** Only `createViemAdapterFromPrivateKey` and\n  `createViemAdapterFromProvider` are available on `/next` today. To use\n  an existing viem `Account` or `WalletClient`, wrap it in an\n  EIP-1193 provider or build the adapter via `assembleAdapter` directly.\n- **The Circle Wallets adapter has not been migrated to `/next`.** Only\n  the EVM (viem/ethers) and Solana adapters expose a `/next` entrypoint;\n  Circle Wallets remains on the current entrypoint.\n- **Abort semantics stop the local wait only.** Passing an aborted (or\n  abortable) `signal` cancels `waitForTransaction` and prevents an\n  unsent `execute` from broadcasting, but **once a transaction has been\n  broadcast, aborting does not cancel it on-chain** — the transaction\n  continues and should be reconciled via its hash.\n\n### Prepared Transactions: Estimate, Simulate, Execute\n\nWhen you prepare a transaction through the `/next` adapter, you get back a richer object with three lifecycle methods:\n\n```typescript\nconst prepared = await adapter.prepare(\n  {\n    address: '0xContractAddress',\n    abi: contractAbi,\n    functionName: 'transfer',\n    args: ['0xRecipient', 1_000_000n],\n  },\n  { chain: 'Base' },\n)\n\n// 1. Estimate gas and fees before committing\nconst { fee, units, unitPrice } = await prepared.estimate()\n\n// 2. Simulate the transaction to catch reverts without spending gas\nconst simulation = await prepared.simulate()\n\n// 3. Execute when ready (with optional gas overrides)\nconst result = await prepared.execute()\n\n// `result` is a `{ txId, wait }` envelope:\n// - `txId` is the canonical transaction identifier (string).\n//   On EVM this is the hex transaction hash; the field is named\n//   `txId` rather than `hash` so the same shape works for non-EVM\n//   ecosystems (Solana signatures, etc.).\n// - `wait()` resolves once the transaction is confirmed on-chain and\n//   returns a `Confirmation` with the receipt details.\nconsole.log('submitted tx:', result.txId)\nconst confirmation = await result.wait()\nconsole.log('confirmed in block:', confirmation.blockNumber)\n```\n\nThe `simulate()` step is new in `/next` — it dry-runs the transaction against the current chain state and surfaces revert reasons before you spend gas.\n\n### Logging\n\nPass a `runtime` option to get structured logs for every adapter operation, including RPC calls, retries, and errors. The quickest way to see what's happening is to use the built-in `createRuntime` helper:\n\n```typescript\nimport {\n  createViemAdapterFromPrivateKey,\n  createRuntime,\n} from '@circle-fin/adapter-viem-v2/next'\n\nconst adapter = createViemAdapterFromPrivateKey({\n  privateKey: process.env.PRIVATE_KEY as string,\n  runtime: createRuntime(), // Logs to stdout via pino at 'info' level\n})\n```\n\nTo integrate with your own logger, pass any object that implements `debug`, `info`, `warn`, `error`, and `child` to `createRuntime`. The logger interface uses `(message, fields)` argument order — libraries like pino use `(fields, message)`, so a thin wrapper is needed:\n\n```typescript\nimport {\n  createViemAdapterFromPrivateKey,\n  createRuntime,\n} from '@circle-fin/adapter-viem-v2/next'\nimport pino from 'pino'\n\nfunction wrapPino(p: pino.Logger) {\n  return {\n    debug: (msg: string, fields?: Record<string, unknown>) =>\n      p.debug(fields, msg),\n    info: (msg: string, fields?: Record<string, unknown>) =>\n      p.info(fields, msg),\n    warn: (msg: string, fields?: Record<string, unknown>) =>\n      p.warn(fields, msg),\n    error: (msg: string, fields?: Record<string, unknown>) =>\n      p.error(fields, msg),\n    child: (tags: Record<string, unknown>) => wrapPino(p.child(tags)),\n  }\n}\n\nconst adapter = createViemAdapterFromPrivateKey({\n  privateKey: process.env.PRIVATE_KEY as string,\n  runtime: createRuntime({ logger: wrapPino(pino({ level: 'debug' })) }),\n})\n```\n\n### Metrics\n\nThe `runtime` option also accepts a `metrics` implementation for counters, histograms, and timers. Plug into Prometheus, StatsD, Datadog, OpenTelemetry, or any other backend:\n\n```typescript\nimport {\n  createViemAdapterFromPrivateKey,\n  createRuntime,\n} from '@circle-fin/adapter-viem-v2/next'\n\nconst adapter = createViemAdapterFromPrivateKey({\n  privateKey: process.env.PRIVATE_KEY as string,\n  runtime: createRuntime({\n    metrics: {\n      counter: (name) => ({\n        inc: (labels, value) => {\n          /* emit counter */\n        },\n      }),\n      histogram: (name) => ({\n        observe: (labels, value) => {\n          /* emit histogram */\n        },\n      }),\n      timer: (name) => ({\n        start: (labels) => {\n          const t0 = Date.now()\n          return () => {\n            /* observe Date.now() - t0 */\n          }\n        },\n      }),\n      child: (labels) => {\n        /* return scoped Metrics with base labels merged */\n      },\n    },\n  }),\n})\n```\n\nWhen no `metrics` is provided, metric calls are silently no-op'd — zero overhead.\n\n### Token Registry\n\nBy default the adapter knows about USDC (and other built-in tokens) on every supported chain. The `tokens` option lets you register additional tokens so they can be referenced by symbol instead of raw addresses.\n\n```typescript\nimport {\n  createViemAdapterFromPrivateKey,\n  createTokenRegistry,\n} from '@circle-fin/adapter-viem-v2/next'\n\nconst tokens = createTokenRegistry({\n  tokens: [\n    {\n      symbol: 'WETH',\n      decimals: 18,\n      locators: {\n        Ethereum: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',\n        Base: '0x4200000000000000000000000000000000000006',\n      },\n    },\n  ],\n})\n\nconst adapter = createViemAdapterFromPrivateKey({\n  privateKey: process.env.PRIVATE_KEY as string,\n  tokens,\n})\n```\n\nThe registry resolves the correct contract address and decimals for each chain automatically, so downstream code can refer to `'WETH'` rather than hard-coding addresses per network.\n\n### Transaction Tuning\n\nThe `config` option lets you tune gas pricing, retry behavior, and confirmation timeouts:\n\n```typescript\nimport { createViemAdapterFromPrivateKey } from '@circle-fin/adapter-viem-v2/next'\n\nconst adapter = createViemAdapterFromPrivateKey({\n  privateKey: process.env.PRIVATE_KEY as string,\n  config: {\n    transaction: {\n      feePriceBufferBps: 2000n, // 20% buffer on gas pricing (default)\n      minPriorityFeeWei: 1_500_000_000n, // 1.5 gwei priority-fee floor\n      confirmationTimeoutMs: 120_000, // 2 minute confirmation timeout\n    },\n    retry: {\n      maxAttempts: 3,\n      baseDelayMs: 1000,\n    },\n  },\n})\n```\n\n| Setting                 | What it controls                                                                                                           | Default                     |\n| ----------------------- | -------------------------------------------------------------------------------------------------------------------------- | --------------------------- |\n| `feePriceBufferBps`     | Buffer on gas pricing to protect against price fluctuations between estimation and inclusion (basis points; 10 000 = 100%) | `2000n` (20%)               |\n| `minPriorityFeeWei`     | Floor for `maxPriorityFeePerGas` — prevents near-zero tips from being silently dropped by validators                       | `1_500_000_000n` (1.5 gwei) |\n| `confirmationTimeoutMs` | How long `waitForTransaction` waits before timing out                                                                      | Client default              |\n| `retry.maxAttempts`     | Maximum number of retry attempts (not including the initial attempt)                                                       | `3`                         |\n| `retry.baseDelayMs`     | Base delay between retries in milliseconds (doubles on each retry via exponential backoff)                                 | `200`                       |\n\nSet `retry: false` to disable automatic retries entirely.\n\n> **Nonce note (same-key, multiple adapters).**\n> `createViemAdapterFromPrivateKey` gives each adapter instance its own\n> JSON-RPC-backed nonce manager, so distinct adapters (e.g. against\n> different RPC endpoints) no longer share a stale process-wide counter.\n> However, if you construct **two or more adapter instances with the\n> same private key** and submit transactions concurrently (for example a\n> primary/fallback RPC pair), each manager allocates nonces\n> independently and they can collide. For same-key concurrent\n> submission, route through a single adapter instance or supply a shared\n> nonce source.\n\n### Error Telemetry & Secret Redaction\n\n`KitError.cause.trace` is the SDK's diagnostic surface for telemetry pipelines. It carries useful post-mortem context — the redacted `rawError` shape, the provider `errorName`, the `shortMessage`, and a `reason` field. The strings on these fields **can** include the configured RPC URL and any embedded API key, because viem's HTTP / WebSocket transports format the URL directly into `error.message` and `error.shortMessage` (the same is true for ethers v6's `makeError()`-formatted strings).\n\nThe SDK addresses this in two layers:\n\n1. **Object-graph stripping (always on)** — extra properties like `request`, `info`, `requestUrl`, the originating `XMLHttpRequest`, and the configured `transport.url` are never embedded on `cause.trace`. This has been the contract since the first round of the redactor work.\n2. **Message-content scrubbing (default-on for ~12 known RPC providers; operator-extensible)** — the SDK ships with `defaultMessageRedactor` active at module load, scrubbing API-key fragments out of `error.message`, `shortMessage`, and `reason` for the most common public RPC providers without any operator configuration. URL classification happens via the platform `URL` parser plus a host-suffix list (`DEFAULT_RPC_HOST_SUFFIXES`), so adding a new provider is a one-line change with no regex audit needed.\n\n#### What the defaults catch out of the box\n\n| Provider              | Host suffix(es)                                              |\n| --------------------- | ------------------------------------------------------------ |\n| Alchemy               | `.g.alchemy.com`                                             |\n| Infura                | `.infura.io`                                                 |\n| QuickNode             | `.quiknode.pro`                                              |\n| Ankr                  | `.ankr.com`                                                  |\n| Chainstack            | `.p2pify.com`                                                |\n| Tenderly              | `.gateway.tenderly.co`                                       |\n| BlockPI               | `.blockpi.network`                                           |\n| GetBlock              | `.getblock.io`                                               |\n| Moralis               | `.moralis-nodes.com`                                         |\n| Helius (Solana)       | `.helius-rpc.com`, `.helius.xyz`                             |\n| Triton (Solana)       | `.rpcpool.com`                                               |\n| Generic query strings | `?api-key=…`, `?apikey=…`, `?token=…`, `?secret=…`, `?key=…` |\n| Generic auth headers  | `Bearer <token>`                                             |\n\nAny URL whose `host.endsWith(suffix)` matches the table is replaced wholesale with `[REDACTED]`. The classification is done by the same `URL` parser the platform uses for `fetch()`, so it cannot accidentally match calldata, contract addresses, transaction hashes, or revert reasons (none of which parse as URLs).\n\n#### Defense in depth, not a guarantee\n\nThree things still need attention from you, even with defaults on:\n\n1. **Custom or self-hosted RPC URLs aren't covered by defaults.** Extend the host-suffix list with `composeRedactor`:\n\n   ```typescript\n   import {\n     composeRedactor,\n     setMessageRedactor,\n     DEFAULT_RPC_HOST_SUFFIXES,\n   } from '@core/errors'\n\n   setMessageRedactor(\n     composeRedactor({\n       hostSuffixes: [...DEFAULT_RPC_HOST_SUFFIXES, '.rpc.my-corp.example'],\n     }),\n   )\n   ```\n\n2. **Error messages are still untrusted output.** Don't write them to durable storage (S3, log files, ticket systems, support transcripts) without your own log-shipping-layer scrub. The SDK protects telemetry pipelines that JSON.stringify `cause.trace`; it does not protect ad-hoc `console.error(err)` calls in your application code.\n\n3. **Defaults can false-negative.** New providers, URL format changes, or odd error shapes from a custom transport may slip through. Treat every error message as potentially containing a secret you don't recognize, and pin scrubbing at your log-shipping layer too (Sentry's `denyUrls` / `beforeSend`, Datadog's `redact-paths`, your own forwarder).\n\n#### Other escape hatches\n\n| Goal                                                        | Call                                                                                           |\n| ----------------------------------------------------------- | ---------------------------------------------------------------------------------------------- |\n| Restore defaults after a custom policy                      | `resetMessageRedactor()`                                                                       |\n| Read the active policy (e.g. `/healthz`)                    | `getMessageRedactor()`                                                                         |\n| Disable redaction entirely (local dev / raw-provider tests) | `setMessageRedactor(undefined)`                                                                |\n| Length-preserving redaction (function form)                 | `setMessageRedactor((msg) => msg.replace(/[A-Fa-f0-9]{32,64}/g, (m) => '*'.repeat(m.length)))` |\n\nThe setter **replaces** the active policy — use `composeRedactor({ hostSuffixes, patterns })` (or call `defaultMessageRedactor(msg)` from inside a function-form redactor) if you want to extend rather than replace. See `setMessageRedactor`'s JSDoc for the contract.\n\n#### Why on by default\n\nThe dominant pattern across modern SDKs (AWS SDK v3 middleware, Stripe's request logger, Sentry's `Default Integrations`, OpenTelemetry's URL/query-param scrubbers) is to ship secret scrubbing on by default for high-confidence patterns and let operators extend or disable. The opposite posture — \"errors may contain secrets, scrub them yourself\" — has historically been a frequent cause of credentials leaking into log aggregators across the JS ecosystem (notably with axios, which dumps the full request URL into `error.config` by default). The SDK adopts the conservative-defaults posture deliberately.\n\n### Migration Path\n\nThe `/next` entrypoint is designed for a zero-friction migration:\n\n1. **Today** — Import from `@circle-fin/adapter-viem-v2/next`. The adapter returned is fully compatible with all existing kits and providers — no changes needed on their side.\n2. **Next major release** — The `/next` architecture becomes the default entrypoint (`@circle-fin/adapter-viem-v2`). The current class-based adapter will be removed.\n\n**What do I need to change?** If you only use factory functions (`createViemAdapterFromPrivateKey`, `createViemAdapterFromProvider`) and pass the adapter to a kit, nothing beyond the import path. The adapter satisfies the same interface that kits expect.\n\n## OperationContext Pattern\n\nThe Viem v2 Adapter supports the **OperationContext pattern** for flexible per-operation chain and address specification. This enables advanced use cases like multi-chain operations and enterprise address management.\n\n### Address Context Modes\n\nThe adapter's behavior is determined by the `addressContext` capability:\n\n#### `'user-controlled'` (Default, Recommended)\n\n- **Use case**: Browser wallets, private keys, hardware wallets, development\n- **Address handling**: Automatically resolved from connected wallet or key\n- **Best for**: MetaMask, Coinbase Wallet, WalletConnect, private key development\n- **Key benefit**: Simpler API - no need to pass address to every operation\n\n**When to use:**\n\n- Using a private key (`createViemAdapterFromPrivateKey`)\n- Using a browser wallet (MetaMask, Coinbase Wallet, etc.)\n- Single address with automatic resolution\n- Building a standard dApp or backend service\n\n```typescript\n// Private key adapter - uses 'user-controlled' by default\nconst adapter = createViemAdapterFromPrivateKey({\n  privateKey: process.env.PRIVATE_KEY,\n  // Defaults to 'user-controlled' - address resolved automatically\n})\n\n// Address is resolved automatically from wallet\nawait adapter.prepare(contractParams, { chain: 'Base' })\n```\n\n#### `'developer-controlled'` (For Enterprise/Multi-Address Systems)\n\n- **Use case**: Enterprise custody, multi-address management, institutional wallets\n- **Address handling**: Must be explicitly provided for each operation\n- **Best for**: Fireblocks, Circle Wallets, Coinbase Prime, custom custody solutions\n- **Key benefit**: Flexibility to use different addresses per operation\n\n**When to use:**\n\n- Managing multiple addresses from a single provider (Fireblocks vaults)\n- Requiring different addresses for different operations\n- Custody solution with explicit address specification\n- Integrating with institutional-grade wallet infrastructure\n\n```typescript\nimport { Ethereum, Base } from '@circle-fin/bridge-kit/chains'\n\n// Enterprise custody - use 'developer-controlled'\nconst adapter = createViemAdapterFromProvider({\n  provider: fireblocksProvider,\n  capabilities: {\n    addressContext: 'developer-controlled',\n    supportedChains: [Ethereum, Base],\n  },\n})\n\n// Address must be specified per operation - enables multi-address flexibility\nawait adapter.prepare(contractParams, {\n  chain: 'Base',\n  address: '0x123...', // Required: specify which vault/address to use\n})\n```\n\n**Decision Guide:**\n\n- **Private keys:** Use default (`'user-controlled'`)\n- **Browser wallets:** Use default (`'user-controlled'`)\n- **Fireblocks/Custody:** Use `'developer-controlled'`\n- **Single address:** Use default (`'user-controlled'`)\n- **Multiple addresses:** Use `'developer-controlled'`\n\n### OperationContext Usage\n\nThe second parameter to `prepare()` is required and specifies the operation context:\n\n```typescript\n// OperationContext is required for all operations\nconst prepared = await adapter.prepare(\n  {\n    address: '0x...',\n    abi: contractAbi,\n    functionName: 'transfer',\n    args: ['0xto', '1000'],\n  },\n  {\n    chain: 'Base', // Chain specified in context\n  },\n)\n```\n\n## API Reference\n\n### Constructor Options\n\nThe `ViemAdapter` constructor requires both configuration options and adapter capabilities:\n\n```typescript\nconstructor(options: ViemAdapterOptions, capabilities: AdapterCapabilities)\n\ninterface ViemAdapterOptions {\n  getPublicClient: (params: { chain: Chain }) => PublicClient\n  getWalletClient: (params: { chain: Chain }) => Promise<WalletClient> | WalletClient\n}\n\ninterface AdapterCapabilities {\n  addressContext: 'user-controlled' | 'developer-controlled'\n  supportedChains: ChainDefinition[]\n}\n```\n\n#### `getPublicClient`\n\nA function that returns a `PublicClient` for the specified chain.\n\n- **Type**: `(params: { chain: Chain }) => PublicClient`\n- **Purpose**: Provides read-only blockchain access for the given chain\n- **Called**: Every time the adapter needs to read blockchain data or switch chains\n\n#### `getWalletClient`\n\nA function that returns a `WalletClient` for signing and sending transactions.\n\n- **Type**: `(params: { chain: Chain }) => Promise<WalletClient> | WalletClient`\n- **Purpose**: Provides wallet access for signing transactions and managing accounts\n- **Called**: Only when needed (lazy initialization) and cached automatically per chain\n- **Supports**: Both synchronous and asynchronous initialization\n- **Chain-aware**: Requires chain parameter for explicit multi-chain wallet support\n\n#### `capabilities` (Required)\n\nDefines the adapter's capabilities and operational model.\n\n- **Type**: `AdapterCapabilities`\n- **Purpose**: Specifies address control model and supported chains\n- **addressContext**:\n  - `'user-controlled'` - Address managed by wallet (MetaMask, private keys)\n  - `'developer-controlled'` - Address must be specified per operation (enterprise custody)\n- **supportedChains**: Array of blockchain networks this adapter can operate on\n\n**Example**:\n\n```typescript\nimport { ViemAdapter } from '@circle-fin/adapter-viem-v2'\nimport { Ethereum, Base, Polygon } from '@circle-fin/bridge-kit/chains'\nimport { createPublicClient, createWalletClient, http } from 'viem'\n\nconst adapter = new ViemAdapter(\n  {\n    getPublicClient: ({ chain }) =>\n      createPublicClient({ chain, transport: http() }),\n    getWalletClient: async ({ chain }) => {\n      // Your initialization logic - now chain-aware\n      return createWalletClient({\n        chain,\n        transport: http(),\n        /* ... */\n      })\n    },\n  },\n  {\n    addressContext: 'user-controlled', // Address managed by wallet\n    supportedChains: [Ethereum, Base, Polygon], // Specify supported chains\n  },\n)\n```\n\n### Methods\n\n- **`calculateTransactionFee(baseComputeUnits, bufferBasisPoints?, chain)`** - Calculate transaction fees with optional buffer\n- **`ensureChain(targetChain)`** - Ensures the adapter is connected to the correct chain\n- **`fetchEIP2612Nonce(tokenAddress, ownerAddress, ctx)`** - Fetch EIP-2612 nonce for permit signatures\n- **`fetchGasPrice(chain)`** - Fetch current gas price from the network\n- **`getAddress(chain)`** - Get the connected wallet address\n- **`getPublicClient(chainDef)`** - Get the cached PublicClient or initialize it for the specified chain\n- **`getViemChain(chain)`** - Get the Viem Chain object for the given chain definition\n- **`initializeWalletClient(chain)`** - Initialize wallet client with proper caching and error handling\n- **`prepare(params, ctx: OperationContext)`** - Prepare transactions for execution\n  - `params`: Contract parameters (address, ABI, function, args)\n  - `ctx`: Required operation context specifying the chain and address for this operation\n- **`prepareAction(action, params, ctx)`** - Prepare (but do not execute) an action for the connected blockchain\n- **`readContract<T>(params, chain)`** - Read data from smart contract functions\n- **`resetState()`** - Reset all cached state in the adapter, including Viem-specific caches\n- **`signTypedData(typedData, ctx: OperationContext)`** - Sign EIP-712 typed data with required operation context\n- **`switchToChain(chain)`** - Switch the adapter to operate on the specified chain\n- **`validateChainSupport(targetChain)`** - Validate that the target chain is supported by this adapter\n- **`waitForTransaction(txHash, config?, chain)`** - Wait for transaction confirmation\n\n#### `prepare()` Method Details\n\nThe `prepare()` method requires an OperationContext for all operations:\n\n```typescript\n// OperationContext is required - chain specified in context\nconst prepared = await adapter.prepare(\n  {\n    address: '0x...',\n    abi: contractAbi,\n    functionName: 'transfer',\n    args: ['0xto', '1000'],\n  },\n  {\n    chain: 'Base', // Chain specified in context\n    address: '0x...', // Only required for developer-controlled adapters\n  },\n)\n```\n\n### Token Operations via Actions\n\nFor token balance and allowance operations, this adapter uses the standardized action-based system inherited from `EvmAdapter`:\n\n- **`token.balanceOf`** - Get balance for any ERC-20 token\n- **`token.allowance`** - Get allowance for any ERC-20 token\n- **`usdc.balanceOf`** - Get USDC balance (uses `token.balanceOf` with USDC address)\n- **`usdc.allowance`** - Get USDC allowance (uses `token.allowance` with USDC address)\n\nThese actions provide type-safe, validated interfaces and use the adapter's `readContract()` method internally.\n\n## Development\n\nThis package is part of the App Kits monorepo.\n\n```bash\n# Build\nnx build @circle-fin/adapter-viem-v2\n\n# Test\nnx test @circle-fin/adapter-viem-v2\n```\n\n## License\n\nThis project is licensed under the Apache 2.0 License. Contact [support](https://help.circle.com/s/submit-ticket) for details.\n\n---\n\n<div align=\"center\">\n\n**Ready to integrate?**\n\n[Join Discord](https://discord.com/invite/buildoncircle) •\n[Visit our Help-Desk](https://help.circle.com/s/submit-ticket)\n\n_Built with ❤️ by Circle_\n\n</div>\n","readmeFilename":"README.md"}