@eco-incorp/sauce 0.99.6 → 0.99.8
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.
- package/README.md +58 -16
- package/actions/action-program.schema.json +480 -379
- package/actions/dist/abis.d.ts +19 -18
- package/actions/dist/abis.d.ts.map +1 -1
- package/actions/dist/abis.js +29 -29
- package/actions/dist/compile.d.ts +4 -4
- package/actions/dist/compile.d.ts.map +1 -1
- package/actions/dist/compile.js +3 -1
- package/actions/dist/compose.d.ts +63 -6
- package/actions/dist/compose.d.ts.map +1 -1
- package/actions/dist/compose.js +100 -16
- package/actions/dist/index.d.ts +1 -1
- package/actions/dist/index.d.ts.map +1 -1
- package/actions/dist/names.d.ts +88 -0
- package/actions/dist/names.d.ts.map +1 -0
- package/actions/dist/names.js +334 -0
- package/actions/dist/program.d.ts.map +1 -1
- package/actions/dist/program.js +115 -5
- package/actions/dist/registry.d.ts +10 -8
- package/actions/dist/registry.d.ts.map +1 -1
- package/actions/dist/registry.js +10 -8
- package/actions/dist/schema.d.ts.map +1 -1
- package/actions/dist/schema.js +99 -12
- package/actions/dist/semantics.d.ts +12 -2
- package/actions/dist/semantics.d.ts.map +1 -1
- package/actions/dist/semantics.js +78 -8
- package/actions/dist/spec.d.ts +30 -0
- package/actions/dist/spec.d.ts.map +1 -1
- package/actions/dist/spec.js +151 -138
- package/actions/dist/split-swap.d.ts +10 -5
- package/actions/dist/split-swap.d.ts.map +1 -1
- package/actions/dist/split-swap.js +48 -7
- package/actions/dist/to-quote.d.ts +14 -5
- package/actions/dist/to-quote.d.ts.map +1 -1
- package/actions/dist/to-quote.js +210 -244
- package/actions/dist/to-sauce.d.ts +18 -4
- package/actions/dist/to-sauce.d.ts.map +1 -1
- package/actions/dist/to-sauce.js +232 -205
- package/actions/dist/types.d.ts +245 -147
- package/actions/dist/types.d.ts.map +1 -1
- package/actions/dist/types.js +4 -0
- package/docs/README.md +38 -0
- package/docs/api/README.md +37 -23
- package/docs/api/compiler.md +53 -12
- package/docs/api/contracts.md +105 -0
- package/docs/api/coverage.md +96 -57
- package/docs/api/router.md +238 -0
- package/docs/api/routes.md +31 -22
- package/docs/concepts/architecture.md +26 -3
- package/docs/concepts/saucescript.md +35 -55
- package/docs/examples/README.md +21 -14
- package/docs/examples/action-program.ts +51 -35
- package/docs/examples/cross-chain-cascade.sauce.ts +4 -0
- package/docs/examples/cross-chain-intent.sauce.ts +2 -1
- package/docs/examples/evm-execution.ts +2 -4
- package/docs/examples/first-intent.ts +7 -2
- package/docs/examples/pot-router.ts +19 -0
- package/docs/examples/registry-names.ts +52 -0
- package/docs/examples/router-route.sauce.ts +31 -0
- package/docs/examples/router-route.ts +72 -0
- package/docs/examples/router-swap.sauce.ts +16 -0
- package/docs/examples/router-swap.ts +47 -0
- package/docs/examples/venue-where-deployed.sauce.ts +14 -0
- package/docs/guides/actions.md +230 -120
- package/docs/guides/builders-and-actions.md +20 -14
- package/docs/guides/cli.md +1446 -0
- package/docs/guides/compiling.md +19 -7
- package/docs/guides/intents.md +228 -15
- package/docs/guides/mcp.md +540 -0
- package/docs/guides/nested-intents.md +21 -6
- package/docs/guides/protocols-and-tokens.md +218 -39
- package/docs/guides/quick-start.md +5 -0
- package/docs/guides/solana.md +199 -52
- package/docs/guides/verification.md +2 -2
- package/mcp/dist/config.js +78 -0
- package/mcp/dist/config.js.map +1 -0
- package/mcp/dist/entry.js +112 -0
- package/mcp/dist/entry.js.map +1 -0
- package/mcp/dist/files.js +64 -0
- package/mcp/dist/files.js.map +1 -0
- package/mcp/dist/guard.js +262 -0
- package/mcp/dist/guard.js.map +1 -0
- package/mcp/dist/http.js +111 -0
- package/mcp/dist/http.js.map +1 -0
- package/mcp/dist/intents.js +579 -0
- package/mcp/dist/intents.js.map +1 -0
- package/mcp/dist/prompts.js +153 -0
- package/mcp/dist/prompts.js.map +1 -0
- package/mcp/dist/reach.js +98 -0
- package/mcp/dist/reach.js.map +1 -0
- package/mcp/dist/resources.js +154 -0
- package/mcp/dist/resources.js.map +1 -0
- package/mcp/dist/sdk.js +34 -0
- package/mcp/dist/sdk.js.map +1 -0
- package/mcp/dist/server.js +119 -0
- package/mcp/dist/server.js.map +1 -0
- package/mcp/dist/setup.js +189 -0
- package/mcp/dist/setup.js.map +1 -0
- package/mcp/dist/skilltools.js +520 -0
- package/mcp/dist/skilltools.js.map +1 -0
- package/mcp/dist/terms.js +93 -0
- package/mcp/dist/terms.js.map +1 -0
- package/mcp/dist/tools.js +1499 -0
- package/mcp/dist/tools.js.map +1 -0
- package/mcp/dist/wallets.js +168 -0
- package/mcp/dist/wallets.js.map +1 -0
- package/package.json +18 -13
- package/sdk/dist/artifacts/V12Deployments.json +3 -1
- package/sdk/dist/artifacts/V12EngineGate.json +1 -2
- package/sdk/dist/artifacts/V12KitchenProxy.json +1 -0
- package/sdk/dist/chains/canonical.d.ts +15 -24
- package/sdk/dist/chains/canonical.d.ts.map +1 -1
- package/sdk/dist/chains/canonical.js +18 -29
- package/sdk/dist/chains/canonical.js.map +1 -1
- package/sdk/dist/cli/actions.d.ts +29 -0
- package/sdk/dist/cli/actions.d.ts.map +1 -0
- package/sdk/dist/cli/actions.js +122 -0
- package/sdk/dist/cli/actions.js.map +1 -0
- package/sdk/dist/cli/args.d.ts +118 -0
- package/sdk/dist/cli/args.d.ts.map +1 -0
- package/sdk/dist/cli/args.js +354 -0
- package/sdk/dist/cli/args.js.map +1 -0
- package/sdk/dist/cli/assume.d.ts +51 -0
- package/sdk/dist/cli/assume.d.ts.map +1 -0
- package/sdk/dist/cli/assume.js +207 -0
- package/sdk/dist/cli/assume.js.map +1 -0
- package/sdk/dist/cli/chain.d.ts +173 -0
- package/sdk/dist/cli/chain.d.ts.map +1 -0
- package/sdk/dist/cli/chain.js +462 -0
- package/sdk/dist/cli/chain.js.map +1 -0
- package/sdk/dist/cli/commands.d.ts +226 -0
- package/sdk/dist/cli/commands.d.ts.map +1 -0
- package/sdk/dist/cli/commands.js +637 -0
- package/sdk/dist/cli/commands.js.map +1 -0
- package/sdk/dist/cli/create.d.ts +70 -0
- package/sdk/dist/cli/create.d.ts.map +1 -0
- package/sdk/dist/cli/create.js +483 -0
- package/sdk/dist/cli/create.js.map +1 -0
- package/sdk/dist/cli/diagnostics.d.ts +12 -0
- package/sdk/dist/cli/diagnostics.d.ts.map +1 -0
- package/sdk/dist/cli/diagnostics.js +225 -0
- package/sdk/dist/cli/diagnostics.js.map +1 -0
- package/sdk/dist/cli/effects.d.ts +71 -0
- package/sdk/dist/cli/effects.d.ts.map +1 -0
- package/sdk/dist/cli/effects.js +279 -0
- package/sdk/dist/cli/effects.js.map +1 -0
- package/sdk/dist/cli/fill.d.ts +83 -0
- package/sdk/dist/cli/fill.d.ts.map +1 -0
- package/sdk/dist/cli/fill.js +734 -0
- package/sdk/dist/cli/fill.js.map +1 -0
- package/sdk/dist/cli/funding.d.ts +126 -0
- package/sdk/dist/cli/funding.d.ts.map +1 -0
- package/sdk/dist/cli/funding.js +514 -0
- package/sdk/dist/cli/funding.js.map +1 -0
- package/sdk/dist/cli/globals.d.ts +16 -0
- package/sdk/dist/cli/globals.d.ts.map +1 -0
- package/sdk/dist/cli/globals.js +219 -0
- package/sdk/dist/cli/globals.js.map +1 -0
- package/sdk/dist/cli/init.d.ts +34 -0
- package/sdk/dist/cli/init.d.ts.map +1 -0
- package/sdk/dist/cli/init.js +181 -0
- package/sdk/dist/cli/init.js.map +1 -0
- package/sdk/dist/cli/inputs.d.ts +72 -0
- package/sdk/dist/cli/inputs.d.ts.map +1 -0
- package/sdk/dist/cli/inputs.js +152 -0
- package/sdk/dist/cli/inputs.js.map +1 -0
- package/sdk/dist/cli/inspect.d.ts +48 -0
- package/sdk/dist/cli/inspect.d.ts.map +1 -0
- package/sdk/dist/cli/inspect.js +536 -0
- package/sdk/dist/cli/inspect.js.map +1 -0
- package/sdk/dist/cli/intent-commands.d.ts +71 -0
- package/sdk/dist/cli/intent-commands.d.ts.map +1 -0
- package/sdk/dist/cli/intent-commands.js +698 -0
- package/sdk/dist/cli/intent-commands.js.map +1 -0
- package/sdk/dist/cli/intent-svm.d.ts +15 -0
- package/sdk/dist/cli/intent-svm.d.ts.map +1 -0
- package/sdk/dist/cli/intent-svm.js +222 -0
- package/sdk/dist/cli/intent-svm.js.map +1 -0
- package/sdk/dist/cli/intents.d.ts +43 -0
- package/sdk/dist/cli/intents.d.ts.map +1 -0
- package/sdk/dist/cli/intents.js +89 -0
- package/sdk/dist/cli/intents.js.map +1 -0
- package/sdk/dist/cli/interactive.d.ts +11 -0
- package/sdk/dist/cli/interactive.d.ts.map +1 -0
- package/sdk/dist/cli/interactive.js +161 -0
- package/sdk/dist/cli/interactive.js.map +1 -0
- package/sdk/dist/cli/lifecycle-svm.d.ts +109 -0
- package/sdk/dist/cli/lifecycle-svm.d.ts.map +1 -0
- package/sdk/dist/cli/lifecycle-svm.js +299 -0
- package/sdk/dist/cli/lifecycle-svm.js.map +1 -0
- package/sdk/dist/cli/lifecycle.d.ts +439 -0
- package/sdk/dist/cli/lifecycle.d.ts.map +1 -0
- package/sdk/dist/cli/lifecycle.js +1721 -0
- package/sdk/dist/cli/lifecycle.js.map +1 -0
- package/sdk/dist/cli/main.d.ts +3 -0
- package/sdk/dist/cli/main.d.ts.map +1 -0
- package/sdk/dist/cli/main.js +8 -0
- package/sdk/dist/cli/main.js.map +1 -0
- package/sdk/dist/cli/mcp.d.ts +66 -0
- package/sdk/dist/cli/mcp.d.ts.map +1 -0
- package/sdk/dist/cli/mcp.js +169 -0
- package/sdk/dist/cli/mcp.js.map +1 -0
- package/sdk/dist/cli/password.d.ts +54 -0
- package/sdk/dist/cli/password.d.ts.map +1 -0
- package/sdk/dist/cli/password.js +148 -0
- package/sdk/dist/cli/password.js.map +1 -0
- package/sdk/dist/cli/policy.d.ts +130 -0
- package/sdk/dist/cli/policy.d.ts.map +1 -0
- package/sdk/dist/cli/policy.js +702 -0
- package/sdk/dist/cli/policy.js.map +1 -0
- package/sdk/dist/cli/pools.d.ts +140 -0
- package/sdk/dist/cli/pools.d.ts.map +1 -0
- package/sdk/dist/cli/pools.js +658 -0
- package/sdk/dist/cli/pools.js.map +1 -0
- package/sdk/dist/cli/price.d.ts +74 -0
- package/sdk/dist/cli/price.d.ts.map +1 -0
- package/sdk/dist/cli/price.js +321 -0
- package/sdk/dist/cli/price.js.map +1 -0
- package/sdk/dist/cli/prompt.d.ts +30 -0
- package/sdk/dist/cli/prompt.d.ts.map +1 -0
- package/sdk/dist/cli/prompt.js +53 -0
- package/sdk/dist/cli/prompt.js.map +1 -0
- package/sdk/dist/cli/publish.d.ts +48 -0
- package/sdk/dist/cli/publish.d.ts.map +1 -0
- package/sdk/dist/cli/publish.js +480 -0
- package/sdk/dist/cli/publish.js.map +1 -0
- package/sdk/dist/cli/receipt.d.ts +35 -0
- package/sdk/dist/cli/receipt.d.ts.map +1 -0
- package/sdk/dist/cli/receipt.js +63 -0
- package/sdk/dist/cli/receipt.js.map +1 -0
- package/sdk/dist/cli/rehearse.d.ts +80 -0
- package/sdk/dist/cli/rehearse.d.ts.map +1 -0
- package/sdk/dist/cli/rehearse.js +265 -0
- package/sdk/dist/cli/rehearse.js.map +1 -0
- package/sdk/dist/cli/report.d.ts +69 -0
- package/sdk/dist/cli/report.d.ts.map +1 -0
- package/sdk/dist/cli/report.js +206 -0
- package/sdk/dist/cli/report.js.map +1 -0
- package/sdk/dist/cli/returned.d.ts +16 -0
- package/sdk/dist/cli/returned.d.ts.map +1 -0
- package/sdk/dist/cli/returned.js +111 -0
- package/sdk/dist/cli/returned.js.map +1 -0
- package/sdk/dist/cli/run.d.ts +40 -0
- package/sdk/dist/cli/run.d.ts.map +1 -0
- package/sdk/dist/cli/run.js +3163 -0
- package/sdk/dist/cli/run.js.map +1 -0
- package/sdk/dist/cli/signer.d.ts +72 -0
- package/sdk/dist/cli/signer.d.ts.map +1 -0
- package/sdk/dist/cli/signer.js +243 -0
- package/sdk/dist/cli/signer.js.map +1 -0
- package/sdk/dist/cli/simulate.d.ts +11 -0
- package/sdk/dist/cli/simulate.d.ts.map +1 -0
- package/sdk/dist/cli/simulate.js +246 -0
- package/sdk/dist/cli/simulate.js.map +1 -0
- package/sdk/dist/cli/skills.d.ts +77 -0
- package/sdk/dist/cli/skills.d.ts.map +1 -0
- package/sdk/dist/cli/skills.js +527 -0
- package/sdk/dist/cli/skills.js.map +1 -0
- package/sdk/dist/cli/solana.d.ts +184 -0
- package/sdk/dist/cli/solana.d.ts.map +1 -0
- package/sdk/dist/cli/solana.js +1370 -0
- package/sdk/dist/cli/solana.js.map +1 -0
- package/sdk/dist/cli/store.d.ts +60 -0
- package/sdk/dist/cli/store.d.ts.map +1 -0
- package/sdk/dist/cli/store.js +196 -0
- package/sdk/dist/cli/store.js.map +1 -0
- package/sdk/dist/cli/support.d.ts +144 -0
- package/sdk/dist/cli/support.d.ts.map +1 -0
- package/sdk/dist/cli/support.js +217 -0
- package/sdk/dist/cli/support.js.map +1 -0
- package/sdk/dist/cli/svm-effects.d.ts +50 -0
- package/sdk/dist/cli/svm-effects.d.ts.map +1 -0
- package/sdk/dist/cli/svm-effects.js +196 -0
- package/sdk/dist/cli/svm-effects.js.map +1 -0
- package/sdk/dist/cli/terminal.d.ts +42 -0
- package/sdk/dist/cli/terminal.d.ts.map +1 -0
- package/sdk/dist/cli/terminal.js +136 -0
- package/sdk/dist/cli/terminal.js.map +1 -0
- package/sdk/dist/cli/verify.d.ts +32 -0
- package/sdk/dist/cli/verify.d.ts.map +1 -0
- package/sdk/dist/cli/verify.js +185 -0
- package/sdk/dist/cli/verify.js.map +1 -0
- package/sdk/dist/cli/wallet-commands.d.ts +59 -0
- package/sdk/dist/cli/wallet-commands.d.ts.map +1 -0
- package/sdk/dist/cli/wallet-commands.js +222 -0
- package/sdk/dist/cli/wallet-commands.js.map +1 -0
- package/sdk/dist/cli/wallet-send.d.ts +38 -0
- package/sdk/dist/cli/wallet-send.d.ts.map +1 -0
- package/sdk/dist/cli/wallet-send.js +303 -0
- package/sdk/dist/cli/wallet-send.js.map +1 -0
- package/sdk/dist/cli/wallets.d.ts +79 -0
- package/sdk/dist/cli/wallets.d.ts.map +1 -0
- package/sdk/dist/cli/wallets.js +297 -0
- package/sdk/dist/cli/wallets.js.map +1 -0
- package/sdk/dist/deployments/index.d.ts +4 -62
- package/sdk/dist/deployments/index.d.ts.map +1 -1
- package/sdk/dist/deployments/index.js +4 -84
- package/sdk/dist/deployments/index.js.map +1 -1
- package/sdk/dist/deployments/pot.d.ts +17 -7
- package/sdk/dist/deployments/pot.d.ts.map +1 -1
- package/sdk/dist/deployments/pot.js +25 -10
- package/sdk/dist/deployments/pot.js.map +1 -1
- package/sdk/dist/deployments/releases.d.ts +36 -0
- package/sdk/dist/deployments/releases.d.ts.map +1 -0
- package/sdk/dist/deployments/releases.js +61 -0
- package/sdk/dist/deployments/releases.js.map +1 -0
- package/sdk/dist/deployments/releases.json +76 -0
- package/sdk/dist/deployments/v12-addresses.d.ts +13 -0
- package/sdk/dist/deployments/v12-addresses.d.ts.map +1 -1
- package/sdk/dist/deployments/v12-addresses.js +16 -3
- package/sdk/dist/deployments/v12-addresses.js.map +1 -1
- package/sdk/dist/deposit/index.d.ts +6 -6
- package/sdk/dist/deposit/index.d.ts.map +1 -1
- package/sdk/dist/deposit/index.js +1 -1
- package/sdk/dist/deposit/index.js.map +1 -1
- package/sdk/dist/deposit/params.d.ts +4 -4
- package/sdk/dist/deposit/params.d.ts.map +1 -1
- package/sdk/dist/deposit/params.js +7 -4
- package/sdk/dist/deposit/params.js.map +1 -1
- package/sdk/dist/deposit/source.d.ts +3 -30
- package/sdk/dist/deposit/source.d.ts.map +1 -1
- package/sdk/dist/deposit/source.js +7 -83
- package/sdk/dist/deposit/source.js.map +1 -1
- package/sdk/dist/deposit/templates.d.ts +1 -2
- package/sdk/dist/deposit/templates.d.ts.map +1 -1
- package/sdk/dist/deposit/templates.js +10 -2
- package/sdk/dist/deposit/templates.js.map +1 -1
- package/sdk/dist/deposit/types.d.ts +14 -12
- package/sdk/dist/deposit/types.d.ts.map +1 -1
- package/sdk/dist/deposit/types.js +6 -0
- package/sdk/dist/deposit/types.js.map +1 -1
- package/sdk/dist/descriptors/accessors.d.ts +38 -35
- package/sdk/dist/descriptors/accessors.d.ts.map +1 -1
- package/sdk/dist/descriptors/accessors.js +16 -0
- package/sdk/dist/descriptors/accessors.js.map +1 -1
- package/sdk/dist/descriptors/call.d.ts +66 -14
- package/sdk/dist/descriptors/call.d.ts.map +1 -1
- package/sdk/dist/descriptors/call.js +94 -13
- package/sdk/dist/descriptors/call.js.map +1 -1
- package/sdk/dist/descriptors/contracts.generated.d.ts +3393 -0
- package/sdk/dist/descriptors/contracts.generated.d.ts.map +1 -0
- package/sdk/dist/descriptors/contracts.generated.js +728 -0
- package/sdk/dist/descriptors/contracts.generated.js.map +1 -0
- package/sdk/dist/descriptors/derive.d.ts +20 -11
- package/sdk/dist/descriptors/derive.d.ts.map +1 -1
- package/sdk/dist/descriptors/derive.js +68 -30
- package/sdk/dist/descriptors/derive.js.map +1 -1
- package/sdk/dist/descriptors/index.d.ts +6 -7
- package/sdk/dist/descriptors/index.d.ts.map +1 -1
- package/sdk/dist/descriptors/index.js +2 -2
- package/sdk/dist/descriptors/index.js.map +1 -1
- package/sdk/dist/descriptors/links.d.ts +23 -214
- package/sdk/dist/descriptors/links.d.ts.map +1 -1
- package/sdk/dist/descriptors/links.js +1 -232
- package/sdk/dist/descriptors/links.js.map +1 -1
- package/sdk/dist/descriptors/query.d.ts +1 -1
- package/sdk/dist/descriptors/query.d.ts.map +1 -1
- package/sdk/dist/descriptors/query.js +1 -1
- package/sdk/dist/descriptors/query.js.map +1 -1
- package/sdk/dist/descriptors/registry.d.ts +2 -5
- package/sdk/dist/descriptors/registry.d.ts.map +1 -1
- package/sdk/dist/descriptors/registry.js +11 -66
- package/sdk/dist/descriptors/registry.js.map +1 -1
- package/sdk/dist/embedded/resolve.d.ts +4 -4
- package/sdk/dist/embedded/resolve.d.ts.map +1 -1
- package/sdk/dist/embedded/resolve.js +12 -8
- package/sdk/dist/embedded/resolve.js.map +1 -1
- package/sdk/dist/embedded/skills.generated.d.ts +1 -1
- package/sdk/dist/embedded/skills.generated.d.ts.map +1 -1
- package/sdk/dist/embedded/skills.generated.js +137 -136
- package/sdk/dist/embedded/skills.generated.js.map +1 -1
- package/sdk/dist/embedded/sources.generated.d.ts.map +1 -1
- package/sdk/dist/embedded/sources.generated.js +40 -6
- package/sdk/dist/embedded/sources.generated.js.map +1 -1
- package/sdk/dist/evm/engine.d.ts +813 -10
- package/sdk/dist/evm/engine.d.ts.map +1 -1
- package/sdk/dist/evm/engine.js +127 -8
- package/sdk/dist/evm/engine.js.map +1 -1
- package/sdk/dist/index.d.ts +3 -2
- package/sdk/dist/index.d.ts.map +1 -1
- package/sdk/dist/index.js +6 -2
- package/sdk/dist/index.js.map +1 -1
- package/sdk/dist/price.d.ts +40 -0
- package/sdk/dist/price.d.ts.map +1 -0
- package/sdk/dist/price.js +101 -0
- package/sdk/dist/price.js.map +1 -0
- package/sdk/dist/protocols/aerodrome/abis.d.ts +76 -0
- package/sdk/dist/protocols/aerodrome/abis.d.ts.map +1 -1
- package/sdk/dist/protocols/aerodrome/abis.js +61 -0
- package/sdk/dist/protocols/aerodrome/abis.js.map +1 -1
- package/sdk/dist/protocols/aerodrome-slipstream/abis.d.ts +70 -0
- package/sdk/dist/protocols/aerodrome-slipstream/abis.d.ts.map +1 -1
- package/sdk/dist/protocols/aerodrome-slipstream/abis.js +54 -0
- package/sdk/dist/protocols/aerodrome-slipstream/abis.js.map +1 -1
- package/sdk/dist/protocols/camelot/abis.d.ts +178 -0
- package/sdk/dist/protocols/camelot/abis.d.ts.map +1 -1
- package/sdk/dist/protocols/camelot/abis.js +139 -0
- package/sdk/dist/protocols/camelot/abis.js.map +1 -1
- package/sdk/dist/protocols/eco-routes/abis.d.ts +792 -50
- package/sdk/dist/protocols/eco-routes/abis.d.ts.map +1 -1
- package/sdk/dist/protocols/eco-routes/abis.js +1058 -49
- package/sdk/dist/protocols/eco-routes/abis.js.map +1 -1
- package/sdk/dist/protocols/eco-routes/addresses.generated.d.ts +44 -61
- package/sdk/dist/protocols/eco-routes/addresses.generated.d.ts.map +1 -1
- package/sdk/dist/protocols/eco-routes/addresses.generated.js +45 -62
- package/sdk/dist/protocols/eco-routes/addresses.generated.js.map +1 -1
- package/sdk/dist/protocols/eco-routes/lookup.d.ts +10 -0
- package/sdk/dist/protocols/eco-routes/lookup.d.ts.map +1 -1
- package/sdk/dist/protocols/eco-routes/lookup.js +16 -0
- package/sdk/dist/protocols/eco-routes/lookup.js.map +1 -1
- package/sdk/dist/protocols/maverick/abis.d.ts +77 -0
- package/sdk/dist/protocols/maverick/abis.d.ts.map +1 -1
- package/sdk/dist/protocols/maverick/abis.js +58 -0
- package/sdk/dist/protocols/maverick/abis.js.map +1 -1
- package/sdk/dist/protocols/maverick/addresses.d.ts.map +1 -1
- package/sdk/dist/protocols/maverick/addresses.js +4 -0
- package/sdk/dist/protocols/maverick/addresses.js.map +1 -1
- package/sdk/dist/protocols/pancakeswap-v2/abis.d.ts +52 -0
- package/sdk/dist/protocols/pancakeswap-v2/abis.d.ts.map +1 -1
- package/sdk/dist/protocols/pancakeswap-v2/abis.js +43 -0
- package/sdk/dist/protocols/pancakeswap-v2/abis.js.map +1 -1
- package/sdk/dist/protocols/pancakeswap-v3/abis.d.ts +73 -0
- package/sdk/dist/protocols/pancakeswap-v3/abis.d.ts.map +1 -1
- package/sdk/dist/protocols/pancakeswap-v3/abis.js +56 -0
- package/sdk/dist/protocols/pancakeswap-v3/abis.js.map +1 -1
- package/sdk/dist/protocols/permit2/abis.d.ts +113 -0
- package/sdk/dist/protocols/permit2/abis.d.ts.map +1 -1
- package/sdk/dist/protocols/permit2/abis.js +63 -0
- package/sdk/dist/protocols/permit2/abis.js.map +1 -1
- package/sdk/dist/protocols/quickswap/abis.d.ts +148 -0
- package/sdk/dist/protocols/quickswap/abis.d.ts.map +1 -1
- package/sdk/dist/protocols/quickswap/abis.js +119 -0
- package/sdk/dist/protocols/quickswap/abis.js.map +1 -1
- package/sdk/dist/protocols/sushiswap-v2/abis.d.ts +52 -0
- package/sdk/dist/protocols/sushiswap-v2/abis.d.ts.map +1 -1
- package/sdk/dist/protocols/sushiswap-v2/abis.js +42 -0
- package/sdk/dist/protocols/sushiswap-v2/abis.js.map +1 -1
- package/sdk/dist/protocols/synthra-v3/abis.d.ts +73 -0
- package/sdk/dist/protocols/synthra-v3/abis.d.ts.map +1 -1
- package/sdk/dist/protocols/synthra-v3/abis.js +55 -0
- package/sdk/dist/protocols/synthra-v3/abis.js.map +1 -1
- package/sdk/dist/protocols/trader-joe/abis.d.ts +133 -0
- package/sdk/dist/protocols/trader-joe/abis.d.ts.map +1 -1
- package/sdk/dist/protocols/trader-joe/abis.js +101 -0
- package/sdk/dist/protocols/trader-joe/abis.js.map +1 -1
- package/sdk/dist/protocols/trader-joe/addresses.d.ts.map +1 -1
- package/sdk/dist/protocols/trader-joe/addresses.js +5 -0
- package/sdk/dist/protocols/trader-joe/addresses.js.map +1 -1
- package/sdk/dist/protocols/uniswap-v2/abis.d.ts +52 -0
- package/sdk/dist/protocols/uniswap-v2/abis.d.ts.map +1 -1
- package/sdk/dist/protocols/uniswap-v2/abis.js +44 -0
- package/sdk/dist/protocols/uniswap-v2/abis.js.map +1 -1
- package/sdk/dist/protocols/uniswap-v3/abis.d.ts +73 -0
- package/sdk/dist/protocols/uniswap-v3/abis.d.ts.map +1 -1
- package/sdk/dist/protocols/uniswap-v3/abis.js +55 -0
- package/sdk/dist/protocols/uniswap-v3/abis.js.map +1 -1
- package/sdk/dist/protocols/uniswap-v4/abis.d.ts +247 -0
- package/sdk/dist/protocols/uniswap-v4/abis.d.ts.map +1 -1
- package/sdk/dist/protocols/uniswap-v4/abis.js +167 -0
- package/sdk/dist/protocols/uniswap-v4/abis.js.map +1 -1
- package/sdk/dist/protocols/uniswap-v4/addresses.d.ts.map +1 -1
- package/sdk/dist/protocols/uniswap-v4/addresses.js +50 -0
- package/sdk/dist/protocols/uniswap-v4/addresses.js.map +1 -1
- package/sdk/dist/protocols/unitflow-v3/abis.d.ts +73 -0
- package/sdk/dist/protocols/unitflow-v3/abis.d.ts.map +1 -1
- package/sdk/dist/protocols/unitflow-v3/abis.js +56 -0
- package/sdk/dist/protocols/unitflow-v3/abis.js.map +1 -1
- package/sdk/dist/protocols/velodrome/abis.d.ts +76 -0
- package/sdk/dist/protocols/velodrome/abis.d.ts.map +1 -1
- package/sdk/dist/protocols/velodrome/abis.js +61 -0
- package/sdk/dist/protocols/velodrome/abis.js.map +1 -1
- package/sdk/dist/recipes/cctp-split.sauce.ts +2 -2
- package/sdk/dist/recipes/plain-transfer.sauce.ts +2 -2
- package/sdk/dist/routes/accessor-index.d.ts +2 -2
- package/sdk/dist/routes/accessor-index.d.ts.map +1 -1
- package/sdk/dist/routes/accessor-index.js +4 -3
- package/sdk/dist/routes/accessor-index.js.map +1 -1
- package/sdk/dist/routes/ambient.d.ts +5 -0
- package/sdk/dist/routes/ambient.d.ts.map +1 -1
- package/sdk/dist/routes/ambient.js +20 -0
- package/sdk/dist/routes/ambient.js.map +1 -1
- package/sdk/dist/routes/ast-walk.d.ts +17 -3
- package/sdk/dist/routes/ast-walk.d.ts.map +1 -1
- package/sdk/dist/routes/ast-walk.js +24 -2
- package/sdk/dist/routes/ast-walk.js.map +1 -1
- package/sdk/dist/routes/available.d.ts +43 -0
- package/sdk/dist/routes/available.d.ts.map +1 -0
- package/sdk/dist/routes/available.js +230 -0
- package/sdk/dist/routes/available.js.map +1 -0
- package/sdk/dist/routes/builtins.generated.d.ts +180 -0
- package/sdk/dist/routes/builtins.generated.d.ts.map +1 -0
- package/sdk/dist/routes/builtins.generated.js +2 -0
- package/sdk/dist/routes/builtins.generated.js.map +1 -0
- package/sdk/dist/routes/chain-exports.generated.d.ts +13 -8
- package/sdk/dist/routes/chain-exports.generated.d.ts.map +1 -1
- package/sdk/dist/routes/chain-exports.generated.js.map +1 -1
- package/sdk/dist/routes/closure.d.ts.map +1 -1
- package/sdk/dist/routes/closure.js +13 -26
- package/sdk/dist/routes/closure.js.map +1 -1
- package/sdk/dist/routes/composed.d.ts.map +1 -1
- package/sdk/dist/routes/composed.js +20 -8
- package/sdk/dist/routes/composed.js.map +1 -1
- package/sdk/dist/routes/encode.d.ts +17 -0
- package/sdk/dist/routes/encode.d.ts.map +1 -1
- package/sdk/dist/routes/encode.js +14 -11
- package/sdk/dist/routes/encode.js.map +1 -1
- package/sdk/dist/routes/entry.d.ts +76 -0
- package/sdk/dist/routes/entry.d.ts.map +1 -0
- package/sdk/dist/routes/entry.js +478 -0
- package/sdk/dist/routes/entry.js.map +1 -0
- package/sdk/dist/routes/index.d.ts +19 -12
- package/sdk/dist/routes/index.d.ts.map +1 -1
- package/sdk/dist/routes/index.js +11 -8
- package/sdk/dist/routes/index.js.map +1 -1
- package/sdk/dist/routes/intent-body.d.ts +97 -0
- package/sdk/dist/routes/intent-body.d.ts.map +1 -0
- package/sdk/dist/routes/intent-body.js +441 -0
- package/sdk/dist/routes/intent-body.js.map +1 -0
- package/sdk/dist/routes/intent-dsl.d.ts +21 -6
- package/sdk/dist/routes/intent-dsl.d.ts.map +1 -1
- package/sdk/dist/routes/intent-dsl.js +34 -17
- package/sdk/dist/routes/intent-dsl.js.map +1 -1
- package/sdk/dist/routes/intent-sugar.d.ts +77 -4
- package/sdk/dist/routes/intent-sugar.d.ts.map +1 -1
- package/sdk/dist/routes/intent-sugar.js +318 -129
- package/sdk/dist/routes/intent-sugar.js.map +1 -1
- package/sdk/dist/routes/intent.d.ts +13 -1
- package/sdk/dist/routes/intent.d.ts.map +1 -1
- package/sdk/dist/routes/intent.js +37 -1
- package/sdk/dist/routes/intent.js.map +1 -1
- package/sdk/dist/routes/nest.d.ts +3 -2
- package/sdk/dist/routes/nest.d.ts.map +1 -1
- package/sdk/dist/routes/nest.js +5 -3
- package/sdk/dist/routes/nest.js.map +1 -1
- package/sdk/dist/routes/parse.d.ts +6 -0
- package/sdk/dist/routes/parse.d.ts.map +1 -0
- package/sdk/dist/routes/parse.js +39 -0
- package/sdk/dist/routes/parse.js.map +1 -0
- package/sdk/dist/routes/portal.d.ts +258 -4
- package/sdk/dist/routes/portal.d.ts.map +1 -1
- package/sdk/dist/routes/portal.js +588 -9
- package/sdk/dist/routes/portal.js.map +1 -1
- package/sdk/dist/routes/protocol-rewrite.d.ts +71 -1
- package/sdk/dist/routes/protocol-rewrite.d.ts.map +1 -1
- package/sdk/dist/routes/protocol-rewrite.js +178 -54
- package/sdk/dist/routes/protocol-rewrite.js.map +1 -1
- package/sdk/dist/routes/rs-compile.d.ts +25 -22
- package/sdk/dist/routes/rs-compile.d.ts.map +1 -1
- package/sdk/dist/routes/rs-compile.js +55 -49
- package/sdk/dist/routes/rs-compile.js.map +1 -1
- package/sdk/dist/routes/sauce-calls.d.ts +26 -12
- package/sdk/dist/routes/sauce-calls.d.ts.map +1 -1
- package/sdk/dist/routes/sauce-calls.js +16 -23
- package/sdk/dist/routes/sauce-calls.js.map +1 -1
- package/sdk/dist/routes/sauce-route.d.ts +74 -7
- package/sdk/dist/routes/sauce-route.d.ts.map +1 -1
- package/sdk/dist/routes/sauce-route.js +225 -75
- package/sdk/dist/routes/sauce-route.js.map +1 -1
- package/sdk/dist/routes/source-globals.d.ts +107 -0
- package/sdk/dist/routes/source-globals.d.ts.map +1 -0
- package/sdk/dist/routes/source-globals.generated.d.ts +5601 -933
- package/sdk/dist/routes/source-globals.generated.d.ts.map +1 -1
- package/sdk/dist/routes/source-globals.generated.js +3 -4
- package/sdk/dist/routes/source-globals.generated.js.map +1 -1
- package/sdk/dist/routes/source-globals.js +175 -0
- package/sdk/dist/routes/source-globals.js.map +1 -0
- package/sdk/dist/routes/stock-tokens.d.ts +89 -0
- package/sdk/dist/routes/stock-tokens.d.ts.map +1 -0
- package/sdk/dist/routes/stock-tokens.generated.d.ts +7 -0
- package/sdk/dist/routes/stock-tokens.generated.d.ts.map +1 -0
- package/sdk/dist/routes/stock-tokens.generated.js +3664 -0
- package/sdk/dist/routes/stock-tokens.generated.js.map +1 -0
- package/sdk/dist/routes/stock-tokens.js +89 -0
- package/sdk/dist/routes/stock-tokens.js.map +1 -0
- package/sdk/dist/routes/token-registry.d.ts +68 -8
- package/sdk/dist/routes/token-registry.d.ts.map +1 -1
- package/sdk/dist/routes/token-registry.js +218 -32
- package/sdk/dist/routes/token-registry.js.map +1 -1
- package/sdk/dist/routes/token-rewrite.d.ts +1 -1
- package/sdk/dist/routes/token-rewrite.d.ts.map +1 -1
- package/sdk/dist/routes/token-rewrite.js +5 -9
- package/sdk/dist/routes/token-rewrite.js.map +1 -1
- package/sdk/dist/routes/unknown-global.d.ts +32 -0
- package/sdk/dist/routes/unknown-global.d.ts.map +1 -0
- package/sdk/dist/routes/unknown-global.js +106 -0
- package/sdk/dist/routes/unknown-global.js.map +1 -0
- package/sdk/dist/routes/vault.d.ts +38 -8
- package/sdk/dist/routes/vault.d.ts.map +1 -1
- package/sdk/dist/routes/vault.js +47 -8
- package/sdk/dist/routes/vault.js.map +1 -1
- package/sdk/dist/sauce-script/builtins.d.ts +309 -0
- package/sdk/dist/sauce-script/declarations.d.ts +3 -0
- package/sdk/dist/sauce-script/declarations.d.ts.map +1 -0
- package/sdk/dist/sauce-script/declarations.js +229 -0
- package/sdk/dist/sauce-script/declarations.js.map +1 -0
- package/sdk/dist/sauce-script/index.d.ts +2714 -0
- package/sdk/dist/sauce-script/ts-plugin.cjs +85 -0
- package/sdk/dist/skills/loader.d.ts.map +1 -1
- package/sdk/dist/skills/loader.js +4 -3
- package/sdk/dist/skills/loader.js.map +1 -1
- package/sdk/dist/std/router/balancer-v2-vault.abi.json +78 -0
- package/sdk/dist/std/router/curve-cryptoswap.abi.json +29 -0
- package/sdk/dist/std/router/curve-stableswap.abi.json +29 -0
- package/sdk/dist/std/router/dodo-v2-pool.abi.json +39 -0
- package/sdk/dist/std/router/lb-pair.abi.json +55 -0
- package/sdk/dist/std/router/package.json +7 -0
- package/sdk/dist/std/router/router.evm.js +567 -0
- package/sdk/dist/std/router/sauce-router.abi.json +202 -0
- package/sdk/dist/std/router/uniswap-v2-pair.abi.json +49 -0
- package/sdk/dist/std/router/woo-pp-v2.abi.json +42 -0
- package/sdk/dist/std/token/permit2.abi.json +226 -0
- package/sdk/dist/std/token/token.evm.js +73 -0
- package/sdk/dist/std/token/token.svm.js +194 -41
- package/sdk/dist/svm/client.d.ts +62 -15
- package/sdk/dist/svm/client.d.ts.map +1 -1
- package/sdk/dist/svm/client.js +103 -42
- package/sdk/dist/svm/client.js.map +1 -1
- package/sdk/dist/svm/engine.d.ts +66 -5
- package/sdk/dist/svm/engine.d.ts.map +1 -1
- package/sdk/dist/svm/engine.js +73 -5
- package/sdk/dist/svm/engine.js.map +1 -1
- package/sdk/dist/svm/index.d.ts +2 -0
- package/sdk/dist/svm/index.d.ts.map +1 -1
- package/sdk/dist/svm/index.js +2 -0
- package/sdk/dist/svm/index.js.map +1 -1
- package/sdk/dist/svm/instructions.d.ts +72 -1
- package/sdk/dist/svm/instructions.d.ts.map +1 -1
- package/sdk/dist/svm/instructions.js +81 -2
- package/sdk/dist/svm/instructions.js.map +1 -1
- package/sdk/dist/svm/kitchen.d.ts +20 -1
- package/sdk/dist/svm/kitchen.d.ts.map +1 -1
- package/sdk/dist/svm/kitchen.js +47 -1
- package/sdk/dist/svm/kitchen.js.map +1 -1
- package/sdk/dist/svm/portal.d.ts +250 -0
- package/sdk/dist/svm/portal.d.ts.map +1 -0
- package/sdk/dist/svm/portal.js +462 -0
- package/sdk/dist/svm/portal.js.map +1 -0
- package/sdk/dist/svm/send.d.ts +18 -2
- package/sdk/dist/svm/send.d.ts.map +1 -1
- package/sdk/dist/svm/send.js +28 -3
- package/sdk/dist/svm/send.js.map +1 -1
- package/sdk/dist/svm/token-accounts.d.ts +49 -0
- package/sdk/dist/svm/token-accounts.d.ts.map +1 -0
- package/sdk/dist/svm/token-accounts.js +58 -0
- package/sdk/dist/svm/token-accounts.js.map +1 -0
- package/sdk/dist/svm/token-extensions.d.ts +18 -7
- package/sdk/dist/svm/token-extensions.d.ts.map +1 -1
- package/sdk/dist/svm/token-extensions.js +58 -5
- package/sdk/dist/svm/token-extensions.js.map +1 -1
- package/sdk/dist/token/evm.js +1 -1
- package/sdk/dist/token/index.d.ts +1 -1
- package/sdk/dist/token/index.js +1 -1
- package/sdk/dist/token/params.js +1 -1
- package/sdk/dist/token/source.js +3 -3
- package/sdk/dist/token/source.js.map +1 -1
- package/sdk/dist/token/types.d.ts +2 -2
- package/sdk/dist/token/types.js +2 -2
- package/sdk/src/protocols/aerodrome/AerodromePoolABI.json +105 -0
- package/sdk/src/protocols/aerodrome/abis.ts +62 -0
- package/sdk/src/protocols/aerodrome-slipstream/AerodromeSlipstreamPoolABI.json +96 -0
- package/sdk/src/protocols/aerodrome-slipstream/abis.ts +55 -0
- package/sdk/src/protocols/camelot/CamelotV2FactoryABI.json +25 -0
- package/sdk/src/protocols/camelot/CamelotV2PairABI.json +109 -0
- package/sdk/src/protocols/camelot/CamelotV3FactoryABI.json +25 -0
- package/sdk/src/protocols/camelot/CamelotV3PoolABI.json +92 -0
- package/sdk/src/protocols/camelot/abis.ts +143 -0
- package/sdk/src/protocols/eco-routes/PortalABI.json +1448 -0
- package/sdk/src/protocols/eco-routes/ProverABI.json +162 -0
- package/sdk/src/protocols/eco-routes/abis.ts +1060 -51
- package/sdk/src/protocols/eco-routes/addresses.generated.ts +45 -62
- package/sdk/src/protocols/eco-routes/lookup.ts +18 -0
- package/sdk/src/protocols/maverick/MaverickV2PoolABI.json +107 -0
- package/sdk/src/protocols/maverick/abis.ts +59 -0
- package/sdk/src/protocols/maverick/addresses.ts +4 -0
- package/sdk/src/protocols/pancakeswap-v2/PancakeSwapV2PairABI.json +72 -0
- package/sdk/src/protocols/pancakeswap-v2/abis.ts +44 -0
- package/sdk/src/protocols/pancakeswap-v3/PancakeSwapV3PoolABI.json +100 -0
- package/sdk/src/protocols/pancakeswap-v3/abis.ts +57 -0
- package/sdk/src/protocols/permit2/Permit2ABI.json +154 -0
- package/sdk/src/protocols/permit2/abis.ts +63 -0
- package/sdk/src/protocols/quickswap/QuickSwapV2FactoryABI.json +25 -0
- package/sdk/src/protocols/quickswap/QuickSwapV2PairABI.json +72 -0
- package/sdk/src/protocols/quickswap/QuickSwapV3FactoryABI.json +25 -0
- package/sdk/src/protocols/quickswap/QuickSwapV3PoolABI.json +88 -0
- package/sdk/src/protocols/quickswap/abis.ts +123 -0
- package/sdk/src/protocols/sushiswap-v2/SushiSwapV2PairABI.json +72 -0
- package/sdk/src/protocols/sushiswap-v2/abis.ts +43 -0
- package/sdk/src/protocols/synthra-v3/SynthraV3PoolABI.json +100 -0
- package/sdk/src/protocols/synthra-v3/abis.ts +56 -0
- package/sdk/src/protocols/trader-joe/LBPairABI.json +185 -0
- package/sdk/src/protocols/trader-joe/abis.ts +102 -0
- package/sdk/src/protocols/trader-joe/addresses.ts +5 -0
- package/sdk/src/protocols/uniswap-v2/UniswapV2PairABI.json +72 -0
- package/sdk/src/protocols/uniswap-v2/abis.ts +45 -0
- package/sdk/src/protocols/uniswap-v3/UniswapV3PoolABI.json +100 -0
- package/sdk/src/protocols/uniswap-v3/abis.ts +56 -0
- package/sdk/src/protocols/uniswap-v4/UniswapV4PoolManagerABI.json +38 -0
- package/sdk/src/protocols/uniswap-v4/UniswapV4StateViewABI.json +307 -0
- package/sdk/src/protocols/uniswap-v4/abis.ts +168 -0
- package/sdk/src/protocols/uniswap-v4/addresses.ts +50 -0
- package/sdk/src/protocols/unitflow-v3/UnitFlowV3PoolABI.json +100 -0
- package/sdk/src/protocols/unitflow-v3/abis.ts +57 -0
- package/sdk/src/protocols/velodrome/VelodromePoolABI.json +105 -0
- package/sdk/src/protocols/velodrome/abis.ts +62 -0
- package/skills/sauce-actions/SKILL.md +166 -0
- package/skills/sauce-actions/examples/swap-and-supply.json +24 -0
- package/skills/sauce-actions/examples/swap-by-key.json +15 -0
- package/skills/sauce-actions/references/actions.md +731 -0
- package/skills/sauce-chains/SKILL.md +137 -0
- package/skills/sauce-chains/examples/chains.sauce.ts +25 -0
- package/skills/sauce-chains/references/arbitrum.md +158 -0
- package/skills/sauce-chains/references/arc.md +107 -0
- package/skills/sauce-chains/references/aurora.md +33 -0
- package/skills/sauce-chains/references/avalanche.md +106 -0
- package/skills/sauce-chains/references/base-stocks.md +77 -0
- package/skills/sauce-chains/references/base.md +141 -0
- package/skills/sauce-chains/references/berachain.md +33 -0
- package/skills/sauce-chains/references/blast.md +60 -0
- package/skills/sauce-chains/references/boba.md +33 -0
- package/skills/sauce-chains/references/bsc.md +97 -0
- package/skills/sauce-chains/references/celo.md +57 -0
- package/skills/sauce-chains/references/core.md +33 -0
- package/skills/sauce-chains/references/cronos.md +33 -0
- package/skills/sauce-chains/references/ethereum-stocks.md +1741 -0
- package/skills/sauce-chains/references/ethereum.md +255 -0
- package/skills/sauce-chains/references/evmos.md +33 -0
- package/skills/sauce-chains/references/fantom.md +61 -0
- package/skills/sauce-chains/references/fuse.md +33 -0
- package/skills/sauce-chains/references/gnosis.md +57 -0
- package/skills/sauce-chains/references/index.md +58 -0
- package/skills/sauce-chains/references/ink.md +55 -0
- package/skills/sauce-chains/references/kava.md +33 -0
- package/skills/sauce-chains/references/klaytn.md +33 -0
- package/skills/sauce-chains/references/linea.md +65 -0
- package/skills/sauce-chains/references/manta.md +33 -0
- package/skills/sauce-chains/references/mantle.md +33 -0
- package/skills/sauce-chains/references/metis.md +54 -0
- package/skills/sauce-chains/references/mode.md +55 -0
- package/skills/sauce-chains/references/monad.md +79 -0
- package/skills/sauce-chains/references/moonbeam.md +33 -0
- package/skills/sauce-chains/references/opbnb.md +55 -0
- package/skills/sauce-chains/references/optimism.md +123 -0
- package/skills/sauce-chains/references/plasma.md +35 -0
- package/skills/sauce-chains/references/polygon.md +123 -0
- package/skills/sauce-chains/references/pulsechain.md +33 -0
- package/skills/sauce-chains/references/ronin.md +35 -0
- package/skills/sauce-chains/references/scroll.md +62 -0
- package/skills/sauce-chains/references/sei.md +55 -0
- package/skills/sauce-chains/references/solana-stocks.md +1812 -0
- package/skills/sauce-chains/references/solana.md +56 -0
- package/skills/sauce-chains/references/sonic.md +57 -0
- package/skills/sauce-chains/references/unichain.md +61 -0
- package/skills/sauce-chains/references/zetachain.md +33 -0
- package/skills/sauce-chains/references/zksync.md +59 -0
- package/skills/sauce-chains/references/zora.md +57 -0
- package/skills/sauce-cli/SKILL.md +366 -0
- package/skills/sauce-cli/examples/pay.sauce.ts +23 -0
- package/skills/sauce-cli/examples/split.sauce.ts +30 -0
- package/skills/sauce-distributed-swap/SKILL.md +392 -0
- package/skills/sauce-distributed-swap/examples/distributed-swap.mts +251 -0
- package/skills/sauce-distributed-swap/examples/distributed-swap.sauce.ts +115 -0
- package/skills/sauce-examples/SKILL.md +96 -0
- package/skills/sauce-globals/SKILL.md +213 -0
- package/skills/sauce-globals/examples/globals.mts +111 -0
- package/skills/sauce-globals/examples/globals.sauce.ts +47 -0
- package/skills/sauce-globals/references/chains.md +53 -0
- package/skills/sauce-globals/references/protocols.md +405 -0
- package/skills/sauce-globals/references/stocks.md +3635 -0
- package/skills/sauce-globals/references/tokens.md +53 -0
- package/skills/sauce-intents/SKILL.md +505 -0
- package/skills/sauce-intents/examples/cross-chain.sauce.ts +37 -0
- package/skills/sauce-intents/examples/fund-by-transfer.sauce.ts +54 -0
- package/skills/sauce-intents/examples/intents.mts +343 -0
- package/skills/sauce-intents/examples/swap-on-base.sauce.ts +135 -0
- package/skills/sauce-intents/references/portal.md +77 -0
- package/skills/sauce-overview/SKILL.md +161 -0
- package/skills/sauce-protocols/SKILL.md +118 -0
- package/skills/sauce-protocols/examples/protocols.mts +77 -0
- package/skills/sauce-protocols/examples/protocols.sauce.ts +27 -0
- package/{sdk/src/skills → skills/sauce-protocols/references}/aave-v2.md +35 -17
- package/skills/sauce-protocols/references/aave-v3.md +144 -0
- package/skills/sauce-protocols/references/aave-v4.md +50 -0
- package/skills/sauce-protocols/references/abracadabra.md +72 -0
- package/skills/sauce-protocols/references/across.md +73 -0
- package/skills/sauce-protocols/references/aerodrome-slipstream.md +50 -0
- package/{sdk/src/skills → skills/sauce-protocols/references}/aerodrome.md +43 -24
- package/skills/sauce-protocols/references/aevo.md +49 -0
- package/{sdk/src/skills → skills/sauce-protocols/references}/alchemix.md +10 -25
- package/{sdk/src/skills → skills/sauce-protocols/references}/ambient.md +14 -21
- package/{sdk/src/skills → skills/sauce-protocols/references}/arbitrum-bridge.md +11 -14
- package/{sdk/src/skills → skills/sauce-protocols/references}/arrakis.md +10 -26
- package/skills/sauce-protocols/references/axelar.md +56 -0
- package/{sdk/src/skills → skills/sauce-protocols/references}/balancer-v2.md +13 -29
- package/{sdk/src/skills → skills/sauce-protocols/references}/base-bridge.md +11 -16
- package/{sdk/src/skills → skills/sauce-protocols/references}/baseswap.md +12 -19
- package/{sdk/src/skills → skills/sauce-protocols/references}/beefy.md +10 -30
- package/{sdk/src/skills → skills/sauce-protocols/references}/benqi.md +11 -21
- package/{sdk/src/skills → skills/sauce-protocols/references}/camelot.md +13 -27
- package/{sdk/src/skills → skills/sauce-protocols/references}/cbeth.md +10 -22
- package/skills/sauce-protocols/references/cctp.md +47 -0
- package/{sdk/src/skills → skills/sauce-protocols/references}/celer.md +11 -18
- package/{sdk/src/skills → skills/sauce-protocols/references}/chainlink-ccip.md +11 -21
- package/skills/sauce-protocols/references/chainlink.md +47 -0
- package/{sdk/src/skills → skills/sauce-protocols/references}/circle-gateway.md +12 -38
- package/{sdk/src/skills → skills/sauce-protocols/references}/compound-v2.md +11 -25
- package/{sdk/src/skills → skills/sauce-protocols/references}/compound-v3.md +43 -27
- package/{sdk/src/skills → skills/sauce-protocols/references}/connext.md +11 -15
- package/{sdk/src/skills → skills/sauce-protocols/references}/convex.md +10 -28
- package/{sdk/src/skills → skills/sauce-protocols/references}/cowswap.md +12 -19
- package/{sdk/src/skills → skills/sauce-protocols/references}/crvusd.md +10 -19
- package/skills/sauce-protocols/references/curve.md +98 -0
- package/{sdk/src/skills → skills/sauce-protocols/references}/debridge.md +11 -33
- package/{sdk/src/skills → skills/sauce-protocols/references}/dodo.md +13 -18
- package/skills/sauce-protocols/references/eigenlayer.md +48 -0
- package/{sdk/src/skills → skills/sauce-protocols/references}/ens.md +10 -26
- package/{sdk/src/skills → skills/sauce-protocols/references}/erc20.md +10 -24
- package/{sdk/src/skills → skills/sauce-protocols/references}/erc3156.md +10 -13
- package/{sdk/src/skills → skills/sauce-protocols/references}/erc4626.md +11 -27
- package/{sdk/src/skills → skills/sauce-protocols/references}/ethena.md +10 -27
- package/{sdk/src/skills → skills/sauce-protocols/references}/etherfi.md +10 -32
- package/{sdk/src/skills → skills/sauce-protocols/references}/euler-v2.md +11 -21
- package/{sdk/src/skills → skills/sauce-protocols/references}/fenix.md +12 -18
- package/{sdk/src/skills → skills/sauce-protocols/references}/fluid.md +11 -20
- package/{sdk/src/skills → skills/sauce-protocols/references}/frax-ether.md +10 -26
- package/{sdk/src/skills → skills/sauce-protocols/references}/frax.md +10 -19
- package/{sdk/src/skills → skills/sauce-protocols/references}/gains-network.md +11 -28
- package/skills/sauce-protocols/references/gamma.md +57 -0
- package/{sdk/src/skills → skills/sauce-protocols/references}/gelato.md +12 -20
- package/{sdk/src/skills → skills/sauce-protocols/references}/gho.md +10 -19
- package/{sdk/src/skills → skills/sauce-protocols/references}/gmx-v1.md +12 -34
- package/{sdk/src/skills → skills/sauce-protocols/references}/gmx-v2.md +15 -28
- package/skills/sauce-protocols/references/harvest.md +41 -0
- package/{sdk/src/skills → skills/sauce-protocols/references}/hegic.md +10 -18
- package/{sdk/src/skills → skills/sauce-protocols/references}/hop.md +11 -21
- package/{sdk/src/skills → skills/sauce-protocols/references}/hyperlane.md +11 -21
- package/skills/sauce-protocols/references/index.md +355 -0
- package/{sdk/src/skills → skills/sauce-protocols/references}/instadapp.md +10 -18
- package/skills/sauce-protocols/references/kelp.md +46 -0
- package/{sdk/src/skills → skills/sauce-protocols/references}/kim.md +12 -18
- package/{sdk/src/skills → skills/sauce-protocols/references}/kyberswap-aggregator.md +12 -35
- package/skills/sauce-protocols/references/kyberswap.md +72 -0
- package/{sdk/src/skills → skills/sauce-protocols/references}/layerbank.md +11 -26
- package/{sdk/src/skills → skills/sauce-protocols/references}/layerzero.md +11 -25
- package/{sdk/src/skills → skills/sauce-protocols/references}/level-finance.md +10 -24
- package/{sdk/src/skills → skills/sauce-protocols/references}/lido.md +10 -28
- package/{sdk/src/skills → skills/sauce-protocols/references}/lifi.md +11 -25
- package/{sdk/src/skills → skills/sauce-protocols/references}/linea-bridge.md +11 -14
- package/{sdk/src/skills → skills/sauce-protocols/references}/liquity-v1.md +10 -21
- package/{sdk/src/skills → skills/sauce-protocols/references}/liquity-v2.md +10 -19
- package/{sdk/src/skills → skills/sauce-protocols/references}/lynex.md +12 -18
- package/skills/sauce-protocols/references/maker.md +57 -0
- package/skills/sauce-protocols/references/mantle-meth.md +43 -0
- package/{sdk/src/skills → skills/sauce-protocols/references}/maverick.md +13 -25
- package/{sdk/src/skills → skills/sauce-protocols/references}/moonwell.md +11 -21
- package/{sdk/src/skills → skills/sauce-protocols/references}/morpho-blue.md +44 -21
- package/{sdk/src/skills → skills/sauce-protocols/references}/mux-protocol.md +10 -30
- package/skills/sauce-protocols/references/olympus.md +39 -0
- package/skills/sauce-protocols/references/oneinch.md +81 -0
- package/skills/sauce-protocols/references/openocean.md +69 -0
- package/{sdk/src/skills → skills/sauce-protocols/references}/optimism-bridge.md +11 -16
- package/{sdk/src/skills → skills/sauce-protocols/references}/opyn.md +10 -21
- package/{sdk/src/skills → skills/sauce-protocols/references}/pancakeswap-v2.md +39 -41
- package/skills/sauce-protocols/references/pancakeswap-v3.md +72 -0
- package/skills/sauce-protocols/references/paraswap.md +39 -0
- package/{sdk/src/skills → skills/sauce-protocols/references}/pendle.md +47 -29
- package/skills/sauce-protocols/references/permit2.md +101 -0
- package/skills/sauce-protocols/references/perpetual-protocol.md +53 -0
- package/{sdk/src/skills → skills/sauce-protocols/references}/polygon-bridge.md +11 -17
- package/{sdk/src/skills → skills/sauce-protocols/references}/premia.md +10 -19
- package/{sdk/src/skills → skills/sauce-protocols/references}/puffer.md +10 -21
- package/skills/sauce-protocols/references/pyth.md +45 -0
- package/{sdk/src/skills → skills/sauce-protocols/references}/quickswap.md +13 -27
- package/{sdk/src/skills → skills/sauce-protocols/references}/radiant.md +11 -15
- package/{sdk/src/skills → skills/sauce-protocols/references}/ramses.md +12 -18
- package/skills/sauce-protocols/references/reflexer.md +52 -0
- package/skills/sauce-protocols/references/registry/aave-v2.md +43 -0
- package/skills/sauce-protocols/references/registry/aave-v3.md +62 -0
- package/skills/sauce-protocols/references/registry/aave-v4.md +80 -0
- package/skills/sauce-protocols/references/registry/abracadabra.md +54 -0
- package/skills/sauce-protocols/references/registry/across.md +57 -0
- package/skills/sauce-protocols/references/registry/aerodrome-slipstream.md +72 -0
- package/skills/sauce-protocols/references/registry/aerodrome.md +58 -0
- package/skills/sauce-protocols/references/registry/aevo.md +39 -0
- package/skills/sauce-protocols/references/registry/alchemix.md +46 -0
- package/skills/sauce-protocols/references/registry/ambient.md +40 -0
- package/skills/sauce-protocols/references/registry/arbitrum-bridge.md +40 -0
- package/skills/sauce-protocols/references/registry/arrakis.md +49 -0
- package/skills/sauce-protocols/references/registry/axelar.md +65 -0
- package/skills/sauce-protocols/references/registry/balancer-v2.md +50 -0
- package/skills/sauce-protocols/references/registry/base-bridge.md +42 -0
- package/skills/sauce-protocols/references/registry/baseswap.md +40 -0
- package/skills/sauce-protocols/references/registry/beefy.md +51 -0
- package/skills/sauce-protocols/references/registry/benqi.md +49 -0
- package/skills/sauce-protocols/references/registry/camelot.md +82 -0
- package/skills/sauce-protocols/references/registry/cbeth.md +43 -0
- package/skills/sauce-protocols/references/registry/cctp.md +48 -0
- package/skills/sauce-protocols/references/registry/celer.md +44 -0
- package/skills/sauce-protocols/references/registry/chainlink-ccip.md +45 -0
- package/skills/sauce-protocols/references/registry/chainlink.md +49 -0
- package/skills/sauce-protocols/references/registry/circle-gateway.md +70 -0
- package/skills/sauce-protocols/references/registry/compound-v2.md +53 -0
- package/skills/sauce-protocols/references/registry/compound-v3.md +52 -0
- package/skills/sauce-protocols/references/registry/connext.md +41 -0
- package/skills/sauce-protocols/references/registry/convex.md +51 -0
- package/skills/sauce-protocols/references/registry/cowswap.md +40 -0
- package/skills/sauce-protocols/references/registry/crvusd.md +40 -0
- package/skills/sauce-protocols/references/registry/curve.md +81 -0
- package/skills/sauce-protocols/references/registry/debridge.md +59 -0
- package/skills/sauce-protocols/references/registry/dodo.md +39 -0
- package/skills/sauce-protocols/references/registry/eco-routes.md +65 -0
- package/skills/sauce-protocols/references/registry/eigenlayer.md +58 -0
- package/skills/sauce-protocols/references/registry/ens.md +49 -0
- package/skills/sauce-protocols/references/registry/erc20.md +44 -0
- package/skills/sauce-protocols/references/registry/erc3156.md +38 -0
- package/skills/sauce-protocols/references/registry/erc4626.md +51 -0
- package/skills/sauce-protocols/references/registry/ethena.md +50 -0
- package/skills/sauce-protocols/references/registry/etherfi.md +57 -0
- package/skills/sauce-protocols/references/registry/euler-v2.md +49 -0
- package/skills/sauce-protocols/references/registry/fenix.md +39 -0
- package/skills/sauce-protocols/references/registry/fluid.md +48 -0
- package/skills/sauce-protocols/references/registry/frax-ether.md +49 -0
- package/skills/sauce-protocols/references/registry/frax.md +40 -0
- package/skills/sauce-protocols/references/registry/gains-network.md +43 -0
- package/skills/sauce-protocols/references/registry/gamma.md +56 -0
- package/skills/sauce-protocols/references/registry/gelato.md +45 -0
- package/skills/sauce-protocols/references/registry/gho.md +40 -0
- package/skills/sauce-protocols/references/registry/gmx-v1.md +59 -0
- package/skills/sauce-protocols/references/registry/gmx-v2.md +41 -0
- package/skills/sauce-protocols/references/registry/harvest.md +44 -0
- package/skills/sauce-protocols/references/registry/hegic.md +39 -0
- package/skills/sauce-protocols/references/registry/hop.md +49 -0
- package/skills/sauce-protocols/references/registry/hyperlane.md +48 -0
- package/skills/sauce-protocols/references/registry/instadapp.md +39 -0
- package/skills/sauce-protocols/references/registry/kelp.md +47 -0
- package/skills/sauce-protocols/references/registry/kim.md +39 -0
- package/skills/sauce-protocols/references/registry/kyberswap-aggregator.md +49 -0
- package/skills/sauce-protocols/references/registry/kyberswap.md +63 -0
- package/skills/sauce-protocols/references/registry/layerbank.md +54 -0
- package/skills/sauce-protocols/references/registry/layerzero.md +49 -0
- package/skills/sauce-protocols/references/registry/level-finance.md +41 -0
- package/skills/sauce-protocols/references/registry/lido.md +51 -0
- package/skills/sauce-protocols/references/registry/lifi.md +48 -0
- package/skills/sauce-protocols/references/registry/linea-bridge.md +40 -0
- package/skills/sauce-protocols/references/registry/liquity-v1.md +42 -0
- package/skills/sauce-protocols/references/registry/liquity-v2.md +40 -0
- package/skills/sauce-protocols/references/registry/lynex.md +39 -0
- package/skills/sauce-protocols/references/registry/maker.md +55 -0
- package/skills/sauce-protocols/references/registry/mantle-meth.md +48 -0
- package/skills/sauce-protocols/references/registry/maverick.md +60 -0
- package/skills/sauce-protocols/references/registry/moonwell.md +49 -0
- package/skills/sauce-protocols/references/registry/morpho-blue.md +47 -0
- package/skills/sauce-protocols/references/registry/mux-protocol.md +49 -0
- package/skills/sauce-protocols/references/registry/olympus.md +42 -0
- package/skills/sauce-protocols/references/registry/oneinch.md +45 -0
- package/skills/sauce-protocols/references/registry/openocean.md +44 -0
- package/skills/sauce-protocols/references/registry/optimism-bridge.md +42 -0
- package/skills/sauce-protocols/references/registry/opyn.md +42 -0
- package/skills/sauce-protocols/references/registry/pancakeswap-v2.md +71 -0
- package/skills/sauce-protocols/references/registry/pancakeswap-v3.md +76 -0
- package/skills/sauce-protocols/references/registry/paraswap.md +51 -0
- package/skills/sauce-protocols/references/registry/pendle.md +43 -0
- package/skills/sauce-protocols/references/registry/permit2.md +50 -0
- package/skills/sauce-protocols/references/registry/perpetual-protocol.md +49 -0
- package/skills/sauce-protocols/references/registry/polygon-bridge.md +43 -0
- package/skills/sauce-protocols/references/registry/premia.md +40 -0
- package/skills/sauce-protocols/references/registry/puffer.md +43 -0
- package/skills/sauce-protocols/references/registry/pyth.md +40 -0
- package/skills/sauce-protocols/references/registry/quickswap.md +80 -0
- package/skills/sauce-protocols/references/registry/radiant.md +41 -0
- package/skills/sauce-protocols/references/registry/ramses.md +39 -0
- package/skills/sauce-protocols/references/registry/reflexer.md +56 -0
- package/skills/sauce-protocols/references/registry/renzo.md +47 -0
- package/skills/sauce-protocols/references/registry/rocket-pool.md +49 -0
- package/skills/sauce-protocols/references/registry/sablier.md +40 -0
- package/skills/sauce-protocols/references/registry/safe.md +47 -0
- package/skills/sauce-protocols/references/registry/scroll-bridge.md +48 -0
- package/skills/sauce-protocols/references/registry/seamless.md +42 -0
- package/skills/sauce-protocols/references/registry/seaport.md +44 -0
- package/skills/sauce-protocols/references/registry/silo.md +48 -0
- package/skills/sauce-protocols/references/registry/socket.md +44 -0
- package/skills/sauce-protocols/references/registry/sommelier.md +43 -0
- package/skills/sauce-protocols/references/registry/spark.md +42 -0
- package/skills/sauce-protocols/references/registry/spookyswap.md +40 -0
- package/skills/sauce-protocols/references/registry/squid.md +45 -0
- package/skills/sauce-protocols/references/registry/stader.md +47 -0
- package/skills/sauce-protocols/references/registry/stargate.md +45 -0
- package/skills/sauce-protocols/references/registry/superfluid.md +49 -0
- package/skills/sauce-protocols/references/registry/sushiswap-v2.md +71 -0
- package/skills/sauce-protocols/references/registry/swell.md +49 -0
- package/skills/sauce-protocols/references/registry/synapse.md +46 -0
- package/skills/sauce-protocols/references/registry/syncswap.md +38 -0
- package/skills/sauce-protocols/references/registry/synthetix-v3.md +48 -0
- package/skills/sauce-protocols/references/registry/synthra-v3.md +77 -0
- package/skills/sauce-protocols/references/registry/thales.md +51 -0
- package/skills/sauce-protocols/references/registry/thena.md +39 -0
- package/skills/sauce-protocols/references/registry/thruster.md +38 -0
- package/skills/sauce-protocols/references/registry/tokemak.md +45 -0
- package/skills/sauce-protocols/references/registry/trader-joe.md +66 -0
- package/skills/sauce-protocols/references/registry/uniswap-v2.md +77 -0
- package/skills/sauce-protocols/references/registry/uniswap-v3.md +113 -0
- package/skills/sauce-protocols/references/registry/uniswap-v4.md +117 -0
- package/skills/sauce-protocols/references/registry/unitflow-v3.md +65 -0
- package/skills/sauce-protocols/references/registry/velodrome.md +58 -0
- package/skills/sauce-protocols/references/registry/venus.md +62 -0
- package/skills/sauce-protocols/references/registry/vertex.md +46 -0
- package/skills/sauce-protocols/references/registry/wormhole.md +59 -0
- package/skills/sauce-protocols/references/registry/yearn-v3.md +46 -0
- package/skills/sauce-protocols/references/registry/zerolend.md +41 -0
- package/skills/sauce-protocols/references/registry/zerox.md +44 -0
- package/skills/sauce-protocols/references/registry/zksync-bridge.md +40 -0
- package/{sdk/src/skills → skills/sauce-protocols/references}/renzo.md +10 -24
- package/{sdk/src/skills → skills/sauce-protocols/references}/rocket-pool.md +10 -26
- package/{sdk/src/skills → skills/sauce-protocols/references}/sablier.md +10 -27
- package/skills/sauce-protocols/references/safe.md +42 -0
- package/{sdk/src/skills → skills/sauce-protocols/references}/scroll-bridge.md +11 -20
- package/{sdk/src/skills → skills/sauce-protocols/references}/seamless.md +11 -16
- package/skills/sauce-protocols/references/seaport.md +38 -0
- package/{sdk/src/skills → skills/sauce-protocols/references}/silo.md +11 -20
- package/{sdk/src/skills → skills/sauce-protocols/references}/socket.md +11 -18
- package/skills/sauce-protocols/references/sommelier.md +40 -0
- package/{sdk/src/skills → skills/sauce-protocols/references}/spark.md +11 -16
- package/{sdk/src/skills → skills/sauce-protocols/references}/spookyswap.md +12 -19
- package/{sdk/src/skills → skills/sauce-protocols/references}/squid.md +11 -21
- package/skills/sauce-protocols/references/stader.md +39 -0
- package/{sdk/src/skills → skills/sauce-protocols/references}/stargate.md +11 -22
- package/{sdk/src/skills → skills/sauce-protocols/references}/superfluid.md +10 -28
- package/{sdk/src/skills → skills/sauce-protocols/references}/sushiswap-v2.md +38 -43
- package/skills/sauce-protocols/references/swell.md +49 -0
- package/skills/sauce-protocols/references/synapse.md +54 -0
- package/{sdk/src/skills → skills/sauce-protocols/references}/syncswap.md +12 -17
- package/{sdk/src/skills → skills/sauce-protocols/references}/synthetix-v3.md +10 -29
- package/skills/sauce-protocols/references/synthra-v3.md +63 -0
- package/skills/sauce-protocols/references/thales.md +58 -0
- package/{sdk/src/skills → skills/sauce-protocols/references}/thena.md +12 -18
- package/{sdk/src/skills → skills/sauce-protocols/references}/thruster.md +13 -18
- package/skills/sauce-protocols/references/tokemak.md +40 -0
- package/{sdk/src/skills → skills/sauce-protocols/references}/trader-joe.md +13 -26
- package/{sdk/src/skills → skills/sauce-protocols/references}/uniswap-v2.md +46 -44
- package/skills/sauce-protocols/references/uniswap-v3.md +188 -0
- package/skills/sauce-protocols/references/uniswap-v4.md +155 -0
- package/skills/sauce-protocols/references/unitflow-v3.md +63 -0
- package/{sdk/src/skills → skills/sauce-protocols/references}/velodrome.md +12 -24
- package/{sdk/src/skills → skills/sauce-protocols/references}/venus.md +12 -31
- package/skills/sauce-protocols/references/vertex.md +42 -0
- package/skills/sauce-protocols/references/wormhole.md +57 -0
- package/{sdk/src/skills → skills/sauce-protocols/references}/yearn-v3.md +10 -25
- package/{sdk/src/skills → skills/sauce-protocols/references}/zerolend.md +11 -15
- package/skills/sauce-protocols/references/zerox.md +39 -0
- package/{sdk/src/skills → skills/sauce-protocols/references}/zksync-bridge.md +11 -14
- package/skills/sauce-script/SKILL.md +407 -0
- package/skills/sauce-script/examples/IOracle.json +12 -0
- package/skills/sauce-script/examples/saucescript.mts +167 -0
- package/skills/sauce-script/examples/twap.sauce.ts +29 -0
- package/skills/sauce-script/references/builtins.json +823 -0
- package/skills/sauce-script/references/builtins.md +674 -0
- package/skills/sauce-solana/SKILL.md +324 -0
- package/skills/sauce-solana/examples/solana.mts +166 -0
- package/skills/sauce-solana/examples/solana.sauce.ts +45 -0
- package/skills/sauce-solana/examples/token-2022.sauce.ts +38 -0
- package/skills/sauce-swaps/SKILL.md +200 -0
- package/skills/sauce-swaps/examples/swap-leg.sauce.ts +50 -0
- package/skills/sauce-swaps/examples/swaps.mts +124 -0
- package/skills/sauce-typescript/SKILL.md +178 -0
- package/skills/sauce-typescript/examples/actions.mts +100 -0
- package/skills/sauce-typescript/examples/compiler.mts +69 -0
- package/skills/sauce-typescript/examples/cook.mts +65 -0
- package/skills/sauce-typescript/examples/verify.mts +104 -0
- package/dev-tools/README.md +0 -16
- package/dev-tools/artifacts/IERC20.json +0 -1
- package/dev-tools/artifacts/ISauceRouter.json +0 -1
- package/dev-tools/artifacts/IUniswapV3Pool.json +0 -1
- package/dev-tools/artifacts/Router.json +0 -1
- package/dev-tools/hardhat.config.cjs +0 -18
- package/dev-tools/sauce/js/add.js +0 -4
- package/dev-tools/sauce/js/call.js +0 -8
- package/dev-tools/sauce/js/erc20.js +0 -18
- package/dev-tools/sauce/js/example.js +0 -6
- package/dev-tools/sauce/js/fibonacci.js +0 -13
- package/dev-tools/sauce/ts/add.ts +0 -4
- package/dev-tools/sauce/ts/call.ts +0 -8
- package/dev-tools/sauce/ts/erc20.ts +0 -18
- package/dev-tools/sauce/ts/example.ts +0 -6
- package/dev-tools/sauce/ts/fibonacci.ts +0 -13
- package/dev-tools/sauce/ts/saucescript.d.ts +0 -1
- package/dev-tools/sauce/ts/tsconfig.json +0 -12
- package/dev-tools/scripts/deploy.ts +0 -107
- package/dev-tools/scripts/init.js +0 -132
- package/dev-tools/scripts/run.ts +0 -67
- package/dev-tools/scripts/start-fork.sh +0 -92
- package/dev-tools/scripts/start-local.sh +0 -120
- package/dev-tools/scripts/stop-local.sh +0 -40
- package/dev-tools/scripts/sync-artifacts.js +0 -46
- package/dev-tools/scripts/sync-price.ts +0 -58
- package/dev-tools/src/contracts.ts +0 -59
- package/dev-tools/src/runner.ts +0 -355
- package/dev-tools/src/svm-local.ts +0 -305
- package/dev-tools/src/sync-price.ts +0 -217
- package/sdk/dist/deployments/v12.generated.d.ts +0 -95
- package/sdk/dist/deployments/v12.generated.d.ts.map +0 -1
- package/sdk/dist/deployments/v12.generated.js +0 -50
- package/sdk/dist/deployments/v12.generated.js.map +0 -1
- package/sdk/dist/swap/index.d.ts +0 -29
- package/sdk/dist/swap/index.d.ts.map +0 -1
- package/sdk/dist/swap/index.js +0 -27
- package/sdk/dist/swap/index.js.map +0 -1
- package/sdk/dist/swap/params.d.ts +0 -29
- package/sdk/dist/swap/params.d.ts.map +0 -1
- package/sdk/dist/swap/params.js +0 -123
- package/sdk/dist/swap/params.js.map +0 -1
- package/sdk/dist/swap/source.d.ts +0 -30
- package/sdk/dist/swap/source.d.ts.map +0 -1
- package/sdk/dist/swap/source.js +0 -101
- package/sdk/dist/swap/source.js.map +0 -1
- package/sdk/dist/swap/types.d.ts +0 -160
- package/sdk/dist/swap/types.d.ts.map +0 -1
- package/sdk/dist/swap/types.js +0 -106
- package/sdk/dist/swap/types.js.map +0 -1
- package/sdk/src/skills/aave-v3.md +0 -134
- package/sdk/src/skills/aave-v4.md +0 -91
- package/sdk/src/skills/abracadabra.md +0 -93
- package/sdk/src/skills/across.md +0 -90
- package/sdk/src/skills/aerodrome-slipstream.md +0 -57
- package/sdk/src/skills/aevo.md +0 -58
- package/sdk/src/skills/axelar.md +0 -80
- package/sdk/src/skills/chainlink.md +0 -62
- package/sdk/src/skills/curve.md +0 -141
- package/sdk/src/skills/eigenlayer.md +0 -71
- package/sdk/src/skills/gamma.md +0 -79
- package/sdk/src/skills/harvest.md +0 -49
- package/sdk/src/skills/index.md +0 -299
- package/sdk/src/skills/kelp.md +0 -60
- package/sdk/src/skills/kyberswap.md +0 -100
- package/sdk/src/skills/loader.ts +0 -46
- package/sdk/src/skills/maker.md +0 -79
- package/sdk/src/skills/mantle-meth.md +0 -60
- package/sdk/src/skills/olympus.md +0 -46
- package/sdk/src/skills/oneinch.md +0 -64
- package/sdk/src/skills/openocean.md +0 -86
- package/sdk/src/skills/pancakeswap-v3.md +0 -104
- package/sdk/src/skills/paraswap.md +0 -67
- package/sdk/src/skills/permit2.md +0 -73
- package/sdk/src/skills/perpetual-protocol.md +0 -73
- package/sdk/src/skills/pyth.md +0 -58
- package/sdk/src/skills/reflexer.md +0 -73
- package/sdk/src/skills/safe.md +0 -56
- package/sdk/src/skills/seaport.md +0 -65
- package/sdk/src/skills/sommelier.md +0 -47
- package/sdk/src/skills/stader.md +0 -53
- package/sdk/src/skills/swell.md +0 -65
- package/sdk/src/skills/synapse.md +0 -63
- package/sdk/src/skills/synthra-v3.md +0 -57
- package/sdk/src/skills/thales.md +0 -74
- package/sdk/src/skills/tokemak.md +0 -48
- package/sdk/src/skills/uniswap-v3.md +0 -202
- package/sdk/src/skills/uniswap-v4.md +0 -125
- package/sdk/src/skills/unitflow-v3.md +0 -62
- package/sdk/src/skills/vertex.md +0 -55
- package/sdk/src/skills/wormhole.md +0 -76
- package/sdk/src/skills/zerox.md +0 -51
|
@@ -1,65 +1,137 @@
|
|
|
1
|
-
// @sauce/token — SVM arm (SPL Token).
|
|
1
|
+
// @sauce/token — SVM arm (SPL Token and Token-2022).
|
|
2
2
|
// Selected by the compiler for `--target svm`. Reads are a byte-range `svm.sload` into the SPL
|
|
3
|
-
// account layout; writes are a `svm.call` CPI into
|
|
4
|
-
//
|
|
5
|
-
//
|
|
3
|
+
// account layout; writes are a `svm.call` CPI into a token program, which each write requires by
|
|
4
|
+
// identity. Accounts are passed as `Account` slots; the token's own identity (`token`) is a plain
|
|
5
|
+
// address value (the mint pubkey).
|
|
6
6
|
//
|
|
7
|
-
//
|
|
8
|
-
//
|
|
9
|
-
//
|
|
10
|
-
//
|
|
7
|
+
// TWO TOKEN PROGRAMS. A mint, and every token account of it, is owned by the legacy SPL Token program
|
|
8
|
+
// (`Tokenkeg…`) or by Token-2022 (`TokenzQd…`). Token-2022 keeps the legacy layouts as its base and
|
|
9
|
+
// appends extensions after them, so one set of offsets reads both:
|
|
10
|
+
// - every read (`balanceOf`, `ownerOf`, `allowance`, `totalSupply`, `decimals`) takes an account
|
|
11
|
+
// owned by either program;
|
|
12
|
+
// - the checked writes (`transferChecked`, `approveChecked`) CPI into whichever of the two owns the
|
|
13
|
+
// accounts — the `TransferChecked`/`ApproveChecked` instructions, which carry the mint and its
|
|
14
|
+
// decimals and which both programs implement. Token-2022 refuses the plain `Transfer` for a mint
|
|
15
|
+
// whose extensions need the mint to move it (a transfer fee, a transfer hook, a pause), so a
|
|
16
|
+
// program that moves Token-2022 tokens uses these;
|
|
17
|
+
// - the plain writes (`transfer`, `transferFrom`, `approve`) are unchanged: they CPI the legacy
|
|
18
|
+
// `Transfer`/`Approve` into legacy SPL Token only, and refuse a Token-2022 callee or account.
|
|
11
19
|
//
|
|
12
|
-
// Every function requires `<account>.owner` to be
|
|
13
|
-
//
|
|
20
|
+
// Every function requires `<account>.owner` to be a token program before it reads an SPL layout out
|
|
21
|
+
// of an account. The layout checks below say what the bytes claim to be; the owner says who was
|
|
14
22
|
// allowed to write them, and only the owning program may. Without it a hand-assembled account with the
|
|
15
23
|
// right bytes at the right offsets reads exactly like a genuine one.
|
|
16
24
|
//
|
|
17
|
-
//
|
|
18
|
-
//
|
|
19
|
-
//
|
|
25
|
+
// Each check reverts with a reason, so a refused account is named rather than failing in silence:
|
|
26
|
+
// "not a token account" (an owner that is no token program, or a Token-2022 account that is not a
|
|
27
|
+
// token account), "wrong mint", "not a mint", "uninitialized mint", "not the token program" (the CPI
|
|
28
|
+
// callee), "amount over u64" and "transfer hook" (a Token-2022 mint whose transfer hook names a
|
|
29
|
+
// program, below). They are short on purpose: a reason is compiled into the program byte for byte,
|
|
30
|
+
// and on Solana the program rides in a transaction of at most 1,232 bytes (`transfer`'s four add 65).
|
|
31
|
+
//
|
|
32
|
+
// SPL token-account layout (`spl_token::state::Account`, `LEN` = 165): mint@0 (pubkey), owner@32
|
|
33
|
+
// (pubkey: whose balance it is, a wallet or a PDA such as a Pot), amount@64 (u64 LE), delegate
|
|
34
|
+
// COption tag@72 (u32 LE: 0 = None, 1 = Some), delegate@76 (pubkey), state@108 (u8), is_native
|
|
35
|
+
// COption@109, delegated_amount@121 (u64 LE), close_authority COption@129.
|
|
20
36
|
// SPL mint layout (`spl_token::state::Mint`, `LEN` = 82): supply@36 (u64 LE), decimals@44 (u8), initialized@45 (bool).
|
|
21
|
-
// Instruction tags: Transfer=3, Approve=4.
|
|
22
|
-
//
|
|
23
|
-
//
|
|
24
|
-
//
|
|
25
|
-
//
|
|
26
|
-
//
|
|
37
|
+
// Instruction tags: Transfer=3, Approve=4, TransferChecked=12, ApproveChecked=13.
|
|
38
|
+
//
|
|
39
|
+
// Token-2022 (`spl_token_2022::extension`): an account with no extensions is exactly the legacy size,
|
|
40
|
+
// 82 bytes for a mint and 165 for a token account. An account WITH extensions is longer than 165: a
|
|
41
|
+
// mint's 82 bytes are padded to 165, and either way byte 165 is the account type (1 = Mint,
|
|
42
|
+
// 2 = Account), followed by the extensions as TLV entries (a u16 type, a u16 length, the value).
|
|
43
|
+
// Token-2022 refuses to read a 355-byte account as either, because that is the size of its multisig,
|
|
44
|
+
// whose byte 165 falls inside a signer key; so do these checks.
|
|
45
|
+
//
|
|
46
|
+
// The token program is an `Account` the caller attaches, like every other: `svm.call`'s callee is
|
|
47
|
+
// named by the slot it occupies, so it rides in as `tokenProgram` and reaches the manifest under that
|
|
48
|
+
// name. Which account arrives there is the caller's choice, so each write `require`s that it is a
|
|
49
|
+
// token program — the same shape as the mint check beside it, and the reason `Account` compares for
|
|
50
|
+
// identity.
|
|
27
51
|
|
|
28
52
|
const SPL_TOKEN_PROGRAM = 0x06ddf6e1d765a193d9cbe146ceeb79ac1cb485ed5f5b37913a8cf5857eff00a9;
|
|
53
|
+
const TOKEN_2022_PROGRAM = 0x06ddf6e1ee758fde18425dbce46ccddab61afc4d83b90d27febdf928d8a18bfc;
|
|
29
54
|
|
|
30
55
|
// `spl_token::state::Mint::LEN` — the legacy SPL mint's exact size. Exact, not a floor: the legacy
|
|
31
56
|
// program's `Pack` refuses any other length for a mint, so every account it ever initialized as one
|
|
32
57
|
// is this size and nothing genuine is turned away by requiring it. A floor (`>= 82`) would admit the
|
|
33
58
|
// 165-byte token account this exists to reject, since a token account is longer than a mint, not
|
|
34
|
-
// shorter.
|
|
59
|
+
// shorter. A Token-2022 mint is this size too until it carries an extension.
|
|
35
60
|
const SPL_MINT_LEN = 82;
|
|
36
61
|
|
|
62
|
+
// `spl_token::state::Account::LEN`, and the offset of a Token-2022 account's type byte.
|
|
63
|
+
const SPL_ACCOUNT_LEN = 165;
|
|
64
|
+
|
|
65
|
+
// `spl_token_2022::state::Multisig::LEN`, the one length above 165 that is no extended account.
|
|
66
|
+
const SPL_MULTISIG_LEN = 355;
|
|
67
|
+
|
|
68
|
+
// A token account of `token`, owned by either token program. A legacy SPL Token account is taken on
|
|
69
|
+
// its owner, as it always was. A Token-2022 one is 165 bytes, or longer with its type byte (165) set
|
|
70
|
+
// to Account (2), and never the multisig's 355; that keeps out a Token-2022 mint, whose first 32
|
|
71
|
+
// bytes are its mint authority. Then its mint@0 must be `token`.
|
|
72
|
+
//
|
|
73
|
+
// The reads share it rather than each repeating it: a function is emitted once however many calls
|
|
74
|
+
// reach it, so a program that reads an account twice over (`ownerOf`, then `balanceOf`) carries one
|
|
75
|
+
// copy of the checks and their reasons, at the price of a call for a program that reads once.
|
|
76
|
+
function requireTokenAccount(token: Address, account: Account): void {
|
|
77
|
+
if (account.owner != SPL_TOKEN_PROGRAM) {
|
|
78
|
+
const size = account.dataLen;
|
|
79
|
+
require(account.owner == TOKEN_2022_PROGRAM &&
|
|
80
|
+
(size == SPL_ACCOUNT_LEN ||
|
|
81
|
+
(size > SPL_ACCOUNT_LEN &&
|
|
82
|
+
size != SPL_MULTISIG_LEN &&
|
|
83
|
+
svm.sload(account, SPL_ACCOUNT_LEN, 1).toLe() == 2)), "not a token account");
|
|
84
|
+
}
|
|
85
|
+
require(svm.sload(account, 0, 32).toBe() == token, "wrong mint");
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// An initialized mint, owned by either token program: 82 bytes, or a Token-2022 mint longer than 165
|
|
89
|
+
// with its type byte set to Mint (1). Owner must be checked before size, and size before the type
|
|
90
|
+
// byte, which only an extended account has: each program owns both mints and token accounts, and a
|
|
91
|
+
// legacy mint is exactly 82 bytes. Size alone also admits permissionlessly allocated but
|
|
92
|
+
// uninitialized accounts, so require the mint's initialization byte before reading its fields.
|
|
93
|
+
function requireMint(token: Account): void {
|
|
94
|
+
const size = token.dataLen;
|
|
95
|
+
if (token.owner == TOKEN_2022_PROGRAM) {
|
|
96
|
+
require(size == SPL_MINT_LEN ||
|
|
97
|
+
(size > SPL_ACCOUNT_LEN &&
|
|
98
|
+
size != SPL_MULTISIG_LEN &&
|
|
99
|
+
svm.sload(token, SPL_ACCOUNT_LEN, 1).toLe() == 1), "not a mint");
|
|
100
|
+
} else {
|
|
101
|
+
require(token.owner == SPL_TOKEN_PROGRAM && size == SPL_MINT_LEN, "not a mint");
|
|
102
|
+
}
|
|
103
|
+
require(svm.sload(token, 45, 1).toLe() == 1, "uninitialized mint");
|
|
104
|
+
}
|
|
105
|
+
|
|
37
106
|
export function balanceOf(token: Address, account: Account): Uint256 {
|
|
38
|
-
|
|
39
|
-
require(svm.sload(account, 0, 32).toBe() == token);
|
|
107
|
+
requireTokenAccount(token, account);
|
|
40
108
|
return svm.sload(account, 64, 8).toLe();
|
|
41
109
|
}
|
|
42
110
|
|
|
43
|
-
//
|
|
44
|
-
//
|
|
45
|
-
//
|
|
111
|
+
// Whose token account this is: its owner@32, a wallet or a PDA such as a Pot. Not `account.owner`,
|
|
112
|
+
// which is the program that owns the account's data (a token program, checked first as everywhere
|
|
113
|
+
// here), and not the `authority` a write is signed by: SPL accepts the account's delegate there too,
|
|
114
|
+
// so a `transfer(…, authority)` that succeeds proves `authority` may spend from `source`, not that
|
|
115
|
+
// `source` is `authority`'s. A program measuring its own balance requires
|
|
116
|
+
// `ownerOf(token, account) == authority` first. There is no EVM counterpart: an ERC-20 balance has no
|
|
117
|
+
// account apart from its holder, so the holder is already the address a program passes.
|
|
118
|
+
export function ownerOf(token: Address, account: Account): Address {
|
|
119
|
+
requireTokenAccount(token, account);
|
|
120
|
+
return svm.sload(account, 32, 32).toBe();
|
|
121
|
+
}
|
|
122
|
+
|
|
46
123
|
export function totalSupply(token: Account): Uint256 {
|
|
47
|
-
|
|
48
|
-
require(token.dataLen == SPL_MINT_LEN);
|
|
49
|
-
require(svm.sload(token, 45, 1).toLe() == 1);
|
|
124
|
+
requireMint(token);
|
|
50
125
|
return svm.sload(token, 36, 8).toLe();
|
|
51
126
|
}
|
|
52
127
|
|
|
53
128
|
export function decimals(token: Account): Uint256 {
|
|
54
|
-
|
|
55
|
-
require(token.dataLen == SPL_MINT_LEN);
|
|
56
|
-
require(svm.sload(token, 45, 1).toLe() == 1);
|
|
129
|
+
requireMint(token);
|
|
57
130
|
return svm.sload(token, 44, 1).toLe();
|
|
58
131
|
}
|
|
59
132
|
|
|
60
133
|
export function allowance(token: Address, account: Account, spender: Address): Uint256 {
|
|
61
|
-
|
|
62
|
-
require(svm.sload(account, 0, 32).toBe() == token);
|
|
134
|
+
requireTokenAccount(token, account);
|
|
63
135
|
// The delegate is a `COption<Pubkey>`: read `delegated_amount` only when the tag is `Some` (1)
|
|
64
136
|
// *and* the delegate matches `spender`. spl-token leaves the delegate bytes stale after `Revoke`,
|
|
65
137
|
// so the tag must gate the pubkey compare — else a revoked delegate would still match.
|
|
@@ -84,10 +156,10 @@ export function transfer(
|
|
|
84
156
|
authority: Account,
|
|
85
157
|
amount: Uint256,
|
|
86
158
|
): void {
|
|
87
|
-
require(tokenProgram == SPL_TOKEN_PROGRAM);
|
|
88
|
-
require(source.owner == SPL_TOKEN_PROGRAM);
|
|
89
|
-
require(svm.sload(source, 0, 32).toBe() == token);
|
|
90
|
-
require(amount <= 0xffffffffffffffff);
|
|
159
|
+
require(tokenProgram == SPL_TOKEN_PROGRAM, "not the token program");
|
|
160
|
+
require(source.owner == SPL_TOKEN_PROGRAM, "not a token account");
|
|
161
|
+
require(svm.sload(source, 0, 32).toBe() == token, "wrong mint");
|
|
162
|
+
require(amount <= 0xffffffffffffffff, "amount over u64");
|
|
91
163
|
let data = hex`03`;
|
|
92
164
|
svm.call(tokenProgram, [source, dest, authority], data.concat(amount.toBytesLe(8)));
|
|
93
165
|
}
|
|
@@ -119,10 +191,91 @@ export function approve(
|
|
|
119
191
|
authority: Account,
|
|
120
192
|
amount: Uint256,
|
|
121
193
|
): void {
|
|
122
|
-
require(tokenProgram == SPL_TOKEN_PROGRAM);
|
|
123
|
-
require(source.owner == SPL_TOKEN_PROGRAM);
|
|
124
|
-
require(svm.sload(source, 0, 32).toBe() == token);
|
|
125
|
-
require(amount <= 0xffffffffffffffff);
|
|
194
|
+
require(tokenProgram == SPL_TOKEN_PROGRAM, "not the token program");
|
|
195
|
+
require(source.owner == SPL_TOKEN_PROGRAM, "not a token account");
|
|
196
|
+
require(svm.sload(source, 0, 32).toBe() == token, "wrong mint");
|
|
197
|
+
require(amount <= 0xffffffffffffffff, "amount over u64");
|
|
126
198
|
let data = hex`04`;
|
|
127
199
|
svm.call(tokenProgram, [source, delegate, authority], data.concat(amount.toBytesLe(8)));
|
|
128
200
|
}
|
|
201
|
+
|
|
202
|
+
// The checked writes, for either token program: `TransferChecked` (12) and `ApproveChecked` (13) name
|
|
203
|
+
// the mint as an account and carry its decimals. The callee must be one of the two token programs,
|
|
204
|
+
// and the program that owns `source`, `dest` and `mint` — a Token-2022 account is moved by Token-2022
|
|
205
|
+
// and a legacy one by legacy SPL Token, never across. `mint` must be `token`; the token program then
|
|
206
|
+
// refuses a `source` or `dest` of any other mint, so the asset is pinned without reading either.
|
|
207
|
+
// `decimals` must be the mint's own: the token program refuses a mismatch too, but the instruction
|
|
208
|
+
// carries one byte, so a value past 255 would wrap onto the mint's and pass, where this refuses it.
|
|
209
|
+
//
|
|
210
|
+
// What Token-2022's extensions do to a checked write is the token program's, not this library's: a
|
|
211
|
+
// transfer fee is withheld from what `dest` receives (a program measures the balance it got, not the
|
|
212
|
+
// amount it sent), a paused mint and a frozen account refuse the CPI with the token program's own
|
|
213
|
+
// error, and amounts are always raw base units (a scaled UI amount is a display multiplier no program
|
|
214
|
+
// sees). The one extension refused here is a transfer hook that names a program: Token-2022 then
|
|
215
|
+
// calls that program with the accounts its hook lists, which a fixed list of four cannot carry, so
|
|
216
|
+
// the transfer is refused as "transfer hook" before it is attempted. A hook extension with no program
|
|
217
|
+
// set is no hook, and transfers as any other mint.
|
|
218
|
+
export function transferChecked(
|
|
219
|
+
token: Address,
|
|
220
|
+
tokenProgram: Account,
|
|
221
|
+
source: Account,
|
|
222
|
+
mint: Account,
|
|
223
|
+
dest: Account,
|
|
224
|
+
authority: Account,
|
|
225
|
+
amount: Uint256,
|
|
226
|
+
decimals: Uint256,
|
|
227
|
+
): void {
|
|
228
|
+
require(tokenProgram == SPL_TOKEN_PROGRAM ||
|
|
229
|
+
tokenProgram == TOKEN_2022_PROGRAM, "not the token program");
|
|
230
|
+
const program = tokenProgram.address;
|
|
231
|
+
require(source.owner == program && dest.owner == program, "not a token account");
|
|
232
|
+
require(mint.owner == program, "not a mint");
|
|
233
|
+
require(mint == token, "wrong mint");
|
|
234
|
+
require(decimals == svm.sload(mint, 44, 1).toLe(), "wrong decimals");
|
|
235
|
+
require(amount <= 0xffffffffffffffff, "amount over u64");
|
|
236
|
+
// A mint's extensions follow its type byte, each a u16 type, a u16 length and the value.
|
|
237
|
+
// TransferHook (type 14) is its authority, then its program: all zeros is no program. A legacy mint,
|
|
238
|
+
// and a Token-2022 mint with no extensions, are 82 bytes, so the walk never starts. Token-2022 stops
|
|
239
|
+
// at an Uninitialized (0) entry and writes nothing after one; walking on reads only zeros.
|
|
240
|
+
let at = SPL_ACCOUNT_LEN + 1;
|
|
241
|
+
while (at + 4 <= mint.dataLen) {
|
|
242
|
+
const kind = svm.sload(mint, at, 2).toLe();
|
|
243
|
+
require(kind != 14 || svm.sload(mint, at + 36, 32).toBe() == 0, "transfer hook");
|
|
244
|
+
at = at + 4 + svm.sload(mint, at + 2, 2).toLe();
|
|
245
|
+
}
|
|
246
|
+
let data = hex`0c`;
|
|
247
|
+
svm.call(
|
|
248
|
+
tokenProgram,
|
|
249
|
+
[source, mint, dest, authority],
|
|
250
|
+
data.concat(amount.toBytesLe(8)).concat(decimals.toBytesLe(1)),
|
|
251
|
+
);
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
// `ApproveChecked` sets the single delegate on `source`, as `approve` does, for either token program.
|
|
255
|
+
// The delegate is any key, not a token account, so only `source` and `mint` are checked. A transfer
|
|
256
|
+
// hook runs on transfers only, so an approval needs no walk.
|
|
257
|
+
export function approveChecked(
|
|
258
|
+
token: Address,
|
|
259
|
+
tokenProgram: Account,
|
|
260
|
+
source: Account,
|
|
261
|
+
mint: Account,
|
|
262
|
+
delegate: Account,
|
|
263
|
+
authority: Account,
|
|
264
|
+
amount: Uint256,
|
|
265
|
+
decimals: Uint256,
|
|
266
|
+
): void {
|
|
267
|
+
require(tokenProgram == SPL_TOKEN_PROGRAM ||
|
|
268
|
+
tokenProgram == TOKEN_2022_PROGRAM, "not the token program");
|
|
269
|
+
const program = tokenProgram.address;
|
|
270
|
+
require(source.owner == program, "not a token account");
|
|
271
|
+
require(mint.owner == program, "not a mint");
|
|
272
|
+
require(mint == token, "wrong mint");
|
|
273
|
+
require(decimals == svm.sload(mint, 44, 1).toLe(), "wrong decimals");
|
|
274
|
+
require(amount <= 0xffffffffffffffff, "amount over u64");
|
|
275
|
+
let data = hex`0d`;
|
|
276
|
+
svm.call(
|
|
277
|
+
tokenProgram,
|
|
278
|
+
[source, mint, delegate, authority],
|
|
279
|
+
data.concat(amount.toBytesLe(8)).concat(decimals.toBytesLe(1)),
|
|
280
|
+
);
|
|
281
|
+
}
|
package/sdk/dist/svm/client.d.ts
CHANGED
|
@@ -3,30 +3,50 @@ import type { AccountManifest } from "sauce-compiler";
|
|
|
3
3
|
import type { ArgsLayout, ArgValue } from "./layout.js";
|
|
4
4
|
import type { AccountResolution } from "./resolve.js";
|
|
5
5
|
import type { SendExecuteResult, SimulateExecuteResult } from "./send.js";
|
|
6
|
+
import type { SignedExecuteTransaction } from "./transaction.js";
|
|
7
|
+
/**
|
|
8
|
+
* How a cook reaches the engine.
|
|
9
|
+
*
|
|
10
|
+
* - `"kitchen"`: the Kitchen's `cook` (or `cook_from_account`), which CPIs the engine and signs the
|
|
11
|
+
* owner's Pot. The program can act as its Pot — hold assets in it, write its storage — and the
|
|
12
|
+
* Kitchen charges the execution fee first. The engine runs one level down the invoke stack.
|
|
13
|
+
* - `"engine"`: the engine's own `cookAndPay` (or the staged, pinned `cookAndPayFromAccountPinned`).
|
|
14
|
+
* The engine charges the same fee, into the same treasury, then runs the program as the top-level
|
|
15
|
+
* instruction: no Pot, nothing signed for one — the program acts with the transaction's own
|
|
16
|
+
* signatures, such as the wallet's — and one more level of CPI depth for what it calls.
|
|
17
|
+
*/
|
|
18
|
+
export type CookVia = "kitchen" | "engine";
|
|
6
19
|
export interface SauceSvmClientConfig {
|
|
7
20
|
/** Your cluster's JSON-RPC URL. Required: the SDK ships no RPC endpoints and has no default. */
|
|
8
21
|
rpcUrl: string;
|
|
9
22
|
/** Defaults to rpcUrl with the protocol swapped to ws(s). */
|
|
10
23
|
wsUrl?: string;
|
|
11
|
-
/** The ENGINE. Named per call rather than compiled in
|
|
12
|
-
*
|
|
24
|
+
/** The ENGINE. Named per call rather than compiled in: the interpreter that runs, which a
|
|
25
|
+
* Kitchen cook CPIs and a direct cook (`via: "engine"`) calls itself. */
|
|
13
26
|
programId: Address;
|
|
14
27
|
/**
|
|
15
|
-
* The KITCHEN
|
|
28
|
+
* The KITCHEN, required either way.
|
|
16
29
|
*
|
|
17
|
-
* A
|
|
18
|
-
* not
|
|
30
|
+
* A Kitchen cook goes through it: the engine's legacy instructions refuse any invocation that did
|
|
31
|
+
* not arrive through one. A direct cook does not, but pays the fee its `["execution_fee"]` config
|
|
32
|
+
* sets, into that config — the engine re-derives the account against the Kitchen it bakes in.
|
|
19
33
|
*/
|
|
20
34
|
kitchen: Address;
|
|
21
35
|
payer: TransactionSigner;
|
|
22
36
|
/** Which of the payer's Pots to run as. Defaults to the all-zero salt — the natural "primary". */
|
|
23
37
|
potSalt?: Uint8Array;
|
|
24
38
|
/**
|
|
25
|
-
* What the caller consents to pay per cook, in lamports
|
|
26
|
-
*
|
|
27
|
-
*
|
|
39
|
+
* What the caller consents to pay per cook, in lamports: every cook signs it as its
|
|
40
|
+
* `max_execution_fee`, and the Kitchen (or, `via: "engine"`, the engine) charges the configured
|
|
41
|
+
* fee only while it is at most this — a higher one refuses the cook before anything runs.
|
|
42
|
+
* Defaults to zero, which succeeds only while the kitchen is priced at zero — a kitchen with a
|
|
43
|
+
* positive fee refuses, rather than silently spending the payer's SOL on a quote they never saw.
|
|
44
|
+
* Quote it with `executionFee()`; a cook's own `maxExecutionFee` option overrides this one.
|
|
28
45
|
*/
|
|
29
46
|
maxExecutionFee?: bigint;
|
|
47
|
+
/** How every cook reaches the engine: through the Kitchen (the default) or directly. See
|
|
48
|
+
* {@link CookVia}. `potSalt` means nothing to a direct cook, which runs as no Pot. */
|
|
49
|
+
via?: CookVia;
|
|
30
50
|
}
|
|
31
51
|
export interface SimulateOpts {
|
|
32
52
|
prepends?: readonly Instruction[];
|
|
@@ -37,6 +57,14 @@ export interface SimulateOpts {
|
|
|
37
57
|
* NoSigner is lazy, so everything else runs (and simulates) signerless.
|
|
38
58
|
*/
|
|
39
59
|
appendPayerSigner?: boolean;
|
|
60
|
+
/** This cook's `max_execution_fee`, in place of the client's `maxExecutionFee`. */
|
|
61
|
+
maxExecutionFee?: bigint;
|
|
62
|
+
/**
|
|
63
|
+
* Accounts whose state after the transaction `simulate`/`simulateStaged` report, in order, as
|
|
64
|
+
* `SimulateExecuteResult.accounts` — what a cook moved, read back without sending it. The
|
|
65
|
+
* execute paths ignore it.
|
|
66
|
+
*/
|
|
67
|
+
accounts?: readonly Address[];
|
|
40
68
|
}
|
|
41
69
|
export interface ExecuteOpts extends SimulateOpts {
|
|
42
70
|
/** 'auto' simulates first and applies recommendedComputeUnitLimit (x1.2, capped 1.4M). */
|
|
@@ -62,11 +90,15 @@ export interface StagedArgs {
|
|
|
62
90
|
}
|
|
63
91
|
export interface SimulateStagedOpts extends SimulateOpts {
|
|
64
92
|
/**
|
|
65
|
-
* REJECTED, not enforced. Passing this THROWS.
|
|
93
|
+
* Through the Kitchen: REJECTED, not enforced. Passing this THROWS.
|
|
66
94
|
*
|
|
67
95
|
* `execute_from_account` on the released engine takes no payload, so this was being forwarded
|
|
68
96
|
* and then dropped while documented as an applied pin. The enforceable content pin is the
|
|
69
97
|
* kitchen's, given to `buildFinalizeCodeBufferInstruction` when the buffer is finalized.
|
|
98
|
+
*
|
|
99
|
+
* `via: "engine"`: the pin the engine enforces. A direct staged cook is always
|
|
100
|
+
* `cookAndPayFromAccountPinned`, and this is its digest — required unless the buffer is a
|
|
101
|
+
* `StagedBuffer`, whose `sha256` is used (the two must agree when both are given).
|
|
70
102
|
*/
|
|
71
103
|
expectedSha256?: Uint8Array;
|
|
72
104
|
}
|
|
@@ -91,6 +123,14 @@ export interface EnsureLookupTableOpts {
|
|
|
91
123
|
export interface SauceSvmClient {
|
|
92
124
|
/** Fee-payer / lookup-table authority public key — the ALT-address selection excludes it (signers cannot be looked up). */
|
|
93
125
|
readonly payerAddress: Address;
|
|
126
|
+
/** How this client's cooks reach the engine. */
|
|
127
|
+
readonly via: CookVia;
|
|
128
|
+
/**
|
|
129
|
+
* The Kitchen's execution fee now, in lamports, from its fee config — what a cook pays either
|
|
130
|
+
* way. Compare it with what you will pay, and give it as `maxExecutionFee`, so a cook pays what
|
|
131
|
+
* was quoted or, if the fee rises before it lands, fails.
|
|
132
|
+
*/
|
|
133
|
+
executionFee(): Promise<bigint>;
|
|
94
134
|
/**
|
|
95
135
|
* Creates (or, with `opts.existing`, extends) an address lookup table over
|
|
96
136
|
* `addresses`, waits for it to warm up, and returns it in the shape the
|
|
@@ -103,15 +143,22 @@ export interface SauceSvmClient {
|
|
|
103
143
|
ensureLookupTable(addresses: readonly Address[], opts?: EnsureLookupTableOpts): Promise<EnsuredLookupTable>;
|
|
104
144
|
simulate(bytecode: Uint8Array, manifest: AccountManifest, resolution: AccountResolution, opts?: SimulateOpts): Promise<SimulateExecuteResult>;
|
|
105
145
|
execute(bytecode: Uint8Array, manifest: AccountManifest, resolution: AccountResolution, opts?: ExecuteOpts): Promise<SendExecuteResult>;
|
|
146
|
+
/**
|
|
147
|
+
* The signed cook transaction `execute` sends, built the same way, without sending it: for a
|
|
148
|
+
* caller that sends it by its own route (polled confirmation, a relayer) or hands its wire bytes
|
|
149
|
+
* on. With `computeUnitLimit: "auto"` it simulates first, exactly as `execute` does.
|
|
150
|
+
*/
|
|
151
|
+
cookTransaction(bytecode: Uint8Array, manifest: AccountManifest, resolution: AccountResolution, opts?: ExecuteOpts): Promise<SignedExecuteTransaction>;
|
|
106
152
|
simulateStaged(buffer: Address | StagedBuffer, manifest: AccountManifest, resolution: AccountResolution, opts?: SimulateStagedOpts): Promise<SimulateExecuteResult>;
|
|
107
153
|
/**
|
|
108
|
-
* Executes a finalized buffer
|
|
109
|
-
* the
|
|
110
|
-
*
|
|
111
|
-
*
|
|
112
|
-
* every argument set without restaging.
|
|
154
|
+
* Executes a finalized code buffer in ONE instruction: the Kitchen's `cook_from_account`, or
|
|
155
|
+
* (`via: "engine"`) the engine's `cookAndPayFromAccountPinned`, pinned to the staged digest. The
|
|
156
|
+
* buffer is the code buffer's metadata address (or the `StagedBuffer`); its code account is
|
|
157
|
+
* derived from it. A staged program's arguments are part of the staged bytes.
|
|
113
158
|
*/
|
|
114
159
|
executeStaged(buffer: Address | StagedBuffer, manifest: AccountManifest, resolution: AccountResolution, opts?: ExecuteStagedOpts): Promise<SendExecuteResult>;
|
|
160
|
+
/** The signed `cook_from_account` transaction `executeStaged` sends, without sending it. */
|
|
161
|
+
stagedCookTransaction(buffer: Address | StagedBuffer, manifest: AccountManifest, resolution: AccountResolution, opts?: ExecuteStagedOpts): Promise<SignedExecuteTransaction>;
|
|
115
162
|
}
|
|
116
|
-
export declare function createSauceSvmClient({ rpcUrl, wsUrl, programId, kitchen, payer, potSalt, maxExecutionFee, }: SauceSvmClientConfig): Promise<SauceSvmClient>;
|
|
163
|
+
export declare function createSauceSvmClient({ rpcUrl, wsUrl, programId, kitchen, payer, potSalt, maxExecutionFee, via, }: SauceSvmClientConfig): Promise<SauceSvmClient>;
|
|
117
164
|
//# sourceMappingURL=client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/svm/client.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,OAAO,EACP,6BAA6B,EAC7B,UAAU,EACV,WAAW,EACX,SAAS,EACT,iBAAiB,EAClB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/svm/client.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,OAAO,EACP,6BAA6B,EAC7B,UAAU,EACV,WAAW,EACX,SAAS,EACT,iBAAiB,EAClB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAuBxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAE1E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAEjE;;;;;;;;;;GAUG;AACH,MAAM,MAAM,OAAO,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE3C,MAAM,WAAW,oBAAoB;IACnC,gGAAgG;IAChG,MAAM,EAAE,MAAM,CAAC;IACf,6DAA6D;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;8EAC0E;IAC1E,SAAS,EAAE,OAAO,CAAC;IACnB;;;;;;OAMG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,iBAAiB,CAAC;IACzB,kGAAkG;IAClG,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;2FACuF;IACvF,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;IAClC,YAAY,CAAC,EAAE,6BAA6B,CAAC;IAC7C;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,mFAAmF;IACnF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,WAAY,SAAQ,YAAY;IAC/C,0FAA0F;IAC1F,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACpC;AAED,gGAAgG;AAChG,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,kEAAkE;IAClE,IAAI,EAAE,UAAU,CAAC;IACjB,0FAA0F;IAC1F,MAAM,EAAE,UAAU,CAAC;IACnB,6EAA6E;IAC7E,UAAU,EAAE,SAAS,EAAE,CAAC;CACzB;AAED;;;4DAG4D;AAC5D,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,SAAS,QAAQ,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,kBAAmB,SAAQ,YAAY;IACtD;;;;;;;;;;OAUG;IACH,cAAc,CAAC,EAAE,UAAU,CAAC;CAC7B;AAED,MAAM,WAAW,iBAAkB,SAAQ,kBAAkB;IAC3D,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACpC;AAED,wGAAwG;AACxG,MAAM,WAAW,kBAAkB;IACjC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,qGAAqG;IACrG,YAAY,EAAE,6BAA6B,CAAC;CAC7C;AAED,MAAM,WAAW,qBAAqB;IACpC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC7B,2HAA2H;IAC3H,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,gDAAgD;IAChD,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB;;;;OAIG;IACH,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAChC;;;;;;;;OAQG;IACH,iBAAiB,CACf,SAAS,EAAE,SAAS,OAAO,EAAE,EAC7B,IAAI,CAAC,EAAE,qBAAqB,GAC3B,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC/B,QAAQ,CACN,QAAQ,EAAE,UAAU,EACpB,QAAQ,EAAE,eAAe,EACzB,UAAU,EAAE,iBAAiB,EAC7B,IAAI,CAAC,EAAE,YAAY,GAClB,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAClC,OAAO,CACL,QAAQ,EAAE,UAAU,EACpB,QAAQ,EAAE,eAAe,EACzB,UAAU,EAAE,iBAAiB,EAC7B,IAAI,CAAC,EAAE,WAAW,GACjB,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC9B;;;;OAIG;IACH,eAAe,CACb,QAAQ,EAAE,UAAU,EACpB,QAAQ,EAAE,eAAe,EACzB,UAAU,EAAE,iBAAiB,EAC7B,IAAI,CAAC,EAAE,WAAW,GACjB,OAAO,CAAC,wBAAwB,CAAC,CAAC;IACrC,cAAc,CACZ,MAAM,EAAE,OAAO,GAAG,YAAY,EAC9B,QAAQ,EAAE,eAAe,EACzB,UAAU,EAAE,iBAAiB,EAC7B,IAAI,CAAC,EAAE,kBAAkB,GACxB,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAClC;;;;;OAKG;IACH,aAAa,CACX,MAAM,EAAE,OAAO,GAAG,YAAY,EAC9B,QAAQ,EAAE,eAAe,EACzB,UAAU,EAAE,iBAAiB,EAC7B,IAAI,CAAC,EAAE,iBAAiB,GACvB,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC9B,4FAA4F;IAC5F,qBAAqB,CACnB,MAAM,EAAE,OAAO,GAAG,YAAY,EAC9B,QAAQ,EAAE,eAAe,EACzB,UAAU,EAAE,iBAAiB,EAC7B,IAAI,CAAC,EAAE,iBAAiB,GACvB,OAAO,CAAC,wBAAwB,CAAC,CAAC;CACtC;AAmCD,wBAAsB,oBAAoB,CAAC,EACzC,MAAM,EACN,KAAK,EACL,SAAS,EACT,OAAO,EACP,KAAK,EACL,OAA4B,EAC5B,eAAoB,EACpB,GAAe,GAChB,EAAE,oBAAoB,GAAG,OAAO,CAAC,cAAc,CAAC,CAyThD"}
|
package/sdk/dist/svm/client.js
CHANGED
|
@@ -1,12 +1,38 @@
|
|
|
1
1
|
import { createSolanaRpc, createSolanaRpcSubscriptions, sendAndConfirmTransactionFactory, } from "@solana/kit";
|
|
2
2
|
import { LOOKUP_TABLE_MAX_ADDRESSES, createAltWithAddresses, extendAlt, fetchAlt, waitForAltActive, } from "./alt.js";
|
|
3
|
-
import { assertNoExecutePin } from "./instructions.js";
|
|
3
|
+
import { assertNoExecutePin, buildCookAndPayFromAccountPinnedInstruction, buildCookAndPayInstruction, } from "./instructions.js";
|
|
4
4
|
import { buildComputeBudgetPrepend, buildHeapFramePrepend } from "./prepends.js";
|
|
5
5
|
import { resolveAccounts } from "./resolve.js";
|
|
6
|
-
import { buildCookFromAccountInstruction, buildCookInstruction, deriveCodePda, deriveExecutionFeeConfigPda, derivePotPda, } from "./kitchen.js";
|
|
6
|
+
import { buildCookFromAccountInstruction, buildCookInstruction, deriveCodePda, deriveExecutionFeeConfigPda, derivePotPda, fetchExecutionFee, } from "./kitchen.js";
|
|
7
7
|
import { recommendedComputeUnitLimit, sendExecute, simulateExecute } from "./send.js";
|
|
8
8
|
import { buildExecuteTransaction } from "./transaction.js";
|
|
9
|
-
|
|
9
|
+
/**
|
|
10
|
+
* The digest a direct staged cook pins: the caller's `expectedSha256`, else the `StagedBuffer`'s
|
|
11
|
+
* own. A direct cook runs the code account with the transaction's signatures and the engine checks
|
|
12
|
+
* nothing else about that account, so the client makes no unpinned direct cook —
|
|
13
|
+
* `buildCookAndPayFromAccountInstruction` is the raw builder for a caller who wants one.
|
|
14
|
+
*/
|
|
15
|
+
function directPin(buffer, expectedSha256) {
|
|
16
|
+
const staged = typeof buffer === "string" ? undefined : buffer.sha256;
|
|
17
|
+
if (expectedSha256 !== undefined &&
|
|
18
|
+
staged !== undefined &&
|
|
19
|
+
(expectedSha256.length !== staged.length || expectedSha256.some((b, i) => b !== staged[i]))) {
|
|
20
|
+
throw new Error("expectedSha256 disagrees with the StagedBuffer's sha256: the pin must be the staged bytes' digest");
|
|
21
|
+
}
|
|
22
|
+
const pin = expectedSha256 ?? staged;
|
|
23
|
+
if (pin === undefined) {
|
|
24
|
+
throw new Error('a staged cook via "engine" is pinned: the engine runs the code account with the ' +
|
|
25
|
+
"transaction's signatures and checks nothing else about it. Pass the StagedBuffer staging " +
|
|
26
|
+
"returned, or the staged bytes' sha256 as expectedSha256.");
|
|
27
|
+
}
|
|
28
|
+
if (pin.length !== 32)
|
|
29
|
+
throw new Error("expectedSha256 must be exactly 32 bytes");
|
|
30
|
+
return pin;
|
|
31
|
+
}
|
|
32
|
+
export async function createSauceSvmClient({ rpcUrl, wsUrl, programId, kitchen, payer, potSalt = new Uint8Array(32), maxExecutionFee = 0n, via = "kitchen", }) {
|
|
33
|
+
if (via !== "kitchen" && via !== "engine") {
|
|
34
|
+
throw new Error(`createSauceSvmClient: via must be "kitchen" or "engine", got ${String(via)}`);
|
|
35
|
+
}
|
|
10
36
|
// The type already requires it; this is for callers the type does not reach (plain JS, a config
|
|
11
37
|
// object built at runtime), who would otherwise get an opaque failure from inside the RPC client.
|
|
12
38
|
if (typeof rpcUrl !== "string" || rpcUrl.trim() === "") {
|
|
@@ -37,47 +63,70 @@ export async function createSauceSvmClient({ rpcUrl, wsUrl, programId, kitchen,
|
|
|
37
63
|
const accounts = resolveAccounts(manifest, resolution, payer.address, {
|
|
38
64
|
appendPayerSigner: opts.appendPayerSigner,
|
|
39
65
|
});
|
|
40
|
-
const
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
66
|
+
const cap = opts.maxExecutionFee ?? maxExecutionFee;
|
|
67
|
+
const executeInstruction = via === "engine"
|
|
68
|
+
? buildCookAndPayInstruction({
|
|
69
|
+
engineProgram: programId,
|
|
70
|
+
feeConfig,
|
|
71
|
+
feePayer: payer.address,
|
|
72
|
+
maxExecutionFee: cap,
|
|
73
|
+
bytecode,
|
|
74
|
+
tail: accounts,
|
|
75
|
+
})
|
|
76
|
+
: buildCookInstruction({
|
|
77
|
+
kitchen,
|
|
78
|
+
owner: payer.address,
|
|
79
|
+
engineProgram: programId,
|
|
80
|
+
potSalt,
|
|
81
|
+
pot,
|
|
82
|
+
feeConfig,
|
|
83
|
+
bytecode,
|
|
84
|
+
maxExecutionFee: cap,
|
|
85
|
+
tail: accounts,
|
|
86
|
+
});
|
|
51
87
|
return signExecuteTransaction(executeInstruction, prepends, opts.lookupTables);
|
|
52
88
|
}
|
|
53
89
|
async function simulate(bytecode, manifest, resolution, opts = {}) {
|
|
54
90
|
const transaction = await buildTransaction(bytecode, manifest, resolution, opts.prepends ?? [], opts);
|
|
55
|
-
return simulateExecute(rpc, transaction);
|
|
91
|
+
return simulateExecute(rpc, transaction, opts.accounts === undefined ? {} : { accounts: opts.accounts });
|
|
56
92
|
}
|
|
57
93
|
async function buildStagedTransaction(buffer, manifest, resolution, prepends, opts) {
|
|
58
94
|
const address = typeof buffer === "string" ? buffer : buffer.address;
|
|
59
95
|
const accounts = resolveAccounts(manifest, resolution, payer.address, {
|
|
60
96
|
appendPayerSigner: opts.appendPayerSigner,
|
|
61
97
|
});
|
|
62
|
-
|
|
98
|
+
const cap = opts.maxExecutionFee ?? maxExecutionFee;
|
|
99
|
+
if (via === "kitchen")
|
|
100
|
+
assertNoExecutePin(opts.expectedSha256);
|
|
101
|
+
const pin = via === "engine" ? directPin(buffer, opts.expectedSha256) : undefined;
|
|
63
102
|
const { address: code } = await deriveCodePda(kitchen, address);
|
|
64
|
-
const executeInstruction =
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
103
|
+
const executeInstruction = pin !== undefined
|
|
104
|
+
? buildCookAndPayFromAccountPinnedInstruction({
|
|
105
|
+
engineProgram: programId,
|
|
106
|
+
code,
|
|
107
|
+
expectedSha256: pin,
|
|
108
|
+
feeConfig,
|
|
109
|
+
feePayer: payer.address,
|
|
110
|
+
maxExecutionFee: cap,
|
|
111
|
+
tail: accounts,
|
|
112
|
+
})
|
|
113
|
+
: buildCookFromAccountInstruction({
|
|
114
|
+
kitchen,
|
|
115
|
+
owner: payer.address,
|
|
116
|
+
codeBuffer: address,
|
|
117
|
+
code,
|
|
118
|
+
engineProgram: programId,
|
|
119
|
+
potSalt,
|
|
120
|
+
pot,
|
|
121
|
+
feeConfig,
|
|
122
|
+
maxExecutionFee: cap,
|
|
123
|
+
tail: accounts,
|
|
124
|
+
});
|
|
76
125
|
return signExecuteTransaction(executeInstruction, prepends, opts.lookupTables);
|
|
77
126
|
}
|
|
78
127
|
async function simulateStaged(buffer, manifest, resolution, opts = {}) {
|
|
79
128
|
const transaction = await buildStagedTransaction(buffer, manifest, resolution, opts.prepends ?? [], opts);
|
|
80
|
-
return simulateExecute(rpc, transaction);
|
|
129
|
+
return simulateExecute(rpc, transaction, opts.accounts === undefined ? {} : { accounts: opts.accounts });
|
|
81
130
|
}
|
|
82
131
|
async function autoComputeUnitPrepends(simulateRun, opts) {
|
|
83
132
|
let unitLimit;
|
|
@@ -138,28 +187,40 @@ export async function createSauceSvmClient({ rpcUrl, wsUrl, programId, kitchen,
|
|
|
138
187
|
await waitForAltActive(rpc, lastExtendedSlot);
|
|
139
188
|
return { lookupTableAddress, lookupTables: await fetchAlt(rpc, lookupTableAddress) };
|
|
140
189
|
}
|
|
190
|
+
async function cookTransaction(bytecode, manifest, resolution, opts = {}) {
|
|
191
|
+
const prepends = await autoComputeUnitPrepends(() => simulate(bytecode, manifest, resolution, {
|
|
192
|
+
prepends: opts.prepends,
|
|
193
|
+
lookupTables: opts.lookupTables,
|
|
194
|
+
appendPayerSigner: opts.appendPayerSigner,
|
|
195
|
+
maxExecutionFee: opts.maxExecutionFee,
|
|
196
|
+
}), opts);
|
|
197
|
+
return buildTransaction(bytecode, manifest, resolution, prepends, opts);
|
|
198
|
+
}
|
|
199
|
+
async function stagedCookTransaction(buffer, manifest, resolution, opts = {}) {
|
|
200
|
+
const prepends = await autoComputeUnitPrepends(() => simulateStaged(buffer, manifest, resolution, {
|
|
201
|
+
prepends: opts.prepends,
|
|
202
|
+
lookupTables: opts.lookupTables,
|
|
203
|
+
appendPayerSigner: opts.appendPayerSigner,
|
|
204
|
+
expectedSha256: opts.expectedSha256,
|
|
205
|
+
maxExecutionFee: opts.maxExecutionFee,
|
|
206
|
+
}), opts);
|
|
207
|
+
return buildStagedTransaction(buffer, manifest, resolution, prepends, opts);
|
|
208
|
+
}
|
|
141
209
|
return {
|
|
142
210
|
payerAddress: payer.address,
|
|
211
|
+
via,
|
|
212
|
+
executionFee: () => fetchExecutionFee(rpc, kitchen),
|
|
143
213
|
ensureLookupTable,
|
|
144
214
|
simulate,
|
|
215
|
+
cookTransaction,
|
|
145
216
|
async execute(bytecode, manifest, resolution, opts = {}) {
|
|
146
|
-
const
|
|
147
|
-
prepends: opts.prepends,
|
|
148
|
-
lookupTables: opts.lookupTables,
|
|
149
|
-
appendPayerSigner: opts.appendPayerSigner,
|
|
150
|
-
}), opts);
|
|
151
|
-
const transaction = await buildTransaction(bytecode, manifest, resolution, prepends, opts);
|
|
217
|
+
const transaction = await cookTransaction(bytecode, manifest, resolution, opts);
|
|
152
218
|
return sendExecute({ rpc, rpcSubscriptions, transaction });
|
|
153
219
|
},
|
|
154
220
|
simulateStaged,
|
|
221
|
+
stagedCookTransaction,
|
|
155
222
|
async executeStaged(buffer, manifest, resolution, opts = {}) {
|
|
156
|
-
const
|
|
157
|
-
prepends: opts.prepends,
|
|
158
|
-
lookupTables: opts.lookupTables,
|
|
159
|
-
appendPayerSigner: opts.appendPayerSigner,
|
|
160
|
-
expectedSha256: opts.expectedSha256,
|
|
161
|
-
}), opts);
|
|
162
|
-
const transaction = await buildStagedTransaction(buffer, manifest, resolution, prepends, opts);
|
|
223
|
+
const transaction = await stagedCookTransaction(buffer, manifest, resolution, opts);
|
|
163
224
|
return sendExecute({ rpc, rpcSubscriptions, transaction });
|
|
164
225
|
},
|
|
165
226
|
};
|