@eco-incorp/sauce 0.99.5 → 0.99.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1197) hide show
  1. package/README.md +58 -16
  2. package/actions/action-program.schema.json +480 -379
  3. package/actions/dist/abis.d.ts +19 -18
  4. package/actions/dist/abis.d.ts.map +1 -1
  5. package/actions/dist/abis.js +29 -29
  6. package/actions/dist/compile.d.ts +4 -4
  7. package/actions/dist/compile.d.ts.map +1 -1
  8. package/actions/dist/compile.js +3 -1
  9. package/actions/dist/compose.d.ts +63 -6
  10. package/actions/dist/compose.d.ts.map +1 -1
  11. package/actions/dist/compose.js +100 -16
  12. package/actions/dist/index.d.ts +1 -1
  13. package/actions/dist/index.d.ts.map +1 -1
  14. package/actions/dist/names.d.ts +88 -0
  15. package/actions/dist/names.d.ts.map +1 -0
  16. package/actions/dist/names.js +324 -0
  17. package/actions/dist/program.d.ts.map +1 -1
  18. package/actions/dist/program.js +115 -5
  19. package/actions/dist/registry.d.ts +10 -8
  20. package/actions/dist/registry.d.ts.map +1 -1
  21. package/actions/dist/registry.js +10 -8
  22. package/actions/dist/schema.d.ts.map +1 -1
  23. package/actions/dist/schema.js +99 -12
  24. package/actions/dist/semantics.d.ts +12 -2
  25. package/actions/dist/semantics.d.ts.map +1 -1
  26. package/actions/dist/semantics.js +78 -8
  27. package/actions/dist/spec.d.ts +30 -0
  28. package/actions/dist/spec.d.ts.map +1 -1
  29. package/actions/dist/spec.js +151 -138
  30. package/actions/dist/split-swap.d.ts +10 -5
  31. package/actions/dist/split-swap.d.ts.map +1 -1
  32. package/actions/dist/split-swap.js +48 -7
  33. package/actions/dist/to-quote.d.ts +14 -5
  34. package/actions/dist/to-quote.d.ts.map +1 -1
  35. package/actions/dist/to-quote.js +210 -244
  36. package/actions/dist/to-sauce.d.ts +18 -4
  37. package/actions/dist/to-sauce.d.ts.map +1 -1
  38. package/actions/dist/to-sauce.js +232 -205
  39. package/actions/dist/types.d.ts +245 -147
  40. package/actions/dist/types.d.ts.map +1 -1
  41. package/actions/dist/types.js +4 -0
  42. package/docs/README.md +38 -0
  43. package/docs/api/README.md +37 -23
  44. package/docs/api/compiler.md +53 -12
  45. package/docs/api/contracts.md +105 -0
  46. package/docs/api/coverage.md +80 -57
  47. package/docs/api/router.md +238 -0
  48. package/docs/api/routes.md +31 -22
  49. package/docs/concepts/architecture.md +30 -5
  50. package/docs/concepts/saucescript.md +53 -56
  51. package/docs/examples/README.md +21 -14
  52. package/docs/examples/action-program.ts +51 -35
  53. package/docs/examples/cross-chain-cascade.sauce.ts +4 -0
  54. package/docs/examples/cross-chain-intent.sauce.ts +2 -1
  55. package/docs/examples/evm-execution.ts +2 -4
  56. package/docs/examples/first-intent.ts +7 -2
  57. package/docs/examples/pot-router.ts +19 -0
  58. package/docs/examples/registry-names.ts +52 -0
  59. package/docs/examples/router-route.sauce.ts +31 -0
  60. package/docs/examples/router-route.ts +72 -0
  61. package/docs/examples/router-swap.sauce.ts +16 -0
  62. package/docs/examples/router-swap.ts +47 -0
  63. package/docs/examples/venue-where-deployed.sauce.ts +14 -0
  64. package/docs/guides/actions.md +230 -120
  65. package/docs/guides/builders-and-actions.md +24 -15
  66. package/docs/guides/cli.md +1442 -0
  67. package/docs/guides/compiling.md +24 -10
  68. package/docs/guides/intents.md +260 -17
  69. package/docs/guides/mcp.md +539 -0
  70. package/docs/guides/nested-intents.md +21 -6
  71. package/docs/guides/protocols-and-tokens.md +235 -36
  72. package/docs/guides/quick-start.md +5 -0
  73. package/docs/guides/solana.md +199 -52
  74. package/docs/guides/verification.md +2 -2
  75. package/mcp/dist/config.js +78 -0
  76. package/mcp/dist/config.js.map +1 -0
  77. package/mcp/dist/entry.js +112 -0
  78. package/mcp/dist/entry.js.map +1 -0
  79. package/mcp/dist/files.js +64 -0
  80. package/mcp/dist/files.js.map +1 -0
  81. package/mcp/dist/guard.js +262 -0
  82. package/mcp/dist/guard.js.map +1 -0
  83. package/mcp/dist/http.js +111 -0
  84. package/mcp/dist/http.js.map +1 -0
  85. package/mcp/dist/intents.js +579 -0
  86. package/mcp/dist/intents.js.map +1 -0
  87. package/mcp/dist/prompts.js +153 -0
  88. package/mcp/dist/prompts.js.map +1 -0
  89. package/mcp/dist/reach.js +98 -0
  90. package/mcp/dist/reach.js.map +1 -0
  91. package/mcp/dist/resources.js +154 -0
  92. package/mcp/dist/resources.js.map +1 -0
  93. package/mcp/dist/sdk.js +34 -0
  94. package/mcp/dist/sdk.js.map +1 -0
  95. package/mcp/dist/server.js +119 -0
  96. package/mcp/dist/server.js.map +1 -0
  97. package/mcp/dist/setup.js +189 -0
  98. package/mcp/dist/setup.js.map +1 -0
  99. package/mcp/dist/skilltools.js +520 -0
  100. package/mcp/dist/skilltools.js.map +1 -0
  101. package/mcp/dist/terms.js +93 -0
  102. package/mcp/dist/terms.js.map +1 -0
  103. package/mcp/dist/tools.js +1497 -0
  104. package/mcp/dist/tools.js.map +1 -0
  105. package/mcp/dist/wallets.js +168 -0
  106. package/mcp/dist/wallets.js.map +1 -0
  107. package/package.json +18 -13
  108. package/sdk/dist/artifacts/V12Deployments.json +3 -1
  109. package/sdk/dist/artifacts/V12EngineGate.json +1 -2
  110. package/sdk/dist/artifacts/V12KitchenProxy.json +1 -0
  111. package/sdk/dist/chains/canonical.d.ts +15 -24
  112. package/sdk/dist/chains/canonical.d.ts.map +1 -1
  113. package/sdk/dist/chains/canonical.js +18 -29
  114. package/sdk/dist/chains/canonical.js.map +1 -1
  115. package/sdk/dist/cli/actions.d.ts +29 -0
  116. package/sdk/dist/cli/actions.d.ts.map +1 -0
  117. package/sdk/dist/cli/actions.js +122 -0
  118. package/sdk/dist/cli/actions.js.map +1 -0
  119. package/sdk/dist/cli/args.d.ts +118 -0
  120. package/sdk/dist/cli/args.d.ts.map +1 -0
  121. package/sdk/dist/cli/args.js +354 -0
  122. package/sdk/dist/cli/args.js.map +1 -0
  123. package/sdk/dist/cli/assume.d.ts +51 -0
  124. package/sdk/dist/cli/assume.d.ts.map +1 -0
  125. package/sdk/dist/cli/assume.js +207 -0
  126. package/sdk/dist/cli/assume.js.map +1 -0
  127. package/sdk/dist/cli/chain.d.ts +170 -0
  128. package/sdk/dist/cli/chain.d.ts.map +1 -0
  129. package/sdk/dist/cli/chain.js +457 -0
  130. package/sdk/dist/cli/chain.js.map +1 -0
  131. package/sdk/dist/cli/commands.d.ts +226 -0
  132. package/sdk/dist/cli/commands.d.ts.map +1 -0
  133. package/sdk/dist/cli/commands.js +637 -0
  134. package/sdk/dist/cli/commands.js.map +1 -0
  135. package/sdk/dist/cli/create.d.ts +70 -0
  136. package/sdk/dist/cli/create.d.ts.map +1 -0
  137. package/sdk/dist/cli/create.js +483 -0
  138. package/sdk/dist/cli/create.js.map +1 -0
  139. package/sdk/dist/cli/diagnostics.d.ts +12 -0
  140. package/sdk/dist/cli/diagnostics.d.ts.map +1 -0
  141. package/sdk/dist/cli/diagnostics.js +200 -0
  142. package/sdk/dist/cli/diagnostics.js.map +1 -0
  143. package/sdk/dist/cli/effects.d.ts +71 -0
  144. package/sdk/dist/cli/effects.d.ts.map +1 -0
  145. package/sdk/dist/cli/effects.js +279 -0
  146. package/sdk/dist/cli/effects.js.map +1 -0
  147. package/sdk/dist/cli/fill.d.ts +83 -0
  148. package/sdk/dist/cli/fill.d.ts.map +1 -0
  149. package/sdk/dist/cli/fill.js +734 -0
  150. package/sdk/dist/cli/fill.js.map +1 -0
  151. package/sdk/dist/cli/funding.d.ts +126 -0
  152. package/sdk/dist/cli/funding.d.ts.map +1 -0
  153. package/sdk/dist/cli/funding.js +514 -0
  154. package/sdk/dist/cli/funding.js.map +1 -0
  155. package/sdk/dist/cli/globals.d.ts +16 -0
  156. package/sdk/dist/cli/globals.d.ts.map +1 -0
  157. package/sdk/dist/cli/globals.js +197 -0
  158. package/sdk/dist/cli/globals.js.map +1 -0
  159. package/sdk/dist/cli/init.d.ts +34 -0
  160. package/sdk/dist/cli/init.d.ts.map +1 -0
  161. package/sdk/dist/cli/init.js +181 -0
  162. package/sdk/dist/cli/init.js.map +1 -0
  163. package/sdk/dist/cli/inputs.d.ts +72 -0
  164. package/sdk/dist/cli/inputs.d.ts.map +1 -0
  165. package/sdk/dist/cli/inputs.js +152 -0
  166. package/sdk/dist/cli/inputs.js.map +1 -0
  167. package/sdk/dist/cli/inspect.d.ts +48 -0
  168. package/sdk/dist/cli/inspect.d.ts.map +1 -0
  169. package/sdk/dist/cli/inspect.js +536 -0
  170. package/sdk/dist/cli/inspect.js.map +1 -0
  171. package/sdk/dist/cli/intent-commands.d.ts +71 -0
  172. package/sdk/dist/cli/intent-commands.d.ts.map +1 -0
  173. package/sdk/dist/cli/intent-commands.js +698 -0
  174. package/sdk/dist/cli/intent-commands.js.map +1 -0
  175. package/sdk/dist/cli/intent-svm.d.ts +15 -0
  176. package/sdk/dist/cli/intent-svm.d.ts.map +1 -0
  177. package/sdk/dist/cli/intent-svm.js +222 -0
  178. package/sdk/dist/cli/intent-svm.js.map +1 -0
  179. package/sdk/dist/cli/intents.d.ts +43 -0
  180. package/sdk/dist/cli/intents.d.ts.map +1 -0
  181. package/sdk/dist/cli/intents.js +89 -0
  182. package/sdk/dist/cli/intents.js.map +1 -0
  183. package/sdk/dist/cli/interactive.d.ts +11 -0
  184. package/sdk/dist/cli/interactive.d.ts.map +1 -0
  185. package/sdk/dist/cli/interactive.js +161 -0
  186. package/sdk/dist/cli/interactive.js.map +1 -0
  187. package/sdk/dist/cli/lifecycle-svm.d.ts +109 -0
  188. package/sdk/dist/cli/lifecycle-svm.d.ts.map +1 -0
  189. package/sdk/dist/cli/lifecycle-svm.js +299 -0
  190. package/sdk/dist/cli/lifecycle-svm.js.map +1 -0
  191. package/sdk/dist/cli/lifecycle.d.ts +439 -0
  192. package/sdk/dist/cli/lifecycle.d.ts.map +1 -0
  193. package/sdk/dist/cli/lifecycle.js +1721 -0
  194. package/sdk/dist/cli/lifecycle.js.map +1 -0
  195. package/sdk/dist/cli/main.d.ts +3 -0
  196. package/sdk/dist/cli/main.d.ts.map +1 -0
  197. package/sdk/dist/cli/main.js +8 -0
  198. package/sdk/dist/cli/main.js.map +1 -0
  199. package/sdk/dist/cli/mcp.d.ts +66 -0
  200. package/sdk/dist/cli/mcp.d.ts.map +1 -0
  201. package/sdk/dist/cli/mcp.js +169 -0
  202. package/sdk/dist/cli/mcp.js.map +1 -0
  203. package/sdk/dist/cli/password.d.ts +54 -0
  204. package/sdk/dist/cli/password.d.ts.map +1 -0
  205. package/sdk/dist/cli/password.js +148 -0
  206. package/sdk/dist/cli/password.js.map +1 -0
  207. package/sdk/dist/cli/policy.d.ts +130 -0
  208. package/sdk/dist/cli/policy.d.ts.map +1 -0
  209. package/sdk/dist/cli/policy.js +702 -0
  210. package/sdk/dist/cli/policy.js.map +1 -0
  211. package/sdk/dist/cli/pools.d.ts +140 -0
  212. package/sdk/dist/cli/pools.d.ts.map +1 -0
  213. package/sdk/dist/cli/pools.js +658 -0
  214. package/sdk/dist/cli/pools.js.map +1 -0
  215. package/sdk/dist/cli/price.d.ts +74 -0
  216. package/sdk/dist/cli/price.d.ts.map +1 -0
  217. package/sdk/dist/cli/price.js +321 -0
  218. package/sdk/dist/cli/price.js.map +1 -0
  219. package/sdk/dist/cli/prompt.d.ts +30 -0
  220. package/sdk/dist/cli/prompt.d.ts.map +1 -0
  221. package/sdk/dist/cli/prompt.js +53 -0
  222. package/sdk/dist/cli/prompt.js.map +1 -0
  223. package/sdk/dist/cli/publish.d.ts +48 -0
  224. package/sdk/dist/cli/publish.d.ts.map +1 -0
  225. package/sdk/dist/cli/publish.js +480 -0
  226. package/sdk/dist/cli/publish.js.map +1 -0
  227. package/sdk/dist/cli/receipt.d.ts +35 -0
  228. package/sdk/dist/cli/receipt.d.ts.map +1 -0
  229. package/sdk/dist/cli/receipt.js +63 -0
  230. package/sdk/dist/cli/receipt.js.map +1 -0
  231. package/sdk/dist/cli/rehearse.d.ts +80 -0
  232. package/sdk/dist/cli/rehearse.d.ts.map +1 -0
  233. package/sdk/dist/cli/rehearse.js +265 -0
  234. package/sdk/dist/cli/rehearse.js.map +1 -0
  235. package/sdk/dist/cli/report.d.ts +69 -0
  236. package/sdk/dist/cli/report.d.ts.map +1 -0
  237. package/sdk/dist/cli/report.js +206 -0
  238. package/sdk/dist/cli/report.js.map +1 -0
  239. package/sdk/dist/cli/returned.d.ts +16 -0
  240. package/sdk/dist/cli/returned.d.ts.map +1 -0
  241. package/sdk/dist/cli/returned.js +111 -0
  242. package/sdk/dist/cli/returned.js.map +1 -0
  243. package/sdk/dist/cli/run.d.ts +40 -0
  244. package/sdk/dist/cli/run.d.ts.map +1 -0
  245. package/sdk/dist/cli/run.js +3162 -0
  246. package/sdk/dist/cli/run.js.map +1 -0
  247. package/sdk/dist/cli/signer.d.ts +72 -0
  248. package/sdk/dist/cli/signer.d.ts.map +1 -0
  249. package/sdk/dist/cli/signer.js +243 -0
  250. package/sdk/dist/cli/signer.js.map +1 -0
  251. package/sdk/dist/cli/simulate.d.ts +11 -0
  252. package/sdk/dist/cli/simulate.d.ts.map +1 -0
  253. package/sdk/dist/cli/simulate.js +246 -0
  254. package/sdk/dist/cli/simulate.js.map +1 -0
  255. package/sdk/dist/cli/skills.d.ts +77 -0
  256. package/sdk/dist/cli/skills.d.ts.map +1 -0
  257. package/sdk/dist/cli/skills.js +527 -0
  258. package/sdk/dist/cli/skills.js.map +1 -0
  259. package/sdk/dist/cli/solana.d.ts +183 -0
  260. package/sdk/dist/cli/solana.d.ts.map +1 -0
  261. package/sdk/dist/cli/solana.js +1360 -0
  262. package/sdk/dist/cli/solana.js.map +1 -0
  263. package/sdk/dist/cli/store.d.ts +60 -0
  264. package/sdk/dist/cli/store.d.ts.map +1 -0
  265. package/sdk/dist/cli/store.js +196 -0
  266. package/sdk/dist/cli/store.js.map +1 -0
  267. package/sdk/dist/cli/support.d.ts +144 -0
  268. package/sdk/dist/cli/support.d.ts.map +1 -0
  269. package/sdk/dist/cli/support.js +217 -0
  270. package/sdk/dist/cli/support.js.map +1 -0
  271. package/sdk/dist/cli/svm-effects.d.ts +50 -0
  272. package/sdk/dist/cli/svm-effects.d.ts.map +1 -0
  273. package/sdk/dist/cli/svm-effects.js +196 -0
  274. package/sdk/dist/cli/svm-effects.js.map +1 -0
  275. package/sdk/dist/cli/terminal.d.ts +42 -0
  276. package/sdk/dist/cli/terminal.d.ts.map +1 -0
  277. package/sdk/dist/cli/terminal.js +136 -0
  278. package/sdk/dist/cli/terminal.js.map +1 -0
  279. package/sdk/dist/cli/verify.d.ts +32 -0
  280. package/sdk/dist/cli/verify.d.ts.map +1 -0
  281. package/sdk/dist/cli/verify.js +185 -0
  282. package/sdk/dist/cli/verify.js.map +1 -0
  283. package/sdk/dist/cli/wallet-commands.d.ts +59 -0
  284. package/sdk/dist/cli/wallet-commands.d.ts.map +1 -0
  285. package/sdk/dist/cli/wallet-commands.js +222 -0
  286. package/sdk/dist/cli/wallet-commands.js.map +1 -0
  287. package/sdk/dist/cli/wallet-send.d.ts +38 -0
  288. package/sdk/dist/cli/wallet-send.d.ts.map +1 -0
  289. package/sdk/dist/cli/wallet-send.js +303 -0
  290. package/sdk/dist/cli/wallet-send.js.map +1 -0
  291. package/sdk/dist/cli/wallets.d.ts +79 -0
  292. package/sdk/dist/cli/wallets.d.ts.map +1 -0
  293. package/sdk/dist/cli/wallets.js +297 -0
  294. package/sdk/dist/cli/wallets.js.map +1 -0
  295. package/sdk/dist/deployments/index.d.ts +4 -62
  296. package/sdk/dist/deployments/index.d.ts.map +1 -1
  297. package/sdk/dist/deployments/index.js +4 -84
  298. package/sdk/dist/deployments/index.js.map +1 -1
  299. package/sdk/dist/deployments/pot.d.ts +17 -7
  300. package/sdk/dist/deployments/pot.d.ts.map +1 -1
  301. package/sdk/dist/deployments/pot.js +25 -10
  302. package/sdk/dist/deployments/pot.js.map +1 -1
  303. package/sdk/dist/deployments/releases.d.ts +36 -0
  304. package/sdk/dist/deployments/releases.d.ts.map +1 -0
  305. package/sdk/dist/deployments/releases.js +61 -0
  306. package/sdk/dist/deployments/releases.js.map +1 -0
  307. package/sdk/dist/deployments/releases.json +76 -0
  308. package/sdk/dist/deployments/v12-addresses.d.ts +13 -0
  309. package/sdk/dist/deployments/v12-addresses.d.ts.map +1 -1
  310. package/sdk/dist/deployments/v12-addresses.js +16 -3
  311. package/sdk/dist/deployments/v12-addresses.js.map +1 -1
  312. package/sdk/dist/deposit/index.d.ts +6 -6
  313. package/sdk/dist/deposit/index.d.ts.map +1 -1
  314. package/sdk/dist/deposit/index.js +1 -1
  315. package/sdk/dist/deposit/index.js.map +1 -1
  316. package/sdk/dist/deposit/params.d.ts +4 -4
  317. package/sdk/dist/deposit/params.d.ts.map +1 -1
  318. package/sdk/dist/deposit/params.js +7 -4
  319. package/sdk/dist/deposit/params.js.map +1 -1
  320. package/sdk/dist/deposit/source.d.ts +3 -30
  321. package/sdk/dist/deposit/source.d.ts.map +1 -1
  322. package/sdk/dist/deposit/source.js +7 -83
  323. package/sdk/dist/deposit/source.js.map +1 -1
  324. package/sdk/dist/deposit/templates.d.ts +1 -2
  325. package/sdk/dist/deposit/templates.d.ts.map +1 -1
  326. package/sdk/dist/deposit/templates.js +10 -2
  327. package/sdk/dist/deposit/templates.js.map +1 -1
  328. package/sdk/dist/deposit/types.d.ts +14 -12
  329. package/sdk/dist/deposit/types.d.ts.map +1 -1
  330. package/sdk/dist/deposit/types.js +6 -0
  331. package/sdk/dist/deposit/types.js.map +1 -1
  332. package/sdk/dist/descriptors/accessors.d.ts +38 -35
  333. package/sdk/dist/descriptors/accessors.d.ts.map +1 -1
  334. package/sdk/dist/descriptors/accessors.js +16 -0
  335. package/sdk/dist/descriptors/accessors.js.map +1 -1
  336. package/sdk/dist/descriptors/call.d.ts +66 -14
  337. package/sdk/dist/descriptors/call.d.ts.map +1 -1
  338. package/sdk/dist/descriptors/call.js +94 -13
  339. package/sdk/dist/descriptors/call.js.map +1 -1
  340. package/sdk/dist/descriptors/contracts.generated.d.ts +3393 -0
  341. package/sdk/dist/descriptors/contracts.generated.d.ts.map +1 -0
  342. package/sdk/dist/descriptors/contracts.generated.js +728 -0
  343. package/sdk/dist/descriptors/contracts.generated.js.map +1 -0
  344. package/sdk/dist/descriptors/derive.d.ts +20 -11
  345. package/sdk/dist/descriptors/derive.d.ts.map +1 -1
  346. package/sdk/dist/descriptors/derive.js +68 -30
  347. package/sdk/dist/descriptors/derive.js.map +1 -1
  348. package/sdk/dist/descriptors/index.d.ts +6 -7
  349. package/sdk/dist/descriptors/index.d.ts.map +1 -1
  350. package/sdk/dist/descriptors/index.js +2 -2
  351. package/sdk/dist/descriptors/index.js.map +1 -1
  352. package/sdk/dist/descriptors/links.d.ts +23 -214
  353. package/sdk/dist/descriptors/links.d.ts.map +1 -1
  354. package/sdk/dist/descriptors/links.js +1 -232
  355. package/sdk/dist/descriptors/links.js.map +1 -1
  356. package/sdk/dist/descriptors/query.d.ts +1 -1
  357. package/sdk/dist/descriptors/query.d.ts.map +1 -1
  358. package/sdk/dist/descriptors/query.js +1 -1
  359. package/sdk/dist/descriptors/query.js.map +1 -1
  360. package/sdk/dist/descriptors/registry.d.ts +2 -5
  361. package/sdk/dist/descriptors/registry.d.ts.map +1 -1
  362. package/sdk/dist/descriptors/registry.js +11 -66
  363. package/sdk/dist/descriptors/registry.js.map +1 -1
  364. package/sdk/dist/embedded/resolve.d.ts +4 -4
  365. package/sdk/dist/embedded/resolve.d.ts.map +1 -1
  366. package/sdk/dist/embedded/resolve.js +12 -8
  367. package/sdk/dist/embedded/resolve.js.map +1 -1
  368. package/sdk/dist/embedded/skills.generated.d.ts +1 -1
  369. package/sdk/dist/embedded/skills.generated.d.ts.map +1 -1
  370. package/sdk/dist/embedded/skills.generated.js +137 -136
  371. package/sdk/dist/embedded/skills.generated.js.map +1 -1
  372. package/sdk/dist/embedded/sources.generated.d.ts.map +1 -1
  373. package/sdk/dist/embedded/sources.generated.js +40 -6
  374. package/sdk/dist/embedded/sources.generated.js.map +1 -1
  375. package/sdk/dist/evm/engine.d.ts +813 -10
  376. package/sdk/dist/evm/engine.d.ts.map +1 -1
  377. package/sdk/dist/evm/engine.js +127 -8
  378. package/sdk/dist/evm/engine.js.map +1 -1
  379. package/sdk/dist/index.d.ts +3 -2
  380. package/sdk/dist/index.d.ts.map +1 -1
  381. package/sdk/dist/index.js +6 -2
  382. package/sdk/dist/index.js.map +1 -1
  383. package/sdk/dist/plugin/index.d.ts +3 -2
  384. package/sdk/dist/plugin/index.d.ts.map +1 -1
  385. package/sdk/dist/plugin/index.js.map +1 -1
  386. package/sdk/dist/price.d.ts +40 -0
  387. package/sdk/dist/price.d.ts.map +1 -0
  388. package/sdk/dist/price.js +101 -0
  389. package/sdk/dist/price.js.map +1 -0
  390. package/sdk/dist/protocols/aerodrome/abis.d.ts +76 -0
  391. package/sdk/dist/protocols/aerodrome/abis.d.ts.map +1 -1
  392. package/sdk/dist/protocols/aerodrome/abis.js +61 -0
  393. package/sdk/dist/protocols/aerodrome/abis.js.map +1 -1
  394. package/sdk/dist/protocols/aerodrome-slipstream/abis.d.ts +70 -0
  395. package/sdk/dist/protocols/aerodrome-slipstream/abis.d.ts.map +1 -1
  396. package/sdk/dist/protocols/aerodrome-slipstream/abis.js +54 -0
  397. package/sdk/dist/protocols/aerodrome-slipstream/abis.js.map +1 -1
  398. package/sdk/dist/protocols/camelot/abis.d.ts +178 -0
  399. package/sdk/dist/protocols/camelot/abis.d.ts.map +1 -1
  400. package/sdk/dist/protocols/camelot/abis.js +139 -0
  401. package/sdk/dist/protocols/camelot/abis.js.map +1 -1
  402. package/sdk/dist/protocols/cbeth/functions.d.ts +2 -2
  403. package/sdk/dist/protocols/cbeth/functions.d.ts.map +1 -1
  404. package/sdk/dist/protocols/cbeth/functions.js +4 -6
  405. package/sdk/dist/protocols/cbeth/functions.js.map +1 -1
  406. package/sdk/dist/protocols/crvusd/functions.d.ts +2 -2
  407. package/sdk/dist/protocols/crvusd/functions.d.ts.map +1 -1
  408. package/sdk/dist/protocols/crvusd/functions.js +6 -6
  409. package/sdk/dist/protocols/eco-routes/abis.d.ts +792 -50
  410. package/sdk/dist/protocols/eco-routes/abis.d.ts.map +1 -1
  411. package/sdk/dist/protocols/eco-routes/abis.js +1058 -49
  412. package/sdk/dist/protocols/eco-routes/abis.js.map +1 -1
  413. package/sdk/dist/protocols/eco-routes/addresses.generated.d.ts +44 -61
  414. package/sdk/dist/protocols/eco-routes/addresses.generated.d.ts.map +1 -1
  415. package/sdk/dist/protocols/eco-routes/addresses.generated.js +45 -62
  416. package/sdk/dist/protocols/eco-routes/addresses.generated.js.map +1 -1
  417. package/sdk/dist/protocols/eco-routes/lookup.d.ts +10 -0
  418. package/sdk/dist/protocols/eco-routes/lookup.d.ts.map +1 -1
  419. package/sdk/dist/protocols/eco-routes/lookup.js +16 -0
  420. package/sdk/dist/protocols/eco-routes/lookup.js.map +1 -1
  421. package/sdk/dist/protocols/erc20/functions.d.ts +3 -3
  422. package/sdk/dist/protocols/erc20/functions.d.ts.map +1 -1
  423. package/sdk/dist/protocols/erc20/functions.js +6 -9
  424. package/sdk/dist/protocols/erc20/functions.js.map +1 -1
  425. package/sdk/dist/protocols/frax/functions.d.ts +2 -2
  426. package/sdk/dist/protocols/frax/functions.d.ts.map +1 -1
  427. package/sdk/dist/protocols/frax/functions.js +6 -6
  428. package/sdk/dist/protocols/gho/functions.d.ts +2 -2
  429. package/sdk/dist/protocols/gho/functions.d.ts.map +1 -1
  430. package/sdk/dist/protocols/gho/functions.js +4 -6
  431. package/sdk/dist/protocols/gho/functions.js.map +1 -1
  432. package/sdk/dist/protocols/liquity-v2/functions.d.ts +2 -2
  433. package/sdk/dist/protocols/liquity-v2/functions.d.ts.map +1 -1
  434. package/sdk/dist/protocols/liquity-v2/functions.js +4 -6
  435. package/sdk/dist/protocols/liquity-v2/functions.js.map +1 -1
  436. package/sdk/dist/protocols/maverick/abis.d.ts +77 -0
  437. package/sdk/dist/protocols/maverick/abis.d.ts.map +1 -1
  438. package/sdk/dist/protocols/maverick/abis.js +58 -0
  439. package/sdk/dist/protocols/maverick/abis.js.map +1 -1
  440. package/sdk/dist/protocols/maverick/addresses.d.ts.map +1 -1
  441. package/sdk/dist/protocols/maverick/addresses.js +4 -0
  442. package/sdk/dist/protocols/maverick/addresses.js.map +1 -1
  443. package/sdk/dist/protocols/pancakeswap-v2/abis.d.ts +52 -0
  444. package/sdk/dist/protocols/pancakeswap-v2/abis.d.ts.map +1 -1
  445. package/sdk/dist/protocols/pancakeswap-v2/abis.js +43 -0
  446. package/sdk/dist/protocols/pancakeswap-v2/abis.js.map +1 -1
  447. package/sdk/dist/protocols/pancakeswap-v3/abis.d.ts +73 -0
  448. package/sdk/dist/protocols/pancakeswap-v3/abis.d.ts.map +1 -1
  449. package/sdk/dist/protocols/pancakeswap-v3/abis.js +56 -0
  450. package/sdk/dist/protocols/pancakeswap-v3/abis.js.map +1 -1
  451. package/sdk/dist/protocols/permit2/abis.d.ts +113 -0
  452. package/sdk/dist/protocols/permit2/abis.d.ts.map +1 -1
  453. package/sdk/dist/protocols/permit2/abis.js +63 -0
  454. package/sdk/dist/protocols/permit2/abis.js.map +1 -1
  455. package/sdk/dist/protocols/quickswap/abis.d.ts +148 -0
  456. package/sdk/dist/protocols/quickswap/abis.d.ts.map +1 -1
  457. package/sdk/dist/protocols/quickswap/abis.js +119 -0
  458. package/sdk/dist/protocols/quickswap/abis.js.map +1 -1
  459. package/sdk/dist/protocols/sushiswap-v2/abis.d.ts +52 -0
  460. package/sdk/dist/protocols/sushiswap-v2/abis.d.ts.map +1 -1
  461. package/sdk/dist/protocols/sushiswap-v2/abis.js +42 -0
  462. package/sdk/dist/protocols/sushiswap-v2/abis.js.map +1 -1
  463. package/sdk/dist/protocols/synthra-v3/abis.d.ts +73 -0
  464. package/sdk/dist/protocols/synthra-v3/abis.d.ts.map +1 -1
  465. package/sdk/dist/protocols/synthra-v3/abis.js +55 -0
  466. package/sdk/dist/protocols/synthra-v3/abis.js.map +1 -1
  467. package/sdk/dist/protocols/trader-joe/abis.d.ts +133 -0
  468. package/sdk/dist/protocols/trader-joe/abis.d.ts.map +1 -1
  469. package/sdk/dist/protocols/trader-joe/abis.js +101 -0
  470. package/sdk/dist/protocols/trader-joe/abis.js.map +1 -1
  471. package/sdk/dist/protocols/trader-joe/addresses.d.ts.map +1 -1
  472. package/sdk/dist/protocols/trader-joe/addresses.js +5 -0
  473. package/sdk/dist/protocols/trader-joe/addresses.js.map +1 -1
  474. package/sdk/dist/protocols/uniswap-v2/abis.d.ts +52 -0
  475. package/sdk/dist/protocols/uniswap-v2/abis.d.ts.map +1 -1
  476. package/sdk/dist/protocols/uniswap-v2/abis.js +44 -0
  477. package/sdk/dist/protocols/uniswap-v2/abis.js.map +1 -1
  478. package/sdk/dist/protocols/uniswap-v3/abis.d.ts +73 -0
  479. package/sdk/dist/protocols/uniswap-v3/abis.d.ts.map +1 -1
  480. package/sdk/dist/protocols/uniswap-v3/abis.js +55 -0
  481. package/sdk/dist/protocols/uniswap-v3/abis.js.map +1 -1
  482. package/sdk/dist/protocols/uniswap-v4/abis.d.ts +247 -0
  483. package/sdk/dist/protocols/uniswap-v4/abis.d.ts.map +1 -1
  484. package/sdk/dist/protocols/uniswap-v4/abis.js +167 -0
  485. package/sdk/dist/protocols/uniswap-v4/abis.js.map +1 -1
  486. package/sdk/dist/protocols/uniswap-v4/addresses.d.ts.map +1 -1
  487. package/sdk/dist/protocols/uniswap-v4/addresses.js +50 -0
  488. package/sdk/dist/protocols/uniswap-v4/addresses.js.map +1 -1
  489. package/sdk/dist/protocols/unitflow-v3/abis.d.ts +73 -0
  490. package/sdk/dist/protocols/unitflow-v3/abis.d.ts.map +1 -1
  491. package/sdk/dist/protocols/unitflow-v3/abis.js +56 -0
  492. package/sdk/dist/protocols/unitflow-v3/abis.js.map +1 -1
  493. package/sdk/dist/protocols/velodrome/abis.d.ts +76 -0
  494. package/sdk/dist/protocols/velodrome/abis.d.ts.map +1 -1
  495. package/sdk/dist/protocols/velodrome/abis.js +61 -0
  496. package/sdk/dist/protocols/velodrome/abis.js.map +1 -1
  497. package/sdk/dist/recipes/cctp-split.sauce.ts +5 -3
  498. package/sdk/dist/recipes/plain-transfer.sauce.ts +5 -2
  499. package/sdk/dist/routes/accessor-index.d.ts +2 -2
  500. package/sdk/dist/routes/accessor-index.d.ts.map +1 -1
  501. package/sdk/dist/routes/accessor-index.js +4 -3
  502. package/sdk/dist/routes/accessor-index.js.map +1 -1
  503. package/sdk/dist/routes/ambient.d.ts +5 -0
  504. package/sdk/dist/routes/ambient.d.ts.map +1 -1
  505. package/sdk/dist/routes/ambient.js +20 -0
  506. package/sdk/dist/routes/ambient.js.map +1 -1
  507. package/sdk/dist/routes/ast-walk.d.ts +21 -3
  508. package/sdk/dist/routes/ast-walk.d.ts.map +1 -1
  509. package/sdk/dist/routes/ast-walk.js +33 -4
  510. package/sdk/dist/routes/ast-walk.js.map +1 -1
  511. package/sdk/dist/routes/available.d.ts +43 -0
  512. package/sdk/dist/routes/available.d.ts.map +1 -0
  513. package/sdk/dist/routes/available.js +230 -0
  514. package/sdk/dist/routes/available.js.map +1 -0
  515. package/sdk/dist/routes/builtins.generated.d.ts +180 -0
  516. package/sdk/dist/routes/builtins.generated.d.ts.map +1 -0
  517. package/sdk/dist/routes/builtins.generated.js +2 -0
  518. package/sdk/dist/routes/builtins.generated.js.map +1 -0
  519. package/sdk/dist/routes/chain-exports.generated.d.ts +13 -8
  520. package/sdk/dist/routes/chain-exports.generated.d.ts.map +1 -1
  521. package/sdk/dist/routes/chain-exports.generated.js.map +1 -1
  522. package/sdk/dist/routes/closure.d.ts.map +1 -1
  523. package/sdk/dist/routes/closure.js +13 -26
  524. package/sdk/dist/routes/closure.js.map +1 -1
  525. package/sdk/dist/routes/composed.d.ts.map +1 -1
  526. package/sdk/dist/routes/composed.js +20 -8
  527. package/sdk/dist/routes/composed.js.map +1 -1
  528. package/sdk/dist/routes/encode.d.ts +17 -0
  529. package/sdk/dist/routes/encode.d.ts.map +1 -1
  530. package/sdk/dist/routes/encode.js +14 -11
  531. package/sdk/dist/routes/encode.js.map +1 -1
  532. package/sdk/dist/routes/entry.d.ts +76 -0
  533. package/sdk/dist/routes/entry.d.ts.map +1 -0
  534. package/sdk/dist/routes/entry.js +478 -0
  535. package/sdk/dist/routes/entry.js.map +1 -0
  536. package/sdk/dist/routes/index.d.ts +21 -14
  537. package/sdk/dist/routes/index.d.ts.map +1 -1
  538. package/sdk/dist/routes/index.js +12 -9
  539. package/sdk/dist/routes/index.js.map +1 -1
  540. package/sdk/dist/routes/intent-body.d.ts +97 -0
  541. package/sdk/dist/routes/intent-body.d.ts.map +1 -0
  542. package/sdk/dist/routes/intent-body.js +441 -0
  543. package/sdk/dist/routes/intent-body.js.map +1 -0
  544. package/sdk/dist/routes/intent-dsl.d.ts +21 -6
  545. package/sdk/dist/routes/intent-dsl.d.ts.map +1 -1
  546. package/sdk/dist/routes/intent-dsl.js +34 -17
  547. package/sdk/dist/routes/intent-dsl.js.map +1 -1
  548. package/sdk/dist/routes/intent-sugar.d.ts +77 -4
  549. package/sdk/dist/routes/intent-sugar.d.ts.map +1 -1
  550. package/sdk/dist/routes/intent-sugar.js +358 -152
  551. package/sdk/dist/routes/intent-sugar.js.map +1 -1
  552. package/sdk/dist/routes/intent.d.ts +13 -1
  553. package/sdk/dist/routes/intent.d.ts.map +1 -1
  554. package/sdk/dist/routes/intent.js +37 -1
  555. package/sdk/dist/routes/intent.js.map +1 -1
  556. package/sdk/dist/routes/nest.d.ts +3 -2
  557. package/sdk/dist/routes/nest.d.ts.map +1 -1
  558. package/sdk/dist/routes/nest.js +5 -3
  559. package/sdk/dist/routes/nest.js.map +1 -1
  560. package/sdk/dist/routes/parse.d.ts +6 -0
  561. package/sdk/dist/routes/parse.d.ts.map +1 -0
  562. package/sdk/dist/routes/parse.js +39 -0
  563. package/sdk/dist/routes/parse.js.map +1 -0
  564. package/sdk/dist/routes/portal.d.ts +258 -4
  565. package/sdk/dist/routes/portal.d.ts.map +1 -1
  566. package/sdk/dist/routes/portal.js +588 -9
  567. package/sdk/dist/routes/portal.js.map +1 -1
  568. package/sdk/dist/routes/protocol-rewrite.d.ts +71 -1
  569. package/sdk/dist/routes/protocol-rewrite.d.ts.map +1 -1
  570. package/sdk/dist/routes/protocol-rewrite.js +178 -54
  571. package/sdk/dist/routes/protocol-rewrite.js.map +1 -1
  572. package/sdk/dist/routes/rs-compile.d.ts +25 -22
  573. package/sdk/dist/routes/rs-compile.d.ts.map +1 -1
  574. package/sdk/dist/routes/rs-compile.js +55 -49
  575. package/sdk/dist/routes/rs-compile.js.map +1 -1
  576. package/sdk/dist/routes/sauce-calls.d.ts +26 -12
  577. package/sdk/dist/routes/sauce-calls.d.ts.map +1 -1
  578. package/sdk/dist/routes/sauce-calls.js +16 -23
  579. package/sdk/dist/routes/sauce-calls.js.map +1 -1
  580. package/sdk/dist/routes/sauce-route.d.ts +74 -7
  581. package/sdk/dist/routes/sauce-route.d.ts.map +1 -1
  582. package/sdk/dist/routes/sauce-route.js +249 -96
  583. package/sdk/dist/routes/sauce-route.js.map +1 -1
  584. package/sdk/dist/routes/source-globals.d.ts +107 -0
  585. package/sdk/dist/routes/source-globals.d.ts.map +1 -0
  586. package/sdk/dist/routes/source-globals.generated.d.ts +5530 -936
  587. package/sdk/dist/routes/source-globals.generated.d.ts.map +1 -1
  588. package/sdk/dist/routes/source-globals.generated.js +3 -4
  589. package/sdk/dist/routes/source-globals.generated.js.map +1 -1
  590. package/sdk/dist/routes/source-globals.js +174 -0
  591. package/sdk/dist/routes/source-globals.js.map +1 -0
  592. package/sdk/dist/routes/stock-tokens.d.ts +69 -0
  593. package/sdk/dist/routes/stock-tokens.d.ts.map +1 -0
  594. package/sdk/dist/routes/stock-tokens.generated.d.ts +4 -0
  595. package/sdk/dist/routes/stock-tokens.generated.d.ts.map +1 -0
  596. package/sdk/dist/routes/stock-tokens.generated.js +1836 -0
  597. package/sdk/dist/routes/stock-tokens.generated.js.map +1 -0
  598. package/sdk/dist/routes/stock-tokens.js +65 -0
  599. package/sdk/dist/routes/stock-tokens.js.map +1 -0
  600. package/sdk/dist/routes/token-registry.d.ts +64 -8
  601. package/sdk/dist/routes/token-registry.d.ts.map +1 -1
  602. package/sdk/dist/routes/token-registry.js +208 -33
  603. package/sdk/dist/routes/token-registry.js.map +1 -1
  604. package/sdk/dist/routes/token-rewrite.d.ts +63 -28
  605. package/sdk/dist/routes/token-rewrite.d.ts.map +1 -1
  606. package/sdk/dist/routes/token-rewrite.js +387 -123
  607. package/sdk/dist/routes/token-rewrite.js.map +1 -1
  608. package/sdk/dist/routes/unknown-global.d.ts +32 -0
  609. package/sdk/dist/routes/unknown-global.d.ts.map +1 -0
  610. package/sdk/dist/routes/unknown-global.js +106 -0
  611. package/sdk/dist/routes/unknown-global.js.map +1 -0
  612. package/sdk/dist/routes/vault.d.ts +38 -8
  613. package/sdk/dist/routes/vault.d.ts.map +1 -1
  614. package/sdk/dist/routes/vault.js +47 -8
  615. package/sdk/dist/routes/vault.js.map +1 -1
  616. package/sdk/dist/sauce-script/builtins.d.ts +309 -0
  617. package/sdk/dist/sauce-script/declarations.d.ts +3 -0
  618. package/sdk/dist/sauce-script/declarations.d.ts.map +1 -0
  619. package/sdk/dist/sauce-script/declarations.js +229 -0
  620. package/sdk/dist/sauce-script/declarations.js.map +1 -0
  621. package/sdk/dist/sauce-script/index.d.ts +2714 -0
  622. package/sdk/dist/sauce-script/ts-plugin.cjs +85 -0
  623. package/sdk/dist/skills/loader.d.ts.map +1 -1
  624. package/sdk/dist/skills/loader.js +4 -3
  625. package/sdk/dist/skills/loader.js.map +1 -1
  626. package/sdk/dist/std/router/balancer-v2-vault.abi.json +78 -0
  627. package/sdk/dist/std/router/curve-cryptoswap.abi.json +29 -0
  628. package/sdk/dist/std/router/curve-stableswap.abi.json +29 -0
  629. package/sdk/dist/std/router/dodo-v2-pool.abi.json +39 -0
  630. package/sdk/dist/std/router/lb-pair.abi.json +55 -0
  631. package/sdk/dist/std/router/package.json +7 -0
  632. package/sdk/dist/std/router/router.evm.js +567 -0
  633. package/sdk/dist/std/router/sauce-router.abi.json +202 -0
  634. package/sdk/dist/std/router/uniswap-v2-pair.abi.json +49 -0
  635. package/sdk/dist/std/router/woo-pp-v2.abi.json +42 -0
  636. package/sdk/dist/std/token/permit2.abi.json +226 -0
  637. package/sdk/dist/std/token/token.evm.js +73 -0
  638. package/sdk/dist/std/token/token.svm.js +194 -41
  639. package/sdk/dist/svm/client.d.ts +62 -15
  640. package/sdk/dist/svm/client.d.ts.map +1 -1
  641. package/sdk/dist/svm/client.js +103 -42
  642. package/sdk/dist/svm/client.js.map +1 -1
  643. package/sdk/dist/svm/engine.d.ts +66 -5
  644. package/sdk/dist/svm/engine.d.ts.map +1 -1
  645. package/sdk/dist/svm/engine.js +73 -5
  646. package/sdk/dist/svm/engine.js.map +1 -1
  647. package/sdk/dist/svm/index.d.ts +2 -0
  648. package/sdk/dist/svm/index.d.ts.map +1 -1
  649. package/sdk/dist/svm/index.js +2 -0
  650. package/sdk/dist/svm/index.js.map +1 -1
  651. package/sdk/dist/svm/instructions.d.ts +72 -1
  652. package/sdk/dist/svm/instructions.d.ts.map +1 -1
  653. package/sdk/dist/svm/instructions.js +81 -2
  654. package/sdk/dist/svm/instructions.js.map +1 -1
  655. package/sdk/dist/svm/kitchen.d.ts +20 -1
  656. package/sdk/dist/svm/kitchen.d.ts.map +1 -1
  657. package/sdk/dist/svm/kitchen.js +47 -1
  658. package/sdk/dist/svm/kitchen.js.map +1 -1
  659. package/sdk/dist/svm/portal.d.ts +250 -0
  660. package/sdk/dist/svm/portal.d.ts.map +1 -0
  661. package/sdk/dist/svm/portal.js +462 -0
  662. package/sdk/dist/svm/portal.js.map +1 -0
  663. package/sdk/dist/svm/send.d.ts +18 -2
  664. package/sdk/dist/svm/send.d.ts.map +1 -1
  665. package/sdk/dist/svm/send.js +28 -3
  666. package/sdk/dist/svm/send.js.map +1 -1
  667. package/sdk/dist/svm/token-accounts.d.ts +49 -0
  668. package/sdk/dist/svm/token-accounts.d.ts.map +1 -0
  669. package/sdk/dist/svm/token-accounts.js +58 -0
  670. package/sdk/dist/svm/token-accounts.js.map +1 -0
  671. package/sdk/dist/svm/token-extensions.d.ts +18 -7
  672. package/sdk/dist/svm/token-extensions.d.ts.map +1 -1
  673. package/sdk/dist/svm/token-extensions.js +58 -5
  674. package/sdk/dist/svm/token-extensions.js.map +1 -1
  675. package/sdk/dist/token/api.d.ts +7 -4
  676. package/sdk/dist/token/api.d.ts.map +1 -1
  677. package/sdk/dist/token/api.js.map +1 -1
  678. package/sdk/dist/token/evm.js +2 -2
  679. package/sdk/dist/token/index.d.ts +4 -4
  680. package/sdk/dist/token/index.js +4 -4
  681. package/sdk/dist/token/params.js +1 -1
  682. package/sdk/dist/token/source.js +3 -3
  683. package/sdk/dist/token/source.js.map +1 -1
  684. package/sdk/dist/token/types.d.ts +2 -2
  685. package/sdk/dist/token/types.js +2 -2
  686. package/sdk/src/protocols/aerodrome/AerodromePoolABI.json +105 -0
  687. package/sdk/src/protocols/aerodrome/abis.ts +62 -0
  688. package/sdk/src/protocols/aerodrome-slipstream/AerodromeSlipstreamPoolABI.json +96 -0
  689. package/sdk/src/protocols/aerodrome-slipstream/abis.ts +55 -0
  690. package/sdk/src/protocols/camelot/CamelotV2FactoryABI.json +25 -0
  691. package/sdk/src/protocols/camelot/CamelotV2PairABI.json +109 -0
  692. package/sdk/src/protocols/camelot/CamelotV3FactoryABI.json +25 -0
  693. package/sdk/src/protocols/camelot/CamelotV3PoolABI.json +92 -0
  694. package/sdk/src/protocols/camelot/abis.ts +143 -0
  695. package/sdk/src/protocols/cbeth/functions.ts +4 -6
  696. package/sdk/src/protocols/crvusd/functions.ts +6 -6
  697. package/sdk/src/protocols/eco-routes/PortalABI.json +1448 -0
  698. package/sdk/src/protocols/eco-routes/ProverABI.json +162 -0
  699. package/sdk/src/protocols/eco-routes/abis.ts +1060 -51
  700. package/sdk/src/protocols/eco-routes/addresses.generated.ts +45 -62
  701. package/sdk/src/protocols/eco-routes/lookup.ts +18 -0
  702. package/sdk/src/protocols/erc20/functions.ts +6 -9
  703. package/sdk/src/protocols/frax/functions.ts +6 -6
  704. package/sdk/src/protocols/gho/functions.ts +4 -6
  705. package/sdk/src/protocols/liquity-v2/functions.ts +4 -6
  706. package/sdk/src/protocols/maverick/MaverickV2PoolABI.json +107 -0
  707. package/sdk/src/protocols/maverick/abis.ts +59 -0
  708. package/sdk/src/protocols/maverick/addresses.ts +4 -0
  709. package/sdk/src/protocols/pancakeswap-v2/PancakeSwapV2PairABI.json +72 -0
  710. package/sdk/src/protocols/pancakeswap-v2/abis.ts +44 -0
  711. package/sdk/src/protocols/pancakeswap-v3/PancakeSwapV3PoolABI.json +100 -0
  712. package/sdk/src/protocols/pancakeswap-v3/abis.ts +57 -0
  713. package/sdk/src/protocols/permit2/Permit2ABI.json +154 -0
  714. package/sdk/src/protocols/permit2/abis.ts +63 -0
  715. package/sdk/src/protocols/quickswap/QuickSwapV2FactoryABI.json +25 -0
  716. package/sdk/src/protocols/quickswap/QuickSwapV2PairABI.json +72 -0
  717. package/sdk/src/protocols/quickswap/QuickSwapV3FactoryABI.json +25 -0
  718. package/sdk/src/protocols/quickswap/QuickSwapV3PoolABI.json +88 -0
  719. package/sdk/src/protocols/quickswap/abis.ts +123 -0
  720. package/sdk/src/protocols/sushiswap-v2/SushiSwapV2PairABI.json +72 -0
  721. package/sdk/src/protocols/sushiswap-v2/abis.ts +43 -0
  722. package/sdk/src/protocols/synthra-v3/SynthraV3PoolABI.json +100 -0
  723. package/sdk/src/protocols/synthra-v3/abis.ts +56 -0
  724. package/sdk/src/protocols/trader-joe/LBPairABI.json +185 -0
  725. package/sdk/src/protocols/trader-joe/abis.ts +102 -0
  726. package/sdk/src/protocols/trader-joe/addresses.ts +5 -0
  727. package/sdk/src/protocols/uniswap-v2/UniswapV2PairABI.json +72 -0
  728. package/sdk/src/protocols/uniswap-v2/abis.ts +45 -0
  729. package/sdk/src/protocols/uniswap-v3/UniswapV3PoolABI.json +100 -0
  730. package/sdk/src/protocols/uniswap-v3/abis.ts +56 -0
  731. package/sdk/src/protocols/uniswap-v4/UniswapV4PoolManagerABI.json +38 -0
  732. package/sdk/src/protocols/uniswap-v4/UniswapV4StateViewABI.json +307 -0
  733. package/sdk/src/protocols/uniswap-v4/abis.ts +168 -0
  734. package/sdk/src/protocols/uniswap-v4/addresses.ts +50 -0
  735. package/sdk/src/protocols/unitflow-v3/UnitFlowV3PoolABI.json +100 -0
  736. package/sdk/src/protocols/unitflow-v3/abis.ts +57 -0
  737. package/sdk/src/protocols/velodrome/VelodromePoolABI.json +105 -0
  738. package/sdk/src/protocols/velodrome/abis.ts +62 -0
  739. package/skills/sauce-actions/SKILL.md +166 -0
  740. package/skills/sauce-actions/examples/swap-and-supply.json +24 -0
  741. package/skills/sauce-actions/examples/swap-by-key.json +15 -0
  742. package/skills/sauce-actions/references/actions.md +731 -0
  743. package/skills/sauce-chains/SKILL.md +137 -0
  744. package/skills/sauce-chains/examples/chains.sauce.ts +25 -0
  745. package/skills/sauce-chains/references/arbitrum.md +158 -0
  746. package/skills/sauce-chains/references/arc.md +107 -0
  747. package/skills/sauce-chains/references/aurora.md +33 -0
  748. package/skills/sauce-chains/references/avalanche.md +106 -0
  749. package/skills/sauce-chains/references/base-stocks.md +77 -0
  750. package/skills/sauce-chains/references/base.md +141 -0
  751. package/skills/sauce-chains/references/berachain.md +33 -0
  752. package/skills/sauce-chains/references/blast.md +60 -0
  753. package/skills/sauce-chains/references/boba.md +33 -0
  754. package/skills/sauce-chains/references/bsc.md +97 -0
  755. package/skills/sauce-chains/references/celo.md +57 -0
  756. package/skills/sauce-chains/references/core.md +33 -0
  757. package/skills/sauce-chains/references/cronos.md +33 -0
  758. package/skills/sauce-chains/references/ethereum-stocks.md +1741 -0
  759. package/skills/sauce-chains/references/ethereum.md +255 -0
  760. package/skills/sauce-chains/references/evmos.md +33 -0
  761. package/skills/sauce-chains/references/fantom.md +61 -0
  762. package/skills/sauce-chains/references/fuse.md +33 -0
  763. package/skills/sauce-chains/references/gnosis.md +57 -0
  764. package/skills/sauce-chains/references/index.md +58 -0
  765. package/skills/sauce-chains/references/ink.md +55 -0
  766. package/skills/sauce-chains/references/kava.md +33 -0
  767. package/skills/sauce-chains/references/klaytn.md +33 -0
  768. package/skills/sauce-chains/references/linea.md +65 -0
  769. package/skills/sauce-chains/references/manta.md +33 -0
  770. package/skills/sauce-chains/references/mantle.md +33 -0
  771. package/skills/sauce-chains/references/metis.md +54 -0
  772. package/skills/sauce-chains/references/mode.md +55 -0
  773. package/skills/sauce-chains/references/monad.md +79 -0
  774. package/skills/sauce-chains/references/moonbeam.md +33 -0
  775. package/skills/sauce-chains/references/opbnb.md +55 -0
  776. package/skills/sauce-chains/references/optimism.md +123 -0
  777. package/skills/sauce-chains/references/plasma.md +35 -0
  778. package/skills/sauce-chains/references/polygon.md +123 -0
  779. package/skills/sauce-chains/references/pulsechain.md +33 -0
  780. package/skills/sauce-chains/references/ronin.md +35 -0
  781. package/skills/sauce-chains/references/scroll.md +62 -0
  782. package/skills/sauce-chains/references/sei.md +55 -0
  783. package/skills/sauce-chains/references/solana.md +53 -0
  784. package/skills/sauce-chains/references/sonic.md +57 -0
  785. package/skills/sauce-chains/references/unichain.md +61 -0
  786. package/skills/sauce-chains/references/zetachain.md +33 -0
  787. package/skills/sauce-chains/references/zksync.md +59 -0
  788. package/skills/sauce-chains/references/zora.md +57 -0
  789. package/skills/sauce-cli/SKILL.md +366 -0
  790. package/skills/sauce-cli/examples/pay.sauce.ts +23 -0
  791. package/skills/sauce-cli/examples/split.sauce.ts +30 -0
  792. package/skills/sauce-distributed-swap/SKILL.md +392 -0
  793. package/skills/sauce-distributed-swap/examples/distributed-swap.mts +251 -0
  794. package/skills/sauce-distributed-swap/examples/distributed-swap.sauce.ts +115 -0
  795. package/skills/sauce-examples/SKILL.md +96 -0
  796. package/skills/sauce-globals/SKILL.md +175 -0
  797. package/skills/sauce-globals/examples/globals.mts +111 -0
  798. package/skills/sauce-globals/examples/globals.sauce.ts +47 -0
  799. package/skills/sauce-globals/references/chains.md +53 -0
  800. package/skills/sauce-globals/references/protocols.md +405 -0
  801. package/skills/sauce-globals/references/stocks.md +1824 -0
  802. package/skills/sauce-globals/references/tokens.md +53 -0
  803. package/skills/sauce-intents/SKILL.md +505 -0
  804. package/skills/sauce-intents/examples/cross-chain.sauce.ts +37 -0
  805. package/skills/sauce-intents/examples/fund-by-transfer.sauce.ts +54 -0
  806. package/skills/sauce-intents/examples/intents.mts +343 -0
  807. package/skills/sauce-intents/examples/swap-on-base.sauce.ts +135 -0
  808. package/skills/sauce-intents/references/portal.md +77 -0
  809. package/skills/sauce-overview/SKILL.md +161 -0
  810. package/skills/sauce-protocols/SKILL.md +118 -0
  811. package/skills/sauce-protocols/examples/protocols.mts +77 -0
  812. package/skills/sauce-protocols/examples/protocols.sauce.ts +27 -0
  813. package/{sdk/src/skills → skills/sauce-protocols/references}/aave-v2.md +35 -17
  814. package/skills/sauce-protocols/references/aave-v3.md +144 -0
  815. package/skills/sauce-protocols/references/aave-v4.md +50 -0
  816. package/skills/sauce-protocols/references/abracadabra.md +72 -0
  817. package/skills/sauce-protocols/references/across.md +73 -0
  818. package/skills/sauce-protocols/references/aerodrome-slipstream.md +50 -0
  819. package/{sdk/src/skills → skills/sauce-protocols/references}/aerodrome.md +43 -24
  820. package/skills/sauce-protocols/references/aevo.md +49 -0
  821. package/{sdk/src/skills → skills/sauce-protocols/references}/alchemix.md +10 -25
  822. package/{sdk/src/skills → skills/sauce-protocols/references}/ambient.md +14 -21
  823. package/{sdk/src/skills → skills/sauce-protocols/references}/arbitrum-bridge.md +11 -14
  824. package/{sdk/src/skills → skills/sauce-protocols/references}/arrakis.md +10 -26
  825. package/skills/sauce-protocols/references/axelar.md +56 -0
  826. package/{sdk/src/skills → skills/sauce-protocols/references}/balancer-v2.md +13 -29
  827. package/{sdk/src/skills → skills/sauce-protocols/references}/base-bridge.md +11 -16
  828. package/{sdk/src/skills → skills/sauce-protocols/references}/baseswap.md +12 -19
  829. package/{sdk/src/skills → skills/sauce-protocols/references}/beefy.md +10 -30
  830. package/{sdk/src/skills → skills/sauce-protocols/references}/benqi.md +11 -21
  831. package/{sdk/src/skills → skills/sauce-protocols/references}/camelot.md +13 -27
  832. package/skills/sauce-protocols/references/cbeth.md +48 -0
  833. package/skills/sauce-protocols/references/cctp.md +47 -0
  834. package/{sdk/src/skills → skills/sauce-protocols/references}/celer.md +11 -18
  835. package/{sdk/src/skills → skills/sauce-protocols/references}/chainlink-ccip.md +11 -21
  836. package/skills/sauce-protocols/references/chainlink.md +47 -0
  837. package/{sdk/src/skills → skills/sauce-protocols/references}/circle-gateway.md +12 -38
  838. package/{sdk/src/skills → skills/sauce-protocols/references}/compound-v2.md +11 -25
  839. package/{sdk/src/skills → skills/sauce-protocols/references}/compound-v3.md +43 -27
  840. package/{sdk/src/skills → skills/sauce-protocols/references}/connext.md +11 -15
  841. package/{sdk/src/skills → skills/sauce-protocols/references}/convex.md +10 -28
  842. package/{sdk/src/skills → skills/sauce-protocols/references}/cowswap.md +12 -19
  843. package/skills/sauce-protocols/references/crvusd.md +49 -0
  844. package/skills/sauce-protocols/references/curve.md +98 -0
  845. package/{sdk/src/skills → skills/sauce-protocols/references}/debridge.md +11 -33
  846. package/{sdk/src/skills → skills/sauce-protocols/references}/dodo.md +13 -18
  847. package/skills/sauce-protocols/references/eigenlayer.md +48 -0
  848. package/{sdk/src/skills → skills/sauce-protocols/references}/ens.md +10 -26
  849. package/{sdk/src/skills → skills/sauce-protocols/references}/erc20.md +18 -34
  850. package/{sdk/src/skills → skills/sauce-protocols/references}/erc3156.md +10 -13
  851. package/{sdk/src/skills → skills/sauce-protocols/references}/erc4626.md +11 -27
  852. package/{sdk/src/skills → skills/sauce-protocols/references}/ethena.md +10 -27
  853. package/{sdk/src/skills → skills/sauce-protocols/references}/etherfi.md +10 -32
  854. package/{sdk/src/skills → skills/sauce-protocols/references}/euler-v2.md +11 -21
  855. package/{sdk/src/skills → skills/sauce-protocols/references}/fenix.md +12 -18
  856. package/{sdk/src/skills → skills/sauce-protocols/references}/fluid.md +11 -20
  857. package/{sdk/src/skills → skills/sauce-protocols/references}/frax-ether.md +10 -26
  858. package/skills/sauce-protocols/references/frax.md +48 -0
  859. package/{sdk/src/skills → skills/sauce-protocols/references}/gains-network.md +11 -28
  860. package/skills/sauce-protocols/references/gamma.md +57 -0
  861. package/{sdk/src/skills → skills/sauce-protocols/references}/gelato.md +12 -20
  862. package/skills/sauce-protocols/references/gho.md +50 -0
  863. package/{sdk/src/skills → skills/sauce-protocols/references}/gmx-v1.md +12 -34
  864. package/{sdk/src/skills → skills/sauce-protocols/references}/gmx-v2.md +15 -28
  865. package/skills/sauce-protocols/references/harvest.md +41 -0
  866. package/{sdk/src/skills → skills/sauce-protocols/references}/hegic.md +10 -18
  867. package/{sdk/src/skills → skills/sauce-protocols/references}/hop.md +11 -21
  868. package/{sdk/src/skills → skills/sauce-protocols/references}/hyperlane.md +11 -21
  869. package/skills/sauce-protocols/references/index.md +355 -0
  870. package/{sdk/src/skills → skills/sauce-protocols/references}/instadapp.md +10 -18
  871. package/skills/sauce-protocols/references/kelp.md +46 -0
  872. package/{sdk/src/skills → skills/sauce-protocols/references}/kim.md +12 -18
  873. package/{sdk/src/skills → skills/sauce-protocols/references}/kyberswap-aggregator.md +12 -35
  874. package/skills/sauce-protocols/references/kyberswap.md +72 -0
  875. package/{sdk/src/skills → skills/sauce-protocols/references}/layerbank.md +11 -26
  876. package/{sdk/src/skills → skills/sauce-protocols/references}/layerzero.md +11 -25
  877. package/{sdk/src/skills → skills/sauce-protocols/references}/level-finance.md +10 -24
  878. package/{sdk/src/skills → skills/sauce-protocols/references}/lido.md +10 -28
  879. package/{sdk/src/skills → skills/sauce-protocols/references}/lifi.md +11 -25
  880. package/{sdk/src/skills → skills/sauce-protocols/references}/linea-bridge.md +11 -14
  881. package/{sdk/src/skills → skills/sauce-protocols/references}/liquity-v1.md +10 -21
  882. package/skills/sauce-protocols/references/liquity-v2.md +48 -0
  883. package/{sdk/src/skills → skills/sauce-protocols/references}/lynex.md +12 -18
  884. package/skills/sauce-protocols/references/maker.md +57 -0
  885. package/skills/sauce-protocols/references/mantle-meth.md +43 -0
  886. package/{sdk/src/skills → skills/sauce-protocols/references}/maverick.md +13 -25
  887. package/{sdk/src/skills → skills/sauce-protocols/references}/moonwell.md +11 -21
  888. package/{sdk/src/skills → skills/sauce-protocols/references}/morpho-blue.md +44 -21
  889. package/{sdk/src/skills → skills/sauce-protocols/references}/mux-protocol.md +10 -30
  890. package/skills/sauce-protocols/references/olympus.md +39 -0
  891. package/skills/sauce-protocols/references/oneinch.md +81 -0
  892. package/skills/sauce-protocols/references/openocean.md +69 -0
  893. package/{sdk/src/skills → skills/sauce-protocols/references}/optimism-bridge.md +11 -16
  894. package/{sdk/src/skills → skills/sauce-protocols/references}/opyn.md +10 -21
  895. package/{sdk/src/skills → skills/sauce-protocols/references}/pancakeswap-v2.md +39 -41
  896. package/skills/sauce-protocols/references/pancakeswap-v3.md +72 -0
  897. package/skills/sauce-protocols/references/paraswap.md +39 -0
  898. package/{sdk/src/skills → skills/sauce-protocols/references}/pendle.md +47 -29
  899. package/skills/sauce-protocols/references/permit2.md +101 -0
  900. package/skills/sauce-protocols/references/perpetual-protocol.md +53 -0
  901. package/{sdk/src/skills → skills/sauce-protocols/references}/polygon-bridge.md +11 -17
  902. package/{sdk/src/skills → skills/sauce-protocols/references}/premia.md +10 -19
  903. package/{sdk/src/skills → skills/sauce-protocols/references}/puffer.md +10 -21
  904. package/skills/sauce-protocols/references/pyth.md +45 -0
  905. package/{sdk/src/skills → skills/sauce-protocols/references}/quickswap.md +13 -27
  906. package/{sdk/src/skills → skills/sauce-protocols/references}/radiant.md +11 -15
  907. package/{sdk/src/skills → skills/sauce-protocols/references}/ramses.md +12 -18
  908. package/skills/sauce-protocols/references/reflexer.md +52 -0
  909. package/skills/sauce-protocols/references/registry/aave-v2.md +43 -0
  910. package/skills/sauce-protocols/references/registry/aave-v3.md +62 -0
  911. package/skills/sauce-protocols/references/registry/aave-v4.md +80 -0
  912. package/skills/sauce-protocols/references/registry/abracadabra.md +54 -0
  913. package/skills/sauce-protocols/references/registry/across.md +57 -0
  914. package/skills/sauce-protocols/references/registry/aerodrome-slipstream.md +72 -0
  915. package/skills/sauce-protocols/references/registry/aerodrome.md +58 -0
  916. package/skills/sauce-protocols/references/registry/aevo.md +39 -0
  917. package/skills/sauce-protocols/references/registry/alchemix.md +46 -0
  918. package/skills/sauce-protocols/references/registry/ambient.md +40 -0
  919. package/skills/sauce-protocols/references/registry/arbitrum-bridge.md +40 -0
  920. package/skills/sauce-protocols/references/registry/arrakis.md +49 -0
  921. package/skills/sauce-protocols/references/registry/axelar.md +65 -0
  922. package/skills/sauce-protocols/references/registry/balancer-v2.md +50 -0
  923. package/skills/sauce-protocols/references/registry/base-bridge.md +42 -0
  924. package/skills/sauce-protocols/references/registry/baseswap.md +40 -0
  925. package/skills/sauce-protocols/references/registry/beefy.md +51 -0
  926. package/skills/sauce-protocols/references/registry/benqi.md +49 -0
  927. package/skills/sauce-protocols/references/registry/camelot.md +82 -0
  928. package/skills/sauce-protocols/references/registry/cbeth.md +43 -0
  929. package/skills/sauce-protocols/references/registry/cctp.md +48 -0
  930. package/skills/sauce-protocols/references/registry/celer.md +44 -0
  931. package/skills/sauce-protocols/references/registry/chainlink-ccip.md +45 -0
  932. package/skills/sauce-protocols/references/registry/chainlink.md +49 -0
  933. package/skills/sauce-protocols/references/registry/circle-gateway.md +70 -0
  934. package/skills/sauce-protocols/references/registry/compound-v2.md +53 -0
  935. package/skills/sauce-protocols/references/registry/compound-v3.md +52 -0
  936. package/skills/sauce-protocols/references/registry/connext.md +41 -0
  937. package/skills/sauce-protocols/references/registry/convex.md +51 -0
  938. package/skills/sauce-protocols/references/registry/cowswap.md +40 -0
  939. package/skills/sauce-protocols/references/registry/crvusd.md +40 -0
  940. package/skills/sauce-protocols/references/registry/curve.md +81 -0
  941. package/skills/sauce-protocols/references/registry/debridge.md +59 -0
  942. package/skills/sauce-protocols/references/registry/dodo.md +39 -0
  943. package/skills/sauce-protocols/references/registry/eco-routes.md +65 -0
  944. package/skills/sauce-protocols/references/registry/eigenlayer.md +58 -0
  945. package/skills/sauce-protocols/references/registry/ens.md +49 -0
  946. package/skills/sauce-protocols/references/registry/erc20.md +44 -0
  947. package/skills/sauce-protocols/references/registry/erc3156.md +38 -0
  948. package/skills/sauce-protocols/references/registry/erc4626.md +51 -0
  949. package/skills/sauce-protocols/references/registry/ethena.md +50 -0
  950. package/skills/sauce-protocols/references/registry/etherfi.md +57 -0
  951. package/skills/sauce-protocols/references/registry/euler-v2.md +49 -0
  952. package/skills/sauce-protocols/references/registry/fenix.md +39 -0
  953. package/skills/sauce-protocols/references/registry/fluid.md +48 -0
  954. package/skills/sauce-protocols/references/registry/frax-ether.md +49 -0
  955. package/skills/sauce-protocols/references/registry/frax.md +40 -0
  956. package/skills/sauce-protocols/references/registry/gains-network.md +43 -0
  957. package/skills/sauce-protocols/references/registry/gamma.md +56 -0
  958. package/skills/sauce-protocols/references/registry/gelato.md +45 -0
  959. package/skills/sauce-protocols/references/registry/gho.md +40 -0
  960. package/skills/sauce-protocols/references/registry/gmx-v1.md +59 -0
  961. package/skills/sauce-protocols/references/registry/gmx-v2.md +41 -0
  962. package/skills/sauce-protocols/references/registry/harvest.md +44 -0
  963. package/skills/sauce-protocols/references/registry/hegic.md +39 -0
  964. package/skills/sauce-protocols/references/registry/hop.md +49 -0
  965. package/skills/sauce-protocols/references/registry/hyperlane.md +48 -0
  966. package/skills/sauce-protocols/references/registry/instadapp.md +39 -0
  967. package/skills/sauce-protocols/references/registry/kelp.md +47 -0
  968. package/skills/sauce-protocols/references/registry/kim.md +39 -0
  969. package/skills/sauce-protocols/references/registry/kyberswap-aggregator.md +49 -0
  970. package/skills/sauce-protocols/references/registry/kyberswap.md +63 -0
  971. package/skills/sauce-protocols/references/registry/layerbank.md +54 -0
  972. package/skills/sauce-protocols/references/registry/layerzero.md +49 -0
  973. package/skills/sauce-protocols/references/registry/level-finance.md +41 -0
  974. package/skills/sauce-protocols/references/registry/lido.md +51 -0
  975. package/skills/sauce-protocols/references/registry/lifi.md +48 -0
  976. package/skills/sauce-protocols/references/registry/linea-bridge.md +40 -0
  977. package/skills/sauce-protocols/references/registry/liquity-v1.md +42 -0
  978. package/skills/sauce-protocols/references/registry/liquity-v2.md +40 -0
  979. package/skills/sauce-protocols/references/registry/lynex.md +39 -0
  980. package/skills/sauce-protocols/references/registry/maker.md +55 -0
  981. package/skills/sauce-protocols/references/registry/mantle-meth.md +48 -0
  982. package/skills/sauce-protocols/references/registry/maverick.md +60 -0
  983. package/skills/sauce-protocols/references/registry/moonwell.md +49 -0
  984. package/skills/sauce-protocols/references/registry/morpho-blue.md +47 -0
  985. package/skills/sauce-protocols/references/registry/mux-protocol.md +49 -0
  986. package/skills/sauce-protocols/references/registry/olympus.md +42 -0
  987. package/skills/sauce-protocols/references/registry/oneinch.md +45 -0
  988. package/skills/sauce-protocols/references/registry/openocean.md +44 -0
  989. package/skills/sauce-protocols/references/registry/optimism-bridge.md +42 -0
  990. package/skills/sauce-protocols/references/registry/opyn.md +42 -0
  991. package/skills/sauce-protocols/references/registry/pancakeswap-v2.md +71 -0
  992. package/skills/sauce-protocols/references/registry/pancakeswap-v3.md +76 -0
  993. package/skills/sauce-protocols/references/registry/paraswap.md +51 -0
  994. package/skills/sauce-protocols/references/registry/pendle.md +43 -0
  995. package/skills/sauce-protocols/references/registry/permit2.md +50 -0
  996. package/skills/sauce-protocols/references/registry/perpetual-protocol.md +49 -0
  997. package/skills/sauce-protocols/references/registry/polygon-bridge.md +43 -0
  998. package/skills/sauce-protocols/references/registry/premia.md +40 -0
  999. package/skills/sauce-protocols/references/registry/puffer.md +43 -0
  1000. package/skills/sauce-protocols/references/registry/pyth.md +40 -0
  1001. package/skills/sauce-protocols/references/registry/quickswap.md +80 -0
  1002. package/skills/sauce-protocols/references/registry/radiant.md +41 -0
  1003. package/skills/sauce-protocols/references/registry/ramses.md +39 -0
  1004. package/skills/sauce-protocols/references/registry/reflexer.md +56 -0
  1005. package/skills/sauce-protocols/references/registry/renzo.md +47 -0
  1006. package/skills/sauce-protocols/references/registry/rocket-pool.md +49 -0
  1007. package/skills/sauce-protocols/references/registry/sablier.md +40 -0
  1008. package/skills/sauce-protocols/references/registry/safe.md +47 -0
  1009. package/skills/sauce-protocols/references/registry/scroll-bridge.md +48 -0
  1010. package/skills/sauce-protocols/references/registry/seamless.md +42 -0
  1011. package/skills/sauce-protocols/references/registry/seaport.md +44 -0
  1012. package/skills/sauce-protocols/references/registry/silo.md +48 -0
  1013. package/skills/sauce-protocols/references/registry/socket.md +44 -0
  1014. package/skills/sauce-protocols/references/registry/sommelier.md +43 -0
  1015. package/skills/sauce-protocols/references/registry/spark.md +42 -0
  1016. package/skills/sauce-protocols/references/registry/spookyswap.md +40 -0
  1017. package/skills/sauce-protocols/references/registry/squid.md +45 -0
  1018. package/skills/sauce-protocols/references/registry/stader.md +47 -0
  1019. package/skills/sauce-protocols/references/registry/stargate.md +45 -0
  1020. package/skills/sauce-protocols/references/registry/superfluid.md +49 -0
  1021. package/skills/sauce-protocols/references/registry/sushiswap-v2.md +71 -0
  1022. package/skills/sauce-protocols/references/registry/swell.md +49 -0
  1023. package/skills/sauce-protocols/references/registry/synapse.md +46 -0
  1024. package/skills/sauce-protocols/references/registry/syncswap.md +38 -0
  1025. package/skills/sauce-protocols/references/registry/synthetix-v3.md +48 -0
  1026. package/skills/sauce-protocols/references/registry/synthra-v3.md +77 -0
  1027. package/skills/sauce-protocols/references/registry/thales.md +51 -0
  1028. package/skills/sauce-protocols/references/registry/thena.md +39 -0
  1029. package/skills/sauce-protocols/references/registry/thruster.md +38 -0
  1030. package/skills/sauce-protocols/references/registry/tokemak.md +45 -0
  1031. package/skills/sauce-protocols/references/registry/trader-joe.md +66 -0
  1032. package/skills/sauce-protocols/references/registry/uniswap-v2.md +77 -0
  1033. package/skills/sauce-protocols/references/registry/uniswap-v3.md +113 -0
  1034. package/skills/sauce-protocols/references/registry/uniswap-v4.md +117 -0
  1035. package/skills/sauce-protocols/references/registry/unitflow-v3.md +65 -0
  1036. package/skills/sauce-protocols/references/registry/velodrome.md +58 -0
  1037. package/skills/sauce-protocols/references/registry/venus.md +62 -0
  1038. package/skills/sauce-protocols/references/registry/vertex.md +46 -0
  1039. package/skills/sauce-protocols/references/registry/wormhole.md +59 -0
  1040. package/skills/sauce-protocols/references/registry/yearn-v3.md +46 -0
  1041. package/skills/sauce-protocols/references/registry/zerolend.md +41 -0
  1042. package/skills/sauce-protocols/references/registry/zerox.md +44 -0
  1043. package/skills/sauce-protocols/references/registry/zksync-bridge.md +40 -0
  1044. package/{sdk/src/skills → skills/sauce-protocols/references}/renzo.md +10 -24
  1045. package/{sdk/src/skills → skills/sauce-protocols/references}/rocket-pool.md +10 -26
  1046. package/{sdk/src/skills → skills/sauce-protocols/references}/sablier.md +10 -27
  1047. package/skills/sauce-protocols/references/safe.md +42 -0
  1048. package/{sdk/src/skills → skills/sauce-protocols/references}/scroll-bridge.md +11 -20
  1049. package/{sdk/src/skills → skills/sauce-protocols/references}/seamless.md +11 -16
  1050. package/skills/sauce-protocols/references/seaport.md +38 -0
  1051. package/{sdk/src/skills → skills/sauce-protocols/references}/silo.md +11 -20
  1052. package/{sdk/src/skills → skills/sauce-protocols/references}/socket.md +11 -18
  1053. package/skills/sauce-protocols/references/sommelier.md +40 -0
  1054. package/{sdk/src/skills → skills/sauce-protocols/references}/spark.md +11 -16
  1055. package/{sdk/src/skills → skills/sauce-protocols/references}/spookyswap.md +12 -19
  1056. package/{sdk/src/skills → skills/sauce-protocols/references}/squid.md +11 -21
  1057. package/skills/sauce-protocols/references/stader.md +39 -0
  1058. package/{sdk/src/skills → skills/sauce-protocols/references}/stargate.md +11 -22
  1059. package/{sdk/src/skills → skills/sauce-protocols/references}/superfluid.md +10 -28
  1060. package/{sdk/src/skills → skills/sauce-protocols/references}/sushiswap-v2.md +38 -43
  1061. package/skills/sauce-protocols/references/swell.md +49 -0
  1062. package/skills/sauce-protocols/references/synapse.md +54 -0
  1063. package/{sdk/src/skills → skills/sauce-protocols/references}/syncswap.md +12 -17
  1064. package/{sdk/src/skills → skills/sauce-protocols/references}/synthetix-v3.md +10 -29
  1065. package/skills/sauce-protocols/references/synthra-v3.md +63 -0
  1066. package/skills/sauce-protocols/references/thales.md +58 -0
  1067. package/{sdk/src/skills → skills/sauce-protocols/references}/thena.md +12 -18
  1068. package/{sdk/src/skills → skills/sauce-protocols/references}/thruster.md +13 -18
  1069. package/skills/sauce-protocols/references/tokemak.md +40 -0
  1070. package/{sdk/src/skills → skills/sauce-protocols/references}/trader-joe.md +13 -26
  1071. package/{sdk/src/skills → skills/sauce-protocols/references}/uniswap-v2.md +46 -44
  1072. package/skills/sauce-protocols/references/uniswap-v3.md +188 -0
  1073. package/skills/sauce-protocols/references/uniswap-v4.md +155 -0
  1074. package/skills/sauce-protocols/references/unitflow-v3.md +63 -0
  1075. package/{sdk/src/skills → skills/sauce-protocols/references}/velodrome.md +12 -24
  1076. package/{sdk/src/skills → skills/sauce-protocols/references}/venus.md +12 -31
  1077. package/skills/sauce-protocols/references/vertex.md +42 -0
  1078. package/skills/sauce-protocols/references/wormhole.md +57 -0
  1079. package/{sdk/src/skills → skills/sauce-protocols/references}/yearn-v3.md +10 -25
  1080. package/{sdk/src/skills → skills/sauce-protocols/references}/zerolend.md +11 -15
  1081. package/skills/sauce-protocols/references/zerox.md +39 -0
  1082. package/{sdk/src/skills → skills/sauce-protocols/references}/zksync-bridge.md +11 -14
  1083. package/skills/sauce-script/SKILL.md +407 -0
  1084. package/skills/sauce-script/examples/IOracle.json +12 -0
  1085. package/skills/sauce-script/examples/saucescript.mts +167 -0
  1086. package/skills/sauce-script/examples/twap.sauce.ts +29 -0
  1087. package/skills/sauce-script/references/builtins.json +823 -0
  1088. package/skills/sauce-script/references/builtins.md +674 -0
  1089. package/skills/sauce-solana/SKILL.md +322 -0
  1090. package/skills/sauce-solana/examples/solana.mts +166 -0
  1091. package/skills/sauce-solana/examples/solana.sauce.ts +45 -0
  1092. package/skills/sauce-solana/examples/token-2022.sauce.ts +38 -0
  1093. package/skills/sauce-swaps/SKILL.md +200 -0
  1094. package/skills/sauce-swaps/examples/swap-leg.sauce.ts +50 -0
  1095. package/skills/sauce-swaps/examples/swaps.mts +124 -0
  1096. package/skills/sauce-typescript/SKILL.md +178 -0
  1097. package/skills/sauce-typescript/examples/actions.mts +100 -0
  1098. package/skills/sauce-typescript/examples/compiler.mts +69 -0
  1099. package/skills/sauce-typescript/examples/cook.mts +65 -0
  1100. package/skills/sauce-typescript/examples/verify.mts +104 -0
  1101. package/dev-tools/README.md +0 -16
  1102. package/dev-tools/artifacts/IERC20.json +0 -1
  1103. package/dev-tools/artifacts/ISauceRouter.json +0 -1
  1104. package/dev-tools/artifacts/IUniswapV3Pool.json +0 -1
  1105. package/dev-tools/artifacts/Router.json +0 -1
  1106. package/dev-tools/hardhat.config.cjs +0 -18
  1107. package/dev-tools/sauce/js/add.js +0 -4
  1108. package/dev-tools/sauce/js/call.js +0 -8
  1109. package/dev-tools/sauce/js/erc20.js +0 -18
  1110. package/dev-tools/sauce/js/example.js +0 -6
  1111. package/dev-tools/sauce/js/fibonacci.js +0 -13
  1112. package/dev-tools/sauce/ts/add.ts +0 -4
  1113. package/dev-tools/sauce/ts/call.ts +0 -8
  1114. package/dev-tools/sauce/ts/erc20.ts +0 -18
  1115. package/dev-tools/sauce/ts/example.ts +0 -6
  1116. package/dev-tools/sauce/ts/fibonacci.ts +0 -13
  1117. package/dev-tools/sauce/ts/saucescript.d.ts +0 -1
  1118. package/dev-tools/sauce/ts/tsconfig.json +0 -12
  1119. package/dev-tools/scripts/deploy.ts +0 -107
  1120. package/dev-tools/scripts/init.js +0 -132
  1121. package/dev-tools/scripts/run.ts +0 -67
  1122. package/dev-tools/scripts/start-fork.sh +0 -92
  1123. package/dev-tools/scripts/start-local.sh +0 -120
  1124. package/dev-tools/scripts/stop-local.sh +0 -40
  1125. package/dev-tools/scripts/sync-artifacts.js +0 -46
  1126. package/dev-tools/scripts/sync-price.ts +0 -58
  1127. package/dev-tools/src/contracts.ts +0 -59
  1128. package/dev-tools/src/runner.ts +0 -355
  1129. package/dev-tools/src/svm-local.ts +0 -305
  1130. package/dev-tools/src/sync-price.ts +0 -217
  1131. package/sdk/dist/deployments/v12.generated.d.ts +0 -95
  1132. package/sdk/dist/deployments/v12.generated.d.ts.map +0 -1
  1133. package/sdk/dist/deployments/v12.generated.js +0 -50
  1134. package/sdk/dist/deployments/v12.generated.js.map +0 -1
  1135. package/sdk/dist/swap/index.d.ts +0 -29
  1136. package/sdk/dist/swap/index.d.ts.map +0 -1
  1137. package/sdk/dist/swap/index.js +0 -27
  1138. package/sdk/dist/swap/index.js.map +0 -1
  1139. package/sdk/dist/swap/params.d.ts +0 -29
  1140. package/sdk/dist/swap/params.d.ts.map +0 -1
  1141. package/sdk/dist/swap/params.js +0 -123
  1142. package/sdk/dist/swap/params.js.map +0 -1
  1143. package/sdk/dist/swap/source.d.ts +0 -30
  1144. package/sdk/dist/swap/source.d.ts.map +0 -1
  1145. package/sdk/dist/swap/source.js +0 -101
  1146. package/sdk/dist/swap/source.js.map +0 -1
  1147. package/sdk/dist/swap/types.d.ts +0 -160
  1148. package/sdk/dist/swap/types.d.ts.map +0 -1
  1149. package/sdk/dist/swap/types.js +0 -106
  1150. package/sdk/dist/swap/types.js.map +0 -1
  1151. package/sdk/src/skills/aave-v3.md +0 -134
  1152. package/sdk/src/skills/aave-v4.md +0 -91
  1153. package/sdk/src/skills/abracadabra.md +0 -93
  1154. package/sdk/src/skills/across.md +0 -90
  1155. package/sdk/src/skills/aerodrome-slipstream.md +0 -57
  1156. package/sdk/src/skills/aevo.md +0 -58
  1157. package/sdk/src/skills/axelar.md +0 -80
  1158. package/sdk/src/skills/cbeth.md +0 -62
  1159. package/sdk/src/skills/chainlink.md +0 -62
  1160. package/sdk/src/skills/crvusd.md +0 -58
  1161. package/sdk/src/skills/curve.md +0 -141
  1162. package/sdk/src/skills/eigenlayer.md +0 -71
  1163. package/sdk/src/skills/frax.md +0 -57
  1164. package/sdk/src/skills/gamma.md +0 -79
  1165. package/sdk/src/skills/gho.md +0 -61
  1166. package/sdk/src/skills/harvest.md +0 -49
  1167. package/sdk/src/skills/index.md +0 -299
  1168. package/sdk/src/skills/kelp.md +0 -60
  1169. package/sdk/src/skills/kyberswap.md +0 -100
  1170. package/sdk/src/skills/liquity-v2.md +0 -59
  1171. package/sdk/src/skills/loader.ts +0 -46
  1172. package/sdk/src/skills/maker.md +0 -79
  1173. package/sdk/src/skills/mantle-meth.md +0 -60
  1174. package/sdk/src/skills/olympus.md +0 -46
  1175. package/sdk/src/skills/oneinch.md +0 -64
  1176. package/sdk/src/skills/openocean.md +0 -86
  1177. package/sdk/src/skills/pancakeswap-v3.md +0 -104
  1178. package/sdk/src/skills/paraswap.md +0 -67
  1179. package/sdk/src/skills/permit2.md +0 -73
  1180. package/sdk/src/skills/perpetual-protocol.md +0 -73
  1181. package/sdk/src/skills/pyth.md +0 -58
  1182. package/sdk/src/skills/reflexer.md +0 -73
  1183. package/sdk/src/skills/safe.md +0 -56
  1184. package/sdk/src/skills/seaport.md +0 -65
  1185. package/sdk/src/skills/sommelier.md +0 -47
  1186. package/sdk/src/skills/stader.md +0 -53
  1187. package/sdk/src/skills/swell.md +0 -65
  1188. package/sdk/src/skills/synapse.md +0 -63
  1189. package/sdk/src/skills/synthra-v3.md +0 -57
  1190. package/sdk/src/skills/thales.md +0 -74
  1191. package/sdk/src/skills/tokemak.md +0 -48
  1192. package/sdk/src/skills/uniswap-v3.md +0 -202
  1193. package/sdk/src/skills/uniswap-v4.md +0 -125
  1194. package/sdk/src/skills/unitflow-v3.md +0 -62
  1195. package/sdk/src/skills/vertex.md +0 -55
  1196. package/sdk/src/skills/wormhole.md +0 -76
  1197. package/sdk/src/skills/zerox.md +0 -51
