@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,539 @@
1
+ # The Sauce MCP server
2
+
3
+ [Documentation](../README.md) · [The sauce command](cli.md) · [Agent skills](cli.md#agent-skills)
4
+
5
+ `sauce mcp` runs a [Model Context Protocol](https://modelcontextprotocol.io) server. A coding agent
6
+ gets the building half of the [`sauce` command](cli.md) as tools, and the package's agent skills
7
+ as tools and resources. The server compiles programs and action documents and lists a chain's
8
+ names. It builds unsigned transactions: the cook, the Pot's deployment, an intent's publish
9
+ transactions and each step of its life after. It also rehearses a cook and takes calls apart.
10
+
11
+ For the initial release it builds transactions only on **Ethereum**, **Base** and **Solana**. Every
12
+ other chain is a [preview chain](#supported-and-preview-chains): an agent can compile, simulate and
13
+ rehearse any protocol on it, and the tools that would return a transaction there return `refused`
14
+ instead, with how to request the chain.
15
+
16
+ **The local stdio server signs only with wallets in its wallet directory, unlocked by the password
17
+ source it was started with; the HTTP server never signs.** Neither ever asks for a key or a
18
+ password. Without [agent wallets](#agent-wallets), every transaction comes back unsigned, for a
19
+ wallet the user holds. That lets the server run anywhere: on the agent's machine over stdio, or on
20
+ a host of your own over Streamable HTTP. Transactions it does not send are signed and sent by local
21
+ means: a wallet, `cast send`, or `sauce run` with the user's own keystore.
22
+
23
+ ## Run it
24
+
25
+ One command, through npx. Node.js 24 or newer:
26
+
27
+ ```sh
28
+ npx -y @eco-incorp/sauce mcp # stdio: what an agent launches
29
+ npx -y @eco-incorp/sauce mcp --wallets --password-env SAUCE_WALLET_PASSWORD # stdio, signing
30
+ npx -y @eco-incorp/sauce mcp --http 3000 --config rpc.json # self-hosted, Streamable HTTP
31
+ ```
32
+
33
+ In a project that depends on the package, `npx sauce mcp` runs the project's own version.
34
+ `npx sauce mcp --help` lists every flag. The server is loaded only when `sauce mcp` runs, so no
35
+ other command pays for it.
36
+
37
+ Over stdio the server writes nothing but the protocol to stdout. A message larger than `--max-body`
38
+ (2 MiB by default) closes the connection.
39
+
40
+ ## Endpoints
41
+
42
+ A tool that reads a chain takes **`rpcUrl`**, an endpoint for that one call. It looks for an
43
+ endpoint in this order:
44
+
45
+ 1. the call's own `rpcUrl`;
46
+ 2. the server's endpoint for the chain, from `--config <file>` (the
47
+ [`sauce` command's format](cli.md#endpoints-and-signers)):
48
+
49
+ ```json
50
+ { "rpcUrls": { "1": "https://…", "8453": "https://…", "1399811149": "https://…" } }
51
+ ```
52
+
53
+ 3. if neither has one, a plain error naming the chain and saying to pass `rpcUrl`.
54
+
55
+ The server ships no endpoint and reads no environment variable.
56
+
57
+ A provider URL usually carries a key, so no URL is ever returned, logged or quoted, from the call
58
+ or from the file. That covers results and errors, including an upstream error that repeats the URL.
59
+ The file's path is never shown either. The file is checked when the server starts: a malformed
60
+ entry, a `<…>` placeholder or a URL that is not http(s) stops it there. `sauce_chains` says which
61
+ chains have a server endpoint.
62
+
63
+ **A server someone else runs sees every `rpcUrl` you pass it.** Pass only keys you are willing to
64
+ share with its operator. Otherwise run the server yourself with `npx -y @eco-incorp/sauce mcp`,
65
+ where your URL never leaves your machine.
66
+
67
+ What works with no endpoint at all:
68
+
69
+ - compiling a program or an action document;
70
+ - a chain's names and a price conversion;
71
+ - the EVM cook, given its `value`, on a supported chain;
72
+ - the Pot's address, and on a supported chain its deployment and an intent's publish transactions;
73
+ - taking calldata apart, and reading the skills.
74
+
75
+ What needs one: `sauce_simulate`, a publish dry run, anything given a transaction hash, a Solana cook
76
+ (its blockhash and fee), and reading the Kitchen's fee or whether a Pot exists.
77
+
78
+ ## Add it to a coding agent
79
+
80
+ `sauce mcp setup` writes the project configuration each agent documents. The server it configures
81
+ is launched as `npx -y @eco-incorp/sauce@<this version> mcp`:
82
+
83
+ ```sh
84
+ npx sauce mcp setup # every agent below
85
+ npx sauce mcp setup --agent claude,cursor # only these
86
+ npx sauce mcp setup --config rpc.json # launch it with --config
87
+ ```
88
+
89
+ | Agent | File | Under | Documentation |
90
+ | ------------------------ | ----------------------- | --------------------- | --------------------------------------------------------------------------------- |
91
+ | Claude Code | `.mcp.json` | `mcpServers` | [MCP](https://code.claude.com/docs/en/mcp) |
92
+ | OpenAI Codex | `.codex/config.toml` | `[mcp_servers.sauce]` | [MCP](https://learn.chatgpt.com/docs/extend/mcp?surface=cli) |
93
+ | Cursor | `.cursor/mcp.json` | `mcpServers` | [MCP](https://cursor.com/docs/mcp) |
94
+ | GitHub Copilot (VS Code) | `.vscode/mcp.json` | `servers` | [MCP servers](https://code.visualstudio.com/docs/agent-customization/mcp-servers) |
95
+ | Gemini CLI | `.gemini/settings.json` | `mcpServers` | [MCP servers](https://geminicli.com/docs/tools/mcp-server/) |
96
+
97
+ How setup treats files that already exist:
98
+
99
+ - It keeps everything else in a file.
100
+ - It writes nothing when the entry is already there.
101
+ - It leaves a `sauce` entry that differs alone, unless you pass `--force`.
102
+ - It leaves a file that is not plain JSON (one with comments) alone too, and prints the entry to
103
+ add.
104
+
105
+ Each agent asks before it runs a server a project names:
106
+
107
+ - Claude Code asks you to approve a project server.
108
+ - Codex reads `.codex/config.toml` only in a project it trusts.
109
+ - VS Code applies Workspace Trust.
110
+ - Gemini CLI, with its Trusted Folders setting on, ignores an untrusted folder's settings.
111
+
112
+ Or add it by hand, with each agent's own command, per its documentation:
113
+
114
+ ```sh
115
+ claude mcp add --scope project sauce -- npx -y @eco-incorp/sauce mcp
116
+ codex mcp add sauce -- npx -y @eco-incorp/sauce mcp
117
+ copilot mcp add sauce -- npx -y @eco-incorp/sauce mcp
118
+ ```
119
+
120
+ `codex mcp add` and `copilot mcp add` (the Copilot CLI) write the user's configuration, not the
121
+ project's. Cursor has no add command, so write `.cursor/mcp.json`. The entry, for a stdio server:
122
+
123
+ ```json
124
+ {
125
+ "mcpServers": {
126
+ "sauce": { "type": "stdio", "command": "npx", "args": ["-y", "@eco-incorp/sauce", "mcp"] }
127
+ }
128
+ }
129
+ ```
130
+
131
+ ```toml
132
+ [mcp_servers.sauce]
133
+ command = "npx"
134
+ args = ["-y", "@eco-incorp/sauce", "mcp"]
135
+ ```
136
+
137
+ VS Code's `.vscode/mcp.json` has the same entry under `servers`. Gemini CLI's
138
+ `.gemini/settings.json` has it under `mcpServers`, without `type`. An agent can also ask the
139
+ server itself: `sauce_install_skills` returns these for the agent it names.
140
+
141
+ ### A remote server
142
+
143
+ For a server someone runs at `https://<host>/mcp`, behind a token:
144
+
145
+ ```sh
146
+ claude mcp add --transport http sauce https://<host>/mcp --header "Authorization: Bearer <token>"
147
+ codex mcp add sauce --url https://<host>/mcp --bearer-token-env-var SAUCE_MCP_TOKEN
148
+ copilot mcp add --transport http --header "Authorization: Bearer <token>" sauce https://<host>/mcp
149
+ ```
150
+
151
+ The same in each agent's file:
152
+
153
+ - **Claude Code:** `{ "type": "http", "url": …, "headers": { … } }` in `.mcp.json`.
154
+ - **Cursor:** `{ "url": …, "headers": { "Authorization": "Bearer ${env:SAUCE_MCP_TOKEN}" } }`.
155
+ - **VS Code:** `{ "type": "http", "url": …, "headers": { … } }` under `servers`.
156
+ - **Gemini CLI:** `{ "httpUrl": …, "headers": { … } }`. Its `url` means SSE, which this server
157
+ does not serve.
158
+
159
+ ## Tools
160
+
161
+ Each tool is the `sauce` command named beside it, called with the same inputs: the server calls the
162
+ very functions the command does. Each returns its JSON as the tool's structured content, with the
163
+ same JSON as text. Where there are `notes`, they say what must be true for a transaction to land.
164
+
165
+ | Tool | Like | Returns |
166
+ | ---------------------- | ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
167
+ | `sauce_skills` | — | Every agent skill with when to use it and its files' sizes, and the package version |
168
+ | `sauce_skill` | — | One skill's `SKILL.md`, or a file under its `references/` or `examples/`; with `section` or `query`, only that part |
169
+ | `sauce_dev` | — | For TypeScript against the SDK: the TypeScript skill and the package's guides, API pages and examples for a topic or a question |
170
+ | `sauce_install_skills` | `sauce skills` | For one agent, pinned to the server's version: the commands that add the package and install, update and check the skills, where it reads them, and its MCP configuration |
171
+ | `sauce_chains` | — | Every chain: slug, id, name, kind, aliases, `support` (`supported` or `preview`) and whether the server has its own endpoint for it; `supported`, the supported slugs; `requestChain`, the chain-support request form |
172
+ | `sauce_globals` | `sauce globals` | The chain's token symbols, protocol namespaces and contracts (with `protocol`, its methods), chain names, defines and `@sauce/token` functions; `stocks` and `search` for its tokenized stocks, 200 tokens a page (`offset`) |
173
+ | `sauce_price` | `sauce price` | A pair's price as the pool's `sqrtPriceX96` (also the swap's limit) and each direction's `minAvgPrice`; from `price`, `sqrtPriceX96` or a `pool` read now; with `slippageBps`, the `limits` |
174
+ | `sauce_pools` | `sauce pools` | Every price-limit pool of a pair on the chain, deepest first: venue, contract, address or V4 key, fee, liquidity, `sqrtPriceX96`, and each direction's price before and with the fee, the distributed swap's `maxPrice` and the depth to a 1% move; `empty`, the pools with no liquidity |
175
+ | `sauce_compile` | `sauce compile` | `bytecode`, `size`, `entryParams`, `entryEncoding`, `entrySchema`, each define it reads and where it came from, the `contracts` it calls, `compiler`, `engine`, on Solana the `manifest`; with `args` the `payload`, and with `rpcUrls` each intent's Pot checked |
176
+ | `sauce_actions` | `sauce actions` | An actions document (JSON) compiled for a chain: `sauce_compile`'s report with the generated `source`, its `parameters` and bindings, and, given a Pot, the unsigned cook `transaction` (on a preview chain, `refused` instead) |
177
+ | `sauce_tx` | `sauce tx` | EVM `{ chainId, to, data, value }`, the cook on the Pot, with `from` (who signs) and the `kitchenFee` read; Solana `{ chain, via, feePayer, pot, fee, maxExecutionFee, transaction }`, base64 and signed by no one |
178
+ | `sauce_pot` | `sauce pot` | The Pot's address, its unsigned deployment (EVM `Kitchen.deployPot`; Solana `create_pot`; on a preview chain, `refused` instead), `deployed` (null with no endpoint), and with an endpoint what it holds and the Kitchen's fee |
179
+ | `sauce_simulate` | `sauce simulate` | `ok`, the `path` taken, gas, what `main` returns, transfers, approvals and net balance changes; or the `stage` and `reason` it reverts |
180
+ | `sauce_intent_publish` | `sauce intent publish` | Each fixed intent's `intentHash`, its `vault`, its `record` (what the other intent tools take) and its unsigned `transactions` (transfers into the vault, then `Portal.publish`; with `intentFundVia: "publishAndFund"`, approvals then `Portal.publishAndFund`); with `dryRun`, their status and `funded` |
181
+ | `sauce_intent_fill` | `sauce intent fill` | For the solver `from`, its unsigned fill on the destination: approvals, then `fulfillAndProve` (the prover's fee in its value) or `fulfill`; with `dryRun`, the fill rehearsed: the calls and gas, what moved, or the decoded `reason` |
182
+ | `sauce_intent_import` | `sauce intent import` | The intents a source transaction published, each its `record`, vault, block and whether it was funded |
183
+ | `sauce_intent_status` | `sauce intent status` | `state`, both sides as read, the deadlines, the prover, and `can`: whether fill, prove, claim, refund and cancel can happen now, why not, and from when |
184
+ | `sauce_intent_prove` | `sauce intent prove` | The unsigned `Portal.prove` for one or more fills or cancellations, its bridge fee in its value |
185
+ | `sauce_intent_claim` | `sauce intent claim` | The unsigned `withdraw` (`batchWithdraw` for several) that pays each proven intent's claimant |
186
+ | `sauce_intent_refund` | `sauce intent refund` | The unsigned `refund` that returns the reward to its creator |
187
+ | `sauce_intent_cancel` | `sauce intent cancel` | The unsigned `cancel` (or, with `prove`, `cancelAndProve`) that stops an unfilled intent after its route's deadline |
188
+ | `sauce_inspect` | `sauce inspect` | A cook, Kitchen, Portal or ERC-20 call, or a program, taken apart; with `source`, the arguments decoded against `main` |
189
+ | `sauce_verify` | `sauce verify` | `valid` with the settle's tokens, `minOut` and recipient, or `valid: false` with the rejection `code` |
190
+ | `sauce_wallet_create` | `sauce wallet new` | Over stdio with `--wallets` only: a new wallet's `name`, `kind` (`evm` or `solana`), `address` and `policy` (null: none), never its key |
191
+ | `sauce_wallet_list` | `sauce wallet list` | Over stdio with `--wallets` only: each wallet's name, kind, address and policy |
192
+ | `sauce_wallet_send` | — | Over stdio with `--wallets` only: another tool's result (or a transaction, or a list) rehearsed, held to the wallet's policy, signed and sent; each one's `hash` and `status`, or the refusal |
193
+
194
+ ### Supported and preview chains
195
+
196
+ For the initial release the server builds transactions only on the chains the release supports:
197
+ Ethereum, Base and Solana ([Supported chains](../README.md#supported-chains)). Every other chain is a
198
+ preview chain. `sauce_chains` gives each chain's `support`, `"supported"` or `"preview"`.
199
+
200
+ On a preview chain these work as they do everywhere: `sauce_compile`, `sauce_actions`' report,
201
+ `sauce_simulate`, `sauce_globals`, `sauce_price`, `sauce_pools`, `sauce_inspect`, `sauce_verify`,
202
+ the dry runs (`sauce_intent_publish` and `sauce_intent_fill` with `dryRun`), `sauce_pot`'s
203
+ prediction and reads, `sauce_intent_status` and `sauce_intent_import`. So an agent can prototype
204
+ any protocol on any chain.
205
+
206
+ These are refused there, before any endpoint is reached:
207
+
208
+ - `sauce_tx`, when the program's chain, or the destination of any intent it opens, is a preview
209
+ chain;
210
+ - `sauce_intent_publish` without `dryRun`, unless its source and every destination it opens are
211
+ supported (a cascade's later levels are not checked: keep them on supported chains);
212
+ - `sauce_intent_fill` without `dryRun`, `sauce_intent_prove` and `sauce_intent_cancel`, by the
213
+ intent's destination; `sauce_intent_claim` and `sauce_intent_refund`, by its source. An intent
214
+ named by `txHash` is read from its source first, then refused by its destination where that is
215
+ the chain the step is sent on.
216
+
217
+ A refused call is an error result (`isError: true`) whose structured content is the refusal, also
218
+ given as its text:
219
+
220
+ ```json
221
+ {
222
+ "refused": {
223
+ "code": "preview-chain",
224
+ "action": "building the cook transaction",
225
+ "message": "building the cook transaction is refused: it involves arbitrum (Arbitrum One, chain id 42161), a preview chain. …",
226
+ "supportedChains": [
227
+ { "slug": "ethereum", "id": 1, "name": "Ethereum" },
228
+ { "slug": "base", "id": 8453, "name": "Base" },
229
+ { "slug": "solana", "id": 1399811149, "name": "Solana" }
230
+ ],
231
+ "previewChains": [
232
+ {
233
+ "slug": "arbitrum",
234
+ "id": 42161,
235
+ "name": "Arbitrum One",
236
+ "request": {
237
+ "chain": { "name": "Arbitrum One", "id": 42161, "slug": "arbitrum" },
238
+ "title": "Chain support: Arbitrum One (42161)",
239
+ "searchUrl": "https://github.com/eco-incorp/sauce/issues?q=is%3Aissue+label%3Achain-support+%22Arbitrum+One%22",
240
+ "newIssueUrl": "https://github.com/eco-incorp/sauce/issues/new?template=chain-support.yml&title=Chain+support%3A+Arbitrum+One+%2842161%29&chain=Arbitrum+One&chain-id=42161",
241
+ "body": "### Chain\n\nArbitrum One\n\n### Chain id\n\n42161\n\n### What you want to run there\n\n…",
242
+ "comment": "Another use case for Arbitrum One (42161):\n\n- What you want to run there: …"
243
+ }
244
+ }
245
+ ]
246
+ }
247
+ }
248
+ ```
249
+
250
+ `searchUrl` finds the chain-support requests already filed for the chain; `newIssueUrl` opens the
251
+ issue form with its title and chain filled in. `body` is the issue as the form would write it, and
252
+ `comment` adds one use case to an existing request, each with `<placeholders>` for what the agent
253
+ does not know, to post through the user's own GitHub access. The server's instructions tell an
254
+ agent to tell the user, offer to find or open that request, and not to build the transaction
255
+ another way.
256
+
257
+ `sauce_pot` on a preview chain returns its prediction (and, with an endpoint, its reads) with
258
+ `refused` in place of the deployment's `to`, `data` and `value`. `sauce_actions` given a Pot on a
259
+ preview chain returns its report with `refused` in place of `transaction`. Neither is an error.
260
+
261
+ A revert and a rejected settle are results (`ok: false`, `valid: false`), not errors. An error is a
262
+ call that could not be answered: a program that does not compile, an input that is wrong, a chain
263
+ that cannot be read. Every input is described in the tool's schema, which `tools/list` returns. An
264
+ unknown field is refused, which is how a misspelt one is caught.
265
+
266
+ The compiling tools take the program as text:
267
+
268
+ | Input | Meaning |
269
+ | ------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
270
+ | `source` | The program, the whole text of a `.sauce.ts` file (at most 256 KiB) |
271
+ | `file` | Its name, for messages and relative imports (default `program.sauce.ts`) |
272
+ | `modules` | Files it imports by relative path, as path → text from the directory of `file`. Nothing is read from the server's disk |
273
+ | `chain`, `target` | The chain, by slug, alias or id; or a `// @chain` header line in the program. `target: "svm"` alone is Solana |
274
+ | `defines` | Compile-time values by name: an integer in base units (decimal or `0x` hex), an address, `true` or `false`; a base58 key on Solana |
275
+ | `compactArgs` | Encode `main`'s arguments as compact-v1 |
276
+ | `intentDeadline`, `intentCreator`, `intentExecutionFee` | For intents the program opens: Unix seconds, a `0x` address, wei |
277
+ | `intentFundVia` | How their reward reaches the vault: `transfer` (default: paid into it, then `publish`) or `publishAndFund` |
278
+
279
+ `sauce_compile` also takes a cook's `args` and `accounts`, to size the payload and, on Solana, the
280
+ cook's transaction (with `via`, the Kitchen's or the engine's direct one); and `rpcUrls`, each intent destination's endpoint by chain, to check that the
281
+ Pot an intent's cook runs on is deployed there.
282
+
283
+ A cook (`sauce_tx`, `sauce_simulate`, `sauce_actions`) adds these inputs:
284
+
285
+ - the Pot: `owner` and `salt` (a label, hashed) or `saltHex` (the salt itself). On an EVM chain the
286
+ Pot can be named by its address as `pot` instead.
287
+ - `value` in wei, on an EVM chain. The default is the Kitchen's fee, read from the chain.
288
+ - `args`: `main`'s arguments as JSON values, in order. Integers are in base units, as decimal
289
+ strings.
290
+ - `accounts`, on Solana: each account `main` takes, by name. Each is an address, `pot` or `owner`.
291
+ - `via`, on Solana: `kitchen` (the default), the Kitchen's cook on the owner's Pot, or `engine`,
292
+ the engine's own paid cook with no Kitchen and no Pot: the owner signs as the authority the
293
+ program acts with and pays the fee, and the program's own calls get one more level of CPI depth
294
+ ([Solana guide](solana.md#two-ways-to-run-a-program)).
295
+ - `maxExecutionFee` in lamports, on Solana: a cook whose execution fee, read from the cluster, is
296
+ above it is refused before anything is built.
297
+ - `rpcUrl`.
298
+
299
+ `sauce_simulate` also takes:
300
+
301
+ - `assumeBalance`, such as `["USDC:2", "ETH:0.1"]`: balances the Pot holds for the rehearsal only;
302
+ - `fund`, `fundMode` and `sweep`, which rehearse [`sauce run --fund`](cli.md#funding-a-run---fund).
303
+ The Pot is credited what the pulls would bring.
304
+
305
+ A token amount is whole units (`USDC:1.5`) or base units ending in `n` (`USDC:1500000n`).
306
+
307
+ `sauce_pot` with an endpoint reads what a cook needs: on an EVM chain the Kitchen's fee (the least
308
+ a cook's `value` can be) and the Pot's balance of the native currency and of each token the chain
309
+ registers (`null` where a token cannot be read there); on Solana the Pot's associated token account
310
+ for each registered mint, whether it exists, and its balance. `balances: false` skips those reads.
311
+
312
+ `sauce_price` takes the price one of three ways: `price` (a decimal), `sqrtPriceX96`, or `pool`, a
313
+ Uniswap V3-style pool of the pair read through an endpoint (its `slot0` price, liquidity and fee).
314
+ With `slippageBps`, `limits` gives each direction's `sqrtPriceLimitX96` that far from the price,
315
+ and a `minAvgPrice` that also pays the pool's fee (`feePpm`, or the pool's own). A token the chain
316
+ does not register is `<address>:<decimals>`, or with an endpoint the address alone: its decimals
317
+ are read from the token.
318
+
319
+ `sauce_pools` takes `chain`, `tokenA` and `tokenB` (each a registered symbol or an address, whose
320
+ decimals and symbol are then read from the token), `v4Pools` (more hookless Uniswap V4 keys to
321
+ try, each `"<fee>:<tickSpacing>"`), and `rpcUrl`; it needs an endpoint. It returns what
322
+ [`sauce pools --json`](cli.md#sauce-pools) prints: `pools`, the ones with liquidity, deepest first,
323
+ each with two `sides` (paying `tokenA` for `tokenB`, then the reverse); `empty`; and `checked`,
324
+ the tiers, tick spacings and keys each venue was asked for.
325
+
326
+ `sauce_intent_publish` takes `from` (the wallet that funds the reward), `dryRun`, `assumeBalance`,
327
+ `rpcUrl`, and the program inputs, `intentFundVia` among them. The program inputs also take the
328
+ reward's deadline and prover: `intentRewardDeadline`
329
+ (Unix seconds; the intent's deadline by default) and `intentProver` (the registry's for the pair by
330
+ default).
331
+
332
+ ### An intent's life
333
+
334
+ The server keeps no intents: each call names one, by its `record` — the JSON
335
+ `sauce_intent_publish`, `sauce_intent_import` and `sauce_intent_status` return, checked against its
336
+ own hash before anything is built from it — or by the transaction that published it, `txHash` with
337
+ its source `chain` (and `index` when it published several). `sauce_intent_fill` also takes the
338
+ program itself, with the same inputs as `sauce_intent_publish`.
339
+
340
+ 1. `sauce_intent_publish`: the creator's transactions on the source chain. Or `sauce_intent_import`
341
+ for an intent published elsewhere.
342
+ 2. `sauce_intent_status`: where it stands, and `can`, what can happen next and from when.
343
+ 3. `sauce_intent_fill` with `from`, the solver: its transactions on the destination. With `dryRun`,
344
+ the same fill rehearsed, from any solver. A fill that proves itself (`fulfillAndProve`) needs no
345
+ step 4.
346
+ 4. `sauce_intent_prove`: the proof of fills or cancellations, sent from the destination; the
347
+ bridge delivers it to the source's prover.
348
+ 5. `sauce_intent_claim`: the reward paid to each proven fill's claimant, on the source.
349
+
350
+ The creator's way back:
351
+
352
+ - `sauce_intent_refund` returns the reward from the reward's deadline when no one proved a fill, or
353
+ earlier once a proven cancellation is recorded on the source. A source Portal that cannot refuse
354
+ to pay a cancellation is never refunded early.
355
+ - `sauce_intent_cancel` stops an unfilled intent after its route's deadline. Anyone may send it,
356
+ and only a destination Portal that can cancel takes it. Prove the cancellation with
357
+ `sauce_intent_prove` once the block it landed in is final (give that block in `cancelledIn`), then
358
+ refund. `prove: true` sends the proof at once, before finality, and the result warns.
359
+
360
+ For an intent to Solana, the destination's steps — fill, prove and cancel — come back as Solana
361
+ transactions: `feePayer` and `transaction`, a base64 wire transaction with every signature in but
362
+ the fee payer's. Pass the Solana key that pays and signs as `from`; a fill also needs `claimant`,
363
+ the address on the EVM source the reward pays. Sign each with that key, last, and send it within
364
+ about a minute, before its blockhash expires. `dryRun` rehearses an EVM destination's fill only;
365
+ a Solana fill is rehearsed as it is built. Claim and refund stay on the EVM source.
366
+
367
+ A step that cannot happen yet is a result, `ready: false` with `why`, not an error. Each tool reads
368
+ the chains it needs through `rpcUrls`, each chain's endpoint by slug or id; `rpcUrl` is the endpoint
369
+ of the chain the tool names (the source for import, claim and refund, the destination for fill,
370
+ prove and cancel). The server's own endpoints fill the gaps.
371
+
372
+ `sauce_actions` takes the document as `program`, an object or its JSON text, validated against the
373
+ [action-program schema](../../actions/action-program.schema.json), also served as
374
+ `sauce://actions/schema.json`, and `chain` for a document without a `chainId`. It calls the
375
+ function `sauce actions` runs, so its names (tokens by symbol, contracts by namespace) resolve on
376
+ that chain as they do for the command.
377
+
378
+ Error messages and notes are the `sauce` command's, in the tools' words: a flag is named as the
379
+ tool input (`--salt-hex` as `saltHex`, `--args` as `args`), and a command line as the tool
380
+ (`sauce pot --deploy …` as `sauce_pot`).
381
+
382
+ ### Signing what it builds
383
+
384
+ The server's transactions are for the user's own wallet, or, on a server started with
385
+ `--wallets`, for [`sauce_wallet_send`](#agent-wallets). On an EVM chain, `sauce_tx` returns what
386
+ any wallet signs. Send it from the Pot's owner, since `cook()` is the owner's alone. From a terminal:
387
+
388
+ ```sh
389
+ cast send <to> <data> --value <value> --rpc-url <url> --keystore <keystore>
390
+ ```
391
+
392
+ The other transactions:
393
+
394
+ - `sauce_pot`'s deployment can be sent from any account.
395
+ - `sauce_intent_publish`'s transactions go in order, from the wallet that funds the reward: the
396
+ transfers into the vault first, then `publish` once they have landed.
397
+ - `sauce_intent_fill`'s go in order from the solver it names (`from`): the Portal pulls what the
398
+ route delivers from the account that calls `fulfill`.
399
+ - On Solana, each transaction is signed last by its `feePayer`, the `from` the call named.
400
+ - The proof, claim, refund and cancellation can be sent from any account. Each `transactions`
401
+ entry names its `chainId`; the sender pays the gas and the value, and the reward goes to the
402
+ claimant or the creator, never the sender.
403
+ - On Solana, `sauce_tx`'s `transaction` is base64, for the owner to sign and send. Its blockhash
404
+ expires in about a minute.
405
+
406
+ ## Agent wallets
407
+
408
+ Over stdio, the server can send what it builds, from wallets of its own. Start it with the wallet
409
+ directory, `--wallets [<dir>]` (`~/.sauce/wallets` when no directory is given), and the source of
410
+ their password, as [`sauce wallet`](cli.md#agent-wallets) takes one: `--password-env <NAME>`,
411
+ `--password-file <path>` or `--password-command "<command>"`. There is no prompt: over stdio,
412
+ stdin is the protocol's. The server reads the password once, before it serves anything, so a
413
+ source that does not work stops it at start. The password is never a tool's input and never in a
414
+ result, so it stays out of the model's context.
415
+
416
+ The agent's password lives in its `.env` or its secret store, and the client's configuration passes
417
+ it to the server in the entry's `env` block, by reference, never by value:
418
+
419
+ ```json
420
+ {
421
+ "mcpServers": {
422
+ "sauce": {
423
+ "type": "stdio",
424
+ "command": "npx",
425
+ "args": [
426
+ "-y",
427
+ "@eco-incorp/sauce",
428
+ "mcp",
429
+ "--wallets",
430
+ "--password-env",
431
+ "SAUCE_WALLET_PASSWORD"
432
+ ],
433
+ "env": { "SAUCE_WALLET_PASSWORD": "${SAUCE_WALLET_PASSWORD}" }
434
+ }
435
+ }
436
+ }
437
+ ```
438
+
439
+ Each client fills that reference its own way: Claude Code expands `${SAUCE_WALLET_PASSWORD}` from
440
+ the environment it runs in, and VS Code also reads an `envFile` (the project's `.env`). Keep the
441
+ `.env` out of git.
442
+
443
+ The wallet tools, besides every other tool:
444
+
445
+ - `sauce_wallet_create` `{ name, kind }` makes a wallet (`kind` `evm`, the default, or `solana`),
446
+ encrypted under the server's password (8 characters at least, as for `sauce wallet new`), and
447
+ returns its address. Its key never leaves the wallet's file except to sign, in the server's
448
+ process.
449
+ - `sauce_wallet_list` names each wallet with its kind, address and policy.
450
+ - `sauce_wallet_send` `{ wallet, transaction, chain?, rpcUrl? }` sends. `transaction` is the
451
+ whole result of `sauce_tx`, `sauce_pot`, `sauce_actions` (with an owner), `sauce_intent_publish`
452
+ or any `sauce_intent_*` step, or a transaction, or a list of them. It rehearses them first: on an
453
+ EVM chain all together in one `eth_simulateV1` block from the wallet, on Solana each as signed.
454
+ If any would revert, it refuses and sends nothing. It holds them to the wallet's
455
+ [policy](cli.md#a-wallets-policy) and refuses, naming the limit, what the policy does not allow.
456
+ Then it sends each in order, through the same path `sauce run` uses, and stops at the first that
457
+ does not succeed. It returns each one's `hash` (on Solana, its signature) and `status`.
458
+
459
+ So an agent goes: `sauce_wallet_create`, fund the address, build with the wallet's address as
460
+ `owner` or `from` (`sauce_pot`, `sauce_tx`, `sauce_intent_fill`, …), rehearse with
461
+ `sauce_simulate`, and pass the building tool's result to `sauce_wallet_send`. Each tool that builds
462
+ a transaction says, on a server with wallets, that `sauce_wallet_send` sends it. There is no export
463
+ tool: `sauce wallet export` shows a key only at a terminal.
464
+
465
+ These are hot wallets: keep small balances in them, and give each a policy. Wallet sends hold to
466
+ the [supported chains](#supported-and-preview-chains) too. Over HTTP there are no wallets:
467
+ `--wallets` is refused, and the wallet tools are not registered.
468
+
469
+ ## Skills, documents and prompts
470
+
471
+ The [agent skills](cli.md#agent-skills) the package ships are the same files `sauce skills install`
472
+ copies into a project. They are served two ways, because many clients call tools but never read
473
+ resources:
474
+
475
+ - as tools. `sauce_skills` lists them. `sauce_skill` returns a `SKILL.md`, or a file it links, by
476
+ skill and path; only shipped files are served. `sauce_dev` returns the TypeScript skill and the
477
+ package's own guides, API pages and examples for a topic or a free-text question.
478
+ `sauce_install_skills` says how to install the skills locally for an agent, at the server's
479
+ own version.
480
+ - as resources. `sauce://skills/index` lists every skill and its files.
481
+ `sauce://skills/<skill>/SKILL.md` is a skill, and its `references/…` and `examples/…` sit beside
482
+ it.
483
+
484
+ When a client connects, the server's instructions tell it five things: whether the server signs
485
+ (only with its wallets, over stdio with `--wallets`), start from `sauce_skills`, the steps from `sauce_globals` to `sauce_tx`, which chains it builds
486
+ transactions on and what to do with a refusal, and how `rpcUrl` works. Two prompts walk the main tasks through the
487
+ tools, with the skill they start from embedded:
488
+
489
+ - `sauce_write_program` (`task`, `chain`) writes, compiles, rehearses and builds a program.
490
+ - `sauce_open_intent` (`task`, `source`, `destination`) opens a cross-chain intent and builds its
491
+ publish transactions.
492
+
493
+ ## Self-hosting
494
+
495
+ ```sh
496
+ npx -y @eco-incorp/sauce mcp --http 3000 --config rpc.json
497
+ ```
498
+
499
+ This serves Streamable HTTP at `http://127.0.0.1:3000/mcp`. The server is stateless: every POST
500
+ gets a server of its own, answered as JSON, with no session, so any replica can answer any request.
501
+ A GET or DELETE is refused (405).
502
+
503
+ - **No environment, and no key.** The server reads no environment variable. Its RPC endpoints are
504
+ the `--config` file's alone, and it holds no key: nothing it builds is signed. `--wallets` is
505
+ refused over HTTP, and the wallet tools are not registered there.
506
+ - **It authenticates no one.** Bound to loopback, the default, it answers only requests whose
507
+ `Host`, and `Origin` when one is sent, is a loopback name. That keeps a web page from reaching it
508
+ through DNS rebinding.
509
+ - **Off loopback it needs `--allowed-host`.** For a deployment others reach, bind it with `--host`
510
+ and name the host it is served as with `--allowed-host` (repeatable). It refuses to start
511
+ without one. `--allowed-host '*'` answers any `Host`, for a proxy that checks it itself.
512
+ - **Put your own authentication in front.** Use a reverse proxy that checks a token (or OAuth)
513
+ before forwarding to it, and that rate-limits, since every chain read spends your endpoints'
514
+ quota.
515
+
516
+ ```sh
517
+ npx -y @eco-incorp/sauce mcp --http 3000 --host 0.0.0.0 --allowed-host mcp.example.com \
518
+ --config rpc.json
519
+ ```
520
+
521
+ **Callers' endpoints are guarded.** Over HTTP, a caller's `rpcUrl` is chosen by whoever calls, so
522
+ the server reaches it only through a guard:
523
+
524
+ - It takes `https:` only.
525
+ - It resolves the host and refuses any address that is loopback, private (RFC 1918, ULA),
526
+ link-local, CGNAT, reserved or a cloud metadata service.
527
+ - It resolves and checks the host again at every connection, so a name that changes to a private
528
+ address after the check (DNS rebinding) is refused when used.
529
+ - It follows no redirect, and times out.
530
+ - It bounds what it sends and what it reads back.
531
+
532
+ `--allow-private-rpc` lets callers reach `http:` and private addresses, for a deployment inside a
533
+ private network. Link-local and metadata addresses stay refused. Over stdio there is no guard: the
534
+ server is the user's own process, reached by the user's own agent, so an endpoint it names (a local
535
+ node included) is one the user can already reach.
536
+
537
+ A request body over `--max-body` bytes (2 MiB by default) is refused with 413 before it is read.
538
+ Each tool bounds its own inputs as well: 256 KiB of program, 32 modules, 64 arguments, defines or
539
+ accounts, and 1 MiB of hex.
@@ -4,6 +4,12 @@
4
4
 
5
5
  `.nest(...)` adds a child intent whose source is the parent's destination. When the parent fulfills, its route funds the child's reward. A solver can fulfill that child in a later transaction on the child's destination chain. Each leg is a separate intent; a failure on a later chain does not roll back a completed parent.
6
6
 
7
+ The examples here hop through Arbitrum and Optimism, which are preview chains for the initial
8
+ release: the SDK builds them as shown, at your own risk, while the `sauce` command and the MCP server
9
+ publish an intent only when its source and destination are Ethereum, Base or Solana
10
+ ([Supported chains](../README.md#supported-chains)). They check the first level only, so keep every
11
+ later level of a cascade on a supported chain too.
12
+
7
13
  Use the thunk form to receive the parent's destination as the child's source:
8
14
 
9
15
  ```ts
@@ -17,10 +23,10 @@ export function buildCascade(
17
23
  childReward: Omit<routes.SauceRewardSpec, "source">,
18
24
  executionFee: bigint,
19
25
  ) {
20
- return Base("return 1n;", parentOptions)
26
+ return Base("function main() { return 1n; }", parentOptions)
21
27
  .nest(
22
28
  (on) =>
23
- Arbitrum("return 1n;", childOptions).reward({
29
+ Arbitrum("function main() { return 1n; }", childOptions).reward({
24
30
  ...childReward,
25
31
  source: on,
26
32
  }),
@@ -51,9 +57,9 @@ With default `requireCap: false`, a short Pot balance can leave the child underf
51
57
 
52
58
  Read the current Kitchen fee and supply `executionFee` for every transfer child. Children merged into one position share one fee and must specify the same value; separate `"before"` and `"after"` cooks each pay. The generated call adds this fee to any `fundNativeFromRoute` reward amounts, so the fee does not reduce the child's funding. Zero works only on a fee-free Kitchen. When a nonzero fee is supplied, the builder checks that `nativeAmount` covers the calls' combined value, excluding publication funding explicitly marked `fundedByBody`.
53
59
 
54
- The default vault resolution calls the Portal from the generated program. Alternatively, pass `vault` after verifying it with `child.vaultCall()`, or pass `vaultConfig` containing the verified `vaultInitCodeHash` for an offline prediction. Explicit `vault` takes precedence over `vaultConfig`.
60
+ The default vault resolution calls the Portal from the generated program. Alternatively, pass `vault` after verifying it with `child.vaultCall()`, or pass `vaultConfig` for an offline prediction: `routes.ecoRoutesVaultConfig(portal)` is the configuration of an eco-routes Portal, the one `child.predictVault()` uses. Explicit `vault` takes precedence over `vaultConfig`.
55
61
 
56
- Transfer funding does not emit a child `IntentPublished` event. Share the built child with your solver or intent-distribution system; an indexer relying only on publication events cannot discover it from such an event.
62
+ Transfer funding does not emit a child `IntentPublished` event. Share the built child with your solver or intent-distribution system; an indexer relying only on publication events cannot discover it from such an event. That is the one difference from an intent a program opens with `Chain(() => …).reward(…)`, which is also funded by transfer to its vault by default but is then published, in the same transaction — see [intents](intents.md#how-the-reward-is-funded).
57
63
 
58
64
  ## Opt in to publication and Portal funding
59
65
 
@@ -74,7 +80,7 @@ import { Arbitrum, Base, routes } from "@eco-incorp/sauce";
74
80
 
75
81
  const { AMOUNT_IN_PLACEHOLDER, AMOUNT_OUT_PLACEHOLDER } = routes;
76
82
 
77
- const child = Arbitrum("return 1n;", {
83
+ const child = Arbitrum("function main() { return 1n; }", {
78
84
  ...childOptions,
79
85
  tokens: [{ token: USDC_ARBITRUM, amount: AMOUNT_OUT_PLACEHOLDER }],
80
86
  }).reward({ ...childReward, tokens: [{ token: USDC_BASE, amount: AMOUNT_IN_PLACEHOLDER }] });
@@ -129,6 +135,10 @@ The shortest way to chain hops is to write them inside the program, one intent o
129
135
  //
130
136
  // The middle body is more than token writes, so it compiles to a program and runs on Arbitrum's
131
137
  // Pot; its second argument names what a solver must deliver for it to have something to measure.
138
+ //
139
+ // Every `USDC` is the USDC of the chain where that part runs. Each body's is its destination's. Each
140
+ // reward is escrowed by the program offering it, so the Arbitrum hop's reward is the first chain's
141
+ // USDC and the Optimism hop's is Arbitrum's.
132
142
  function main() {
133
143
  const amount = USDC.balanceOf(ctx.self());
134
144
  Arbitrum(
@@ -148,6 +158,11 @@ first chain. `swapped` is measured on Arbitrum, while that hop is being fulfille
148
158
  middle braces compiled to — and it is the reward of the third. Each level's numbers are filled in by
149
159
  the level above it, at that level's own execution time.
150
160
 
161
+ Each hop is funded on the chain whose program offers it. The Arbitrum hop's reward is the first
162
+ chain's USDC, escrowed and approved there. The Optimism hop's reward is Arbitrum's USDC, out of what
163
+ the solver delivered to Arbitrum's Pot, and its body pays in Optimism's. See
164
+ [names resolve per chain](intents.md#names-resolve-per-chain).
165
+
151
166
  Nesting is recursive rather than special-cased: the middle body is compiled by re-entering the same
152
167
  pipeline, so the same lowering runs inside it at any depth. [Create an intent from inside a
153
168
  program](intents.md#create-an-intent-from-inside-a-program) covers what may be captured, the two
@@ -171,7 +186,7 @@ const placeholders = [
171
186
  { value: AMOUNT_OUT_PLACEHOLDER, source: "amountOut", occurrences: 1 },
172
187
  ] as const;
173
188
 
174
- const grandchild = Optimism("return 1n;", {
189
+ const grandchild = Optimism("function main() { return 1n; }", {
175
190
  ...grandchildOptions,
176
191
  tokens: [{ token: USDC_OPTIMISM, amount: AMOUNT_OUT_PLACEHOLDER }],
177
192
  }).reward({