{"_id":"@circle-fin/provider-stablecoin-service-swap","_rev":"36-0d62953cf6ba24e3879a4a573c31763b","name":"@circle-fin/provider-stablecoin-service-swap","dist-tags":{"latest":"1.6.1"},"versions":{"1.0.0":{"name":"@circle-fin/provider-stablecoin-service-swap","version":"1.0.0","_id":"@circle-fin/provider-stablecoin-service-swap@1.0.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":"7483e740706b892321e42d3b55ae7559f6fd56c0","tarball":"https://registry.npmjs.org/@circle-fin/provider-stablecoin-service-swap/-/provider-stablecoin-service-swap-1.0.0.tgz","fileCount":7,"integrity":"sha512-LcVZLpsX+KbKDuOonvXOnvY/9BuQZmvoBILSRzpmnlP7xD09ONqEyG2+wUr+/z6YvR9sn1PIvxqraIg30+o3kA==","signatures":[{"sig":"MEUCIQDhnCQD4eUlp3JgE6oc1m+fLYap/NORPOFzlxBlpwB5UAIgKZZ16OWazyI/ofQfCB0BHqFVpVjoplthVI7OKSgm9eE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1145590},"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":"<div align=\"center\">","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"3.25.67","abitype":"^1.1.0","@solana/web3.js":"^1.98.4"},"publishConfig":{"access":"public","directory":"../../dist/providers/stablecoin-service-swap"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/provider-stablecoin-service-swap_1.0.0_1773791991869_0.4304532162510841","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@circle-fin/provider-stablecoin-service-swap","version":"1.0.1","_id":"@circle-fin/provider-stablecoin-service-swap@1.0.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":"ede3c581b088d1fb0c6e71f1856feabe19c59a09","tarball":"https://registry.npmjs.org/@circle-fin/provider-stablecoin-service-swap/-/provider-stablecoin-service-swap-1.0.1.tgz","fileCount":7,"integrity":"sha512-6pTW32kfEA/PvFoR6w1qTmeF7CH25x8O5w75ncsoaBJzS5vT1NNsRhgsb1oJW8bSjSQpsQ1P6yyaRyA7FCsBlg==","signatures":[{"sig":"MEUCIH6nt4dvQLjhafgTyaZim7r1S6h9Vtn5ZUVMXUhMNXI5AiEAzx3GcU/MC6fQawC2KxfoJjXrce8ITrOUe3GC62CentI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1157208},"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":"<div align=\"center\">","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"3.25.67","abitype":"^1.1.0","@solana/web3.js":"^1.98.4"},"publishConfig":{"access":"public","directory":"../../dist/providers/stablecoin-service-swap"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/provider-stablecoin-service-swap_1.0.1_1774042705766_0.4191650419461286","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@circle-fin/provider-stablecoin-service-swap","version":"1.0.2","_id":"@circle-fin/provider-stablecoin-service-swap@1.0.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":"eaf3db93815da79ac4eaccb5f8800df6e40752b7","tarball":"https://registry.npmjs.org/@circle-fin/provider-stablecoin-service-swap/-/provider-stablecoin-service-swap-1.0.2.tgz","fileCount":8,"integrity":"sha512-h9+boSdIlEH3SkW6+9GZ3MDtu7aoSJcPWvnofnrJ38+ldclb+NjLGrAfbfbXDm+zlkX65/xQY6pDVxZCp3bVEg==","signatures":[{"sig":"MEYCIQDdSQEdBvVu0LjzEccGkIggtGI+Ff4UCHsaxDYxrI1gVAIhAOPs2VfmthVlcCazHwqalKgqVZ3am3LucyRUeuf2aU7H","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1159257},"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":"<div align=\"center\">","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"3.25.67","abitype":"^1.1.0","@solana/web3.js":"^1.98.4"},"publishConfig":{"access":"public","directory":"../../dist/providers/stablecoin-service-swap"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/provider-stablecoin-service-swap_1.0.2_1774883562147_0.518869873313764","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@circle-fin/provider-stablecoin-service-swap","version":"1.0.3","_id":"@circle-fin/provider-stablecoin-service-swap@1.0.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":"117c1b5e13829792cae65861b61e1a580950cb57","tarball":"https://registry.npmjs.org/@circle-fin/provider-stablecoin-service-swap/-/provider-stablecoin-service-swap-1.0.3.tgz","fileCount":8,"integrity":"sha512-GIDKEJxC/hi/AaJ4gAOQVq7vWsdxbARFQaFw8raUu7EKwpWSAhzK1B4DKM6f7woS8tCg+8PH7OGAR18HgXrqow==","signatures":[{"sig":"MEUCIEYNTe3CZjICq/ZgtEajsN128e10Hyfwh7jk6X0eMr2hAiEA4CRWYblYbd/r55HfPn2Kr5wEqUBOo3x4Hu/vlec950o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1159335},"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":"<div align=\"center\">","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"3.25.67","abitype":"^1.1.0","@solana/web3.js":"^1.98.4"},"publishConfig":{"access":"public","directory":"../../dist/providers/stablecoin-service-swap"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/provider-stablecoin-service-swap_1.0.3_1775246742134_0.2142739698869398","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@circle-fin/provider-stablecoin-service-swap","version":"1.1.0","keywords":["circle","circle-fin","usdc","stablecoin","sdk","typescript","provider","swap","dex","token-swap","app-kit","swap-kit"],"_id":"@circle-fin/provider-stablecoin-service-swap@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":"abc47beede84c89f55b327fdc31cb61201c5f789","tarball":"https://registry.npmjs.org/@circle-fin/provider-stablecoin-service-swap/-/provider-stablecoin-service-swap-1.1.0.tgz","fileCount":8,"integrity":"sha512-Laatoy66+1m2aeXZvfktHcOnlpQPZqlpQJEgSg9+MaAWXCEQuWSbT1B0xroPwgHrsoIohLcgSeeCe1S28pTjEQ==","signatures":[{"sig":"MEYCIQDY/s4ch2OSY2x4EBGmki32ADvFNjahUPjeHVuF5In3bQIhAL1Z7TICXC2RNPVEYWKt/kLRn7DO+09lsiOrREgKokR8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1168324},"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":"Swap provider for on-chain token swaps via Circle's stablecoin APIs","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"3.25.67","abitype":"^1.1.0","@solana/web3.js":"^1.98.4"},"publishConfig":{"access":"public","directory":"../../dist/providers/stablecoin-service-swap"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/provider-stablecoin-service-swap_1.1.0_1775771528295_0.5436928430396597","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@circle-fin/provider-stablecoin-service-swap","version":"1.1.1","keywords":["circle","circle-fin","usdc","stablecoin","sdk","typescript","provider","swap","dex","token-swap","app-kit","swap-kit"],"_id":"@circle-fin/provider-stablecoin-service-swap@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":"1ea8df6cfa531227d432891c3fe3c851bd76e2af","tarball":"https://registry.npmjs.org/@circle-fin/provider-stablecoin-service-swap/-/provider-stablecoin-service-swap-1.1.1.tgz","fileCount":8,"integrity":"sha512-FRTXj+nGl/8wt3HNyuEDr2P0V26P/QC0HtVVerYOzXwVQrHvN3d8OKd+fEg6sjXIF/+UV7pJcinv0p1/H8qq0A==","signatures":[{"sig":"MEUCIHWSuYy21Yh9/xQIaZf0X2bRf1f8p2SmeP+3Ah2PifuNAiEA4mCccT4TqBQRqvfGiFErTaPkc1cJMvbSNiPygazgnfs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1239842},"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":"Swap provider for on-chain token swaps via Circle's stablecoin APIs","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"3.25.67","abitype":"^1.1.0","@solana/web3.js":"^1.98.4"},"publishConfig":{"access":"public","directory":"../../dist/providers/stablecoin-service-swap"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/provider-stablecoin-service-swap_1.1.1_1777964469893_0.026592867641767493","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@circle-fin/provider-stablecoin-service-swap","version":"1.1.2","keywords":["circle","circle-fin","usdc","stablecoin","sdk","typescript","provider","swap","dex","token-swap","app-kit","swap-kit"],"_id":"@circle-fin/provider-stablecoin-service-swap@1.1.2","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":"2acb634121e58db002209c2125e616d3e12e1360","tarball":"https://registry.npmjs.org/@circle-fin/provider-stablecoin-service-swap/-/provider-stablecoin-service-swap-1.1.2.tgz","fileCount":8,"integrity":"sha512-/RIYDRmSsgTzdOPSmes+Uce59Hcg2HkGzY/uaK/4ugaxxRWRdl4qN+VsC2kiZPeCCmP5maTVQxkcKvUzTBD1xg==","signatures":[{"sig":"MEUCIQCVufYkFta8GmHeA10rKX3dRD/39lx2P1Lctyf+nY/J/wIgQKWSvOOpJrUw5pzDNzWox/jmFDWTryDDpN7b3gcirno=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1246463},"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":"Swap provider for on-chain token swaps via Circle's stablecoin APIs","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"3.25.67","abitype":"^1.1.0","@solana/web3.js":"^1.98.4"},"publishConfig":{"access":"public","directory":"../../dist/providers/stablecoin-service-swap"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/provider-stablecoin-service-swap_1.1.2_1778289324908_0.09486849902754124","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"@circle-fin/provider-stablecoin-service-swap","version":"1.1.3","keywords":["circle","circle-fin","usdc","stablecoin","sdk","typescript","provider","swap","dex","token-swap","app-kit","swap-kit"],"_id":"@circle-fin/provider-stablecoin-service-swap@1.1.3","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":"637a4b43b6f686bd017504dd7d89530fe70edc12","tarball":"https://registry.npmjs.org/@circle-fin/provider-stablecoin-service-swap/-/provider-stablecoin-service-swap-1.1.3.tgz","fileCount":8,"integrity":"sha512-fnu6c9aqLdKAqYVIVwG7qoHe+fooNVR8mc4MvN90TYRa3pwgusWe3tAhpKNiPFFJX4sdWZ0fNvzWJXVVZmxw5w==","signatures":[{"sig":"MEUCIQCkop/wMlJexkiPuILlZurPCfrB8ufn8YvyEjjU73cIUQIgF7GNXkCj1ez+CdN2N1aBpMNZhtAsR+8/BGiTqWTs05I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1246604},"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":"Swap provider for on-chain token swaps via Circle's stablecoin APIs","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"3.25.67","abitype":"^1.1.0","@solana/web3.js":"^1.98.4"},"publishConfig":{"access":"public","directory":"../../dist/providers/stablecoin-service-swap"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/provider-stablecoin-service-swap_1.1.3_1778722691295_0.3903930116462635","host":"s3://npm-registry-packages-npm-production"}},"1.1.4":{"name":"@circle-fin/provider-stablecoin-service-swap","version":"1.1.4","keywords":["circle","circle-fin","usdc","stablecoin","sdk","typescript","provider","swap","dex","token-swap","app-kit","swap-kit"],"_id":"@circle-fin/provider-stablecoin-service-swap@1.1.4","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":"ae99048ad331ea4b1c9808b3707d6296b66d2b4c","tarball":"https://registry.npmjs.org/@circle-fin/provider-stablecoin-service-swap/-/provider-stablecoin-service-swap-1.1.4.tgz","fileCount":8,"integrity":"sha512-i2eE88btNqN9FDEgHFDQ8ghxXyA77zBh7sCQhH8ozcdh6io6eU2TijasQbLKmeIKmxtPrVEGpejc9E8WvWrLIw==","signatures":[{"sig":"MEQCIHgBdlR5IpCDikGFci/NEYYstu48co2tAnibxB4JYTfIAiBLSNmtM9jo91xxEj0mAjRNSRfIIzyQoY8JWv++ukdrjA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1252720},"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":"Swap provider for on-chain token swaps via Circle's stablecoin APIs","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"3.25.67","abitype":"^1.1.0","@solana/web3.js":"^1.98.4"},"publishConfig":{"access":"public","directory":"../../dist/providers/stablecoin-service-swap"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/provider-stablecoin-service-swap_1.1.4_1779147292662_0.06318463611518288","host":"s3://npm-registry-packages-npm-production"}},"1.1.5":{"name":"@circle-fin/provider-stablecoin-service-swap","version":"1.1.5","keywords":["circle","circle-fin","usdc","stablecoin","sdk","typescript","provider","swap","dex","token-swap","app-kit","swap-kit"],"_id":"@circle-fin/provider-stablecoin-service-swap@1.1.5","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":"6edfa555e5a185eccf5879e843721c5707d08090","tarball":"https://registry.npmjs.org/@circle-fin/provider-stablecoin-service-swap/-/provider-stablecoin-service-swap-1.1.5.tgz","fileCount":8,"integrity":"sha512-noEy3DdZgzWRuSpKv+MMp68Ntslq7DnneKOwkYrLod9AZuw/GEGaaa6Ux21wixZrStt0TUK+65GRyXUM+0Dnvw==","signatures":[{"sig":"MEQCIDPVgW5tt1Ysao9aZ/oYRSQHHuFU7kEed1h8LTL/e7ALAiAMSjSlYOJUr1zsojNeyN3tb4Tc9vw3EbMGs4EFL6YD7Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1252805},"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":"Swap provider for on-chain token swaps via Circle's stablecoin APIs","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"3.25.67","abitype":"^1.1.0","@solana/web3.js":"^1.98.4"},"publishConfig":{"access":"public","directory":"../../dist/providers/stablecoin-service-swap"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/provider-stablecoin-service-swap_1.1.5_1780010115960_0.9799157167541295","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@circle-fin/provider-stablecoin-service-swap","version":"1.2.0","keywords":["circle","circle-fin","usdc","stablecoin","sdk","typescript","provider","swap","dex","token-swap","app-kit","swap-kit"],"_id":"@circle-fin/provider-stablecoin-service-swap@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":"612a49893408e169d9f73fecd7c1b520cb40fd18","tarball":"https://registry.npmjs.org/@circle-fin/provider-stablecoin-service-swap/-/provider-stablecoin-service-swap-1.2.0.tgz","fileCount":10,"integrity":"sha512-4bkX9KMQ6Y60ptuQknyAT/9pD7dgZdlcA1JQCg9/IRQFuHovwLhoVQ2aVhuDiwkiXA87FpaLrJ3sS35KuHXCig==","signatures":[{"sig":"MEUCIDtUnHgqqQvzWongBsKXRyE+OKvGMz2B8PS99PNVADYXAiEA01PO+U4yPonG3jm2lp1QCUl3N/Wm70WJVFZ/c/CijP0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1695836},"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"},"./package.json":"./package.json"},"gitHead":"1240b913d570266a456f694a4c404f898e3971ac","_npmUser":{"name":"circle-npm-ci","email":"devops@circle.com"},"_npmVersion":"10.9.8","description":"Swap provider for on-chain token swaps via Circle's stablecoin APIs","directories":{},"sideEffects":false,"_nodeVersion":"22.23.0","dependencies":{"zod":"3.25.67","abitype":"^1.1.0","@solana/web3.js":"^1.98.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/provider-stablecoin-service-swap_1.2.0_1782258219812_0.4997181095241354","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@circle-fin/provider-stablecoin-service-swap","version":"1.2.1","keywords":["circle","circle-fin","usdc","stablecoin","sdk","typescript","provider","swap","dex","token-swap","app-kit","swap-kit"],"_id":"@circle-fin/provider-stablecoin-service-swap@1.2.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":"5fa10b2727dbdf2cf46ab7fe73ce7633d5145722","tarball":"https://registry.npmjs.org/@circle-fin/provider-stablecoin-service-swap/-/provider-stablecoin-service-swap-1.2.1.tgz","fileCount":10,"integrity":"sha512-GGb2o8DgojQdO7c498eRDGStPhbVfSXNC1j2sKLXicg0nNjsn4RbgzUXa4ZEszs2SAEOcrsQ18+HIScw2LRoEA==","signatures":[{"sig":"MEQCIA+xkce3w0jDCJ6XStMQzAtwnCTTRbeEIg6Fe7xAtJzRAiB/fh2leQx9rBOlztFHAQmbt40aK9RnDhfyWVdBDcF54g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1702081},"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"},"./package.json":"./package.json"},"gitHead":"1b8bfa2935cce6a2d20990f42432d3887f77139d","_npmUser":{"name":"circle-npm-ci","email":"devops@circle.com"},"_npmVersion":"10.9.8","description":"Swap provider for on-chain token swaps via Circle's stablecoin APIs","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","dependencies":{"zod":"3.25.67","abitype":"^1.1.0","@solana/web3.js":"^1.98.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/provider-stablecoin-service-swap_1.2.1_1782328557970_0.0509174240159147","host":"s3://npm-registry-packages-npm-production"}},"1.2.2":{"name":"@circle-fin/provider-stablecoin-service-swap","version":"1.2.2","keywords":["circle","circle-fin","usdc","stablecoin","sdk","typescript","provider","swap","dex","token-swap","app-kit","swap-kit"],"_id":"@circle-fin/provider-stablecoin-service-swap@1.2.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":"f1ff2869727a6838010fa961e9112d9d1a2d1807","tarball":"https://registry.npmjs.org/@circle-fin/provider-stablecoin-service-swap/-/provider-stablecoin-service-swap-1.2.2.tgz","fileCount":10,"integrity":"sha512-VUrenMOLtExdst28NKsBmT6zAX4WlQhJCPULjyrjtjLtc2Hv9QKz0qC9DLC+dJ8TfbLpmukUzjMr2brZ4lArLg==","signatures":[{"sig":"MEYCIQCaS2v09zj80ykMAWe9ZvQBvx9zD8GihatkPkc+HVo66AIhAMY+lya2S+xIyeIrohrlmfGdTfzpzNuV0/o52GT02dz0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1708961},"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"},"./package.json":"./package.json"},"gitHead":"be9a2da6f763f149630c6c13c5c1f55ff41e088a","_npmUser":{"name":"circle-npm-ci","email":"devops@circle.com"},"_npmVersion":"10.9.8","description":"Swap provider for on-chain token swaps via Circle's stablecoin APIs","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","dependencies":{"zod":"3.25.67","bs58":"^6.0.0","bn.js":"^5.2.3","abitype":"^1.1.0","@noble/curves":"1.4.2","@solana/web3.js":"^1.98.4","@coral-xyz/anchor":"^0.31.1","@ethersproject/bytes":"^5.8.0","@ethersproject/units":"^5.8.0","@ethersproject/address":"^5.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/provider-stablecoin-service-swap_1.2.2_1783370815434_0.19836157843389812","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@circle-fin/provider-stablecoin-service-swap","version":"1.3.0","keywords":["circle","circle-fin","usdc","stablecoin","sdk","typescript","provider","swap","dex","token-swap","app-kit","swap-kit"],"_id":"@circle-fin/provider-stablecoin-service-swap@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":"f56c69b50ae544010b10a6c8b3385163f9b65e23","tarball":"https://registry.npmjs.org/@circle-fin/provider-stablecoin-service-swap/-/provider-stablecoin-service-swap-1.3.0.tgz","fileCount":10,"integrity":"sha512-wOTNyAiEbm0iXpF3bofFc76QQkgJ1i2SdtrmOJlvO4OEE2nwnEFEFq94721BDQEyHWqdLPS5lQIIkrVLOHCjiw==","signatures":[{"sig":"MEUCIQCOI5xrC5kJqve8ezsqPEpJSGdBKiFTB6mORFxbA1b+PQIgPuj7uXQk3CzGAOyAGMYYOvi9OrYsx33Ig57BsQfrXv8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1785708},"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"},"./package.json":"./package.json"},"gitHead":"903f729eda4c4daaa041a973d74e885cd5f28d30","_npmUser":{"name":"circle-npm-ci","email":"devops@circle.com"},"_npmVersion":"10.9.8","description":"Swap provider for on-chain token swaps via Circle's stablecoin APIs","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","dependencies":{"zod":"3.25.67","bs58":"^6.0.0","bn.js":"^5.2.3","abitype":"^1.1.0","@noble/curves":"1.4.2","@solana/web3.js":"^1.98.4","@coral-xyz/anchor":"^0.31.1","@ethersproject/bytes":"^5.8.0","@ethersproject/units":"^5.8.0","@ethersproject/address":"^5.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/provider-stablecoin-service-swap_1.3.0_1784139164531_0.9863819576769677","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@circle-fin/provider-stablecoin-service-swap","version":"1.4.0","keywords":["circle","circle-fin","usdc","stablecoin","sdk","typescript","provider","swap","dex","token-swap","app-kit","swap-kit"],"_id":"@circle-fin/provider-stablecoin-service-swap@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":"ae3daf78e68ba5bf8d77d44ba8b12836d5481852","tarball":"https://registry.npmjs.org/@circle-fin/provider-stablecoin-service-swap/-/provider-stablecoin-service-swap-1.4.0.tgz","fileCount":10,"integrity":"sha512-IQUjeFBpyG3v2msLbIXKMFH8Ecdkv448gFDtogk/pm06L4MDuWKQPxNFoUZt+a8o8ogTQ1KkueUrvXj/gmG3Kw==","signatures":[{"sig":"MEYCIQCza6VfvMfkf1fZ1VYJhCmG0ZCyx4xUB2naVHx2/enLpwIhAM/gyO6ERWN960FubXO8pzpath4QbUByWgnBIjQypGr2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1797792},"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"},"./package.json":"./package.json"},"gitHead":"191745f9068376056e144e612e74cdd68747fb32","_npmUser":{"name":"circle-npm-ci","email":"devops@circle.com"},"_npmVersion":"10.9.8","description":"Swap provider for on-chain token swaps via Circle's stablecoin APIs","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","dependencies":{"zod":"3.25.67","bs58":"^6.0.0","bn.js":"^5.2.3","abitype":"^1.1.0","@noble/curves":"1.4.2","@solana/web3.js":"^1.98.4","@coral-xyz/anchor":"^0.31.1","@ethersproject/bytes":"^5.8.0","@ethersproject/units":"^5.8.0","@ethersproject/address":"^5.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/provider-stablecoin-service-swap_1.4.0_1785274089952_0.23600263705786495","host":"s3://npm-registry-packages-npm-production"}},"1.4.1":{"name":"@circle-fin/provider-stablecoin-service-swap","version":"1.4.1","keywords":["circle","circle-fin","usdc","stablecoin","sdk","typescript","provider","swap","dex","token-swap","app-kit","swap-kit"],"_id":"@circle-fin/provider-stablecoin-service-swap@1.4.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":"436baab4b66b9aefa941fe9211452176b3e75ae7","tarball":"https://registry.npmjs.org/@circle-fin/provider-stablecoin-service-swap/-/provider-stablecoin-service-swap-1.4.1.tgz","fileCount":10,"integrity":"sha512-qDCvniDm6QWKPHsOnz7k1qxOX1WhWvK/JdpSZZvH7ogE4oReqtU7xGKdD17xgD2AFcOmedIBBbn9SEbXhuw42g==","signatures":[{"sig":"MEQCIDoBJxXC56g12uQF78TABjlC9laty9EAduDdHghdsr6UAiB1F22GoDheXOYrcmtHmvbuj0uWqhWKflvYSn8Qs6o6IQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1805265},"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"},"./package.json":"./package.json"},"gitHead":"789a49161025a99df1950726437b252becea64bc","_npmUser":{"name":"circle-npm-ci","email":"devops@circle.com"},"_npmVersion":"10.9.8","description":"Swap provider for on-chain token swaps via Circle's stablecoin APIs","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"zod":"3.25.67","bs58":"^6.0.0","bn.js":"^5.2.3","abitype":"^1.1.0","@noble/curves":"1.4.2","@solana/web3.js":"^1.98.4","@coral-xyz/anchor":"^0.31.1","@ethersproject/bytes":"^5.8.0","@ethersproject/units":"^5.8.0","@ethersproject/address":"^5.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/provider-stablecoin-service-swap_1.4.1_1786132761219_0.11923934692651872","host":"s3://npm-registry-packages-npm-production"}},"1.4.2":{"name":"@circle-fin/provider-stablecoin-service-swap","version":"1.4.2","keywords":["circle","circle-fin","usdc","stablecoin","sdk","typescript","provider","swap","dex","token-swap","app-kit","swap-kit"],"_id":"@circle-fin/provider-stablecoin-service-swap@1.4.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":"0315f4e8ff0932464f1a2f7a40f063c55ff3fd9a","tarball":"https://registry.npmjs.org/@circle-fin/provider-stablecoin-service-swap/-/provider-stablecoin-service-swap-1.4.2.tgz","fileCount":10,"integrity":"sha512-Y8dYqtyTOTTUZkIW6c3vPOfAiKoiefgCwW6sC1TwNHwgMr6PJqcramRC+xpd1Pwyxo0JCicqgdY/cWmyEPlDjQ==","signatures":[{"sig":"MEQCIFGRd4e9uruKtr0s+l/KJHb4RoEQa6rDhwz6W/YLuMSxAiAdvIdVU67DkTdtHDJTaEyUpEIFoGr9WfkRtY7kOO1pFw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQD2PdNWDX5HuR669tVdyzm1sCfj0yIgBL2eO6VNjylg/wIhAMDCDgUAdzAk6c7+y/Jsfb7VW03AjlZDrfsM7DigB23J","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1829422},"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"},"./package.json":"./package.json"},"gitHead":"bd2baaedcf8710331a7641968a8382ecd33ef242","_npmUser":{"name":"circle-npm-ci","email":"devops@circle.com"},"_npmVersion":"10.9.8","description":"Swap provider for on-chain token swaps via Circle's stablecoin APIs","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"zod":"3.25.67","bs58":"^6.0.0","bn.js":"^5.2.3","abitype":"^1.1.0","@noble/curves":"1.4.2","@solana/web3.js":"^1.98.4","@coral-xyz/anchor":"^0.31.1","@ethersproject/bytes":"^5.8.0","@ethersproject/units":"^5.8.0","@ethersproject/address":"^5.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/provider-stablecoin-service-swap_1.4.2_1787268468829_0.031896594270760525","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@circle-fin/provider-stablecoin-service-swap","version":"1.5.0","keywords":["circle","circle-fin","usdc","stablecoin","sdk","typescript","provider","swap","dex","token-swap","app-kit","swap-kit"],"_id":"@circle-fin/provider-stablecoin-service-swap@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":"40b0bcc58116a7ecd4b2ae43a037de6ddc241781","tarball":"https://registry.npmjs.org/@circle-fin/provider-stablecoin-service-swap/-/provider-stablecoin-service-swap-1.5.0.tgz","fileCount":10,"integrity":"sha512-XYkBIKmQ+6D21lWKsNjHLFfE61jvhke9dKbS8v3FWVA0mcMcWRVEWO57X5BPbEZaAhu+F715eMLoUS52gFQuOg==","signatures":[{"sig":"MEUCIQCDVUDK44WWE+lYheVbthWu9xRrOE0rLueRcjZB3P0B8AIgY7F+BqcWteUTO79qVdErJKIINi5dvVvp7HAto1e2iVY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIBjOV6YcwXapRowwpnPBrwwamTGuX8h6hWD7FwwZ2UGmAiEAsNSybBpx+aS/WteEVeA6hqnCIPf3I7H9vYrOeNCF78g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1854551},"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"},"./package.json":"./package.json"},"gitHead":"d9855bd5f7195ee1b91920206108a9995ff6fa80","_npmUser":{"name":"circle-npm-ci","email":"devops@circle.com"},"_npmVersion":"10.9.8","description":"Swap provider for on-chain token swaps via Circle's stablecoin APIs","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"zod":"3.25.67","bs58":"^6.0.0","bn.js":"^5.2.3","abitype":"^1.1.0","@noble/curves":"1.4.2","@solana/web3.js":"^1.98.4","@coral-xyz/anchor":"^0.31.1","@ethersproject/bytes":"^5.8.0","@ethersproject/units":"^5.8.0","@ethersproject/address":"^5.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/provider-stablecoin-service-swap_1.5.0_1787933006071_0.7583750154341367","host":"s3://npm-registry-packages-npm-production"}},"1.5.1":{"name":"@circle-fin/provider-stablecoin-service-swap","version":"1.5.1","keywords":["circle","circle-fin","usdc","stablecoin","sdk","typescript","provider","swap","dex","token-swap","app-kit","swap-kit"],"_id":"@circle-fin/provider-stablecoin-service-swap@1.5.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":"dfa9c968baccda349f93ee935f087dc8fb267a54","tarball":"https://registry.npmjs.org/@circle-fin/provider-stablecoin-service-swap/-/provider-stablecoin-service-swap-1.5.1.tgz","fileCount":10,"integrity":"sha512-35XTrc3aQ/R5Sh30Ha0L4UU84+JB55eZrc7EAI0sIdal0y2rBbwNTw3Jt6RfcwNYFUy/us9CkMXgVEFhdVCEyQ==","signatures":[{"sig":"MEYCIQCOu/5TlJv6dtaCY/vPcZUNw4UzrdzRX3/PonW4Ye30WAIhALSHVwPWKWkyXCoVofrg4v06bXli7T02xiBXUFbCUcj8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIGtDhmD/TLOmnwKTIz8dEvBWIRrntDXmsBf+YsZYM77uAiEAn8TgvzXQ2eKMTR54ZuYkjPEQObGGNnoiAOKazeGpMW4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1866915},"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"},"./package.json":"./package.json"},"gitHead":"c2a7a00c58dbca7a65867370c7626c5394e59e5b","_npmUser":{"name":"circle-npm-ci","email":"devops@circle.com"},"_npmVersion":"10.9.8","description":"Swap provider for on-chain token swaps via Circle's stablecoin APIs","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"zod":"3.25.67","bs58":"^6.0.0","bn.js":"^5.2.3","abitype":"^1.1.0","@noble/curves":"1.4.2","@solana/web3.js":"^1.98.4","@coral-xyz/anchor":"^0.31.1","@ethersproject/bytes":"^5.8.0","@ethersproject/units":"^5.8.0","@ethersproject/address":"^5.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/provider-stablecoin-service-swap_1.5.1_1788393516435_0.4247003469276749","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"@circle-fin/provider-stablecoin-service-swap","version":"1.6.0","keywords":["circle","circle-fin","usdc","stablecoin","sdk","typescript","provider","swap","dex","token-swap","app-kit","swap-kit"],"_id":"@circle-fin/provider-stablecoin-service-swap@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":"57c0623d510ea623b3d04a5290e5239e5ab3ee39","tarball":"https://registry.npmjs.org/@circle-fin/provider-stablecoin-service-swap/-/provider-stablecoin-service-swap-1.6.0.tgz","fileCount":10,"integrity":"sha512-WVA6LY4rYgSCXoVd0ukbTQXjX9RwbKzoq8IJzr9kqSKUllTMMrf449G94WUZKVihSUGs4uPUkhlDBDH2ZVwRng==","signatures":[{"sig":"MEYCIQCd1w9XL3+lSZk/pJ43sVbWGX1y53sq81AwLh5YB70qngIhAK1vgeOj+rQk4sOL0nrae50/Udpsm5q4DC7UMEzHPyXg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCn/a4TiyDGUnbMKyu76NSVuqwKEbnL+/mbxC1avT3oeAIgHrWP/R2+u02Nvux7zz49xqvLaIaX7TFHP4MWBPrCeRg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1910513},"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"},"./package.json":"./package.json"},"gitHead":"5aa7ba5ea62678adf92458d83ef5afe1c61f4a41","_npmUser":{"name":"circle-npm-ci","email":"devops@circle.com"},"_npmVersion":"10.9.8","description":"Swap provider for on-chain token swaps via Circle's stablecoin APIs","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"zod":"3.25.67","bs58":"^6.0.0","bn.js":"^5.2.3","abitype":"^1.1.0","@noble/curves":"1.4.2","@solana/web3.js":"^1.98.4","@coral-xyz/anchor":"^0.31.1","@ethersproject/bytes":"^5.8.0","@ethersproject/units":"^5.8.0","@ethersproject/address":"^5.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/provider-stablecoin-service-swap_1.6.0_1789519140019_0.3417577129914502","host":"s3://npm-registry-packages-npm-production"}},"1.6.1":{"_id":"@circle-fin/provider-stablecoin-service-swap@1.6.1","dist":{"shasum":"27a4a056f939c4b38661f67fb9acbf002267bb4e","tarball":"https://registry.npmjs.org/@circle-fin/provider-stablecoin-service-swap/-/provider-stablecoin-service-swap-1.6.1.tgz","fileCount":10,"integrity":"sha512-maXUgsw5C+ABRKGjOgdw4rmwygzz+yXyjRvSPjdyy0n+yDNU6b8Zhs7e2V7SuXcI582cVvXhZtIBnExvYtt+9g==","signatures":[{"sig":"MEUCIQCqTMnfAnEJE0OxhkVLY4eht2XahST5SRlFZw9j09IXmAIgNALIogCqOxLiw/6yU5dc6GCzzmjUeWrkDDLy6PKQIVA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDJwtnu1IPdkMXXi1aAHBcOxZhdyhhBeRVxHoZYpOeD0QIhAKYBhJbF5CykpBMIystirodx/mywSw7bcYlFtcaPFt5t"}],"unpackedSize":1947558},"main":"./index.cjs","name":"@circle-fin/provider-stablecoin-service-swap","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"},"./package.json":"./package.json"},"gitHead":"a3c239ff67725474d4c37138fcf07a15cf51fd44","version":"1.6.1","_npmUser":{"name":"circle-npm-ci","email":"devops@circle.com"},"keywords":["circle","circle-fin","usdc","stablecoin","sdk","typescript","provider","swap","dex","token-swap","app-kit","swap-kit"],"_npmVersion":"10.9.8","description":"Swap provider for on-chain token swaps via Circle's stablecoin APIs","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"}],"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"zod":"3.25.67","bs58":"^6.0.0","bn.js":"^5.2.3","abitype":"^1.1.0","@noble/curves":"1.4.2","@solana/web3.js":"^1.98.4","@coral-xyz/anchor":"^0.31.1","@ethersproject/bytes":"^5.8.0","@ethersproject/units":"^5.8.0","@ethersproject/address":"^5.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/provider-stablecoin-service-swap_1.6.1_1790775653626_0.23251713689891296"}}},"time":{"created":"2026-03-17T23:59:51.766Z","modified":"2026-09-30T13:40:53.961Z","1.0.0":"2026-03-17T23:59:52.076Z","1.0.1":"2026-03-20T21:38:25.988Z","1.0.2":"2026-03-30T15:12:42.357Z","1.0.3":"2026-04-03T20:05:42.344Z","1.1.0":"2026-04-09T21:52:08.458Z","1.1.1":"2026-05-05T07:01:10.057Z","1.1.2":"2026-05-09T01:15:25.104Z","1.1.3":"2026-05-14T01:38:11.461Z","1.1.4":"2026-05-18T23:34:52.916Z","1.1.5":"2026-05-28T23:15:16.217Z","1.2.0":"2026-06-23T23:43:39.997Z","1.2.1":"2026-06-24T19:15:58.192Z","1.2.2":"2026-07-06T20:46:55.591Z","1.3.0":"2026-07-15T18:12:44.685Z","1.4.0":"2026-07-28T21:28:10.161Z","1.4.1":"2026-08-07T19:59:21.384Z","1.4.2":"2026-08-20T23:27:48.918Z","1.5.0":"2026-08-28T16:03:26.177Z","1.5.1":"2026-09-02T23:58:36.530Z","1.6.0":"2026-09-16T00:39:00.149Z","1.6.1":"2026-09-30T13:40:53.772Z"},"keywords":["circle","circle-fin","usdc","stablecoin","sdk","typescript","provider","swap","dex","token-swap","app-kit","swap-kit"],"description":"Swap provider for on-chain token swaps via Circle's stablecoin APIs","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":"# Stablecoin Service Swap Provider\n\n<div align=\"center\">\n\n[![npm version](https://badge.fury.io/js/@circle-fin%2Fprovider-stablecoin-service-swap.svg)](https://badge.fury.io/js/@circle-fin%2Fprovider-stablecoin-service-swap)\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**Circle's Stablecoin Service swap provider**\n\n_Managed single-chain token swaps backed by Circle's Stablecoin Service API._\n\n</div>\n\n## Table of Contents\n\n- [Stablecoin Service Swap Provider](#stablecoin-service-swap-provider)\n  - [Table of Contents](#table-of-contents)\n  - [Overview](#overview)\n  - [Installation](#installation)\n  - [Quick Start](#quick-start)\n    - [Option 1: With Swap Kit (Recommended)](#option-1-with-swap-kit-recommended)\n    - [Option 2: Direct Provider Usage](#option-2-direct-provider-usage)\n  - [Features](#features)\n  - [Supported Chains](#supported-chains)\n  - [Supported Tokens](#supported-tokens)\n  - [EIP-2612 Gasless Approvals](#eip-2612-gasless-approvals)\n    - [How It Works](#how-it-works)\n    - [Supported EIP-2612 Tokens](#supported-eip-2612-tokens)\n    - [Code Examples](#code-examples)\n    - [User Experience Comparison](#user-experience-comparison)\n  - [Usage Examples](#usage-examples)\n    - [Basic Swap Operation](#basic-swap-operation)\n    - [Getting a Swap Estimate](#getting-a-swap-estimate)\n    - [Route Validation](#route-validation)\n    - [Custom Fee Configuration](#custom-fee-configuration)\n  - [Configuration Options](#configuration-options)\n    - [Provider Configuration](#provider-configuration)\n    - [Swap Configuration](#swap-configuration)\n  - [Error Handling](#error-handling)\n    - [Common Error Scenarios](#common-error-scenarios)\n  - [Swap Process](#swap-process)\n  - [Service Integration Architecture](#service-integration-architecture)\n    - [Overview](#overview-1)\n    - [Integration Flow](#integration-flow)\n    - [API Endpoints](#api-endpoints)\n    - [Authentication](#authentication)\n    - [Request Flow](#request-flow)\n  - [Integration with Swap Kit](#integration-with-swap-kit)\n  - [API Reference](#api-reference)\n    - [Core Methods](#core-methods)\n    - [Types](#types)\n  - [Development](#development)\n  - [Contributing](#contributing)\n  - [License](#license)\n\n## Overview\n\nThe `StablecoinServiceSwapProvider` enables token swaps on individual blockchain networks through Circle's managed Stablecoin Service. This provider integrates with DEX aggregators to find optimal swap routes while maintaining the security and reliability standards of the App Kits ecosystem.\n\nWhile primarily designed to power the [Swap Kit](https://www.npmjs.com/package/@circle-fin/swap-kit), this provider can also be used **directly in applications** that need fine-grained control over the swap process or want to integrate without the full App Kits framework.\n\n## Installation\n\n```bash\nnpm install @circle-fin/provider-stablecoin-service-swap\n# or\nyarn add @circle-fin/provider-stablecoin-service-swap\n```\n\n> **Note**: This provider is included by default with the [Swap Kit](https://www.npmjs.com/package/@circle-fin/swap-kit). Import this provider directly if you need custom swap integration.\n\n## Quick Start\n\n### Option 1: With Swap Kit (Recommended)\n\n```typescript\nimport { createSwapKitContext, swap, Ethereum } from '@circle-fin/swap-kit'\nimport { createViemAdapterFromPrivateKey } from '@circle-fin/adapter-viem-v2'\n\n// Create adapter\nconst adapter = createViemAdapterFromPrivateKey({\n  privateKey: process.env.PRIVATE_KEY,\n})\n\n// Provider included by default\nconst context = createSwapKitContext()\n\nconst result = await swap(context, {\n  from: { adapter, chain: Ethereum },\n  tokenIn: 'USDC',\n  tokenOut: 'USDT',\n  amountIn: '100.50',\n})\n```\n\n### Option 2: Direct Provider Usage\n\n```typescript\nimport { StablecoinServiceSwapProvider } from '@circle-fin/provider-stablecoin-service-swap'\nimport { ViemAdapter } from '@circle-fin/adapter-viem-v2'\nimport { Ethereum } from '@core/chains'\nimport { createPublicClient, createWalletClient, http } from 'viem'\nimport { mainnet } from 'viem/chains'\nimport { privateKeyToAccount } from 'viem/accounts'\n\nconst account = privateKeyToAccount(process.env.PRIVATE_KEY)\nconst provider = new StablecoinServiceSwapProvider()\n\n// Create adapter\nconst adapter = new ViemAdapter({\n  publicClient: createPublicClient({ chain: mainnet, transport: http() }),\n  walletClient: createWalletClient({\n    account,\n    chain: mainnet,\n    transport: http(),\n  }),\n})\n\n// Check route support\nconst isSupported = provider.supportsRoute(\n  '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', // USDC\n  '0xdAC17F958D2ee523a2206206994597C13D831ec7', // USDT\n  Ethereum,\n)\n\n// Get swap estimate\nconst estimate = await provider.estimate({\n  from: { adapter, chain: Ethereum },\n  tokenInAddress: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',\n  tokenOutAddress: '0xdAC17F958D2ee523a2206206994597C13D831ec7',\n  amountIn: '100.50',\n  to: '0x742d35Cc6634C0532925a3b844Bc454e4438f44e',\n  config: { slippageBps: 300 },\n})\n\n// Execute swap\nconst result = await provider.swap({\n  from: { adapter, chain: Ethereum },\n  tokenInAddress: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',\n  tokenOutAddress: '0xdAC17F958D2ee523a2206206994597C13D831ec7',\n  amountIn: '100.50',\n  to: '0x742d35Cc6634C0532925a3b844Bc454e4438f44e',\n  config: { slippageBps: 300 },\n})\n```\n\n## Features\n\n- ✅ **Single-chain swaps** - Swap tokens on the same blockchain\n- ✅ **Broad token support** - Stablecoins, wrapped tokens, and native tokens\n- ✅ **Comprehensive validation** - Route validation and parameter checking\n- ✅ **Type safety** - Full TypeScript support with detailed error handling\n- ✅ **Enhanced error debugging** - Automatic transaction hash and explorer URL inclusion in post-submission errors\n- ✅ **Permit support** - Gas-efficient EIP-2612 permit signatures when available\n- ✅ **Custom fees** - Configurable developer fees for monetization\n- ✅ **Slippage protection** - Stop-limit enforcement to prevent adverse swaps\n\n## Supported Chains\n\n**EVM Chains**: Base, Ethereum, Polygon PoS, and more\n\n**Non-EVM Chains**: Solana\n\n**Note**: Testnet chains are not supported for swap operations.\n\n## Supported Tokens\n\nEach swap operation supports trading between the following token categories:\n\n### **Stablecoins (6 decimals):**\n\n- **USDC** - USD Coin\n- **EURC** - Euro Coin\n- **USDT** - Tether USD\n- **PYUSD** - PayPal USD\n\n### **Stablecoins (18 decimals):**\n\n- **DAI** - MakerDAO stablecoin\n- **USDE** - Ethena USD (synthetic dollar)\n\n### **Wrapped Tokens:**\n\n- **WBTC** - Wrapped Bitcoin (8 decimals)\n- **WETH** - Wrapped Ethereum (18 decimals)\n- **WSOL** - Wrapped Solana (9 decimals)\n- **WAVAX** - Wrapped Avalanche (18 decimals)\n- **WPOL** - Wrapped Polygon (18 decimals)\n\n### **Native Token:**\n\n- **NATIVE** - Chain's native gas token (ETH on Ethereum, SOL on Solana, etc.)\n\nToken availability varies by chain. Use `supportsRoute()` to verify support before executing swaps.\n\n## EIP-2612 Gasless Approvals\n\nThe provider automatically uses EIP-2612 permit signatures for supported tokens, enabling **single-transaction swaps** without requiring separate approval transactions.\n\n### How It Works\n\n**For EIP-2612 Supported Tokens** (USDC):\n\n1. User signs a permit (off-chain, gasless)\n2. Swap executes with permit included\n3. **Total: 1 transaction**\n\n**For Non-EIP-2612 Tokens** (USDT, DAI, etc.):\n\n1. Approval transaction executes and confirms\n2. Swap executes\n3. **Total: 2 transactions**\n\nThe provider automatically detects token support and handles the appropriate flow.\n\n### Automatic Approval for All ERC-20 Tokens\n\nThe provider now supports **automatic approval for all ERC-20 tokens**, not just USDC. When a token doesn't support EIP-2612 permits, the provider intelligently selects the appropriate approval method:\n\n**USDC Approval Strategy:**\n\n- Uses `increaseAllowance()` function (OpenZeppelin ERC20 extension)\n- Safer approach that avoids race conditions\n- Relative increase instead of absolute value\n- Recommended by Circle for USDC\n\n**Other ERC-20 Tokens (USDT, DAI, etc.):**\n\n- Uses standard `approve()` function (ERC-20 specification)\n- Industry standard used by Uniswap, 1inch, and all major DEXs\n- Theoretical race condition is rare in practice\n- Atomic swap execution provides additional safety\n\n**Race Condition Note:**\n\nThe standard ERC-20 `approve()` function has a known theoretical race condition where a malicious spender could front-run an approval change. However:\n\n- This is extremely rare in practice\n- It's the accepted industry standard (used by all major DEXs)\n- The adapter contract is trusted and swaps are atomic\n- USDC uses the safer `increaseAllowance()` to avoid this entirely\n\n### Supported EIP-2612 Tokens\n\n| Token    | Chains                                                                                 |\n| -------- | -------------------------------------------------------------------------------------- |\n| **USDC** | Ethereum, Base, Arbitrum, Optimism, Polygon, Avalanche, World Chain, Sepolia (testnet) |\n\n### Code Examples\n\n#### Swap with EIP-2612 (Single Transaction)\n\n```typescript\n// Swap USDC → USDT (USDC supports EIP-2612)\nconst result = await provider.swap({\n  from: { adapter, chain: Ethereum },\n  tokenInAddress: 'USDC', // Supports EIP-2612\n  tokenOutAddress: 'USDT',\n  amountIn: '100.00',\n  to: '0xRecipient',\n})\n// Flow: User signs permit → Swap executes (1 tx)\nconsole.log('Completed in 1 transaction:', result.txHash)\n```\n\n#### Swap USDT with Automatic Approval (Two Transactions)\n\n```typescript\n// Swap USDT → USDC (USDT doesn't support EIP-2612)\nconst result = await provider.swap({\n  from: { adapter, chain: Ethereum },\n  tokenInAddress: '0xdAC17F958D2ee523a2206206994597C13D831ec7', // USDT\n  tokenOutAddress: 'USDC',\n  amountIn: '100.00',\n  to: '0xRecipient',\n})\n// Flow: Approval tx (uses token.approve) → Wait → Swap tx (2 txs)\nconsole.log('Completed in 2 transactions:', result.txHash)\n```\n\n#### Swap DAI with Automatic Approval (Two Transactions)\n\n```typescript\n// Swap DAI → USDC (DAI doesn't support EIP-2612 on some chains)\nconst result = await provider.swap({\n  from: { adapter, chain: Ethereum },\n  tokenInAddress: '0x6B175474E89094C44Da98b954EedeAC495271d0F', // DAI\n  tokenOutAddress: 'USDC',\n  amountIn: '1000.00',\n  to: '0xRecipient',\n})\n// Flow: Approval tx (uses token.approve) → Wait → Swap tx (2 txs)\nconsole.log('Completed in 2 transactions:', result.txHash)\n```\n\n#### Generic ERC-20 Token Swap\n\n```typescript\n// Swap any ERC-20 token (automatic approval detection)\nconst result = await provider.swap({\n  from: { adapter, chain: Ethereum },\n  tokenInAddress: '0xYourTokenAddress',\n  tokenOutAddress: 'USDC',\n  amountIn: '100.00',\n  to: '0xRecipient',\n})\n// Provider automatically:\n// 1. Detects if token supports EIP-2612\n// 2. Uses permit (1 tx) or approve (2 tx) accordingly\n// 3. Selects increaseAllowance (USDC) or approve (other tokens)\nconsole.log('Swap completed:', result.txHash)\n```\n\n### User Experience Comparison\n\n| Scenario                  | Transactions | User Actions                    | Gas Cost |\n| ------------------------- | ------------ | ------------------------------- | -------- |\n| **EIP-2612 Token (USDC)** | 1            | Sign permit + Confirm swap      | Lower ⚡ |\n| **Non-EIP-2612 Token**    | 2            | Confirm approval + Confirm swap | Higher   |\n\n## Usage Examples\n\n### Basic Swap Operation\n\n```typescript\nimport { StablecoinServiceSwapProvider } from '@circle-fin/provider-stablecoin-service-swap'\nimport { createViemAdapterFromPrivateKey } from '@circle-fin/adapter-viem-v2'\nimport { Ethereum } from '@core/chains'\n\n// Create adapter\nconst adapter = createViemAdapterFromPrivateKey({\n  privateKey: process.env.PRIVATE_KEY,\n})\n\n// Instantiate provider\nconst provider = new StablecoinServiceSwapProvider()\n\n// Execute swap: USDC → USDT on Ethereum\nconst result = await provider.swap({\n  from: { adapter, chain: Ethereum },\n  tokenInAddress: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', // USDC\n  tokenOutAddress: '0xdAC17F958D2ee523a2206206994597C13D831ec7', // USDT\n  amountIn: '100.00',\n  to: '0x742d35Cc6634C0532925a3b844Bc454e4438f44e',\n  config: {\n    slippageBps: 300, // 3% max slippage\n    allowanceStrategy: 'permit', // Use EIP-2612 permit\n  },\n})\n\nconsole.log('Transaction hash:', result.txHash)\nconsole.log('Fees:', result.fees)\n```\n\n### Getting a Swap Estimate\n\n```typescript\nimport { StablecoinServiceSwapProvider } from '@circle-fin/provider-stablecoin-service-swap'\nimport { createViemAdapterFromPrivateKey } from '@circle-fin/adapter-viem-v2'\nimport { Ethereum } from '@core/chains'\n\nconst adapter = createViemAdapterFromPrivateKey({\n  privateKey: process.env.PRIVATE_KEY,\n})\n\nconst provider = new StablecoinServiceSwapProvider()\n\n// Get estimate before swapping\nconst estimate = await provider.estimate({\n  from: { adapter, chain: Ethereum },\n  tokenInAddress: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', // USDC\n  tokenOutAddress: '0xdAC17F958D2ee523a2206206994597C13D831ec7', // USDT\n  amountIn: '100.00',\n  to: '0x742d35Cc6634C0532925a3b844Bc454e4438f44e',\n  config: { slippageBps: 300 },\n})\n\nconsole.log('Stop limit:', estimate.stopLimit) // { token: 'USDT', amount: '99.5' }\nconsole.log('Estimated output:', estimate.estimatedOutput) // { token: 'USDT', amount: '99.5' }\nconsole.log('Fee breakdown:', estimate.fees)\n```\n\n### Route Validation\n\n```typescript\nimport { StablecoinServiceSwapProvider } from '@circle-fin/provider-stablecoin-service-swap'\nimport { Ethereum, Base, Solana } from '@core/chains'\n\nconst provider = new StablecoinServiceSwapProvider()\n\n// Check if USDC → USDT is supported on Ethereum\nconst ethereumSupported = provider.supportsRoute(\n  '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', // USDC\n  '0xdAC17F958D2ee523a2206206994597C13D831ec7', // USDT\n  Ethereum,\n)\nconsole.log('Ethereum USDC→USDT:', ethereumSupported) // true\n\n// Check native token swap on Base\nconst baseNativeSupported = provider.supportsRoute(\n  '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913', // USDC on Base\n  'NATIVE', // Native gas token\n  Base,\n)\nconsole.log('Base USDC→NATIVE:', baseNativeSupported) // true\n\n// Solana support\nconst solanaSupported = provider.supportsRoute(\n  'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v', // USDC on Solana\n  'Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB', // USDT on Solana\n  Solana,\n)\nconsole.log('Solana USDC→USDT:', solanaSupported) // true\n```\n\n### Custom Fee Configuration\n\nThe provider supports two custom fee approaches (mutually exclusive):\n\n**Option 1: Percentage-Based (Simple)**\n\n```typescript\nimport { StablecoinServiceSwapProvider } from '@circle-fin/provider-stablecoin-service-swap'\nimport { createViemAdapterFromPrivateKey } from '@circle-fin/adapter-viem-v2'\nimport { Ethereum } from '@core/chains'\n\nconst adapter = createViemAdapterFromPrivateKey({\n  privateKey: process.env.PRIVATE_KEY,\n})\n\nconst provider = new StablecoinServiceSwapProvider()\n\n// Percentage fee per-swap\nconst result = await provider.swap({\n  from: { adapter, chain: Ethereum },\n  tokenInAddress: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', // USDC\n  tokenOutAddress: '0xdAC17F958D2ee523a2206206994597C13D831ec7', // USDT\n  amountIn: '100.00',\n  to: '0x742d35Cc6634C0532925a3b844Bc454e4438f44e',\n  config: {\n    customFee: {\n      percentageBps: 1000, // 10% fee\n      recipientAddress: '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0',\n    },\n  },\n})\n```\n\n**Option 2: Absolute Amount (Via SwapKit Callback)**\n\n```typescript\n// When using SwapKit with callback, provider receives absolute amount\nconst result = await provider.swap({\n  from: { adapter, chain: Ethereum },\n  tokenInAddress: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',\n  tokenOutAddress: '0xdAC17F958D2ee523a2206206994597C13D831ec7',\n  amountIn: '100.00',\n  to: '0x742d35Cc6634C0532925a3b844Bc454e4438f44e',\n  config: {\n    customFee: {\n      amount: '5000000', // 5 USDC - calculated by SwapKit callback\n      recipientAddress: '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0',\n    },\n  },\n})\n```\n\n> **Note:** Provider accepts either `percentageBps` OR `amount` (mutually exclusive). Service calculates the fee for `percentageBps`, or uses the provided `amount` directly.\n\n## Configuration Options\n\n### Swap Configuration\n\n| Option                       | Type                    | Default    | Description                                                  |\n| ---------------------------- | ----------------------- | ---------- | ------------------------------------------------------------ |\n| `allowanceStrategy`          | `'permit' \\| 'approve'` | `'permit'` | Token approval strategy                                      |\n| `slippageBps`                | `number`                | `300`      | Max slippage in basis points (300 = 3%)                      |\n| `stopLimit`                  | `string`                | -          | Minimum acceptable output in base units                      |\n| `customFee.percentageBps`    | `number`                | -          | Fee percentage (100 = 1%, mutually exclusive with amount)    |\n| `customFee.amount`           | `string`                | -          | Absolute fee in base units (mutually exclusive with percentageBps) |\n| `customFee.recipientAddress` | `string`                | -          | Address that receives the fee (required if customFee is set) |\n| `apiKey`                     | `string`                | -          | Optional Circle API key (bearer credential); omit for permissionless mode |\n| `kitKey`                     | `string`                | -          | Deprecated alias for `apiKey`; still honored                 |\n| `provider`                   | `string`                | -          | DEX aggregator identifier                                    |\n\n> **Custom Fee:** Provide either `percentageBps` (service calculates) OR `amount` (absolute amount), not both.\n\n## Error Handling\n\nThe provider implements comprehensive error handling using `KitError`. Errors are categorized into two types:\n\n- **Fatal errors** - Unrecoverable errors that require configuration changes or user action (e.g., invalid parameters, unsupported routes, insufficient balance)\n- **Retryable errors** - Transient errors that may succeed on retry (e.g., network issues, service temporarily unavailable)\n\n```typescript\nimport { StablecoinServiceSwapProvider } from '@circle-fin/provider-stablecoin-service-swap'\nimport { isKitError, isFatalError, isRetryableError } from '@core/errors'\nimport { createViemAdapterFromPrivateKey } from '@circle-fin/adapter-viem-v2'\nimport { Ethereum } from '@core/chains'\n\nconst provider = new StablecoinServiceSwapProvider()\nconst adapter = createViemAdapterFromPrivateKey({\n  privateKey: process.env.PRIVATE_KEY,\n})\n\nconst params = {\n  from: { adapter, chain: Ethereum },\n  tokenInAddress: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',\n  tokenOutAddress: '0xdAC17F958D2ee523a2206206994597C13D831ec7',\n  amountIn: '100.00',\n  to: '0x742d35Cc6634C0532925a3b844Bc454e4438f44e',\n}\n\ntry {\n  // Check route first\n  const isSupported = provider.supportsRoute(\n    params.tokenInAddress,\n    params.tokenOutAddress,\n    Ethereum,\n  )\n\n  if (!isSupported) {\n    console.error('Route not supported')\n    return\n  }\n\n  const result = await provider.swap(params)\n  console.log('Swap completed:', result.txHash)\n} catch (error) {\n  if (isKitError(error)) {\n    console.error('Error code:', error.code)\n    console.error('Message:', error.message)\n\n    if (isFatalError(error)) {\n      // Unrecoverable error - fix configuration\n      console.error('Fatal error, check your parameters')\n    } else if (isRetryableError(error)) {\n      // Transient error - retry is possible\n      console.log('Retrying...')\n    }\n  } else {\n    // Unexpected error\n    console.error('Unexpected error:', error)\n  }\n}\n```\n\n### Accessing Transaction Details from Errors\n\nWhen a swap transaction fails after submission (e.g., reverts on-chain, runs out of gas), the error automatically includes the transaction hash and block explorer URL for easy debugging:\n\n```typescript\nimport { StablecoinServiceSwapProvider } from '@circle-fin/provider-stablecoin-service-swap'\nimport { isKitError } from '@core/errors'\nimport { createViemAdapterFromPrivateKey } from '@circle-fin/adapter-viem-v2'\nimport { Ethereum } from '@core/chains'\n\nconst provider = new StablecoinServiceSwapProvider()\nconst adapter = createViemAdapterFromPrivateKey({\n  privateKey: process.env.PRIVATE_KEY,\n})\n\ntry {\n  const result = await provider.swap({\n    from: { adapter, chain: Ethereum },\n    tokenInAddress: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',\n    tokenOutAddress: '0xdAC17F958D2ee523a2206206994597C13D831ec7',\n    amountIn: '100.00',\n    to: '0x742d35Cc6634C0532925a3b844Bc454e4438f44e',\n  })\n} catch (error) {\n  if (isKitError(error)) {\n    console.error('Swap failed:', error.message)\n    console.error('Error code:', error.code)\n\n    // Access transaction details from error trace\n    const trace = error.cause?.trace as any\n    if (trace?.txHash) {\n      console.log('Transaction hash:', trace.txHash)\n      // Output: 0x1234567890abcdef...\n    }\n    if (trace?.explorerUrl) {\n      console.log('View on explorer:', trace.explorerUrl)\n      // Output: https://etherscan.io/tx/0x1234567890abcdef...\n    }\n  }\n}\n```\n\n**Note:** Transaction details (`txHash` and `explorerUrl`) are only included for errors that occur **after** the transaction has been submitted to the blockchain. Pre-submission errors (validation, insufficient balance, etc.) will not include these fields.\n\n### Common Error Scenarios\n\n| Error                | Cause                             | Resolution                                      | Transaction Details  |\n| -------------------- | --------------------------------- | ----------------------------------------------- | -------------------- |\n| Route not supported  | Token pair not available on chain | Use `supportsRoute()` to verify before swapping | ❌ No                |\n| Validation failed    | Invalid parameters                | Check parameter format and types                | ❌ No                |\n| Insufficient balance | Not enough tokens                 | Verify wallet balance before swap               | ❌ No                |\n| Slippage exceeded    | Price moved beyond tolerance      | Increase `slippageBps` or retry                 | ✅ Yes (if on-chain) |\n| Transaction reverted | On-chain execution failed         | Check `explorerUrl` in error trace for details  | ✅ Yes               |\n| Out of gas           | Insufficient gas for execution    | Check `explorerUrl` in error trace for details  | ✅ Yes               |\n\n## Swap Process\n\nThe provider handles the complete swap flow:\n\n1. **Validation** - Validate input parameters and route support\n2. **Approval** - Grant token allowance (via permit or approve transaction)\n3. **Execution** - Submit swap transaction to the network\n4. **Confirmation** - Wait for transaction confirmation\n\nEach step is tracked and can be monitored through the result object.\n\n## Service Integration Architecture\n\n### Overview\n\nThe `StablecoinServiceSwapProvider` integrates with Circle's Stablecoin Service API to enable managed, secure token swaps. The integration follows a client-server architecture where the provider acts as a client to Circle's hosted swap service.\n\n### Integration Flow\n\nThe provider handles the following steps:\n\n1. **Validate params & route** - Ensures the swap request is valid\n2. **Build swap request** - Constructs the API request payload\n3. **Call Stablecoin Service API** - Makes HTTPS request to Circle's service\n4. **Process response** - Validates and parses the service response\n5. **Execute blockchain transaction** - Submits the transaction via the adapter\n\n### API Endpoints\n\nThe provider interacts with these Stablecoin Service API endpoints:\n\n**Quote Endpoint**\n\n- **Purpose**: Get swap quote with estimated amounts and fees\n- **Method**: `GET /v1/stablecoinKits/quote`\n- **Authentication**: Optional API key via Authorization header (permissionless when omitted)\n- **Request**: Query parameters with token addresses, amount, slippage\n- **Response**: Quote with estimated output, minimum output, and fee context\n\n**Swap Execution Endpoint**\n\n- **Purpose**: Execute the actual swap transaction\n- **Method**: `POST /v1/stablecoinKits/swap`\n- **Authentication**: Optional API key via Authorization header (permissionless when omitted)\n- **Request**: Swap parameters including quote details and addresses\n- **Response**: Transaction data with instructions for execution\n\n### Authentication\n\nAuthentication with Circle's Stablecoin Service is optional. When an API key is provided it is sent as a bearer credential; when omitted, the provider operates in permissionless mode (no `Authorization` header).\n\nThe credential is supplied per operation via `config.apiKey`, not on the\nconstructor — `StablecoinServiceSwapProviderConfig` carries only `customFee`.\n\n```typescript\nconst provider = new StablecoinServiceSwapProvider()\n\nconst result = await provider.swap({\n  from: { adapter, chain: Ethereum },\n  tokenInAddress: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',\n  tokenOutAddress: '0xdAC17F958D2ee523a2206206994597C13D831ec7',\n  amountIn: '100.00',\n  to: '0x742d35Cc6634C0532925a3b844Bc454e4438f44e',\n  config: {\n    // Read the key from the environment; never hard-code it.\n    apiKey: process.env.CIRCLE_API_KEY, // <ENV>_API_KEY:<keyId>:<keySecret>\n  },\n})\n```\n\n> **Legacy `kitKey`:** `config.kitKey` is deprecated in favor of\n> `config.apiKey`. It keeps working, and legacy `KIT_KEY:<keyId>:<keySecret>`\n> values remain accepted by either field. When both fields are set, `apiKey`\n> wins.\n\n### Request Flow\n\n**Swap Request**\n\n```typescript\n// Provider handles:\n// a) Token approval (via EIP-2612 permit or approve tx)\n// b) Swap execution request to service\n// c) Transaction submission via adapter\n// d) Confirmation waiting\n\n// Returns:\n{\n  txHash: '0xabc123...',\n  tokenInAddress: '0xA0b...',\n  tokenOutAddress: '0xdAC...',\n  amountIn: '100000000',\n  fees: [{ token: 'USDC', amount: '0.003' }]\n}\n```\n\n## Integration with Swap Kit\n\nThis provider is designed specifically for the [Swap Kit](https://www.npmjs.com/package/@circle-fin/swap-kit):\n\n```typescript\nimport {\n  createSwapKitContext,\n  estimate,\n  swap,\n  getSupportedChains,\n} from '@circle-fin/swap-kit'\nimport { createViemAdapterFromPrivateKey } from '@circle-fin/adapter-viem-v2'\nimport { Ethereum } from '@circle-fin/swap-kit'\n\nconst adapter = createViemAdapterFromPrivateKey({\n  privateKey: process.env.PRIVATE_KEY,\n})\n\n// Provider is included by default\nconst context = createSwapKitContext()\n\n// Get supported chains from all providers\nconst chains = getSupportedChains(context)\nconsole.log(\n  'Supported chains:',\n  chains.map((c) => c.name),\n)\n\n// Execute swap\nconst result = await swap(context, {\n  from: { adapter, chain: Ethereum },\n  tokenIn: 'USDC',\n  tokenOut: 'USDT',\n  amountIn: '100.50',\n  config: { slippageBps: 300 },\n})\n\nconsole.log('Transaction:', result.txHash)\n```\n\n## API Reference\n\n### Core Methods\n\n#### `supportsRoute(tokenInAddress, tokenOutAddress, chain)`\n\nCheck whether the provider supports a swap route.\n\n- **Parameters**:\n  - `tokenInAddress: string` - Input token address or native currency symbol\n  - `tokenOutAddress: string` - Output token address or native currency symbol\n  - `chain: ChainDefinition` - The chain where the swap will occur\n- **Returns**: `boolean` - `true` if the route is supported\n\n#### `estimate(params)`\n\nGet a swap estimate without executing the transaction.\n\n- **Parameters**: `ServiceSwapParams` - Swap parameters\n- **Returns**: `Promise<EstimateResult>` - Estimate including transaction data and fees\n\n#### `swap(params)`\n\nExecute a token swap operation.\n\n- **Parameters**: `ServiceSwapParams` - Swap parameters\n- **Returns**: `Promise<SwapResult>` - Result including transaction hash and swap details\n\n### Types\n\n| Type                                  | Description                                         |\n| ------------------------------------- | --------------------------------------------------- |\n| `StablecoinServiceSwapProviderConfig` | Provider constructor configuration                  |\n| `ServiceSwapParams`                   | Parameters for swap operations                      |\n| `ServiceSwapConfig`                   | Optional swap configuration                         |\n| `EstimateResult`                      | Swap estimate response                              |\n| `SwapResult`                          | Swap execution result                               |\n| `SwappingProvider`                    | Interface for swap provider implementations         |\n| `AllowanceStrategy`                   | Token approval strategy (`'permit'` or `'approve'`) |\n\n## Development\n\nThis package is part of the App Kits monorepo.\n\n```bash\n# Build\nnx build @circle-fin/provider-stablecoin-service-swap\n\n# Test\nnx test @circle-fin/provider-stablecoin-service-swap\n\n# Lint\nnx lint @circle-fin/provider-stablecoin-service-swap\n```\n\n## Contributing\n\nContributions are welcome! Please see [CONTRIBUTING.md](../../CONTRIBUTING.md) for details.\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 for single-chain swapping?**\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"}