@@ -1,5 +1,13 @@
1
1
  // ---- field kinds ----------------------------------------------------------------------------
2
2
  const address = { k: "address" };
3
+ /** A token: a registry symbol or an address. */
4
+ const token = { k: "token" };
5
+ /** A token, or `"native"` for the chain's native currency where the venue takes it. */
6
+ const tokenOrNative = { k: "token", native: true };
7
+ /** A protocol contract: a namespace reference or an address. */
8
+ const contract = { k: "contract" };
9
+ /** A token that is its own contract: a symbol, a namespace reference or an address. */
10
+ const tokenContract = { k: "tokenContract" };
3
11
  const recipient = { k: "recipient" };
4
12
  const remoteRecipient = { k: "remoteRecipient" };
5
13
  const uint256 = { k: "uint", bits: 256 };
@@ -22,92 +30,118 @@ const bridge = spec("bridge", { output: "passThrough" });
22
30
  const wrap = spec("wrap", { output: "realized" });
23
31
  const stake = spec("stake", { output: "realized" });
24
32
  const lending = spec("lending", { output: "passThrough" });
25
- const token = spec("token", { output: "passThrough" });
33
+ const tokens = spec("token", { output: "passThrough" });
26
34
  const source = spec("source", { output: "value" });
35
+ /** Where a pool given by its key is found, said once for every swap that takes one. */
36
+ const BY_KEY = "the program reads it from the factory on chain and reverts if there is none";
27
37
  const SPECS = [
28
- // -- swaps ----------------------------------------------------------------------------------
29
- swap("uniswapV3ExactInput", "Swaps an exact input through one Uniswap V3 pool.", "SwapRouter02.exactInputSingle", {
30
- router: f(address, "the SwapRouter02"),
31
- tokenIn: f(address, "the token sold"),
32
- tokenOut: f(address, "the token bought"),
33
- fee: f({ k: "enum", values: [100, 500, 3000, 10000] }, "the pool's fee tier, in hundredths of a bip"),
38
+ // -- swaps through @sauce/router ------------------------------------------------------------
39
+ swap("uniswapV2Swap", "Swaps through one Uniswap V2 pair (or a fork's), priced from its reserves and paid by a push.", "@sauce/router uniswapV2: pair.getReserves, an ERC-20 transfer to the pair, pair.swap", {
40
+ pool: opt(contract, "the pair; or leave it out and give `factory`"),
41
+ factory: opt(contract, `instead of \`pool\`: a Uniswap V2-style factory ("UniswapV2.Factory"), whose ` +
42
+ `getPair(tokenIn, tokenOut) is the pair; ${BY_KEY}`),
43
+ tokenIn: f(token, "the token sold, pushed to the pair"),
44
+ tokenOut: f(token, "the token bought; the direction is the pair's sort order"),
45
+ feePpm: opt(int(0, 999_999), "the pair's LP fee in parts per million; absent or 0 is 3000 (0.30%), PancakeSwap V2 is 2500"),
34
46
  amountOutMin: MIN_OUT,
35
- sqrtPriceLimitX96: opt(uint160, "a price limit; absent or 0 for none"),
36
47
  recipient: RECIPIENT,
48
+ }, { oneOf: [["pool"], ["factory"]] }),
49
+ swap("uniswapV3Swap", "Swaps through one Uniswap V3 pool (or a fork's), through the Pot's Router, which answers its callback.", "@sauce/router uniswapV3: Router.swapV3", {
50
+ pool: opt(contract, "the pool; or leave it out and give `factory` with `fee` or `tickSpacing`"),
51
+ factory: opt(contract, "instead of `pool`: the factory whose getPool(tokenIn, tokenOut, key) is the pool — a " +
52
+ 'Uniswap V3-style factory with `fee` ("UniswapV3.Factory", "PancakeswapV3.Factory"), or ' +
53
+ `Aerodrome Slipstream's with \`tickSpacing\` ("AerodromeSlipstream.CLFactory"); ${BY_KEY}`),
54
+ fee: opt(uintN(24), "with `factory`: the pool's fee tier, in hundredths of a bip (500 is 0.05%)"),
55
+ tickSpacing: opt(int(1, 8_388_607), "with a Slipstream `factory`: the pool's tick spacing"),
56
+ tokenIn: f(token, "the token sold"),
57
+ tokenOut: f(token, "the token bought"),
58
+ sqrtPriceLimitX96: opt(uint160, "a price at which the swap stops, leaving the rest of the input in the Pot; absent or 0 for none"),
59
+ amountOutMin: MIN_OUT,
60
+ recipient: RECIPIENT,
61
+ }, { oneOf: [["pool"], ["factory", "fee"], ["factory", "tickSpacing"]] }),
62
+ swap("uniswapV4Swap", "Swaps through one Uniswap V4 pool, named by its key, through the Pot's Router, which settles " +
63
+ "with the PoolManager.", "@sauce/router uniswapV4: Router.swapV4", {
64
+ poolManager: f(contract, 'the PoolManager ("UniswapV4.PoolManager")'),
65
+ tokenIn: f(tokenOrNative, 'the token sold; "native" is the native currency'),
66
+ tokenOut: f(tokenOrNative, 'the token bought; "native" is the native currency'),
67
+ fee: f(uintN(24), "the pool key's fee, in hundredths of a bip"),
68
+ tickSpacing: f(int(1, 32767), "the pool key's tick spacing"),
69
+ hooks: opt(contract, "the pool key's hooks contract; absent for a pool with none"),
70
+ sqrtPriceLimitX96: opt(uint160, "a price at which the swap stops, leaving the rest of the input in the Pot; absent or 0 for none"),
71
+ amountOutMin: MIN_OUT,
72
+ recipient: RECIPIENT,
73
+ }),
74
+ swap("curveSwap", "Swaps through a Curve pool's 4-argument `exchange`, approving exactly the input; the output " +
75
+ "is a balance delta.", "@sauce/router curve: an exact ERC-20 approval, then pool.exchange(int128|uint256 i, j, dx, min_dy)", {
76
+ pool: f(contract, "the Curve pool"),
77
+ tokenIn: f(token, "the token sold, approved to the pool for exactly the amount"),
78
+ tokenOut: f(token, "the token bought, whose balance delta is the output"),
79
+ i: f(int(0, 7), "the pool index of the coin sold"),
80
+ j: f(int(0, 7), "the pool index of the coin bought"),
81
+ indexType: f({ k: "enum", values: ["int128", "uint256"] }, "the pool's index type: int128 for StableSwap and NG pools, uint256 for CryptoSwap"),
82
+ amountOutMin: MIN_OUT,
83
+ recipient: f(recipient, `${RECIPIENT.doc}; the pool pays the Pot, which forwards it with a transfer`),
37
84
  }),
38
- swap("uniswapV3ExactInputMultiHop", "Swaps an exact input along a packed Uniswap V3 path.", "SwapRouter02.exactInput", {
39
- router: f(address, "the SwapRouter02"),
40
- path: f(bytes, "the packed path: token ++ fee (3 bytes) ++ token ++ …"),
85
+ swap("balancerV2Swap", "Swaps through one Balancer V2 pool, approving the Vault for exactly the input.", "@sauce/router balancerV2: an exact ERC-20 approval, then Vault.swap (GIVEN_IN)", {
86
+ vault: f(contract, "the Balancer V2 Vault"),
87
+ poolId: f(bytes32, "the pool id"),
88
+ tokenIn: f(token, "the token sold, approved to the Vault for exactly the amount"),
89
+ tokenOut: f(token, "the token bought"),
41
90
  amountOutMin: MIN_OUT,
42
91
  recipient: RECIPIENT,
43
92
  }),
44
- swap("uniswapV4ExactInput", "Swaps an exact ERC-20 input through one Uniswap V4 pool via the Universal Router.", "an ERC-20 transfer to the router, then UniversalRouter.execute (V4_SWAP: swap, settle, take)", {
45
- router: f(address, "the Universal Router"),
46
- poolKey: f({
47
- k: "object",
48
- fields: {
49
- currency0: f(address, "the pool's lower currency"),
50
- currency1: f(address, "the pool's higher currency"),
51
- fee: f(uintN(24), "the pool fee, in hundredths of a bip"),
52
- tickSpacing: f(int(1, 32767), "the pool's tick spacing"),
53
- hooks: f(address, "the pool's hooks contract, or the zero address"),
54
- },
55
- }, "the V4 pool key"),
56
- zeroForOne: f(bool, "true sells currency0 for currency1"),
57
- amountOutMin: f(uint128, "the least output accepted; the router reverts below it"),
93
+ swap("dodoV2Swap", "Swaps through one DODO V2 pool (DVM, DPP or DSP), paid by a push.", "@sauce/router dodoV2: an ERC-20 transfer to the pool, then sellBase(to) or sellQuote(to)", {
94
+ pool: f(contract, "the pool"),
95
+ tokenIn: f(token, "the token sold, pushed to the pool"),
96
+ tokenOut: f(token, "the token bought"),
97
+ baseToken: f(token, "the pool's base token; tokenIn and tokenOut must be base and quote"),
98
+ quoteToken: f(token, "the pool's quote token"),
99
+ amountOutMin: MIN_OUT,
58
100
  recipient: RECIPIENT,
59
101
  }),
60
- swap("uniswapV4ExactInputMultiHop", "Swaps an exact ERC-20 input along a Uniswap V4 path via the Universal Router.", "an ERC-20 transfer to the router, then UniversalRouter.execute (V4_SWAP: swap, settle, take)", {
61
- router: f(address, "the Universal Router"),
62
- currencyIn: f(address, "the currency sold"),
63
- path: f({
64
- k: "array",
65
- min: 1,
66
- of: {
67
- k: "object",
68
- fields: {
69
- intermediateCurrency: f(address, "the currency this hop buys"),
70
- fee: f(uintN(24), "the hop's pool fee"),
71
- tickSpacing: f(int(1, 32767), "the hop's pool tick spacing"),
72
- hooks: f(address, "the hop's pool hooks, or the zero address"),
73
- },
74
- },
75
- }, "the hops, in order; the last hop's currency is the output"),
76
- amountOutMin: f(uint128, "the least output accepted; the router reverts below it"),
102
+ swap("traderJoeLBSwap", "Swaps through one Trader Joe Liquidity Book pair, paid by a push.", "@sauce/router traderJoeLB: an ERC-20 transfer to the pair, then pair.swap(swapForY, to)", {
103
+ pool: opt(contract, "the pair; or leave it out and give `factory` with `binStep`"),
104
+ factory: opt(contract, 'instead of `pool`: the LBFactory ("TraderJoe.LBFactory"), whose ' +
105
+ `getLBPairInformation(tokenIn, tokenOut, binStep) names the pair; ${BY_KEY}`),
106
+ binStep: opt(int(1, 65_535), "with `factory`: the pair's bin step"),
107
+ tokenIn: f(token, "the token sold, pushed to the pair"),
108
+ tokenOut: f(token, "the token bought"),
109
+ tokenX: opt(token, "the pair's token X; tokenIn and tokenOut must be X and Y. Leave tokenX and tokenY out " +
110
+ "to read them from the pair"),
111
+ tokenY: opt(token, "the pair's token Y"),
112
+ amountOutMin: MIN_OUT,
113
+ recipient: RECIPIENT,
114
+ }, { oneOf: [["pool"], ["factory", "binStep"]], together: [["tokenX", "tokenY"]] }),
115
+ swap("woofiSwap", "Swaps through WOOFi's WooPPV2, paid by a push.", "@sauce/router woofi: an ERC-20 transfer to the pool, then WooPPV2.swap", {
116
+ pool: f(contract, "the WooPPV2 itself, not the WooRouterV2"),
117
+ tokenIn: f(token, "the token sold, pushed to the pool"),
118
+ tokenOut: f(token, "the token bought"),
119
+ amountOutMin: f(uint256, "the least output accepted, as the pool's own minToAmount; required and positive, because the pool prices from an oracle"),
77
120
  recipient: RECIPIENT,
78
121
  }),
79
- swap("curveSwap", "Swaps through a Curve pool's 4-argument `exchange`; the output is a balance delta.", "pool.exchange(int128,int128,uint256,uint256)", {
80
- pool: f(address, "the Curve pool"),
81
- tokenOut: f(address, "the token bought, whose balance delta is the output"),
82
- i: f(int(0, 7), "the pool index of the coin sold"),
83
- j: f(int(0, 7), "the pool index of the coin bought"),
122
+ swap("maverickV2Swap", "Swaps through one Maverick V2 pool, through the Pot's Router, which pays what the pool asks for.", "@sauce/router maverickV2: Router.swap", {
123
+ pool: f(contract, "the pool"),
124
+ tokenIn: f(token, "the token sold"),
125
+ tokenOut: f(token, "the token bought"),
84
126
  amountOutMin: MIN_OUT,
85
- recipient: f(recipient, `${RECIPIENT.doc}; the pool pays the Pot, which forwards it with a transfer`),
127
+ recipient: RECIPIENT,
86
128
  }),
129
+ // -- swaps at venues @sauce/router does not cover -------------------------------------------
87
130
  swap("curveRouterNGSwap", "Swaps along a Curve RouterNG route of up to five hops.", "RouterNG.exchange(address[11],uint256[5][5],uint256,uint256,address[5],address)", {
88
- router: f(address, "the Curve RouterNG"),
89
- route: f({ k: "array", of: address, min: 1, max: 11 }, "the route; padded to 11 with zero addresses"),
131
+ router: f(contract, "the Curve RouterNG"),
132
+ route: f({ k: "array", of: tokenContract, min: 1, max: 11 }, "the route, tokens and pools alternating; padded to 11 with zero addresses"),
90
133
  swapParams: f({
91
134
  k: "array",
92
135
  min: 1,
93
136
  max: 5,
94
137
  of: { k: "tuple", of: [int(0, 255), int(0, 255), int(0, 255), int(0, 255), int(0, 255)] },
95
138
  }, "per hop: [i, j, swap_type, pool_type, n_coins]; padded to 5 rows"),
96
- pools: f({ k: "array", of: address, max: 5 }, "a zap pool where a hop needs one; padded to 5"),
139
+ pools: f({ k: "array", of: contract, max: 5 }, "a zap pool where a hop needs one; padded to 5"),
97
140
  amountOutMin: MIN_OUT,
98
141
  recipient: RECIPIENT,
99
142
  }),
100
- swap("balancerV2Swap", "Swaps through one Balancer V2 pool.", "Vault.swap", {
101
- vault: f(address, "the Balancer V2 Vault"),
102
- poolId: f(bytes32, "the pool id"),
103
- tokenIn: f(address, "the token sold"),
104
- tokenOut: f(address, "the token bought"),
105
- amountOutMin: MIN_OUT,
106
- recipient: RECIPIENT,
107
- deadline: DEADLINE,
108
- }),
109
143
  swap("balancerV2BatchSwap", "Swaps along Balancer V2 pools in one batch; the output is a balance delta.", "Vault.batchSwap", {
110
- vault: f(address, "the Balancer V2 Vault"),
144
+ vault: f(contract, "the Balancer V2 Vault"),
111
145
  steps: f({
112
146
  k: "array",
113
147
  min: 1,
@@ -121,32 +155,25 @@ const SPECS = [
121
155
  },
122
156
  },
123
157
  }, "the batch's steps; the last step's output asset is the output"),
124
- assets: f({ k: "array", of: address, min: 2 }, "every asset the steps index"),
158
+ assets: f({ k: "array", of: tokenOrNative, min: 2 }, 'every asset the steps index; "native" is the native currency'),
125
159
  amountOutMin: MIN_OUT,
126
160
  recipient: RECIPIENT,
127
161
  deadline: DEADLINE,
128
162
  }, { spends: false }),
129
163
  swap("balancerV3Swap", "Swaps an exact input through one Balancer V3 pool; the router pays the Pot and pulls " +
130
164
  "through Permit2.", "Router.swapSingleTokenExactIn", {
131
- router: f(address, "the Balancer V3 Router"),
132
- pool: f(address, "the pool"),
133
- tokenIn: f(address, "the token sold"),
134
- tokenOut: f(address, "the token bought"),
165
+ router: f(contract, "the Balancer V3 Router"),
166
+ pool: f(contract, "the pool"),
167
+ tokenIn: f(token, "the token sold"),
168
+ tokenOut: f(token, "the token bought"),
135
169
  amountOutMin: MIN_OUT,
136
170
  deadline: DEADLINE,
137
171
  wethIsEth: f(bool, "true to pay or receive native ETH for WETH"),
138
172
  }),
139
- swap("uniswapV2Swap", "Swaps an exact input along a Uniswap V2 path; the output is a balance delta.", "UniswapV2Router.swapExactTokensForTokens", {
140
- router: f(address, "the V2 router"),
141
- path: f({ k: "array", of: address, min: 2 }, "the token path; the last token is the output"),
142
- amountOutMin: MIN_OUT,
143
- recipient: RECIPIENT,
144
- deadline: DEADLINE,
145
- }),
146
173
  swap("ambientSwap", "Swaps through an Ambient (CrocSwap) pool; the dex pays the Pot, and the output is a balance delta.", "CrocSwapDex.userCmd(1, abi.encode(...))", {
147
- dex: f(address, "the CrocSwapDex"),
148
- base: f(address, "the pool's base token (numerically lower)"),
149
- quote: f(address, "the pool's quote token"),
174
+ dex: f(contract, "the CrocSwapDex"),
175
+ base: f(tokenOrNative, "the pool's base token (numerically lower)"),
176
+ quote: f(token, "the pool's quote token"),
150
177
  poolIdx: f(uintN(53), "the pool type index (420 is the standard pool)"),
151
178
  isBuy: f(bool, "true pays base and receives quote"),
152
179
  inBaseQty: f(bool, "true when the amount is denominated in the base token"),
@@ -155,33 +182,19 @@ const SPECS = [
155
182
  amountOutMin: f(uint128, "the least output accepted; the dex reverts below it"),
156
183
  reserveFlags: f(uintN(8), "0x1 settles base from surplus, 0x2 quote"),
157
184
  }),
158
- swap("dodoSwap", "Swaps through DODO pairs via the DODO proxy, which pays the Pot.", "DODOProxy.dodoSwapV2TokenToToken (or dodoSwapV1)", {
159
- proxy: f(address, "the DODO proxy; approvals go to DODOApprove, not to it"),
160
- fromToken: f(address, "the token sold"),
161
- toToken: f(address, "the token bought"),
162
- pairs: f({ k: "array", of: address, min: 1 }, "the pairs to route through"),
185
+ swap("dodoV1Swap", "Swaps through legacy DODO V1 (Classical) pairs via the DODO proxy, which pays the Pot.", "DODOProxy.dodoSwapV1", {
186
+ proxy: f(contract, "the DODO proxy; approvals go to DODOApprove, not to it"),
187
+ tokenIn: f(token, "the token sold"),
188
+ tokenOut: f(token, "the token bought"),
189
+ pairs: f({ k: "array", of: contract, min: 1 }, "the V1 pairs to route through"),
163
190
  directions: f(uintN(53), "a bit per pair: 0 sells base, 1 sells quote"),
164
191
  amountOutMin: MIN_OUT,
165
192
  deadline: DEADLINE,
166
- version: opt({ k: "enum", values: ["v1", "v2"] }, '"v1" routes legacy Classical pairs through `dodoSwapV1`; default "v2"'),
167
- }),
168
- swap("maverickSwap", "Swaps an exact input through one Maverick V2 pool.", "MaverickV2Router.exactInputSingle", {
169
- router: f(address, "the Maverick V2 router"),
170
- pool: f(address, "the pool"),
171
- tokenAIn: f(bool, "true sells the pool's token A"),
172
- amountOutMin: MIN_OUT,
173
- recipient: RECIPIENT,
174
- }),
175
- swap("maverickMultiHopSwap", "Swaps an exact input along a packed Maverick V2 path.", "MaverickV2Router.exactInputMultiHop", {
176
- router: f(address, "the Maverick V2 router"),
177
- path: f(bytes, "per hop, the pool's 20 bytes then one byte: 1 sells token A, 0 token B"),
178
- amountOutMin: MIN_OUT,
179
- recipient: RECIPIENT,
180
193
  }),
181
194
  swap("carbonSwap", "Trades against Carbon strategies by source amount; the controller pays the Pot.", "CarbonController.tradeBySourceAmount", {
182
- controller: f(address, "the CarbonController"),
183
- sourceToken: f(address, "the token sold"),
184
- targetToken: f(address, "the token bought"),
195
+ controller: f(contract, "the CarbonController"),
196
+ sourceToken: f(token, "the token sold"),
197
+ targetToken: f(token, "the token bought"),
185
198
  tradeActions: f({
186
199
  k: "array",
187
200
  min: 1,
@@ -197,22 +210,22 @@ const SPECS = [
197
210
  deadline: DEADLINE,
198
211
  }, { spends: false }),
199
212
  swap("fraxswapSwap", "Swaps an exact input along a Fraxswap path; the output is a balance delta.", "FraxswapRouter.swapExactTokensForTokens", {
200
- router: f(address, "the Fraxswap router"),
201
- path: f({ k: "array", of: address, min: 2 }, "the token path; the last token is the output"),
213
+ router: f(contract, "the Fraxswap router"),
214
+ path: f({ k: "array", of: token, min: 2 }, "the token path; the last token is the output"),
202
215
  amountOutMin: MIN_OUT,
203
216
  recipient: RECIPIENT,
204
217
  deadline: DEADLINE,
205
218
  }),
206
219
  swap("fluidDexT1Swap", "Swaps an exact ERC-20 input through a Fluid DEX T1 pool.", "FluidDexT1.swapIn", {
207
- pool: f(address, "the pool"),
220
+ pool: f(contract, "the pool"),
208
221
  swap0to1: f(bool, "true sells token0"),
209
222
  amountOutMin: MIN_OUT,
210
223
  recipient: RECIPIENT,
211
224
  }),
212
225
  // -- bridges --------------------------------------------------------------------------------
213
226
  bridge("acrossBridge", "Deposits into an Across SpokePool for the same token on the destination, less the relayer fee.", "SpokePool.depositV3", {
214
- spokePool: f(address, "the origin SpokePool; it pulls the token, so approve it first"),
215
- token: f(address, "the token bridged (input and output)"),
227
+ spokePool: f(contract, "the origin SpokePool; it pulls the token, so approve it first"),
228
+ token: f(token, "the token bridged (input and output)"),
216
229
  destChainId: f(int(1, Number.MAX_SAFE_INTEGER), "the destination chain id"),
217
230
  recipient: f(address, "receives on the destination"),
218
231
  relayerFee: f(uint256, "kept by the relayer: the destination receives `amount - relayerFee`"),
@@ -222,98 +235,98 @@ const SPECS = [
222
235
  message: f(bytes, "delivered with the fill; 0x for none"),
223
236
  }),
224
237
  bridge("stargateBridge", "Sends through a Stargate V2 ERC-20 pool (taxi), paying the LayerZero fee it quotes.", "StargatePool.quoteSend, then StargatePool.send", {
225
- pool: f(address, "the StargatePool; it pulls the token, so approve it first"),
238
+ pool: f(contract, "the StargatePool; it pulls the token, so approve it first"),
226
239
  dstEid: f(uintN(32), "the destination's LayerZero endpoint id"),
227
240
  recipient: f(remoteRecipient, "receives on the destination"),
228
241
  amountOutMin: f(uint256, "the least the destination may receive"),
229
242
  }, { value: "the quoted native fee, from the Pot" }),
230
243
  bridge("cctpBridge", "Burns USDC through Circle's CCTP V2 TokenMessenger for minting on the destination.", "TokenMessengerV2.depositForBurn", {
231
- tokenMessenger: f(address, "the CCTP V2 TokenMessenger; it pulls the token, so approve it first"),
232
- token: f(address, "the burned token (USDC)"),
244
+ tokenMessenger: f(contract, "the CCTP V2 TokenMessenger; it pulls the token, so approve it first"),
245
+ token: f(token, "the burned token (USDC)"),
233
246
  destinationDomain: f(uintN(32), "the destination's CCTP domain"),
234
247
  recipient: f(remoteRecipient, "receives the mint on the destination"),
235
248
  maxFee: opt(uint256, 'the most the transfer may pay in fees, from the amount; default "0"'),
236
249
  minFinalityThreshold: opt(uintN(32), "2000 waits for finality (standard, the default); 1000 is fast"),
237
250
  }),
238
251
  bridge("hyperlaneBridge", "Transfers through a Hyperlane ERC-20 warp route, paying the interchain gas it quotes.", "TokenRouter.quoteGasPayment, then TokenRouter.transferRemote", {
239
- router: f(address, "the warp route; it pulls the amount plus any fee it charges"),
252
+ router: f(contract, "the warp route; it pulls the amount plus any fee it charges"),
240
253
  destinationDomain: f(uintN(32), "the destination's Hyperlane domain"),
241
254
  recipient: f(remoteRecipient, "receives on the destination"),
242
255
  }, { value: "the quoted gas payment, from the Pot" }),
243
256
  // -- wrapping -------------------------------------------------------------------------------
244
- wrap("wrapETH", "Wraps native ETH into WETH.", "WETH.deposit", { weth: f(address, "the WETH contract") }, { output: "passThrough", value: "amount" }),
245
- wrap("unwrapETH", "Unwraps WETH into native ETH.", "WETH.withdraw", { weth: f(address, "the WETH contract") }, { output: "passThrough" }),
257
+ wrap("wrapETH", "Wraps native ETH into WETH.", "WETH.deposit", { weth: f(tokenContract, 'the WETH contract ("WETH")') }, { output: "passThrough", value: "amount" }),
258
+ wrap("unwrapETH", "Unwraps WETH into native ETH.", "WETH.withdraw", { weth: f(tokenContract, 'the WETH contract ("WETH")') }, { output: "passThrough" }),
246
259
  wrap("wrapStETH", "Wraps stETH into wstETH; the output is the wstETH minted.", "wstETH.wrap", {
247
- wstETH: f(address, "the wstETH contract; it pulls the stETH, so approve it first"),
260
+ wstETH: f(tokenContract, "the wstETH contract; it pulls the stETH, so approve it first"),
248
261
  }),
249
262
  wrap("unwrapStETH", "Unwraps wstETH; the output is the stETH returned.", "wstETH.unwrap", {
250
- wstETH: f(address, "the wstETH contract"),
263
+ wstETH: f(tokenContract, "the wstETH contract"),
251
264
  }),
252
265
  // -- staking --------------------------------------------------------------------------------
253
266
  stake("lidoStake", "Stakes native ETH with Lido; the output is the stETH received.", "stETH.submit", {
254
- stETH: f(address, "the stETH contract"),
267
+ stETH: f(tokenContract, "the stETH contract"),
255
268
  referral: opt(address, "Lido's referral; default the zero address"),
256
269
  }, { value: "amount" }),
257
270
  stake("lidoUnstake", "Requests a Lido withdrawal of stETH; the ETH is claimed later with the withdrawal NFT.", "WithdrawalQueueERC721.requestWithdrawals", {
258
- withdrawalQueue: f(address, "Lido's withdrawal queue; it pulls the stETH, so approve it first"),
271
+ withdrawalQueue: f(contract, "Lido's withdrawal queue; it pulls the stETH, so approve it first"),
259
272
  owner: f(recipient, 'receives the withdrawal NFT; `"self"` is the Pot'),
260
273
  }, { output: "passThrough" }),
261
274
  stake("rocketPoolStake", "Stakes native ETH with Rocket Pool; the output is the rETH received.", "RocketDepositPool.deposit", {
262
- depositPool: f(address, "the live RocketDepositPool, which upgrades move; read it from RocketStorage"),
263
- rETH: f(address, "the rETH token, whose balance delta is the output"),
275
+ depositPool: f(contract, "the live RocketDepositPool, which upgrades move; read it from RocketStorage"),
276
+ rETH: f(tokenContract, "the rETH token, whose balance delta is the output"),
264
277
  }, { value: "amount" }),
265
278
  stake("rocketPoolUnstake", "Burns rETH; the output is the ETH received.", "rETH.burn", {
266
- rETH: f(address, "the rETH token"),
279
+ rETH: f(tokenContract, "the rETH token"),
267
280
  }),
268
281
  stake("etherFiStake", "Stakes native ETH with ether.fi; the output is the eETH received.", "LiquidityPool.deposit", {
269
- liquidityPool: f(address, "the ether.fi LiquidityPool"),
270
- eETH: f(address, "the eETH token, whose balance delta is the output"),
282
+ liquidityPool: f(contract, "the ether.fi LiquidityPool"),
283
+ eETH: f(tokenContract, "the eETH token, whose balance delta is the output"),
271
284
  }, { value: "amount" }),
272
285
  // -- lending --------------------------------------------------------------------------------
273
286
  lending("aaveV3Supply", "Supplies a token to Aave V3.", "Pool.supply", {
274
- pool: f(address, "the Aave V3 Pool; it pulls the token, so approve it first"),
275
- token: f(address, "the asset supplied"),
287
+ pool: f(contract, "the Aave V3 Pool; it pulls the token, so approve it first"),
288
+ token: f(token, "the asset supplied"),
276
289
  onBehalfOf: f(recipient, 'credited with the position; `"self"` is the Pot'),
277
290
  referralCode: opt(uintN(16), "Aave's referral code; default 0"),
278
291
  }),
279
292
  lending("aaveV3Withdraw", "Withdraws a token from Aave V3; the output is the amount withdrawn.", "Pool.withdraw", {
280
- pool: f(address, "the Aave V3 Pool"),
281
- token: f(address, "the asset withdrawn"),
293
+ pool: f(contract, "the Aave V3 Pool"),
294
+ token: f(token, "the asset withdrawn"),
282
295
  recipient: f(recipient, 'receives the asset; `"self"` is the Pot'),
283
296
  }, { output: "realized" }),
284
297
  lending("aaveV3Borrow", "Borrows a token from Aave V3 at the variable rate, the only rate it offers.", "Pool.borrow", {
285
- pool: f(address, "the Aave V3 Pool"),
286
- token: f(address, "the asset borrowed"),
298
+ pool: f(contract, "the Aave V3 Pool"),
299
+ token: f(token, "the asset borrowed"),
287
300
  onBehalfOf: f(recipient, 'whose collateral backs the debt; `"self"` is the Pot'),
288
301
  referralCode: opt(uintN(16), "Aave's referral code; default 0"),
289
302
  }),
290
303
  lending("aaveV3Repay", "Repays an Aave V3 variable-rate debt.", "Pool.repay", {
291
- pool: f(address, "the Aave V3 Pool; it pulls the token, so approve it first"),
292
- token: f(address, "the asset repaid"),
304
+ pool: f(contract, "the Aave V3 Pool; it pulls the token, so approve it first"),
305
+ token: f(token, "the asset repaid"),
293
306
  onBehalfOf: f(recipient, 'whose debt is repaid; `"self"` is the Pot'),
294
307
  }),
295
308
  lending("compoundV3Supply", "Supplies a token to a Compound V3 (Comet) market.", "Comet.supply", {
296
- comet: f(address, "the Comet market; it pulls the token, so approve it first"),
297
- token: f(address, "the asset supplied"),
309
+ comet: f(contract, "the Comet market; it pulls the token, so approve it first"),
310
+ token: f(token, "the asset supplied"),
298
311
  }),
299
312
  lending("compoundV3Withdraw", "Withdraws a token from a Compound V3 (Comet) market.", "Comet.withdraw", {
300
- comet: f(address, "the Comet market"),
301
- token: f(address, "the asset withdrawn"),
313
+ comet: f(contract, "the Comet market"),
314
+ token: f(token, "the asset withdrawn"),
302
315
  }),
303
316
  // -- tokens ---------------------------------------------------------------------------------
304
- token("transfer", "Transfers an ERC-20 token.", "ERC-20 transfer, checked like SafeERC20", {
305
- token: f(address, "the token"),
317
+ tokens("transfer", "Transfers an ERC-20 token.", "ERC-20 transfer, checked like SafeERC20", {
318
+ token: f(token, "the token"),
306
319
  recipient: f(recipient, 'the receiver; `"self"` is the Pot'),
307
320
  }),
308
- token("approve", "Approves an ERC-20 spender, resetting a non-zero allowance first.", "ERC-20 approve, checked and reset like SafeERC20.forceApprove", { token: f(address, "the token"), spender: f(address, "the spender") }),
309
- token("permit2Approve", "Grants a spender a Permit2 allowance; the token must also be approved to Permit2.", "Permit2.approve(address,address,uint160,uint48)", {
310
- permit2: f(address, "Permit2 (0x000000000022D473030F116dDEE9F6B43aC78BA3)"),
311
- token: f(address, "the token"),
312
- spender: f(address, "the spender, such as Balancer V3's router"),
321
+ tokens("approve", "Approves an ERC-20 spender, resetting a non-zero allowance first.", "ERC-20 approve, checked and reset like SafeERC20.forceApprove", { token: f(token, "the token"), spender: f(contract, "the spender") }),
322
+ tokens("permit2Approve", "Grants a spender a Permit2 allowance; the token must also be approved to Permit2.", "Permit2.approve(address,address,uint160,uint48)", {
323
+ permit2: f(contract, 'Permit2 ("Permit2.Permit2")'),
324
+ token: f(token, "the token"),
325
+ spender: f(contract, "the spender, such as Balancer V3's router"),
313
326
  expiration: f(uintN(48), "Unix seconds after which the allowance lapses"),
314
327
  }),
315
328
  // -- sources --------------------------------------------------------------------------------
316
- source("balanceOf", "Reads the Pot's balance of a token; the output is that balance.", "IERC20.balanceOf(pot)", { token: f(address, "the token") }, { spends: false }),
329
+ source("balanceOf", "Reads the Pot's balance of a token; the output is that balance.", "IERC20.balanceOf(pot)", { token: f(token, "the token") }, { spends: false }),
317
330
  source("nativeBalance", "Reads the Pot's native balance; the output is that balance.", "ctx.selfBalance()", {}, { spends: false }),
318
331
  source("argument", "Declares a runtime argument of the compiled program; the output is the value supplied.", "a `main` parameter", { name: f({ k: "identifier" }, "the argument's name; arguments are encoded in order") }, { spends: false }),
319
332
  ];
@@ -1,7 +1,7 @@
1
+ import { type ChainRef } from "../../sdk/dist/chains/canonical.js";
1
2
  import { type CompiledProgram } from "./compose.js";
2
3
  import { type QuoteOptions } from "./to-quote.js";
3
- import type { ApproveAction, SwapAction } from "./types.js";
4
- type Address = `0x${string}`;
4
+ import type { ApproveAction, Recipient, SwapAction, Token } from "./types.js";
5
5
  /** A swap of `amount` split greedily, `buckets` slices at a time, across `candidates`. */
6
6
  export interface SplitSwap {
7
7
  /**
@@ -23,13 +23,18 @@ export interface SplitSwap {
23
23
  readonly approvals?: readonly ApproveAction[];
24
24
  /** Sends the total output of `token` to `recipient` at the end; omit to keep it in the Pot. */
25
25
  readonly sweep?: {
26
- readonly token: Address;
27
- readonly recipient: Address;
26
+ readonly token: Token;
27
+ readonly recipient: Recipient;
28
28
  };
29
29
  /** The quoter contracts the candidates price through. */
30
30
  readonly quoters?: QuoteOptions;
31
+ /**
32
+ * The chain the split runs on, which its token symbols and namespace references resolve on —
33
+ * needed when any candidate, approval or the sweep names one. Each name becomes its address
34
+ * there, because the quotes are calldata built here.
35
+ */
36
+ readonly chain?: ChainRef;
31
37
  }
32
38
  /** Compiles a split swap into one program. It takes no runtime arguments. */
33
39
  export declare function compileSplitSwap(swap: SplitSwap): CompiledProgram;
34
- export {};
35
40
  //# sourceMappingURL=split-swap.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"split-swap.d.ts","sourceRoot":"","sources":["../src/split-swap.ts"],"names":[],"mappings":"AAmCA,OAAO,EAAY,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAG9D,OAAO,EAAa,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE5D,KAAK,OAAO,GAAG,KAAK,MAAM,EAAE,CAAC;AAE7B,0FAA0F;AAC1F,MAAM,WAAW,SAAS;IACxB;;;;OAIG;IACH,QAAQ,CAAC,UAAU,EAAE,SAAS,UAAU,EAAE,CAAC;IAC3C,gEAAgE;IAChE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,yEAAyE;IACzE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,8DAA8D;IAC9D,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IAC9C,+FAA+F;IAC/F,QAAQ,CAAC,KAAK,CAAC,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC;IAC1E,yDAAyD;IACzD,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC;CACjC;AAID,6EAA6E;AAC7E,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,SAAS,GAAG,eAAe,CAoFjE"}
1
+ {"version":3,"file":"split-swap.d.ts","sourceRoot":"","sources":["../src/split-swap.ts"],"names":[],"mappings":"AAkCA,OAAO,EAGL,KAAK,QAAQ,EACd,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAY,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAK9D,OAAO,EAAa,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,KAAK,EAAU,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEtF,0FAA0F;AAC1F,MAAM,WAAW,SAAS;IACxB;;;;OAIG;IACH,QAAQ,CAAC,UAAU,EAAE,SAAS,UAAU,EAAE,CAAC;IAC3C,gEAAgE;IAChE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,yEAAyE;IACzE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,8DAA8D;IAC9D,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IAC9C,+FAA+F;IAC/F,QAAQ,CAAC,KAAK,CAAC,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;QAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAA;KAAE,CAAC;IAC1E,yDAAyD;IACzD,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC;IAChC;;;;OAIG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC;CAC3B;AAID,6EAA6E;AAC7E,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,SAAS,GAAG,eAAe,CAsHjE"}
@@ -24,15 +24,18 @@
24
24
  * constants here, so the emitted main is O(N + n·N) instructions.
25
25
  */
26
26
  import { formatBigint, fn, indent, newEmitter, } from "./emit.js";
27
+ import { resolveChain, } from "../../sdk/dist/chains/canonical.js";
27
28
  import { contractsFor } from "./abis.js";
28
29
  import { compiled } from "./compose.js";
30
+ import { resolveNames, usesNames } from "./names.js";
29
31
  import { parseActions } from "./program.js";
30
- import { lowerAction } from "./to-sauce.js";
32
+ import { ProgramError } from "./semantics.js";
33
+ import { lowerAction, routerImport } from "./to-sauce.js";
31
34
  import { quoteCall } from "./to-quote.js";
32
35
  const UINT_RE = /^(0|[1-9][0-9]*)$/;
33
36
  /** Compiles a split swap into one program. It takes no runtime arguments. */
34
37
  export function compileSplitSwap(swap) {
35
- const candidates = parseActions(swap.candidates, "candidates");
38
+ let candidates = parseActions(swap.candidates, "candidates");
36
39
  candidates.forEach((candidate, i) => {
37
40
  for (const key of ["amount", "amountRef", "saveOutputAs"]) {
38
41
  if (candidate[key] !== undefined) {
@@ -40,7 +43,7 @@ export function compileSplitSwap(swap) {
40
43
  }
41
44
  }
42
45
  });
43
- const approvals = parseActions(swap.approvals ?? [], "approvals");
46
+ let approvals = parseActions(swap.approvals ?? [], "approvals");
44
47
  approvals.forEach((approval, i) => {
45
48
  if (approval.type !== "approve" || approval.amount === undefined) {
46
49
  throw new Error(`approvals[${i}]: expected an \`approve\` action with an explicit \`amount\``);
@@ -48,6 +51,33 @@ export function compileSplitSwap(swap) {
48
51
  });
49
52
  if (candidates.length === 0)
50
53
  throw new Error("a split swap needs at least one candidate");
54
+ candidates.forEach((candidate, i) => {
55
+ if (candidate.factory !== undefined) {
56
+ throw new Error(`candidates[${i}].factory: a split quotes each candidate at its pool's address, and a pool ` +
57
+ "named by its key is found only while the program runs — give `pool`");
58
+ }
59
+ });
60
+ let sweep = swap.sweep;
61
+ const chain = swap.chain === undefined ? undefined : splitChain(swap.chain);
62
+ const sweepAction = sweep === undefined ? [] : [{ type: "transfer", amount: "0", ...sweep }];
63
+ if (usesNames([...candidates, ...approvals, ...sweepAction])) {
64
+ if (chain === undefined) {
65
+ throw new Error("a split swap that names a token or a contract needs `chain`, the chain to resolve it on");
66
+ }
67
+ const issues = [];
68
+ const named = (actions, path) => {
69
+ const result = resolveNames(actions, chain, path);
70
+ issues.push(...result.issues);
71
+ return result.resolved;
72
+ };
73
+ candidates = named(candidates, "candidates");
74
+ approvals = named(approvals, "approvals");
75
+ const [resolvedSweep] = named(sweepAction, "sweep");
76
+ if (sweep !== undefined)
77
+ sweep = { ...sweep, token: resolvedSweep.token };
78
+ if (issues.length > 0)
79
+ throw new ProgramError(issues, chain);
80
+ }
51
81
  const n = swap.buckets;
52
82
  if (!Number.isSafeInteger(n) || n < 1) {
53
83
  throw new Error(`buckets must be a positive integer, got ${n}`);
@@ -68,9 +98,12 @@ export function compileSplitSwap(swap) {
68
98
  const N = candidates.length;
69
99
  const emit = newEmitter();
70
100
  const bindings = new Set();
101
+ const router = new Set();
71
102
  const use = (result) => {
72
103
  for (const b of result.bindings)
73
104
  bindings.add(b);
105
+ for (const f of result.router)
106
+ router.add(f);
74
107
  return result;
75
108
  };
76
109
  const quoteFns = candidates.map((candidate, i) => {
@@ -93,13 +126,21 @@ export function compileSplitSwap(swap) {
93
126
  const swapAny = fn("swap_any", ["idx: Uint256", "amount: Uint256"], "Uint256", [
94
127
  ...outOfRangeGuard(N),
95
128
  ...blockDispatch(N, (i) => {
96
- const built = use(lowerAction(emit, candidates[i], "amount", true));
129
+ const built = use(lowerAction(emit, candidates[i], "amount", true, `candidates[${i}]`));
97
130
  return [...built.stmts, `return ${built.output};`];
98
131
  }),
99
132
  ]);
100
- const main = mainFn(emit, N, n, bucket, swap, approvals, use);
101
- const source = [...quoteFns, quoteAny, swapAny, main].join("\n\n") + "\n";
102
- return compiled(source, contractsFor(bindings), []);
133
+ const main = mainFn(emit, N, n, bucket, { ...swap, sweep }, approvals, use);
134
+ const source = routerImport([...router].sort()) + [...quoteFns, quoteAny, swapAny, main].join("\n\n") + "\n";
135
+ return compiled(source, contractsFor(bindings), [], {}, chain);
136
+ }
137
+ /** The split's chain, an EVM one the SDK knows. */
138
+ function splitChain(ref) {
139
+ const chain = resolveChain(ref);
140
+ if (chain === undefined || chain.kind !== "evm") {
141
+ throw new Error(`a split swap runs on an EVM chain the SDK knows; got ${String(ref)}`);
142
+ }
143
+ return chain;
103
144
  }
104
145
  // ─────────────────────────────────────────────────────────────────────────────
105
146
  // Dispatchers
@@ -1,4 +1,5 @@
1
1
  import { type Emitter, type Expr, type Fragment } from "./emit.js";
2
+ import { type ChainRef } from "../../sdk/dist/chains/canonical.js";
2
3
  import type { SwapAction } from "./types.js";
3
4
  type Address = `0x${string}`;
4
5
  type Hex = `0x${string}`;
@@ -23,11 +24,19 @@ export interface QuoteCall extends Quote {
23
24
  * the action names.
24
25
  */
25
26
  export interface QuoteOptions {
26
- /** Uniswap's QuoterV2, for `uniswapV3ExactInput` and `uniswapV3ExactInputMultiHop`. */
27
- readonly uniswapV3Quoter?: Address;
28
- /** Uniswap's V4Quoter, for `uniswapV4ExactInput` and `uniswapV4ExactInputMultiHop`. */
29
- readonly uniswapV4Quoter?: Address;
30
- /** The MaverickV2Quoter, for `maverickSwap` and `maverickMultiHopSwap`. */
27
+ /**
28
+ * The chain the swap is on: needed when the action names a token or a contract, which resolve
29
+ * there to the addresses the quote calls.
30
+ */
31
+ readonly chain?: ChainRef;
32
+ /**
33
+ * The Sauce Router, for `uniswapV3Swap` and `uniswapV4Swap`: the contract that swaps them prices
34
+ * them, with its own `quote`, which needs no tokens. A Pot's Router is the Kitchen's Router until
35
+ * the Pot's owner moves it; `v12RouterAddress()` from `@eco-incorp/sauce/deployments` is the
36
+ * release's.
37
+ */
38
+ readonly router?: Address;
39
+ /** The MaverickV2Quoter, for `maverickV2Swap`. */
31
40
  readonly maverickQuoter?: Address;
32
41
  /** Ambient's CrocImpact, for `ambientSwap`. */
33
42
  readonly ambientImpact?: Address;