@eco-incorp/sauce 0.99.6 → 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 (1158) 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 +26 -3
  50. package/docs/concepts/saucescript.md +35 -55
  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 +20 -14
  66. package/docs/guides/cli.md +1442 -0
  67. package/docs/guides/compiling.md +19 -7
  68. package/docs/guides/intents.md +228 -15
  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 +218 -39
  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/price.d.ts +40 -0
  384. package/sdk/dist/price.d.ts.map +1 -0
  385. package/sdk/dist/price.js +101 -0
  386. package/sdk/dist/price.js.map +1 -0
  387. package/sdk/dist/protocols/aerodrome/abis.d.ts +76 -0
  388. package/sdk/dist/protocols/aerodrome/abis.d.ts.map +1 -1
  389. package/sdk/dist/protocols/aerodrome/abis.js +61 -0
  390. package/sdk/dist/protocols/aerodrome/abis.js.map +1 -1
  391. package/sdk/dist/protocols/aerodrome-slipstream/abis.d.ts +70 -0
  392. package/sdk/dist/protocols/aerodrome-slipstream/abis.d.ts.map +1 -1
  393. package/sdk/dist/protocols/aerodrome-slipstream/abis.js +54 -0
  394. package/sdk/dist/protocols/aerodrome-slipstream/abis.js.map +1 -1
  395. package/sdk/dist/protocols/camelot/abis.d.ts +178 -0
  396. package/sdk/dist/protocols/camelot/abis.d.ts.map +1 -1
  397. package/sdk/dist/protocols/camelot/abis.js +139 -0
  398. package/sdk/dist/protocols/camelot/abis.js.map +1 -1
  399. package/sdk/dist/protocols/eco-routes/abis.d.ts +792 -50
  400. package/sdk/dist/protocols/eco-routes/abis.d.ts.map +1 -1
  401. package/sdk/dist/protocols/eco-routes/abis.js +1058 -49
  402. package/sdk/dist/protocols/eco-routes/abis.js.map +1 -1
  403. package/sdk/dist/protocols/eco-routes/addresses.generated.d.ts +44 -61
  404. package/sdk/dist/protocols/eco-routes/addresses.generated.d.ts.map +1 -1
  405. package/sdk/dist/protocols/eco-routes/addresses.generated.js +45 -62
  406. package/sdk/dist/protocols/eco-routes/addresses.generated.js.map +1 -1
  407. package/sdk/dist/protocols/eco-routes/lookup.d.ts +10 -0
  408. package/sdk/dist/protocols/eco-routes/lookup.d.ts.map +1 -1
  409. package/sdk/dist/protocols/eco-routes/lookup.js +16 -0
  410. package/sdk/dist/protocols/eco-routes/lookup.js.map +1 -1
  411. package/sdk/dist/protocols/maverick/abis.d.ts +77 -0
  412. package/sdk/dist/protocols/maverick/abis.d.ts.map +1 -1
  413. package/sdk/dist/protocols/maverick/abis.js +58 -0
  414. package/sdk/dist/protocols/maverick/abis.js.map +1 -1
  415. package/sdk/dist/protocols/maverick/addresses.d.ts.map +1 -1
  416. package/sdk/dist/protocols/maverick/addresses.js +4 -0
  417. package/sdk/dist/protocols/maverick/addresses.js.map +1 -1
  418. package/sdk/dist/protocols/pancakeswap-v2/abis.d.ts +52 -0
  419. package/sdk/dist/protocols/pancakeswap-v2/abis.d.ts.map +1 -1
  420. package/sdk/dist/protocols/pancakeswap-v2/abis.js +43 -0
  421. package/sdk/dist/protocols/pancakeswap-v2/abis.js.map +1 -1
  422. package/sdk/dist/protocols/pancakeswap-v3/abis.d.ts +73 -0
  423. package/sdk/dist/protocols/pancakeswap-v3/abis.d.ts.map +1 -1
  424. package/sdk/dist/protocols/pancakeswap-v3/abis.js +56 -0
  425. package/sdk/dist/protocols/pancakeswap-v3/abis.js.map +1 -1
  426. package/sdk/dist/protocols/permit2/abis.d.ts +113 -0
  427. package/sdk/dist/protocols/permit2/abis.d.ts.map +1 -1
  428. package/sdk/dist/protocols/permit2/abis.js +63 -0
  429. package/sdk/dist/protocols/permit2/abis.js.map +1 -1
  430. package/sdk/dist/protocols/quickswap/abis.d.ts +148 -0
  431. package/sdk/dist/protocols/quickswap/abis.d.ts.map +1 -1
  432. package/sdk/dist/protocols/quickswap/abis.js +119 -0
  433. package/sdk/dist/protocols/quickswap/abis.js.map +1 -1
  434. package/sdk/dist/protocols/sushiswap-v2/abis.d.ts +52 -0
  435. package/sdk/dist/protocols/sushiswap-v2/abis.d.ts.map +1 -1
  436. package/sdk/dist/protocols/sushiswap-v2/abis.js +42 -0
  437. package/sdk/dist/protocols/sushiswap-v2/abis.js.map +1 -1
  438. package/sdk/dist/protocols/synthra-v3/abis.d.ts +73 -0
  439. package/sdk/dist/protocols/synthra-v3/abis.d.ts.map +1 -1
  440. package/sdk/dist/protocols/synthra-v3/abis.js +55 -0
  441. package/sdk/dist/protocols/synthra-v3/abis.js.map +1 -1
  442. package/sdk/dist/protocols/trader-joe/abis.d.ts +133 -0
  443. package/sdk/dist/protocols/trader-joe/abis.d.ts.map +1 -1
  444. package/sdk/dist/protocols/trader-joe/abis.js +101 -0
  445. package/sdk/dist/protocols/trader-joe/abis.js.map +1 -1
  446. package/sdk/dist/protocols/trader-joe/addresses.d.ts.map +1 -1
  447. package/sdk/dist/protocols/trader-joe/addresses.js +5 -0
  448. package/sdk/dist/protocols/trader-joe/addresses.js.map +1 -1
  449. package/sdk/dist/protocols/uniswap-v2/abis.d.ts +52 -0
  450. package/sdk/dist/protocols/uniswap-v2/abis.d.ts.map +1 -1
  451. package/sdk/dist/protocols/uniswap-v2/abis.js +44 -0
  452. package/sdk/dist/protocols/uniswap-v2/abis.js.map +1 -1
  453. package/sdk/dist/protocols/uniswap-v3/abis.d.ts +73 -0
  454. package/sdk/dist/protocols/uniswap-v3/abis.d.ts.map +1 -1
  455. package/sdk/dist/protocols/uniswap-v3/abis.js +55 -0
  456. package/sdk/dist/protocols/uniswap-v3/abis.js.map +1 -1
  457. package/sdk/dist/protocols/uniswap-v4/abis.d.ts +247 -0
  458. package/sdk/dist/protocols/uniswap-v4/abis.d.ts.map +1 -1
  459. package/sdk/dist/protocols/uniswap-v4/abis.js +167 -0
  460. package/sdk/dist/protocols/uniswap-v4/abis.js.map +1 -1
  461. package/sdk/dist/protocols/uniswap-v4/addresses.d.ts.map +1 -1
  462. package/sdk/dist/protocols/uniswap-v4/addresses.js +50 -0
  463. package/sdk/dist/protocols/uniswap-v4/addresses.js.map +1 -1
  464. package/sdk/dist/protocols/unitflow-v3/abis.d.ts +73 -0
  465. package/sdk/dist/protocols/unitflow-v3/abis.d.ts.map +1 -1
  466. package/sdk/dist/protocols/unitflow-v3/abis.js +56 -0
  467. package/sdk/dist/protocols/unitflow-v3/abis.js.map +1 -1
  468. package/sdk/dist/protocols/velodrome/abis.d.ts +76 -0
  469. package/sdk/dist/protocols/velodrome/abis.d.ts.map +1 -1
  470. package/sdk/dist/protocols/velodrome/abis.js +61 -0
  471. package/sdk/dist/protocols/velodrome/abis.js.map +1 -1
  472. package/sdk/dist/recipes/cctp-split.sauce.ts +2 -2
  473. package/sdk/dist/recipes/plain-transfer.sauce.ts +2 -2
  474. package/sdk/dist/routes/accessor-index.d.ts +2 -2
  475. package/sdk/dist/routes/accessor-index.d.ts.map +1 -1
  476. package/sdk/dist/routes/accessor-index.js +4 -3
  477. package/sdk/dist/routes/accessor-index.js.map +1 -1
  478. package/sdk/dist/routes/ambient.d.ts +5 -0
  479. package/sdk/dist/routes/ambient.d.ts.map +1 -1
  480. package/sdk/dist/routes/ambient.js +20 -0
  481. package/sdk/dist/routes/ambient.js.map +1 -1
  482. package/sdk/dist/routes/ast-walk.d.ts +17 -3
  483. package/sdk/dist/routes/ast-walk.d.ts.map +1 -1
  484. package/sdk/dist/routes/ast-walk.js +24 -2
  485. package/sdk/dist/routes/ast-walk.js.map +1 -1
  486. package/sdk/dist/routes/available.d.ts +43 -0
  487. package/sdk/dist/routes/available.d.ts.map +1 -0
  488. package/sdk/dist/routes/available.js +230 -0
  489. package/sdk/dist/routes/available.js.map +1 -0
  490. package/sdk/dist/routes/builtins.generated.d.ts +180 -0
  491. package/sdk/dist/routes/builtins.generated.d.ts.map +1 -0
  492. package/sdk/dist/routes/builtins.generated.js +2 -0
  493. package/sdk/dist/routes/builtins.generated.js.map +1 -0
  494. package/sdk/dist/routes/chain-exports.generated.d.ts +13 -8
  495. package/sdk/dist/routes/chain-exports.generated.d.ts.map +1 -1
  496. package/sdk/dist/routes/chain-exports.generated.js.map +1 -1
  497. package/sdk/dist/routes/closure.d.ts.map +1 -1
  498. package/sdk/dist/routes/closure.js +13 -26
  499. package/sdk/dist/routes/closure.js.map +1 -1
  500. package/sdk/dist/routes/composed.d.ts.map +1 -1
  501. package/sdk/dist/routes/composed.js +20 -8
  502. package/sdk/dist/routes/composed.js.map +1 -1
  503. package/sdk/dist/routes/encode.d.ts +17 -0
  504. package/sdk/dist/routes/encode.d.ts.map +1 -1
  505. package/sdk/dist/routes/encode.js +14 -11
  506. package/sdk/dist/routes/encode.js.map +1 -1
  507. package/sdk/dist/routes/entry.d.ts +76 -0
  508. package/sdk/dist/routes/entry.d.ts.map +1 -0
  509. package/sdk/dist/routes/entry.js +478 -0
  510. package/sdk/dist/routes/entry.js.map +1 -0
  511. package/sdk/dist/routes/index.d.ts +19 -12
  512. package/sdk/dist/routes/index.d.ts.map +1 -1
  513. package/sdk/dist/routes/index.js +11 -8
  514. package/sdk/dist/routes/index.js.map +1 -1
  515. package/sdk/dist/routes/intent-body.d.ts +97 -0
  516. package/sdk/dist/routes/intent-body.d.ts.map +1 -0
  517. package/sdk/dist/routes/intent-body.js +441 -0
  518. package/sdk/dist/routes/intent-body.js.map +1 -0
  519. package/sdk/dist/routes/intent-dsl.d.ts +21 -6
  520. package/sdk/dist/routes/intent-dsl.d.ts.map +1 -1
  521. package/sdk/dist/routes/intent-dsl.js +34 -17
  522. package/sdk/dist/routes/intent-dsl.js.map +1 -1
  523. package/sdk/dist/routes/intent-sugar.d.ts +77 -4
  524. package/sdk/dist/routes/intent-sugar.d.ts.map +1 -1
  525. package/sdk/dist/routes/intent-sugar.js +318 -129
  526. package/sdk/dist/routes/intent-sugar.js.map +1 -1
  527. package/sdk/dist/routes/intent.d.ts +13 -1
  528. package/sdk/dist/routes/intent.d.ts.map +1 -1
  529. package/sdk/dist/routes/intent.js +37 -1
  530. package/sdk/dist/routes/intent.js.map +1 -1
  531. package/sdk/dist/routes/nest.d.ts +3 -2
  532. package/sdk/dist/routes/nest.d.ts.map +1 -1
  533. package/sdk/dist/routes/nest.js +5 -3
  534. package/sdk/dist/routes/nest.js.map +1 -1
  535. package/sdk/dist/routes/parse.d.ts +6 -0
  536. package/sdk/dist/routes/parse.d.ts.map +1 -0
  537. package/sdk/dist/routes/parse.js +39 -0
  538. package/sdk/dist/routes/parse.js.map +1 -0
  539. package/sdk/dist/routes/portal.d.ts +258 -4
  540. package/sdk/dist/routes/portal.d.ts.map +1 -1
  541. package/sdk/dist/routes/portal.js +588 -9
  542. package/sdk/dist/routes/portal.js.map +1 -1
  543. package/sdk/dist/routes/protocol-rewrite.d.ts +71 -1
  544. package/sdk/dist/routes/protocol-rewrite.d.ts.map +1 -1
  545. package/sdk/dist/routes/protocol-rewrite.js +178 -54
  546. package/sdk/dist/routes/protocol-rewrite.js.map +1 -1
  547. package/sdk/dist/routes/rs-compile.d.ts +25 -22
  548. package/sdk/dist/routes/rs-compile.d.ts.map +1 -1
  549. package/sdk/dist/routes/rs-compile.js +55 -49
  550. package/sdk/dist/routes/rs-compile.js.map +1 -1
  551. package/sdk/dist/routes/sauce-calls.d.ts +26 -12
  552. package/sdk/dist/routes/sauce-calls.d.ts.map +1 -1
  553. package/sdk/dist/routes/sauce-calls.js +16 -23
  554. package/sdk/dist/routes/sauce-calls.js.map +1 -1
  555. package/sdk/dist/routes/sauce-route.d.ts +74 -7
  556. package/sdk/dist/routes/sauce-route.d.ts.map +1 -1
  557. package/sdk/dist/routes/sauce-route.js +225 -75
  558. package/sdk/dist/routes/sauce-route.js.map +1 -1
  559. package/sdk/dist/routes/source-globals.d.ts +107 -0
  560. package/sdk/dist/routes/source-globals.d.ts.map +1 -0
  561. package/sdk/dist/routes/source-globals.generated.d.ts +5523 -933
  562. package/sdk/dist/routes/source-globals.generated.d.ts.map +1 -1
  563. package/sdk/dist/routes/source-globals.generated.js +3 -4
  564. package/sdk/dist/routes/source-globals.generated.js.map +1 -1
  565. package/sdk/dist/routes/source-globals.js +174 -0
  566. package/sdk/dist/routes/source-globals.js.map +1 -0
  567. package/sdk/dist/routes/stock-tokens.d.ts +69 -0
  568. package/sdk/dist/routes/stock-tokens.d.ts.map +1 -0
  569. package/sdk/dist/routes/stock-tokens.generated.d.ts +4 -0
  570. package/sdk/dist/routes/stock-tokens.generated.d.ts.map +1 -0
  571. package/sdk/dist/routes/stock-tokens.generated.js +1836 -0
  572. package/sdk/dist/routes/stock-tokens.generated.js.map +1 -0
  573. package/sdk/dist/routes/stock-tokens.js +65 -0
  574. package/sdk/dist/routes/stock-tokens.js.map +1 -0
  575. package/sdk/dist/routes/token-registry.d.ts +64 -8
  576. package/sdk/dist/routes/token-registry.d.ts.map +1 -1
  577. package/sdk/dist/routes/token-registry.js +202 -32
  578. package/sdk/dist/routes/token-registry.js.map +1 -1
  579. package/sdk/dist/routes/token-rewrite.d.ts +1 -1
  580. package/sdk/dist/routes/token-rewrite.d.ts.map +1 -1
  581. package/sdk/dist/routes/token-rewrite.js +5 -9
  582. package/sdk/dist/routes/token-rewrite.js.map +1 -1
  583. package/sdk/dist/routes/unknown-global.d.ts +32 -0
  584. package/sdk/dist/routes/unknown-global.d.ts.map +1 -0
  585. package/sdk/dist/routes/unknown-global.js +106 -0
  586. package/sdk/dist/routes/unknown-global.js.map +1 -0
  587. package/sdk/dist/routes/vault.d.ts +38 -8
  588. package/sdk/dist/routes/vault.d.ts.map +1 -1
  589. package/sdk/dist/routes/vault.js +47 -8
  590. package/sdk/dist/routes/vault.js.map +1 -1
  591. package/sdk/dist/sauce-script/builtins.d.ts +309 -0
  592. package/sdk/dist/sauce-script/declarations.d.ts +3 -0
  593. package/sdk/dist/sauce-script/declarations.d.ts.map +1 -0
  594. package/sdk/dist/sauce-script/declarations.js +229 -0
  595. package/sdk/dist/sauce-script/declarations.js.map +1 -0
  596. package/sdk/dist/sauce-script/index.d.ts +2714 -0
  597. package/sdk/dist/sauce-script/ts-plugin.cjs +85 -0
  598. package/sdk/dist/skills/loader.d.ts.map +1 -1
  599. package/sdk/dist/skills/loader.js +4 -3
  600. package/sdk/dist/skills/loader.js.map +1 -1
  601. package/sdk/dist/std/router/balancer-v2-vault.abi.json +78 -0
  602. package/sdk/dist/std/router/curve-cryptoswap.abi.json +29 -0
  603. package/sdk/dist/std/router/curve-stableswap.abi.json +29 -0
  604. package/sdk/dist/std/router/dodo-v2-pool.abi.json +39 -0
  605. package/sdk/dist/std/router/lb-pair.abi.json +55 -0
  606. package/sdk/dist/std/router/package.json +7 -0
  607. package/sdk/dist/std/router/router.evm.js +567 -0
  608. package/sdk/dist/std/router/sauce-router.abi.json +202 -0
  609. package/sdk/dist/std/router/uniswap-v2-pair.abi.json +49 -0
  610. package/sdk/dist/std/router/woo-pp-v2.abi.json +42 -0
  611. package/sdk/dist/std/token/permit2.abi.json +226 -0
  612. package/sdk/dist/std/token/token.evm.js +73 -0
  613. package/sdk/dist/std/token/token.svm.js +194 -41
  614. package/sdk/dist/svm/client.d.ts +62 -15
  615. package/sdk/dist/svm/client.d.ts.map +1 -1
  616. package/sdk/dist/svm/client.js +103 -42
  617. package/sdk/dist/svm/client.js.map +1 -1
  618. package/sdk/dist/svm/engine.d.ts +66 -5
  619. package/sdk/dist/svm/engine.d.ts.map +1 -1
  620. package/sdk/dist/svm/engine.js +73 -5
  621. package/sdk/dist/svm/engine.js.map +1 -1
  622. package/sdk/dist/svm/index.d.ts +2 -0
  623. package/sdk/dist/svm/index.d.ts.map +1 -1
  624. package/sdk/dist/svm/index.js +2 -0
  625. package/sdk/dist/svm/index.js.map +1 -1
  626. package/sdk/dist/svm/instructions.d.ts +72 -1
  627. package/sdk/dist/svm/instructions.d.ts.map +1 -1
  628. package/sdk/dist/svm/instructions.js +81 -2
  629. package/sdk/dist/svm/instructions.js.map +1 -1
  630. package/sdk/dist/svm/kitchen.d.ts +20 -1
  631. package/sdk/dist/svm/kitchen.d.ts.map +1 -1
  632. package/sdk/dist/svm/kitchen.js +47 -1
  633. package/sdk/dist/svm/kitchen.js.map +1 -1
  634. package/sdk/dist/svm/portal.d.ts +250 -0
  635. package/sdk/dist/svm/portal.d.ts.map +1 -0
  636. package/sdk/dist/svm/portal.js +462 -0
  637. package/sdk/dist/svm/portal.js.map +1 -0
  638. package/sdk/dist/svm/send.d.ts +18 -2
  639. package/sdk/dist/svm/send.d.ts.map +1 -1
  640. package/sdk/dist/svm/send.js +28 -3
  641. package/sdk/dist/svm/send.js.map +1 -1
  642. package/sdk/dist/svm/token-accounts.d.ts +49 -0
  643. package/sdk/dist/svm/token-accounts.d.ts.map +1 -0
  644. package/sdk/dist/svm/token-accounts.js +58 -0
  645. package/sdk/dist/svm/token-accounts.js.map +1 -0
  646. package/sdk/dist/svm/token-extensions.d.ts +18 -7
  647. package/sdk/dist/svm/token-extensions.d.ts.map +1 -1
  648. package/sdk/dist/svm/token-extensions.js +58 -5
  649. package/sdk/dist/svm/token-extensions.js.map +1 -1
  650. package/sdk/dist/token/evm.js +1 -1
  651. package/sdk/dist/token/index.d.ts +1 -1
  652. package/sdk/dist/token/index.js +1 -1
  653. package/sdk/dist/token/params.js +1 -1
  654. package/sdk/dist/token/source.js +3 -3
  655. package/sdk/dist/token/source.js.map +1 -1
  656. package/sdk/dist/token/types.d.ts +2 -2
  657. package/sdk/dist/token/types.js +2 -2
  658. package/sdk/src/protocols/aerodrome/AerodromePoolABI.json +105 -0
  659. package/sdk/src/protocols/aerodrome/abis.ts +62 -0
  660. package/sdk/src/protocols/aerodrome-slipstream/AerodromeSlipstreamPoolABI.json +96 -0
  661. package/sdk/src/protocols/aerodrome-slipstream/abis.ts +55 -0
  662. package/sdk/src/protocols/camelot/CamelotV2FactoryABI.json +25 -0
  663. package/sdk/src/protocols/camelot/CamelotV2PairABI.json +109 -0
  664. package/sdk/src/protocols/camelot/CamelotV3FactoryABI.json +25 -0
  665. package/sdk/src/protocols/camelot/CamelotV3PoolABI.json +92 -0
  666. package/sdk/src/protocols/camelot/abis.ts +143 -0
  667. package/sdk/src/protocols/eco-routes/PortalABI.json +1448 -0
  668. package/sdk/src/protocols/eco-routes/ProverABI.json +162 -0
  669. package/sdk/src/protocols/eco-routes/abis.ts +1060 -51
  670. package/sdk/src/protocols/eco-routes/addresses.generated.ts +45 -62
  671. package/sdk/src/protocols/eco-routes/lookup.ts +18 -0
  672. package/sdk/src/protocols/maverick/MaverickV2PoolABI.json +107 -0
  673. package/sdk/src/protocols/maverick/abis.ts +59 -0
  674. package/sdk/src/protocols/maverick/addresses.ts +4 -0
  675. package/sdk/src/protocols/pancakeswap-v2/PancakeSwapV2PairABI.json +72 -0
  676. package/sdk/src/protocols/pancakeswap-v2/abis.ts +44 -0
  677. package/sdk/src/protocols/pancakeswap-v3/PancakeSwapV3PoolABI.json +100 -0
  678. package/sdk/src/protocols/pancakeswap-v3/abis.ts +57 -0
  679. package/sdk/src/protocols/permit2/Permit2ABI.json +154 -0
  680. package/sdk/src/protocols/permit2/abis.ts +63 -0
  681. package/sdk/src/protocols/quickswap/QuickSwapV2FactoryABI.json +25 -0
  682. package/sdk/src/protocols/quickswap/QuickSwapV2PairABI.json +72 -0
  683. package/sdk/src/protocols/quickswap/QuickSwapV3FactoryABI.json +25 -0
  684. package/sdk/src/protocols/quickswap/QuickSwapV3PoolABI.json +88 -0
  685. package/sdk/src/protocols/quickswap/abis.ts +123 -0
  686. package/sdk/src/protocols/sushiswap-v2/SushiSwapV2PairABI.json +72 -0
  687. package/sdk/src/protocols/sushiswap-v2/abis.ts +43 -0
  688. package/sdk/src/protocols/synthra-v3/SynthraV3PoolABI.json +100 -0
  689. package/sdk/src/protocols/synthra-v3/abis.ts +56 -0
  690. package/sdk/src/protocols/trader-joe/LBPairABI.json +185 -0
  691. package/sdk/src/protocols/trader-joe/abis.ts +102 -0
  692. package/sdk/src/protocols/trader-joe/addresses.ts +5 -0
  693. package/sdk/src/protocols/uniswap-v2/UniswapV2PairABI.json +72 -0
  694. package/sdk/src/protocols/uniswap-v2/abis.ts +45 -0
  695. package/sdk/src/protocols/uniswap-v3/UniswapV3PoolABI.json +100 -0
  696. package/sdk/src/protocols/uniswap-v3/abis.ts +56 -0
  697. package/sdk/src/protocols/uniswap-v4/UniswapV4PoolManagerABI.json +38 -0
  698. package/sdk/src/protocols/uniswap-v4/UniswapV4StateViewABI.json +307 -0
  699. package/sdk/src/protocols/uniswap-v4/abis.ts +168 -0
  700. package/sdk/src/protocols/uniswap-v4/addresses.ts +50 -0
  701. package/sdk/src/protocols/unitflow-v3/UnitFlowV3PoolABI.json +100 -0
  702. package/sdk/src/protocols/unitflow-v3/abis.ts +57 -0
  703. package/sdk/src/protocols/velodrome/VelodromePoolABI.json +105 -0
  704. package/sdk/src/protocols/velodrome/abis.ts +62 -0
  705. package/skills/sauce-actions/SKILL.md +166 -0
  706. package/skills/sauce-actions/examples/swap-and-supply.json +24 -0
  707. package/skills/sauce-actions/examples/swap-by-key.json +15 -0
  708. package/skills/sauce-actions/references/actions.md +731 -0
  709. package/skills/sauce-chains/SKILL.md +137 -0
  710. package/skills/sauce-chains/examples/chains.sauce.ts +25 -0
  711. package/skills/sauce-chains/references/arbitrum.md +158 -0
  712. package/skills/sauce-chains/references/arc.md +107 -0
  713. package/skills/sauce-chains/references/aurora.md +33 -0
  714. package/skills/sauce-chains/references/avalanche.md +106 -0
  715. package/skills/sauce-chains/references/base-stocks.md +77 -0
  716. package/skills/sauce-chains/references/base.md +141 -0
  717. package/skills/sauce-chains/references/berachain.md +33 -0
  718. package/skills/sauce-chains/references/blast.md +60 -0
  719. package/skills/sauce-chains/references/boba.md +33 -0
  720. package/skills/sauce-chains/references/bsc.md +97 -0
  721. package/skills/sauce-chains/references/celo.md +57 -0
  722. package/skills/sauce-chains/references/core.md +33 -0
  723. package/skills/sauce-chains/references/cronos.md +33 -0
  724. package/skills/sauce-chains/references/ethereum-stocks.md +1741 -0
  725. package/skills/sauce-chains/references/ethereum.md +255 -0
  726. package/skills/sauce-chains/references/evmos.md +33 -0
  727. package/skills/sauce-chains/references/fantom.md +61 -0
  728. package/skills/sauce-chains/references/fuse.md +33 -0
  729. package/skills/sauce-chains/references/gnosis.md +57 -0
  730. package/skills/sauce-chains/references/index.md +58 -0
  731. package/skills/sauce-chains/references/ink.md +55 -0
  732. package/skills/sauce-chains/references/kava.md +33 -0
  733. package/skills/sauce-chains/references/klaytn.md +33 -0
  734. package/skills/sauce-chains/references/linea.md +65 -0
  735. package/skills/sauce-chains/references/manta.md +33 -0
  736. package/skills/sauce-chains/references/mantle.md +33 -0
  737. package/skills/sauce-chains/references/metis.md +54 -0
  738. package/skills/sauce-chains/references/mode.md +55 -0
  739. package/skills/sauce-chains/references/monad.md +79 -0
  740. package/skills/sauce-chains/references/moonbeam.md +33 -0
  741. package/skills/sauce-chains/references/opbnb.md +55 -0
  742. package/skills/sauce-chains/references/optimism.md +123 -0
  743. package/skills/sauce-chains/references/plasma.md +35 -0
  744. package/skills/sauce-chains/references/polygon.md +123 -0
  745. package/skills/sauce-chains/references/pulsechain.md +33 -0
  746. package/skills/sauce-chains/references/ronin.md +35 -0
  747. package/skills/sauce-chains/references/scroll.md +62 -0
  748. package/skills/sauce-chains/references/sei.md +55 -0
  749. package/skills/sauce-chains/references/solana.md +53 -0
  750. package/skills/sauce-chains/references/sonic.md +57 -0
  751. package/skills/sauce-chains/references/unichain.md +61 -0
  752. package/skills/sauce-chains/references/zetachain.md +33 -0
  753. package/skills/sauce-chains/references/zksync.md +59 -0
  754. package/skills/sauce-chains/references/zora.md +57 -0
  755. package/skills/sauce-cli/SKILL.md +366 -0
  756. package/skills/sauce-cli/examples/pay.sauce.ts +23 -0
  757. package/skills/sauce-cli/examples/split.sauce.ts +30 -0
  758. package/skills/sauce-distributed-swap/SKILL.md +392 -0
  759. package/skills/sauce-distributed-swap/examples/distributed-swap.mts +251 -0
  760. package/skills/sauce-distributed-swap/examples/distributed-swap.sauce.ts +115 -0
  761. package/skills/sauce-examples/SKILL.md +96 -0
  762. package/skills/sauce-globals/SKILL.md +175 -0
  763. package/skills/sauce-globals/examples/globals.mts +111 -0
  764. package/skills/sauce-globals/examples/globals.sauce.ts +47 -0
  765. package/skills/sauce-globals/references/chains.md +53 -0
  766. package/skills/sauce-globals/references/protocols.md +405 -0
  767. package/skills/sauce-globals/references/stocks.md +1824 -0
  768. package/skills/sauce-globals/references/tokens.md +53 -0
  769. package/skills/sauce-intents/SKILL.md +505 -0
  770. package/skills/sauce-intents/examples/cross-chain.sauce.ts +37 -0
  771. package/skills/sauce-intents/examples/fund-by-transfer.sauce.ts +54 -0
  772. package/skills/sauce-intents/examples/intents.mts +343 -0
  773. package/skills/sauce-intents/examples/swap-on-base.sauce.ts +135 -0
  774. package/skills/sauce-intents/references/portal.md +77 -0
  775. package/skills/sauce-overview/SKILL.md +161 -0
  776. package/skills/sauce-protocols/SKILL.md +118 -0
  777. package/skills/sauce-protocols/examples/protocols.mts +77 -0
  778. package/skills/sauce-protocols/examples/protocols.sauce.ts +27 -0
  779. package/{sdk/src/skills → skills/sauce-protocols/references}/aave-v2.md +35 -17
  780. package/skills/sauce-protocols/references/aave-v3.md +144 -0
  781. package/skills/sauce-protocols/references/aave-v4.md +50 -0
  782. package/skills/sauce-protocols/references/abracadabra.md +72 -0
  783. package/skills/sauce-protocols/references/across.md +73 -0
  784. package/skills/sauce-protocols/references/aerodrome-slipstream.md +50 -0
  785. package/{sdk/src/skills → skills/sauce-protocols/references}/aerodrome.md +43 -24
  786. package/skills/sauce-protocols/references/aevo.md +49 -0
  787. package/{sdk/src/skills → skills/sauce-protocols/references}/alchemix.md +10 -25
  788. package/{sdk/src/skills → skills/sauce-protocols/references}/ambient.md +14 -21
  789. package/{sdk/src/skills → skills/sauce-protocols/references}/arbitrum-bridge.md +11 -14
  790. package/{sdk/src/skills → skills/sauce-protocols/references}/arrakis.md +10 -26
  791. package/skills/sauce-protocols/references/axelar.md +56 -0
  792. package/{sdk/src/skills → skills/sauce-protocols/references}/balancer-v2.md +13 -29
  793. package/{sdk/src/skills → skills/sauce-protocols/references}/base-bridge.md +11 -16
  794. package/{sdk/src/skills → skills/sauce-protocols/references}/baseswap.md +12 -19
  795. package/{sdk/src/skills → skills/sauce-protocols/references}/beefy.md +10 -30
  796. package/{sdk/src/skills → skills/sauce-protocols/references}/benqi.md +11 -21
  797. package/{sdk/src/skills → skills/sauce-protocols/references}/camelot.md +13 -27
  798. package/{sdk/src/skills → skills/sauce-protocols/references}/cbeth.md +10 -22
  799. package/skills/sauce-protocols/references/cctp.md +47 -0
  800. package/{sdk/src/skills → skills/sauce-protocols/references}/celer.md +11 -18
  801. package/{sdk/src/skills → skills/sauce-protocols/references}/chainlink-ccip.md +11 -21
  802. package/skills/sauce-protocols/references/chainlink.md +47 -0
  803. package/{sdk/src/skills → skills/sauce-protocols/references}/circle-gateway.md +12 -38
  804. package/{sdk/src/skills → skills/sauce-protocols/references}/compound-v2.md +11 -25
  805. package/{sdk/src/skills → skills/sauce-protocols/references}/compound-v3.md +43 -27
  806. package/{sdk/src/skills → skills/sauce-protocols/references}/connext.md +11 -15
  807. package/{sdk/src/skills → skills/sauce-protocols/references}/convex.md +10 -28
  808. package/{sdk/src/skills → skills/sauce-protocols/references}/cowswap.md +12 -19
  809. package/{sdk/src/skills → skills/sauce-protocols/references}/crvusd.md +10 -19
  810. package/skills/sauce-protocols/references/curve.md +98 -0
  811. package/{sdk/src/skills → skills/sauce-protocols/references}/debridge.md +11 -33
  812. package/{sdk/src/skills → skills/sauce-protocols/references}/dodo.md +13 -18
  813. package/skills/sauce-protocols/references/eigenlayer.md +48 -0
  814. package/{sdk/src/skills → skills/sauce-protocols/references}/ens.md +10 -26
  815. package/{sdk/src/skills → skills/sauce-protocols/references}/erc20.md +10 -24
  816. package/{sdk/src/skills → skills/sauce-protocols/references}/erc3156.md +10 -13
  817. package/{sdk/src/skills → skills/sauce-protocols/references}/erc4626.md +11 -27
  818. package/{sdk/src/skills → skills/sauce-protocols/references}/ethena.md +10 -27
  819. package/{sdk/src/skills → skills/sauce-protocols/references}/etherfi.md +10 -32
  820. package/{sdk/src/skills → skills/sauce-protocols/references}/euler-v2.md +11 -21
  821. package/{sdk/src/skills → skills/sauce-protocols/references}/fenix.md +12 -18
  822. package/{sdk/src/skills → skills/sauce-protocols/references}/fluid.md +11 -20
  823. package/{sdk/src/skills → skills/sauce-protocols/references}/frax-ether.md +10 -26
  824. package/{sdk/src/skills → skills/sauce-protocols/references}/frax.md +10 -19
  825. package/{sdk/src/skills → skills/sauce-protocols/references}/gains-network.md +11 -28
  826. package/skills/sauce-protocols/references/gamma.md +57 -0
  827. package/{sdk/src/skills → skills/sauce-protocols/references}/gelato.md +12 -20
  828. package/{sdk/src/skills → skills/sauce-protocols/references}/gho.md +10 -19
  829. package/{sdk/src/skills → skills/sauce-protocols/references}/gmx-v1.md +12 -34
  830. package/{sdk/src/skills → skills/sauce-protocols/references}/gmx-v2.md +15 -28
  831. package/skills/sauce-protocols/references/harvest.md +41 -0
  832. package/{sdk/src/skills → skills/sauce-protocols/references}/hegic.md +10 -18
  833. package/{sdk/src/skills → skills/sauce-protocols/references}/hop.md +11 -21
  834. package/{sdk/src/skills → skills/sauce-protocols/references}/hyperlane.md +11 -21
  835. package/skills/sauce-protocols/references/index.md +355 -0
  836. package/{sdk/src/skills → skills/sauce-protocols/references}/instadapp.md +10 -18
  837. package/skills/sauce-protocols/references/kelp.md +46 -0
  838. package/{sdk/src/skills → skills/sauce-protocols/references}/kim.md +12 -18
  839. package/{sdk/src/skills → skills/sauce-protocols/references}/kyberswap-aggregator.md +12 -35
  840. package/skills/sauce-protocols/references/kyberswap.md +72 -0
  841. package/{sdk/src/skills → skills/sauce-protocols/references}/layerbank.md +11 -26
  842. package/{sdk/src/skills → skills/sauce-protocols/references}/layerzero.md +11 -25
  843. package/{sdk/src/skills → skills/sauce-protocols/references}/level-finance.md +10 -24
  844. package/{sdk/src/skills → skills/sauce-protocols/references}/lido.md +10 -28
  845. package/{sdk/src/skills → skills/sauce-protocols/references}/lifi.md +11 -25
  846. package/{sdk/src/skills → skills/sauce-protocols/references}/linea-bridge.md +11 -14
  847. package/{sdk/src/skills → skills/sauce-protocols/references}/liquity-v1.md +10 -21
  848. package/{sdk/src/skills → skills/sauce-protocols/references}/liquity-v2.md +10 -19
  849. package/{sdk/src/skills → skills/sauce-protocols/references}/lynex.md +12 -18
  850. package/skills/sauce-protocols/references/maker.md +57 -0
  851. package/skills/sauce-protocols/references/mantle-meth.md +43 -0
  852. package/{sdk/src/skills → skills/sauce-protocols/references}/maverick.md +13 -25
  853. package/{sdk/src/skills → skills/sauce-protocols/references}/moonwell.md +11 -21
  854. package/{sdk/src/skills → skills/sauce-protocols/references}/morpho-blue.md +44 -21
  855. package/{sdk/src/skills → skills/sauce-protocols/references}/mux-protocol.md +10 -30
  856. package/skills/sauce-protocols/references/olympus.md +39 -0
  857. package/skills/sauce-protocols/references/oneinch.md +81 -0
  858. package/skills/sauce-protocols/references/openocean.md +69 -0
  859. package/{sdk/src/skills → skills/sauce-protocols/references}/optimism-bridge.md +11 -16
  860. package/{sdk/src/skills → skills/sauce-protocols/references}/opyn.md +10 -21
  861. package/{sdk/src/skills → skills/sauce-protocols/references}/pancakeswap-v2.md +39 -41
  862. package/skills/sauce-protocols/references/pancakeswap-v3.md +72 -0
  863. package/skills/sauce-protocols/references/paraswap.md +39 -0
  864. package/{sdk/src/skills → skills/sauce-protocols/references}/pendle.md +47 -29
  865. package/skills/sauce-protocols/references/permit2.md +101 -0
  866. package/skills/sauce-protocols/references/perpetual-protocol.md +53 -0
  867. package/{sdk/src/skills → skills/sauce-protocols/references}/polygon-bridge.md +11 -17
  868. package/{sdk/src/skills → skills/sauce-protocols/references}/premia.md +10 -19
  869. package/{sdk/src/skills → skills/sauce-protocols/references}/puffer.md +10 -21
  870. package/skills/sauce-protocols/references/pyth.md +45 -0
  871. package/{sdk/src/skills → skills/sauce-protocols/references}/quickswap.md +13 -27
  872. package/{sdk/src/skills → skills/sauce-protocols/references}/radiant.md +11 -15
  873. package/{sdk/src/skills → skills/sauce-protocols/references}/ramses.md +12 -18
  874. package/skills/sauce-protocols/references/reflexer.md +52 -0
  875. package/skills/sauce-protocols/references/registry/aave-v2.md +43 -0
  876. package/skills/sauce-protocols/references/registry/aave-v3.md +62 -0
  877. package/skills/sauce-protocols/references/registry/aave-v4.md +80 -0
  878. package/skills/sauce-protocols/references/registry/abracadabra.md +54 -0
  879. package/skills/sauce-protocols/references/registry/across.md +57 -0
  880. package/skills/sauce-protocols/references/registry/aerodrome-slipstream.md +72 -0
  881. package/skills/sauce-protocols/references/registry/aerodrome.md +58 -0
  882. package/skills/sauce-protocols/references/registry/aevo.md +39 -0
  883. package/skills/sauce-protocols/references/registry/alchemix.md +46 -0
  884. package/skills/sauce-protocols/references/registry/ambient.md +40 -0
  885. package/skills/sauce-protocols/references/registry/arbitrum-bridge.md +40 -0
  886. package/skills/sauce-protocols/references/registry/arrakis.md +49 -0
  887. package/skills/sauce-protocols/references/registry/axelar.md +65 -0
  888. package/skills/sauce-protocols/references/registry/balancer-v2.md +50 -0
  889. package/skills/sauce-protocols/references/registry/base-bridge.md +42 -0
  890. package/skills/sauce-protocols/references/registry/baseswap.md +40 -0
  891. package/skills/sauce-protocols/references/registry/beefy.md +51 -0
  892. package/skills/sauce-protocols/references/registry/benqi.md +49 -0
  893. package/skills/sauce-protocols/references/registry/camelot.md +82 -0
  894. package/skills/sauce-protocols/references/registry/cbeth.md +43 -0
  895. package/skills/sauce-protocols/references/registry/cctp.md +48 -0
  896. package/skills/sauce-protocols/references/registry/celer.md +44 -0
  897. package/skills/sauce-protocols/references/registry/chainlink-ccip.md +45 -0
  898. package/skills/sauce-protocols/references/registry/chainlink.md +49 -0
  899. package/skills/sauce-protocols/references/registry/circle-gateway.md +70 -0
  900. package/skills/sauce-protocols/references/registry/compound-v2.md +53 -0
  901. package/skills/sauce-protocols/references/registry/compound-v3.md +52 -0
  902. package/skills/sauce-protocols/references/registry/connext.md +41 -0
  903. package/skills/sauce-protocols/references/registry/convex.md +51 -0
  904. package/skills/sauce-protocols/references/registry/cowswap.md +40 -0
  905. package/skills/sauce-protocols/references/registry/crvusd.md +40 -0
  906. package/skills/sauce-protocols/references/registry/curve.md +81 -0
  907. package/skills/sauce-protocols/references/registry/debridge.md +59 -0
  908. package/skills/sauce-protocols/references/registry/dodo.md +39 -0
  909. package/skills/sauce-protocols/references/registry/eco-routes.md +65 -0
  910. package/skills/sauce-protocols/references/registry/eigenlayer.md +58 -0
  911. package/skills/sauce-protocols/references/registry/ens.md +49 -0
  912. package/skills/sauce-protocols/references/registry/erc20.md +44 -0
  913. package/skills/sauce-protocols/references/registry/erc3156.md +38 -0
  914. package/skills/sauce-protocols/references/registry/erc4626.md +51 -0
  915. package/skills/sauce-protocols/references/registry/ethena.md +50 -0
  916. package/skills/sauce-protocols/references/registry/etherfi.md +57 -0
  917. package/skills/sauce-protocols/references/registry/euler-v2.md +49 -0
  918. package/skills/sauce-protocols/references/registry/fenix.md +39 -0
  919. package/skills/sauce-protocols/references/registry/fluid.md +48 -0
  920. package/skills/sauce-protocols/references/registry/frax-ether.md +49 -0
  921. package/skills/sauce-protocols/references/registry/frax.md +40 -0
  922. package/skills/sauce-protocols/references/registry/gains-network.md +43 -0
  923. package/skills/sauce-protocols/references/registry/gamma.md +56 -0
  924. package/skills/sauce-protocols/references/registry/gelato.md +45 -0
  925. package/skills/sauce-protocols/references/registry/gho.md +40 -0
  926. package/skills/sauce-protocols/references/registry/gmx-v1.md +59 -0
  927. package/skills/sauce-protocols/references/registry/gmx-v2.md +41 -0
  928. package/skills/sauce-protocols/references/registry/harvest.md +44 -0
  929. package/skills/sauce-protocols/references/registry/hegic.md +39 -0
  930. package/skills/sauce-protocols/references/registry/hop.md +49 -0
  931. package/skills/sauce-protocols/references/registry/hyperlane.md +48 -0
  932. package/skills/sauce-protocols/references/registry/instadapp.md +39 -0
  933. package/skills/sauce-protocols/references/registry/kelp.md +47 -0
  934. package/skills/sauce-protocols/references/registry/kim.md +39 -0
  935. package/skills/sauce-protocols/references/registry/kyberswap-aggregator.md +49 -0
  936. package/skills/sauce-protocols/references/registry/kyberswap.md +63 -0
  937. package/skills/sauce-protocols/references/registry/layerbank.md +54 -0
  938. package/skills/sauce-protocols/references/registry/layerzero.md +49 -0
  939. package/skills/sauce-protocols/references/registry/level-finance.md +41 -0
  940. package/skills/sauce-protocols/references/registry/lido.md +51 -0
  941. package/skills/sauce-protocols/references/registry/lifi.md +48 -0
  942. package/skills/sauce-protocols/references/registry/linea-bridge.md +40 -0
  943. package/skills/sauce-protocols/references/registry/liquity-v1.md +42 -0
  944. package/skills/sauce-protocols/references/registry/liquity-v2.md +40 -0
  945. package/skills/sauce-protocols/references/registry/lynex.md +39 -0
  946. package/skills/sauce-protocols/references/registry/maker.md +55 -0
  947. package/skills/sauce-protocols/references/registry/mantle-meth.md +48 -0
  948. package/skills/sauce-protocols/references/registry/maverick.md +60 -0
  949. package/skills/sauce-protocols/references/registry/moonwell.md +49 -0
  950. package/skills/sauce-protocols/references/registry/morpho-blue.md +47 -0
  951. package/skills/sauce-protocols/references/registry/mux-protocol.md +49 -0
  952. package/skills/sauce-protocols/references/registry/olympus.md +42 -0
  953. package/skills/sauce-protocols/references/registry/oneinch.md +45 -0
  954. package/skills/sauce-protocols/references/registry/openocean.md +44 -0
  955. package/skills/sauce-protocols/references/registry/optimism-bridge.md +42 -0
  956. package/skills/sauce-protocols/references/registry/opyn.md +42 -0
  957. package/skills/sauce-protocols/references/registry/pancakeswap-v2.md +71 -0
  958. package/skills/sauce-protocols/references/registry/pancakeswap-v3.md +76 -0
  959. package/skills/sauce-protocols/references/registry/paraswap.md +51 -0
  960. package/skills/sauce-protocols/references/registry/pendle.md +43 -0
  961. package/skills/sauce-protocols/references/registry/permit2.md +50 -0
  962. package/skills/sauce-protocols/references/registry/perpetual-protocol.md +49 -0
  963. package/skills/sauce-protocols/references/registry/polygon-bridge.md +43 -0
  964. package/skills/sauce-protocols/references/registry/premia.md +40 -0
  965. package/skills/sauce-protocols/references/registry/puffer.md +43 -0
  966. package/skills/sauce-protocols/references/registry/pyth.md +40 -0
  967. package/skills/sauce-protocols/references/registry/quickswap.md +80 -0
  968. package/skills/sauce-protocols/references/registry/radiant.md +41 -0
  969. package/skills/sauce-protocols/references/registry/ramses.md +39 -0
  970. package/skills/sauce-protocols/references/registry/reflexer.md +56 -0
  971. package/skills/sauce-protocols/references/registry/renzo.md +47 -0
  972. package/skills/sauce-protocols/references/registry/rocket-pool.md +49 -0
  973. package/skills/sauce-protocols/references/registry/sablier.md +40 -0
  974. package/skills/sauce-protocols/references/registry/safe.md +47 -0
  975. package/skills/sauce-protocols/references/registry/scroll-bridge.md +48 -0
  976. package/skills/sauce-protocols/references/registry/seamless.md +42 -0
  977. package/skills/sauce-protocols/references/registry/seaport.md +44 -0
  978. package/skills/sauce-protocols/references/registry/silo.md +48 -0
  979. package/skills/sauce-protocols/references/registry/socket.md +44 -0
  980. package/skills/sauce-protocols/references/registry/sommelier.md +43 -0
  981. package/skills/sauce-protocols/references/registry/spark.md +42 -0
  982. package/skills/sauce-protocols/references/registry/spookyswap.md +40 -0
  983. package/skills/sauce-protocols/references/registry/squid.md +45 -0
  984. package/skills/sauce-protocols/references/registry/stader.md +47 -0
  985. package/skills/sauce-protocols/references/registry/stargate.md +45 -0
  986. package/skills/sauce-protocols/references/registry/superfluid.md +49 -0
  987. package/skills/sauce-protocols/references/registry/sushiswap-v2.md +71 -0
  988. package/skills/sauce-protocols/references/registry/swell.md +49 -0
  989. package/skills/sauce-protocols/references/registry/synapse.md +46 -0
  990. package/skills/sauce-protocols/references/registry/syncswap.md +38 -0
  991. package/skills/sauce-protocols/references/registry/synthetix-v3.md +48 -0
  992. package/skills/sauce-protocols/references/registry/synthra-v3.md +77 -0
  993. package/skills/sauce-protocols/references/registry/thales.md +51 -0
  994. package/skills/sauce-protocols/references/registry/thena.md +39 -0
  995. package/skills/sauce-protocols/references/registry/thruster.md +38 -0
  996. package/skills/sauce-protocols/references/registry/tokemak.md +45 -0
  997. package/skills/sauce-protocols/references/registry/trader-joe.md +66 -0
  998. package/skills/sauce-protocols/references/registry/uniswap-v2.md +77 -0
  999. package/skills/sauce-protocols/references/registry/uniswap-v3.md +113 -0
  1000. package/skills/sauce-protocols/references/registry/uniswap-v4.md +117 -0
  1001. package/skills/sauce-protocols/references/registry/unitflow-v3.md +65 -0
  1002. package/skills/sauce-protocols/references/registry/velodrome.md +58 -0
  1003. package/skills/sauce-protocols/references/registry/venus.md +62 -0
  1004. package/skills/sauce-protocols/references/registry/vertex.md +46 -0
  1005. package/skills/sauce-protocols/references/registry/wormhole.md +59 -0
  1006. package/skills/sauce-protocols/references/registry/yearn-v3.md +46 -0
  1007. package/skills/sauce-protocols/references/registry/zerolend.md +41 -0
  1008. package/skills/sauce-protocols/references/registry/zerox.md +44 -0
  1009. package/skills/sauce-protocols/references/registry/zksync-bridge.md +40 -0
  1010. package/{sdk/src/skills → skills/sauce-protocols/references}/renzo.md +10 -24
  1011. package/{sdk/src/skills → skills/sauce-protocols/references}/rocket-pool.md +10 -26
  1012. package/{sdk/src/skills → skills/sauce-protocols/references}/sablier.md +10 -27
  1013. package/skills/sauce-protocols/references/safe.md +42 -0
  1014. package/{sdk/src/skills → skills/sauce-protocols/references}/scroll-bridge.md +11 -20
  1015. package/{sdk/src/skills → skills/sauce-protocols/references}/seamless.md +11 -16
  1016. package/skills/sauce-protocols/references/seaport.md +38 -0
  1017. package/{sdk/src/skills → skills/sauce-protocols/references}/silo.md +11 -20
  1018. package/{sdk/src/skills → skills/sauce-protocols/references}/socket.md +11 -18
  1019. package/skills/sauce-protocols/references/sommelier.md +40 -0
  1020. package/{sdk/src/skills → skills/sauce-protocols/references}/spark.md +11 -16
  1021. package/{sdk/src/skills → skills/sauce-protocols/references}/spookyswap.md +12 -19
  1022. package/{sdk/src/skills → skills/sauce-protocols/references}/squid.md +11 -21
  1023. package/skills/sauce-protocols/references/stader.md +39 -0
  1024. package/{sdk/src/skills → skills/sauce-protocols/references}/stargate.md +11 -22
  1025. package/{sdk/src/skills → skills/sauce-protocols/references}/superfluid.md +10 -28
  1026. package/{sdk/src/skills → skills/sauce-protocols/references}/sushiswap-v2.md +38 -43
  1027. package/skills/sauce-protocols/references/swell.md +49 -0
  1028. package/skills/sauce-protocols/references/synapse.md +54 -0
  1029. package/{sdk/src/skills → skills/sauce-protocols/references}/syncswap.md +12 -17
  1030. package/{sdk/src/skills → skills/sauce-protocols/references}/synthetix-v3.md +10 -29
  1031. package/skills/sauce-protocols/references/synthra-v3.md +63 -0
  1032. package/skills/sauce-protocols/references/thales.md +58 -0
  1033. package/{sdk/src/skills → skills/sauce-protocols/references}/thena.md +12 -18
  1034. package/{sdk/src/skills → skills/sauce-protocols/references}/thruster.md +13 -18
  1035. package/skills/sauce-protocols/references/tokemak.md +40 -0
  1036. package/{sdk/src/skills → skills/sauce-protocols/references}/trader-joe.md +13 -26
  1037. package/{sdk/src/skills → skills/sauce-protocols/references}/uniswap-v2.md +46 -44
  1038. package/skills/sauce-protocols/references/uniswap-v3.md +188 -0
  1039. package/skills/sauce-protocols/references/uniswap-v4.md +155 -0
  1040. package/skills/sauce-protocols/references/unitflow-v3.md +63 -0
  1041. package/{sdk/src/skills → skills/sauce-protocols/references}/velodrome.md +12 -24
  1042. package/{sdk/src/skills → skills/sauce-protocols/references}/venus.md +12 -31
  1043. package/skills/sauce-protocols/references/vertex.md +42 -0
  1044. package/skills/sauce-protocols/references/wormhole.md +57 -0
  1045. package/{sdk/src/skills → skills/sauce-protocols/references}/yearn-v3.md +10 -25
  1046. package/{sdk/src/skills → skills/sauce-protocols/references}/zerolend.md +11 -15
  1047. package/skills/sauce-protocols/references/zerox.md +39 -0
  1048. package/{sdk/src/skills → skills/sauce-protocols/references}/zksync-bridge.md +11 -14
  1049. package/skills/sauce-script/SKILL.md +407 -0
  1050. package/skills/sauce-script/examples/IOracle.json +12 -0
  1051. package/skills/sauce-script/examples/saucescript.mts +167 -0
  1052. package/skills/sauce-script/examples/twap.sauce.ts +29 -0
  1053. package/skills/sauce-script/references/builtins.json +823 -0
  1054. package/skills/sauce-script/references/builtins.md +674 -0
  1055. package/skills/sauce-solana/SKILL.md +322 -0
  1056. package/skills/sauce-solana/examples/solana.mts +166 -0
  1057. package/skills/sauce-solana/examples/solana.sauce.ts +45 -0
  1058. package/skills/sauce-solana/examples/token-2022.sauce.ts +38 -0
  1059. package/skills/sauce-swaps/SKILL.md +200 -0
  1060. package/skills/sauce-swaps/examples/swap-leg.sauce.ts +50 -0
  1061. package/skills/sauce-swaps/examples/swaps.mts +124 -0
  1062. package/skills/sauce-typescript/SKILL.md +178 -0
  1063. package/skills/sauce-typescript/examples/actions.mts +100 -0
  1064. package/skills/sauce-typescript/examples/compiler.mts +69 -0
  1065. package/skills/sauce-typescript/examples/cook.mts +65 -0
  1066. package/skills/sauce-typescript/examples/verify.mts +104 -0
  1067. package/dev-tools/README.md +0 -16
  1068. package/dev-tools/artifacts/IERC20.json +0 -1
  1069. package/dev-tools/artifacts/ISauceRouter.json +0 -1
  1070. package/dev-tools/artifacts/IUniswapV3Pool.json +0 -1
  1071. package/dev-tools/artifacts/Router.json +0 -1
  1072. package/dev-tools/hardhat.config.cjs +0 -18
  1073. package/dev-tools/sauce/js/add.js +0 -4
  1074. package/dev-tools/sauce/js/call.js +0 -8
  1075. package/dev-tools/sauce/js/erc20.js +0 -18
  1076. package/dev-tools/sauce/js/example.js +0 -6
  1077. package/dev-tools/sauce/js/fibonacci.js +0 -13
  1078. package/dev-tools/sauce/ts/add.ts +0 -4
  1079. package/dev-tools/sauce/ts/call.ts +0 -8
  1080. package/dev-tools/sauce/ts/erc20.ts +0 -18
  1081. package/dev-tools/sauce/ts/example.ts +0 -6
  1082. package/dev-tools/sauce/ts/fibonacci.ts +0 -13
  1083. package/dev-tools/sauce/ts/saucescript.d.ts +0 -1
  1084. package/dev-tools/sauce/ts/tsconfig.json +0 -12
  1085. package/dev-tools/scripts/deploy.ts +0 -107
  1086. package/dev-tools/scripts/init.js +0 -132
  1087. package/dev-tools/scripts/run.ts +0 -67
  1088. package/dev-tools/scripts/start-fork.sh +0 -92
  1089. package/dev-tools/scripts/start-local.sh +0 -120
  1090. package/dev-tools/scripts/stop-local.sh +0 -40
  1091. package/dev-tools/scripts/sync-artifacts.js +0 -46
  1092. package/dev-tools/scripts/sync-price.ts +0 -58
  1093. package/dev-tools/src/contracts.ts +0 -59
  1094. package/dev-tools/src/runner.ts +0 -355
  1095. package/dev-tools/src/svm-local.ts +0 -305
  1096. package/dev-tools/src/sync-price.ts +0 -217
  1097. package/sdk/dist/deployments/v12.generated.d.ts +0 -95
  1098. package/sdk/dist/deployments/v12.generated.d.ts.map +0 -1
  1099. package/sdk/dist/deployments/v12.generated.js +0 -50
  1100. package/sdk/dist/deployments/v12.generated.js.map +0 -1
  1101. package/sdk/dist/swap/index.d.ts +0 -29
  1102. package/sdk/dist/swap/index.d.ts.map +0 -1
  1103. package/sdk/dist/swap/index.js +0 -27
  1104. package/sdk/dist/swap/index.js.map +0 -1
  1105. package/sdk/dist/swap/params.d.ts +0 -29
  1106. package/sdk/dist/swap/params.d.ts.map +0 -1
  1107. package/sdk/dist/swap/params.js +0 -123
  1108. package/sdk/dist/swap/params.js.map +0 -1
  1109. package/sdk/dist/swap/source.d.ts +0 -30
  1110. package/sdk/dist/swap/source.d.ts.map +0 -1
  1111. package/sdk/dist/swap/source.js +0 -101
  1112. package/sdk/dist/swap/source.js.map +0 -1
  1113. package/sdk/dist/swap/types.d.ts +0 -160
  1114. package/sdk/dist/swap/types.d.ts.map +0 -1
  1115. package/sdk/dist/swap/types.js +0 -106
  1116. package/sdk/dist/swap/types.js.map +0 -1
  1117. package/sdk/src/skills/aave-v3.md +0 -134
  1118. package/sdk/src/skills/aave-v4.md +0 -91
  1119. package/sdk/src/skills/abracadabra.md +0 -93
  1120. package/sdk/src/skills/across.md +0 -90
  1121. package/sdk/src/skills/aerodrome-slipstream.md +0 -57
  1122. package/sdk/src/skills/aevo.md +0 -58
  1123. package/sdk/src/skills/axelar.md +0 -80
  1124. package/sdk/src/skills/chainlink.md +0 -62
  1125. package/sdk/src/skills/curve.md +0 -141
  1126. package/sdk/src/skills/eigenlayer.md +0 -71
  1127. package/sdk/src/skills/gamma.md +0 -79
  1128. package/sdk/src/skills/harvest.md +0 -49
  1129. package/sdk/src/skills/index.md +0 -299
  1130. package/sdk/src/skills/kelp.md +0 -60
  1131. package/sdk/src/skills/kyberswap.md +0 -100
  1132. package/sdk/src/skills/loader.ts +0 -46
  1133. package/sdk/src/skills/maker.md +0 -79
  1134. package/sdk/src/skills/mantle-meth.md +0 -60
  1135. package/sdk/src/skills/olympus.md +0 -46
  1136. package/sdk/src/skills/oneinch.md +0 -64
  1137. package/sdk/src/skills/openocean.md +0 -86
  1138. package/sdk/src/skills/pancakeswap-v3.md +0 -104
  1139. package/sdk/src/skills/paraswap.md +0 -67
  1140. package/sdk/src/skills/permit2.md +0 -73
  1141. package/sdk/src/skills/perpetual-protocol.md +0 -73
  1142. package/sdk/src/skills/pyth.md +0 -58
  1143. package/sdk/src/skills/reflexer.md +0 -73
  1144. package/sdk/src/skills/safe.md +0 -56
  1145. package/sdk/src/skills/seaport.md +0 -65
  1146. package/sdk/src/skills/sommelier.md +0 -47
  1147. package/sdk/src/skills/stader.md +0 -53
  1148. package/sdk/src/skills/swell.md +0 -65
  1149. package/sdk/src/skills/synapse.md +0 -63
  1150. package/sdk/src/skills/synthra-v3.md +0 -57
  1151. package/sdk/src/skills/thales.md +0 -74
  1152. package/sdk/src/skills/tokemak.md +0 -48
  1153. package/sdk/src/skills/uniswap-v3.md +0 -202
  1154. package/sdk/src/skills/uniswap-v4.md +0 -125
  1155. package/sdk/src/skills/unitflow-v3.md +0 -62
  1156. package/sdk/src/skills/vertex.md +0 -55
  1157. package/sdk/src/skills/wormhole.md +0 -76
  1158. package/sdk/src/skills/zerox.md +0 -51
@@ -0,0 +1,238 @@
1
+ # `@sauce/router`
2
+
3
+ [Documentation](../README.md) · [SauceScript](../concepts/saucescript.md) · [Actions](../guides/actions.md)
4
+
5
+ `@sauce/router` is a SauceScript library for swapping: one function per venue. Every function takes
6
+ its pool, tokens and amount as **run-time arguments**, so a program can choose them while it runs —
7
+ spend what an earlier call returned, read a balance, loop over a list of pools — and every function
8
+ returns the amount of `tokenOut` the recipient received.
9
+
10
+ ```js
11
+ import { curve, uniswapV2 } from "@sauce/router";
12
+ import { balanceOf } from "@sauce/token";
13
+
14
+ // Base: sell every WETH the Pot holds on Uniswap V2, then the USDC that returns for crvUSD in
15
+ // Curve's 4pool, and keep it. The amounts are only known when this runs; MIN_OUT is a define.
16
+ function main() {
17
+ const weth = 0x4200000000000000000000000000000000000006n;
18
+ const usdc = 0x833589fcd6edb6e08f4c7c32d4f71b54bda02913n;
19
+ const crvusd = 0x417ac0e078398c154edfadd9ef675d30be60af93n;
20
+ const pair = 0x88a43bbdf9d098eec7bceda4e2494615dfd9bb9cn; // Uniswap V2 WETH/USDC
21
+ const fourPool = 0xf6c5f01c7f3148891ad0e19df78743d31e390d1fn; // USDC is coin 0, crvUSD 3
22
+
23
+ const sold = balanceOf(weth, ctx.self());
24
+ const received = uniswapV2(pair, weth, usdc, sold, 3000n, 0n, ctx.self());
25
+ curve(fourPool, usdc, crvusd, received, 0n, 3n, false, MIN_OUT, ctx.self());
26
+ }
27
+ ```
28
+
29
+ The SDK carries the library and serves it to every compile it makes — a route body, an intent, an
30
+ [action program](../guides/actions.md) — so an import is all a program needs. [router-swap.ts](../examples/router-swap.ts)
31
+ compiles this one.
32
+
33
+ It is the one implementation of a swap at these venues: an action such as `uniswapV2Swap` is a
34
+ call into it, so a JSON action program and a hand-written program trade a venue through the same
35
+ code. It runs on EVM chains only.
36
+
37
+ ## Functions
38
+
39
+ Every function takes its arguments in one order — the pool, the two tokens, the amount, then the
40
+ venue's own facts, then the floor and the recipient — and returns the amount received:
41
+
42
+ ```text
43
+ venue(pool, tokenIn, tokenOut, amountIn, ...facts, minOut, recipient): Uint256
44
+ ```
45
+
46
+ | Function | Arguments | Reached through |
47
+ | ------------- | --------------------------------------------------------------------------------------------------------- | ---------------- |
48
+ | `uniswapV2` | `pair, tokenIn, tokenOut, amountIn, feePpm, minOut, recipient` | the pair |
49
+ | `uniswapV3` | `pool, tokenIn, tokenOut, amountIn, sqrtPriceLimitX96, minOut, recipient` | the Pot's Router |
50
+ | `uniswapV4` | `poolManager, tokenIn, tokenOut, amountIn, fee, tickSpacing, hooks, sqrtPriceLimitX96, minOut, recipient` | the Pot's Router |
51
+ | `curve` | `pool, tokenIn, tokenOut, amountIn, i, j, uint256Indices, minOut, recipient` | the pool |
52
+ | `balancerV2` | `vault, tokenIn, tokenOut, amountIn, poolId, minOut, recipient` | the Vault |
53
+ | `dodoV2` | `pool, tokenIn, tokenOut, amountIn, baseToken, quoteToken, minOut, recipient` | the pool |
54
+ | `traderJoeLB` | `pair, tokenIn, tokenOut, amountIn, tokenX, tokenY, minOut, recipient` | the pair |
55
+ | `woofi` | `pool, tokenIn, tokenOut, amountIn, minOut, recipient` | the WooPPV2 |
56
+ | `maverickV2` | `pool, tokenIn, tokenOut, amountIn, minOut, recipient` | the Pot's Router |
57
+
58
+ and four `try` forms with the same arguments as the function they name: `tryUniswapV2`, `tryCurve`,
59
+ `tryBalancerV2` and `tryTraderJoeLB` — see [what a swap may not do](#what-a-swap-may-not-do).
60
+
61
+ Addresses are `Address`, amounts and the other numbers `Uint256`, and `uint256Indices` a `bool`.
62
+
63
+ - **`amountIn`** is what the Pot pays. Every swap is **exact input**; nothing here expresses an
64
+ exact-output swap.
65
+ - **`minOut`** is the least the swap may deliver; below it the whole program reverts. `0n` sets no
66
+ floor, except for `woofi`, which requires a positive one. Where the venue enforces a floor
67
+ itself — Curve's `min_dy`, the Balancer Vault's `limit`, WooPPV2's `minToAmount` — `minOut` is
68
+ that floor; otherwise the function checks it against the amount the venue reports.
69
+ - **`recipient`** receives the output; `ctx.self()` keeps it in the Pot.
70
+ - **The return value** is what the recipient received: the amount the pool or the Router reports,
71
+ or, for Curve, whose 3pool-era pools report nothing, the Pot's balance change.
72
+
73
+ ## How each venue is reached
74
+
75
+ Uniswap V2 and its forks, Curve, Balancer V2, DODO V2, Trader Joe LB and WOOFi never call back:
76
+ each function pays the pool and calls it directly, so it runs in any Pot. It either pushes the input
77
+ first (V2, DODO, LB, WOOFi) or approves exactly the input for the pool to pull (Curve, the Vault),
78
+ which leaves a zero allowance.
79
+
80
+ Uniswap V3 and its forks, Uniswap V4 and Maverick V2 pools re-enter their caller mid-swap to be
81
+ paid, which a program cannot answer. Those functions call the Pot's Router — `ctx.self()`, whose
82
+ fallback delegatecalls it — and the Router answers the callback, paying from the Pot exactly what
83
+ the pool asks for, up to `amountIn`. It also checks the pool's own tokens against `tokenIn` and
84
+ `tokenOut`. Synthra V3 and UnitFlow V3 pools call back under their own names, which only a
85
+ generation-3 Router answers: on an older one the swap reverts. A Pot runs the Router it was minted
86
+ with until its owner moves it; see [the Pot's Router](../concepts/architecture.md#a-pots-router).
87
+
88
+ Every token write is `@sauce/token`'s, with OpenZeppelin `SafeERC20` semantics: a token that
89
+ returns nothing (USDT) works, one that returns `false` reverts the program, and a standing
90
+ allowance is reset to zero before a new one is set.
91
+
92
+ ## Direction and orientation
93
+
94
+ Each function works out which side it trades from its own arguments, while the program runs, and
95
+ reverts rather than trade a side the arguments contradict:
96
+
97
+ - a Uniswap V2 pair's direction is the sort order of `tokenIn` and `tokenOut` — its `token0` is the
98
+ lower address — and so is a Uniswap V4 pool's;
99
+ - `dodoV2` takes the pool's `baseToken` and `quoteToken`, sells base when `tokenIn` is the base
100
+ token and quote when it is the quote token, and reverts unless the two tokens are those two. The
101
+ side cannot come from address order, and the wrong one does not revert at the pool: it prices the
102
+ side it was told to sell, sees none of it, and keeps the input;
103
+ - `traderJoeLB` takes the pair's `tokenX` and `tokenY` the same way;
104
+ - the Router checks a V3 or Maverick pool's tokens itself.
105
+
106
+ The facts are the caller's, like the pool address: take them from the pool.
107
+
108
+ ## What a swap may not do
109
+
110
+ **A swap consumes its whole input or reverts; nothing is refunded.** Each pay-first pool spends all
111
+ it is paid or reverts — a V2 pair and a DODO V2 pool book their whole balance, an LB pair reverts
112
+ `LBPair__OutOfLiquidity` rather than fill part of an input, WooPPV2 books exactly the amount pushed —
113
+ and only an uncaught revert unwinds a push. So no function catches its pool's failure after paying
114
+ it. (Through the Router, a price limit or a pool that runs out can leave part of `amountIn` unspent;
115
+ it stays in the Pot.)
116
+
117
+ The `try` forms are the one way to get a swap that may fail without reverting the program, and they
118
+ lose nothing either: a `try` that cannot swap returns `0n` having moved nothing, and the program
119
+ goes on. Each exists only where that can be guaranteed:
120
+
121
+ - `tryUniswapV2` and `tryTraderJoeLB` check, before anything moves, that the pool fills the whole
122
+ input at the floor — the V2 reserves, LB's `getSwapOut` — and otherwise run uncaught, so a failure
123
+ the check did not foresee still reverts;
124
+ - `tryCurve` and `tryBalancerV2` catch the pool's failure and reset the approval to zero.
125
+
126
+ DODO V2 and WOOFi offer neither, so they have no `try` form. A swap that ran returns at least 1, so
127
+ `0n` always means skipped.
128
+
129
+ ## Venues
130
+
131
+ - **Uniswap V2** prices the output from the pair's reserves with the Sauce Router's own
132
+ constant-product math and takes exactly that, so the pair's K check holds for a correctly stated
133
+ fee and reverts for one stated too low. `feePpm` is the pair's LP fee in parts per million: 3000
134
+ (0.30%) for Uniswap V2 and its forks that charge it, which `0n` also means; 2500 for PancakeSwap
135
+ V2; 1,000,000 or more reverts. An input past the reserve's `uint112` width reverts at the pair.
136
+ - **Uniswap V3** sends `amountIn` positive, the pool's exact-input sign. A non-zero
137
+ `sqrtPriceLimitX96` stops the swap at that price.
138
+ - **Uniswap V4**'s pool key is `tokenIn` and `tokenOut` in sort order — native ETH is the zero
139
+ address, which sorts first and which the Pot pays from its own balance — with the pool's `fee`,
140
+ `tickSpacing` and `hooks`. V4 reads a negative amount as exact input, so the function passes
141
+ `-amountIn`: unary negation, never `0n - amountIn`, which reverts for any non-zero amount.
142
+ - **Curve** calls the pool's 4-argument `exchange(i, j, dx, min_dy)`. `uint256Indices` picks the
143
+ CryptoSwap spelling over the StableSwap and NG one (`int128` indices). The pool pays the Pot, which
144
+ forwards the output when `recipient` is not the Pot.
145
+ - **Balancer V2** swaps GIVEN_IN through the chain's Vault, `0xBA12222222228d8Ba445958a75a0704d566BF2C8`
146
+ where Balancer deployed it, with `poolId` the pool's 32-byte id and internal balances off.
147
+ - **DODO V2** covers DVM, DPP and DSP pools. Legacy V1 pairs are the `dodoV1Swap` action's.
148
+ - **Trader Joe LB** amounts are `uint128`.
149
+ - **WOOFi** is the WooPPV2 itself, not its WooRouterV2. It prices from an oracle, so `minOut` is
150
+ required, and it reverts when its reserve, notional cap or oracle refuses the trade.
151
+ - **Maverick V2** swaps over the pool's full tick range.
152
+
153
+ ## Choose the venue at run time
154
+
155
+ Because every argument is a run-time value, one compiled program can serve every route over a set
156
+ of venues: give it the legs as arguments, and let it pick each function as it goes.
157
+
158
+ ```js
159
+ import { balancerV2, curve, uniswapV2, uniswapV3 } from "@sauce/router";
160
+
161
+ // One compiled program for any route over four venues: each leg names its venue, pool and tokens,
162
+ // and the program picks the function while it runs, spending what the previous leg returned.
163
+ interface Leg {
164
+ venue: Uint256; // 0 Uniswap V2, 1 Uniswap V3, 3 Curve, 4 Balancer V2
165
+ pool: Address; // the pair, the pool, or the Balancer Vault
166
+ tokenIn: Address;
167
+ tokenOut: Address;
168
+ i: Uint256; // Curve's coin indices
169
+ j: Uint256;
170
+ poolId: Uint256; // Balancer's pool id
171
+ }
172
+
173
+ function main(legs: Leg[], amountIn: Uint256, minOut: Uint256): Uint256 {
174
+ let out = amountIn;
175
+ for (let k = 0; k < legs.length; k = k + 1) {
176
+ const leg = legs[k];
177
+ if (leg.venue == 0n) {
178
+ out = uniswapV2(leg.pool, leg.tokenIn, leg.tokenOut, out, 0n, 0n, ctx.self());
179
+ } else if (leg.venue == 1n) {
180
+ out = uniswapV3(leg.pool, leg.tokenIn, leg.tokenOut, out, 0n, 0n, ctx.self());
181
+ } else if (leg.venue == 3n) {
182
+ out = curve(leg.pool, leg.tokenIn, leg.tokenOut, out, leg.i, leg.j, false, 0n, ctx.self());
183
+ } else {
184
+ out = balancerV2(leg.pool, leg.tokenIn, leg.tokenOut, out, leg.poolId, 0n, ctx.self());
185
+ }
186
+ }
187
+ require(out >= minOut);
188
+ return out;
189
+ }
190
+ ```
191
+
192
+ [router-route.ts](../examples/router-route.ts) compiles it once and appends a route as its
193
+ arguments. Nothing about the legs is known to the compiler, so the bytecode — and its hash — is the
194
+ same for every route.
195
+
196
+ ## From JSON
197
+
198
+ Each [action](../guides/actions.md#swaps) at these venues is a call into this library with the
199
+ action's fields as its arguments. Inside an action program, a swap whose output a later action
200
+ spends delivers to the Pot. Its tokens and contracts may be names (`"USDC"`, `"UniswapV3.Factory"`),
201
+ which are the program globals of those names, and three may name their pool by key instead of
202
+ `pool`: the program reads the pool from the factory and passes it to the function
203
+ ([pools by key](../guides/actions.md#pools-by-key)).
204
+
205
+ | Action | Function | Facts it carries |
206
+ | ----------------- | ------------- | ------------------------------------------------------------------------------------- |
207
+ | `uniswapV2Swap` | `uniswapV2` | `pool` or `factory`, optional `feePpm` |
208
+ | `uniswapV3Swap` | `uniswapV3` | `pool`, or `factory` + `fee` or `tickSpacing`; optional `sqrtPriceLimitX96` |
209
+ | `uniswapV4Swap` | `uniswapV4` | `poolManager`, `fee`, `tickSpacing`, optional `hooks` and `sqrtPriceLimitX96` |
210
+ | `curveSwap` | `curve` | `pool`, `i`, `j`, `indexType` (`"int128"` or `"uint256"`) |
211
+ | `balancerV2Swap` | `balancerV2` | `vault`, `poolId` |
212
+ | `dodoV2Swap` | `dodoV2` | `pool`, `baseToken`, `quoteToken` |
213
+ | `traderJoeLBSwap` | `traderJoeLB` | `pool` or `factory` + `binStep`; `tokenX`, `tokenY`, read from the pair when left out |
214
+ | `woofiSwap` | `woofi` | `pool` |
215
+ | `maverickV2Swap` | `maverickV2` | `pool` |
216
+
217
+ ## Compile it yourself
218
+
219
+ `compileSauceRoute`, the chain helpers, `openRoute` and the actions package resolve `@sauce/router`
220
+ with no option. A raw `compile()` resolves it through the SDK's own resolvers, which serve the
221
+ library, the `@sauce/token` it imports and the pool ABIs it binds from memory:
222
+
223
+ ```ts
224
+ import { compile, resolveSdkModule, resolveSdkPackage } from "@eco-incorp/sauce/compiler";
225
+
226
+ export function compileWithRouter(source: string) {
227
+ const entry = new TextEncoder().encode(source);
228
+ return compile({
229
+ target: "evm",
230
+ resolve: (path) => (path === "main.js" ? entry : resolveSdkModule(path)),
231
+ resolvePackage: (specifier) => resolveSdkPackage(specifier),
232
+ });
233
+ }
234
+ ```
235
+
236
+ The package also ships the library's files under `sdk/dist/std/router/`, beside `@sauce/token`'s,
237
+ for a toolchain that resolves packages off disk. There is no SVM arm: importing `@sauce/router` for
238
+ the SVM fails at the import.
@@ -26,9 +26,9 @@ There is no `/routes` subpath. The public types are members of the namespace: `r
26
26
 
27
27
  Chain references accept canonical slugs, names/aliases supported by the registry, numeric chain IDs, and canonical chain records. `.chain` exposes the canonical record.
28
28
 
29
- `Base` and every other chain are **named exports of the package root**; importing the package installs nothing on `globalThis`. A root-imported accessor is the composed one, which also exposes host contract and venue accessors (`Base.Uniswap.UniversalRouter`, `Solana.RaydiumCpSwap`); `routes.chainAccessors.Base` is the bare route entry point without that tree. A host that wants the bare names at run time can call `installRouteGlobals()`; `uninstallRouteGlobals()` reverses it, and neither installs TypeScript declarations.
29
+ `Base` and every other chain are **named exports of the package root**; importing the package installs nothing on `globalThis`. A root-imported accessor is the composed one, which also exposes host contract and venue accessors (`Base.Uniswap.UniversalRouter`, `Solana.RaydiumCpSwap`) and the chain's registry tokens (`Base.USDC`), described in the [contracts reference](contracts.md); `routes.chainAccessors.Base` is the bare route entry point without them. A host that wants the bare names at run time can call `installRouteGlobals()`; `uninstallRouteGlobals()` reverses it, and neither installs TypeScript declarations.
30
30
 
31
- `body` accepts a source string or a synchronous zero-argument callback. A string can contain a full `function main(...)` or a bare body. A callback supplies source text, with no JavaScript capture. See [callback semantics](../guides/intents.md#callbacks-are-compiled-source).
31
+ `body` accepts a source string or a synchronous zero-argument callback. A string is a SauceScript file, compiled as written: a module declaring `function main(...)`, or a script whose top-level statements are the entry. A script cannot `return`, so a program that returns a value declares `main`. A callback supplies source text, with no JavaScript capture. See [callback semantics](../guides/intents.md#callbacks-are-compiled-source).
32
32
 
33
33
  ## Intent options
34
34
 
@@ -59,7 +59,7 @@ The compiler needs no source reward to compile a destination program. Use `compi
59
59
  import { routes } from "@eco-incorp/sauce";
60
60
 
61
61
  export function compileProgram(execution: routes.SauceEvmExecutionInput) {
62
- return routes.compileSauceRoute("base", "return 7n;", execution);
62
+ return routes.compileSauceRoute("base", "function main() { return 7n; }", execution);
63
63
  }
64
64
  ```
65
65
 
@@ -69,11 +69,11 @@ export function compileProgram(execution: routes.SauceEvmExecutionInput) {
69
69
  | ---------- | --------------------------------------------------------------------- |
70
70
  | `calls` | Destination call inputs, normally one call for one program |
71
71
  | `compiled` | Route compatibility result with `bytecode: Uint8Array[]` and warnings |
72
- | `source` | Source after wrapping and SDK token/protocol rewrites |
72
+ | `source` | Source after the SDK token/protocol rewrites |
73
73
 
74
74
  The route wrapper differs from the direct `/compiler` API, which returns one byte array plus compiler metadata and an optional SVM account manifest. Use the direct API when you need that metadata. The route target defaults to `"v12"` for EVM and `"svm"` for SVM; direct compiler targets are `"evm"` and `"svm"`.
75
75
 
76
- `SauceCompileOptions` supports `resolve` and `resolvePackage` for the program's own imports, scalar `defines`, token-address `tokens`, ABI `contracts`, `ambient` module names, and `accessors`. `resolve` has the [compiler's resolver contract](compiler.md#resolver-contract) and is asked for any path the program imports; the SDK itself serves `@sauce/token`, `./artifacts/IERC20.json`, `./artifacts/ISauceRouter.json` and every `./protocols/<slug>/<Export>.json`, so source from the SDK's builders needs neither option. Accessor rewriting defaults on; an options object can configure qualified-chain scope or other rewrite behavior. `openRoute` merges chain defaults and the default ambient token module. Direct `compileSauceRoute` performs token/protocol rewrites but does not automatically merge that ambient module.
76
+ `SauceCompileOptions` supports `resolve` and `resolvePackage` for the program's own imports, scalar `defines`, token-address `tokens`, ABI `contracts`, `ambient` module names, and `accessors`. `resolve` has the [compiler's resolver contract](compiler.md#resolver-contract) and is asked for any path the program imports; the SDK itself serves `@sauce/token`, `./artifacts/IERC20.json`, `./artifacts/ISauceRouter.json` and every `./protocols/<slug>/<Export>.json`, so source from the SDK's builders needs neither option. Accessor rewriting defaults on; an options object can configure qualified-chain scope or other rewrite behavior. `openRoute` adds each chain's defaults — its token symbols, `chainId` and protocol addresses, taken separately for every chain an intent written in the program names — and the default ambient token module. A `defines` or `tokens` entry under one of those chain-scoped names belongs to the chain the program compiles for: an intent's body on another chain uses that chain's value instead ([names resolve per chain](../guides/intents.md#names-resolve-per-chain)). Direct `compileSauceRoute` performs token/protocol rewrites but does not automatically merge that ambient module.
77
77
 
78
78
  The route wrapper has no runtime argument-payload parameter. Use compile-time defines here, or direct compilation and a suitable execution API for parameterized entry points; see [compiler integration](compiler.md).
79
79
 
@@ -81,34 +81,43 @@ The route wrapper has no runtime argument-payload parameter. Use compile-time de
81
81
 
82
82
  `buildSauceEvmCall({ pot, engine, program, value? })` builds one Pot `cook` call; `program` is a hex string. `value` defaults to zero and must include the Kitchen fee. `buildSauceEvmCalls({ pot, engine, cooks, value? })` applies that value to **each** ordered cook. Multiple statements within one program need only one cook and fee.
83
83
 
84
+ Both builders, and `sauceEvmDeployPotCall` below, return `{ to, target, data, value }`. `{ to, data, value }` is the request a wallet sends or `client.call` takes, the same shape as `destinationExecutionFee()` and the Portal transaction builders; `to` is the contract's checksummed 20-byte address. `target` names the same contract as a route's `calls` entry (the Portal's `Call` struct) records it, a 32-byte universal address for a cook, so the object goes into `RouteInput.calls` unchanged. `value` is a `bigint`.
85
+
84
86
  ## Deployment addresses
85
87
 
86
- `sauceEvmDeployPotCall({ owner, salt, kitchen })` encodes Pot deployment through the Kitchen you name; for a direct intent route the owner is the destination `Portal.executor()`. No route the SDK builds includes this call. To deploy an intent's shared Pot yourself before the solver does, pass `kitchen: v12GateKitchen()`, that Executor, and `SAUCE_INTENT_POT_SALT`.
88
+ `sauceEvmDeployPotCall({ owner, salt, kitchen? })` encodes Pot deployment through a Kitchen, by default the released one (`v12KitchenAddress()`); for a direct intent route the owner is the destination `Portal.executor()`. No route the SDK builds includes this call. To deploy an intent's shared Pot yourself before the solver does, pass that Executor and `SAUCE_INTENT_POT_SALT`.
87
89
 
88
- Every address helper here returns a **recorded** address, never a verified one. `v12EngineAddress()` and `v12KitchenAddress()` give the released addresses directly and are the ones to prefer. `sauceEvmDeployPotCall`'s `chainId` form, `v12Deployment` and `requireV12Deployment` filter by a roster of chains where deployment previously succeeded, which is a different question from whether code is there now. `V12_EVM_CONTRACTS` and `v12SvmProgramId` name an earlier deployment generation. Check the chain before trusting any of them; [evm-execution.ts](../examples/evm-execution.ts) shows prediction, deployment and the owner/Kitchen checks.
90
+ Every address helper here returns a **recorded** address, never a verified one. `v12EngineAddress()` and `v12KitchenAddress()` give the released addresses, the same on every chain; the SDK reads no chain, so it cannot say whether code is there. Check the chain before trusting any of them; [evm-execution.ts](../examples/evm-execution.ts) shows prediction, deployment and the owner/Kitchen checks.
89
91
 
90
92
  `buildSauceSvmCall` and the SVM route path emit an 8-byte engine instruction that the Solana engine does not accept, whatever code account or engine id you give them: they do not build the Kitchen call the engine requires. Build Solana execution with the Kitchen client instead — see [SVM destinations in Eco intents](../guides/solana.md#svm-destinations-in-eco-intents).
91
93
 
92
94
  ## Built intents
93
95
 
94
- | Member | Behavior |
95
- | ------------------------------------------- | ------------------------------------------------------------------- |
96
- | `intent`, `root()` | Normalized head intent |
97
- | `source`, `destination` | Canonical chain records |
98
- | `compiled` | Head destination program's compilation result |
99
- | `children` | Direct nested children |
100
- | `intents()` | Root-first preorder traversal of all intents |
101
- | `hash()` | Intent, route, and reward hashes |
102
- | `encodeEVM()`, `encodeSVM()` | Explicit codec serialization of route and reward |
103
- | `approvals()` | EVM approval requests for the head reward |
104
- | `publishCalldata()` | Source Portal publication request |
105
- | `publishAndFundCalldata(allowPartial)` | Publication and funding request |
106
- | `fundCalldata(allowPartial)` | Funding request |
107
- | `vaultCall()`, `hashCall()`, `fundedCall()` | Source Portal read request plus result decoder |
108
- | `predictVault(config)` | Offline CREATE2 prediction with caller-provided vault configuration |
96
+ | Member | Behavior |
97
+ | --------------------------------------------- | ------------------------------------------------------------------ |
98
+ | `intent`, `root()` | Normalized head intent |
99
+ | `source`, `destination` | Canonical chain records |
100
+ | `compiled` | Head destination program's compilation result |
101
+ | `children` | Direct nested children |
102
+ | `intents()` | Root-first preorder traversal of all intents |
103
+ | `hash()` | Intent, route, and reward hashes |
104
+ | `encodeEVM()`, `encodeSVM()` | Explicit codec serialization of route and reward |
105
+ | `sourceTxs({ fundVia, vault, allowPartial })` | The head reward's funding and publication, in order |
106
+ | `approvals()` | EVM approval requests for the head reward |
107
+ | `publishCalldata()` | Source Portal publication request |
108
+ | `publishAndFundCalldata(allowPartial)` | Publication and funding request |
109
+ | `fundCalldata(allowPartial)` | Funding request |
110
+ | `vaultCall()`, `hashCall()`, `fundedCall()` | Source Portal read request plus result decoder |
111
+ | `predictVault(config?)` | Offline CREATE2 prediction; eco-routes' derivation unless `config` |
109
112
 
110
113
  Submission and read helpers take an optional `{ portal }` override; without one they use `sourcePortal`, which itself defaults to the eco-routes Portal for the reward's source chain. They build EVM requests, require an EVM source, and perform no RPC — you send them. The codec represents an SVM destination fine; building that execution is the separate matter above. `encodeEVM()`/`encodeSVM()` force a codec for inspection; they do not change an intent's chain kinds.
111
114
 
115
+ `sourceTxs()` funds by transfer by default: a `transfer` of each reward token to the intent's vault, a plain send of the native amount, then `publish`. Pass `vault` as `vaultCall()` read it; it must equal `predictVault()` or `IntentVaultMismatchError` is thrown. `fundVia: "publishAndFund"` (or `IntentOptions.fundVia`, which also selects it for the intents the route's own program opens) returns `approvals()` then `publishAndFundCalldata(allowPartial)`. The same choice is `intentSourceTxs(intent, { portal }, options)` for an `Intent` built some other way, over `vaultTransferTxs`, `rewardVaultLegs`, `predictIntentVault` and `assertIntentVault`; `ecoRoutesVaultConfig(portal)` is the vault configuration behind the prediction. [Intents](../guides/intents.md#submit-the-source-reward) covers the order and the checks.
116
+
117
+ The destination side is a solver's, and two helpers build it from `built.intent`: `fulfillTx(intent, { claimant })` is `Portal.fulfill(intentHash, route, rewardHash, claimant)`, sent to the Portal the route records with `route.nativeAmount` as its value, and `fulfillApprovalTxs(intent)` the solver's approvals of that Portal for the route's tokens, which it pulls from the solver first (one per token, the entries summed). Both require an EVM destination. The route they carry is `evmRouteTuple(route)`, the value `routeHash` is taken over, so the Portal's hash check agrees with `hashIntent`. [`sauce intent fill`](../guides/cli.md#rehearsing-the-fill-sauce-intent-fill) rehearses them on the destination with no key, and with `--send` sends them.
118
+
119
+ After the fill, the same module builds the rest of an intent's life, each as a request you send: `fulfillAndProveTx(intent, { claimant, prover, sourceDomain, data, fee })` (the fill and its proof in one, `route.nativeAmount + fee` as its value) and `proveTx(intents, { prover, sourceDomain, data, fee })` on the destination, with `hyperlaneProverData({ sourceProver })` the Hyperlane prover's `data` and `proverFeeCall(...)` its fee; `withdrawTx`, `batchWithdrawTx` and `refundTx` on the source, taking `{ portal }`; `cancelTx` and `cancelAndProveTx` on a destination Portal that has `cancel`, after the route's deadline. The reads that decide them are `rewardStatusCall` (one of `REWARD_STATUSES`), `fulfillmentCall` (what the destination recorded: a claimant, `CANCELLED_CLAIMANT_BYTES32`, or zero), `provenIntentCall` (the source prover's claimant and destination) and `proofTypeCall`. `intentFromPublished(log, sourceChainId)` rebuilds an intent from its `IntentPublished` log, checking its hash. [After the fill](../guides/intents.md#after-the-fill-prove-claim-refund-cancel) explains when each applies.
120
+
112
121
  ## Composition and lower-level encoding
113
122
 
114
123
  Call `.nest(childOrThunk, options?)` before `.reward(...)`. The fluent default is transfer funding after the parent program. [Nested intents](../guides/nested-intents.md) explains funding modes, deadlines, account custody, and execution ordering.
@@ -56,7 +56,26 @@ A program runs through `Pot.cook(engine, program)`. A Pot has an owner; the engi
56
56
  cook, so a call needs **both** addresses. A direct `compileSauceRoute` takes them from you. An intent
57
57
  derives them: the released engine, and the Pot the recorded Portal's Executor owns under salt zero
58
58
  (`SAUCE_INTENT_POT_SALT`). That Pot must exist before the route runs; the solver deploys it. An
59
- engine accepts only Pots created by its own Kitchen.
59
+ engine accepts only Pots created by its own Kitchen, with the Pot bytecode it was built for: a
60
+ Kitchen release that changes the Pot's bytecode starts a new family of Pot addresses, and a Pot
61
+ from an earlier family keeps running on the engine built for it.
62
+
63
+ #### A Pot's Router
64
+
65
+ A Pot's swaps run on **its own Router**. Router self-calls and the pools' mid-swap callbacks reach
66
+ the Pot's fallback, which delegatecalls `pot.router()`: the Kitchen's Router when the Pot was
67
+ minted, until the Pot's owner points it elsewhere with `setRouter`. The Kitchen's owner moves the
68
+ Router that NEW Pots start on and nothing else — the Kitchen cannot move an existing Pot, and a
69
+ Router change moves no Pot address. So after a Router rollout, `potRouterUpdate(client, pot)` from
70
+ `@eco-incorp/sauce/evm/engine` reads both through your client and returns the `setRouter` call for
71
+ the Pot's owner to sign, or nothing when the Pot is already current. Nothing sends it for you, and
72
+ a call from anyone but the owner reverts with `NotOwner()`. It throws for a Pot of an earlier
73
+ Kitchen release, which has no `setRouter` and keeps its Router for good.
74
+ [pot-router.ts](../examples/pot-router.ts) shows the check.
75
+
76
+ `v12PotAbi` and `v12KitchenAbi` from the same subpath are the released contracts' complete ABIs,
77
+ including the Kitchen's owner-only administration (`initialize`, `setRouter`, `setExecutionFee`,
78
+ ownership transfer and upgrade).
60
79
 
61
80
  Every cook must send the Kitchen's current `executionFee()` as native value, even for a program that
62
81
  moves only ERC-20s. Native the program itself spends is on top of that. A balance already sitting in
@@ -92,8 +111,12 @@ a cascade, not one call stack spanning chains. See [create an intent](../guides/
92
111
 
93
112
  ## Versions travel with artifacts
94
113
 
95
- A compiled program is paired with an engine that understands it. The compiler reports what it
96
- produced; it does not inspect an address to find out what is deployed there. Read the deployment
114
+ A compiled program is paired with an engine that understands it, by exact package version in both
115
+ directions: each compiler release names the engine releases its output runs on, and those engines
116
+ run no other compiler's output. The compiler reports what it produced; it does not inspect an
117
+ address to find out what is deployed there. The SDK pins one compiler, ships the engines of its row of
118
+ `V12_RELEASE_SETS`, and refuses to build a cook for an engine another row names
119
+ ([which engine runs a program](../api/compiler.md#which-engine-runs-a-program)). Read the deployment
97
120
  helpers in `@eco-incorp/sauce/deployments` for released engine and Kitchen addresses, and confirm the
98
121
  code is live on the chain or cluster you are targeting.
99
122
 
@@ -32,8 +32,10 @@ target feature has nothing to point at.
32
32
 
33
33
  A function declared `: void` can finish without returning a value. Other
34
34
  functions must return on every path. Annotate helper functions returning arrays,
35
- bytes, or records so their callers know the return shape. The raw compiler also
36
- accepts an entry script without an explicit `main` and synthesizes its entry.
35
+ bytes, or records so their callers know the return shape. A file without a `main`
36
+ is a script: its top-level statements are the entry, which runs as `main(): void`,
37
+ so a script cannot `return`. The raw compiler and the route compiler both take one
38
+ as written.
37
39
  Entry argument encoding does not determine return encoding. For ABI-decodable
38
40
  EVM output, [return `abi.encode(...)`](../guides/compiling.md#return-values-an-abi-decoder-can-read).
39
41
 
@@ -71,58 +73,29 @@ one program — one hash — covers every value. The SVM settle recipe folds its
71
73
  and token-program split in as defines instead, and is verified by recompiling with
72
74
  the same values. Neither is a drop-in for the other.
73
75
 
74
- ## Values and types
75
-
76
- SauceScript uses 256-bit scalar words and heap-backed bytes, arrays, and tuples.
77
- There is no JavaScript floating-point arithmetic. Prefer `bigint` literals in
78
- host-authored route callbacks so the host preserves exact integer values.
79
-
80
- | Type or syntax | Meaning |
81
- | ----------------------------------------- | ------------------------------------------------------------ |
82
- | `Uint256`, `number`, `bigint` | A scalar integer word |
83
- | `Address` | An address-valued scalar |
84
- | `bool`, `boolean` | A boolean type checked separately from integer values |
85
- | `bytes`, `string` | Byte strings |
86
- | `T[]` | An array whose element type is `T` |
87
- | `{ amount: Uint256, recipient: Address }` | A tuple/record shape |
88
- | A top-level `interface` | A named record type |
89
- | `Account`, `Account<Writable, Signer>` | An SVM account slot and required role; address-valued on EVM |
90
- | `void` | A function with no return value |
91
-
92
- Annotations are checked. Arbitrary TypeScript types are not accepted, and `as`
93
- casts cannot be used to bypass a type error. Ordinary arithmetic is checked by
94
- the compiler/runtime rather than following JavaScript number semantics.
95
-
96
- A module-level scalar `const` is a compile-time value. A module-level `let` is
97
- re-initialised on every invocation — it is scratch space, not chain state. Reach
98
- for the target's storage builtins when something has to persist.
99
-
100
- ## Language support
101
-
102
- The current compiler supports function declarations, recursion, `if`/`else`,
103
- `while`, C-style `for`, array `for...of`, short-circuit logical operators,
104
- conditional expressions, array/record values, indexing, mutation, and supported
105
- byte operations. Modules can import other SauceScript modules, JSON ABIs, and
106
- JSON data. Constant expressions and compile-time branches can be folded.
107
-
108
- Useful boundaries when adapting application code:
109
-
110
- - `async`/`await`, promises, classes, arbitrary JavaScript libraries, and host APIs
111
- such as `fetch` or `console` are not on-chain operations.
112
- - Functions are declarations, not first-class values. The outer route callback
113
- is an SDK wrapper; it does not add general arrow-function support to the
114
- language. The special EVM external-call `.catch(() => { ... })` handler is a
115
- supported exception.
116
- - `switch`, `for...in`, rest/spread, default parameters, and general object
117
- destructuring are unsupported. Tuple destructuring in function bodies is
118
- supported.
119
- - Type aliases, enums, generic application types, unions, `as`, and `satisfies`
120
- are outside the subset. Use the supported annotations and named interfaces.
121
- - A template literal with interpolation is unsupported. The `hex` tagged literal
122
- produces literal bytes.
123
-
124
- Every example and boundary on this page is checked against the compiler this
125
- package ships.
76
+ ## The language
77
+
78
+ The [SauceScript reference](../../skills/sauce-script/references/builtins.md) is the complete account of the language, and
79
+ every example and quoted error in it is checked against the compiler this package ships: types,
80
+ literals, operators, statements, functions and modules, every builtin on each target, and the
81
+ limits. What most often surprises a TypeScript author:
82
+
83
+ - Numbers are unsigned 256-bit integers, and arithmetic is checked: overflow, underflow and division
84
+ by zero revert. Write a negative amount as `-x`; `~x + 1n` reverts when `x` is zero. Prefer
85
+ `bigint` literals in host-authored route callbacks so the host keeps exact values.
86
+ - `bool` is kept apart from numbers, and `bytes`/`string` are byte strings: `"text"` is its UTF-8
87
+ bytes and `` hex`a9059cbb` `` raw bytes. Every untagged template literal is rejected, with or
88
+ without `${}`.
89
+ - Annotations are checked, and an unannotated parameter is a number, so a helper that takes or
90
+ returns an array, a record or bytes says so. `Account` roles (`Account<Writable, Signer>`) exist
91
+ on SVM only; on EVM an `Account` is an address and a role is a compile error.
92
+ - Destructuring binds the fields of something that produces a record — a multi-output contract
93
+ call, `abi.decode`, `crypto.findPDA` — and not of an array.
94
+ - Functions are top-level declarations; `switch`, `try`/`catch`, classes, closures other than the
95
+ EVM `.catch(() => { ... })` handler, spread and optional chaining are rejected.
96
+ - A module-level `const` is a compile-time value. A module-level `let` is re-initialised on every
97
+ invocation — scratch space, not chain state. Reach for the target's storage builtins when
98
+ something has to persist.
126
99
 
127
100
  ## EVM and SVM operations
128
101
 
@@ -176,8 +149,15 @@ function main(token: Address, spender: Address, amount: Uint256): void {
176
149
  }
177
150
  ```
178
151
 
152
+ `@sauce/token` also pulls tokens into a program, each pull a `safeTransferFrom`:
153
+ `transferFrom` on an allowance, and `permit` (EIP-2612) or `permitTransferFrom`
154
+ (Permit2) on the holder's signature. See
155
+ [Pulling tokens in](../guides/protocols-and-tokens.md#pulling-tokens-in).
156
+
179
157
  A raw compile resolves `@sauce/token` by passing `resolveSdkPackage` and
180
- `resolveSdkModule` from `@eco-incorp/sauce/compiler`.
158
+ `resolveSdkModule` from `@eco-incorp/sauce/compiler`. Swaps have a library of their
159
+ own, [`@sauce/router`](../api/router.md): one function per venue, taking its pool and
160
+ amount as run-time arguments, resolved the same way.
181
161
 
182
162
  The compiler's `ambient` option broadcasts a SauceScript module's exports without
183
163
  explicit imports. Its `defines` option injects scalar constants into every
@@ -5,18 +5,25 @@
5
5
  These run against the published package exports, and they run on every release — if one of them
6
6
  stops working, the release does. The construction examples are offline: they compile source and
7
7
  build transaction data without sending anything. Repeated-digit addresses and round fees are
8
- fixtures, not configuration. The RPC helper is typechecked here and reads chain state only when your
9
- application calls it.
10
-
11
- | Example | Shows |
12
- | ---------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- |
13
- | [cross-chain-intent.sauce.ts](cross-chain-intent.sauce.ts) | A program that measures a balance and publishes a new intent carrying it — written in SauceScript |
14
- | [cross-chain-intent.ts](cross-chain-intent.ts) | Compiling that program with `defines` and attaching it to a route |
15
- | [protocol-approval.ts](protocol-approval.ts) | A typed `Base(() => ...)` body calling `USDC.approve(Uniswap.UniversalRouter, ...)` |
16
- | [first-intent.ts](first-intent.ts) | Both sides of a transfer intent: Ethereum reward, Base delivery, Executor-to-Pot funding, source transaction requests |
17
- | [compile-program.ts](compile-program.ts) | Direct compilation, a compact entry schema, and argument encoding and decoding |
18
- | [action-program.ts](action-program.ts) | A JSON action program: strict parsing, compilation with a runtime amount, and an intent on the program's chain |
19
- | [evm-execution.ts](evm-execution.ts) | Reading a destination chain: Kitchen, Executor ownership, Pot prediction and deployment, execution fee |
8
+ fixtures, not configuration. The RPC helpers are typechecked here and read chain state only when your
9
+ application calls them.
10
+
11
+ | Example | Shows |
12
+ | -------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
13
+ | [cross-chain-intent.sauce.ts](cross-chain-intent.sauce.ts) | A program that measures a balance and publishes a new intent carrying it — written in SauceScript |
14
+ | [cross-chain-intent.ts](cross-chain-intent.ts) | Compiling that program with `defines` and attaching it to a route |
15
+ | [protocol-approval.ts](protocol-approval.ts) | A typed `Base(() => ...)` body calling `USDC.approve(Uniswap.UniversalRouter, ...)` |
16
+ | [venue-where-deployed.sauce.ts](venue-where-deployed.sauce.ts) | One program for every chain, using PancakeSwap V3 only where `available(...)` finds it — written in SauceScript |
17
+ | [registry-names.ts](registry-names.ts) | That program compiled for two chains, and the same registry names from TypeScript: `Base.USDC`, a typed call, `.read(client)` |
18
+ | [first-intent.ts](first-intent.ts) | Both sides of a transfer intent: Ethereum reward, Base delivery, Executor-to-Pot funding, source transaction requests |
19
+ | [compile-program.ts](compile-program.ts) | Direct compilation, a compact entry schema, and argument encoding and decoding |
20
+ | [action-program.ts](action-program.ts) | A chain-agnostic JSON action program — token symbols, a pool by key — compiled for two chains, with a runtime amount, and as an intent on Base |
21
+ | [router-swap.sauce.ts](router-swap.sauce.ts) | Two swaps through `@sauce/router`, the second spending what the first returned — written in SauceScript |
22
+ | [router-swap.ts](router-swap.ts) | Compiling that program into a cook and an intent, with its floor as a define |
23
+ | [router-route.sauce.ts](router-route.sauce.ts) | One program for any route over four venues, picking each `@sauce/router` function while it runs |
24
+ | [router-route.ts](router-route.ts) | Compiling it once with the raw compiler and appending a route as its arguments |
25
+ | [evm-execution.ts](evm-execution.ts) | Reading a destination chain: Kitchen, Executor ownership, Pot prediction and deployment, execution fee |
26
+ | [pot-router.ts](pot-router.ts) | Whether a Pot runs its Kitchen's current Router, and the owner's `setRouter` call when it does not |
20
27
 
21
28
  ## Run an example in your project
22
29
 
@@ -34,9 +41,9 @@ pnpm exec tsc example.ts --target ES2022 --module NodeNext --moduleResolution No
34
41
  node dist/example.js
35
42
  ```
36
43
 
37
- For `first-intent.ts` and `evm-execution.ts`, also run `pnpm add viem`: they use Viem's address formatter and RPC interfaces.
44
+ For `first-intent.ts`, `evm-execution.ts`, `pot-router.ts`, `router-route.ts` and `registry-names.ts`, also run `pnpm add viem`: they use Viem's address formatter and RPC interfaces.
38
45
 
39
46
  CI typechecks and runs each of them, and asserts the encoded output including a nonzero cook-fee
40
- budget. The RPC helper is not a live-chain integration test — it is the shape of the reads you make.
47
+ budget. The RPC helpers are not live-chain integration tests — they are the shape of the reads you make.
41
48
 
42
49
  For actual EVM execution, read the destination Kitchen's `executionFee()` and use it instead of the fixture fee. The intent examples name no Pot or engine: the SDK derives both. The derived Pot is the shared one the solver deploys for each Portal, and it must exist before a route runs on it. To check that it does, or to use a Pot of your own, call `prepareDestinationPot` from `evm-execution.ts` with a destination client, Portal, and salt (zero for the shared Pot). If it returns `ready: false`, send its deployment request with your signer, wait for a successful receipt, and call it again. Pass a Pot of your own as `execution.pot`. Supply valid deadlines, source funding, and solver fulfillment. Read [intents](../guides/intents.md) for atomic asset handling and fee budgets, and [Solana](../guides/solana.md) for the separate supported execution paths.