@eco-incorp/sauce 0.99.6 → 0.99.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +324 -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 +80 -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 +1442 -0
- package/docs/guides/compiling.md +19 -7
- package/docs/guides/intents.md +228 -15
- package/docs/guides/mcp.md +539 -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 +1497 -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 +170 -0
- package/sdk/dist/cli/chain.d.ts.map +1 -0
- package/sdk/dist/cli/chain.js +457 -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 +200 -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 +197 -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 +3162 -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 +183 -0
- package/sdk/dist/cli/solana.d.ts.map +1 -0
- package/sdk/dist/cli/solana.js +1360 -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 +5523 -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 +174 -0
- package/sdk/dist/routes/source-globals.js.map +1 -0
- package/sdk/dist/routes/stock-tokens.d.ts +69 -0
- package/sdk/dist/routes/stock-tokens.d.ts.map +1 -0
- package/sdk/dist/routes/stock-tokens.generated.d.ts +4 -0
- package/sdk/dist/routes/stock-tokens.generated.d.ts.map +1 -0
- package/sdk/dist/routes/stock-tokens.generated.js +1836 -0
- package/sdk/dist/routes/stock-tokens.generated.js.map +1 -0
- package/sdk/dist/routes/stock-tokens.js +65 -0
- package/sdk/dist/routes/stock-tokens.js.map +1 -0
- package/sdk/dist/routes/token-registry.d.ts +64 -8
- package/sdk/dist/routes/token-registry.d.ts.map +1 -1
- package/sdk/dist/routes/token-registry.js +202 -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.md +53 -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 +175 -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 +1824 -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 +322 -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
|
@@ -3,15 +3,26 @@
|
|
|
3
3
|
// src/std, src/recipes/*.sauce.ts and src/protocols/*/*.json.
|
|
4
4
|
/** `src/std/**`, keyed by path under `std/` — the SauceScript standard library. */
|
|
5
5
|
export const STD_SOURCES = {
|
|
6
|
+
"router/balancer-v2-vault.abi.json": "{\"$comment\":\"The Balancer V2 Vault's swap(singleSwap, funds, limit, deadline): the registry's BalancerV2VaultABI fragment (protocols/balancer-v2), which test/registry-abi.test.ts pins to the deployed Vault, 0xBA12222222228d8Ba445958a75a0704d566BF2C8. Its uint256 output is the amount the swap paid out.\",\"abi\":[{\"name\":\"swap\",\"type\":\"function\",\"stateMutability\":\"payable\",\"inputs\":[{\"name\":\"singleSwap\",\"type\":\"tuple\",\"components\":[{\"name\":\"poolId\",\"type\":\"bytes32\"},{\"name\":\"kind\",\"type\":\"uint8\"},{\"name\":\"assetIn\",\"type\":\"address\"},{\"name\":\"assetOut\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"},{\"name\":\"userData\",\"type\":\"bytes\"}]},{\"name\":\"funds\",\"type\":\"tuple\",\"components\":[{\"name\":\"sender\",\"type\":\"address\"},{\"name\":\"fromInternalBalance\",\"type\":\"bool\"},{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"toInternalBalance\",\"type\":\"bool\"}]},{\"name\":\"limit\",\"type\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"amountCalculated\",\"type\":\"uint256\"}]}]}",
|
|
7
|
+
"router/curve-cryptoswap.abi.json": "{\"$comment\":\"Curve's uint256-index exchange(i, j, dx, min_dy), copied from the verified tricrypto-ng pool on Ethereum, CurveTricryptoOptimizedWETH 0x7F86Bf177Dd4F3494b841a37e810A34dD56c829B (vyper 0.3.9). Its uint256 output is deliberately not declared, like the registry's int128 CurveThreePoolABI: older crypto pools (tricrypto2) return nothing, and a declared output is decoded.\",\"abi\":[{\"name\":\"exchange\",\"type\":\"function\",\"stateMutability\":\"payable\",\"inputs\":[{\"name\":\"i\",\"type\":\"uint256\"},{\"name\":\"j\",\"type\":\"uint256\"},{\"name\":\"dx\",\"type\":\"uint256\"},{\"name\":\"min_dy\",\"type\":\"uint256\"}],\"outputs\":[]}]}",
|
|
8
|
+
"router/curve-stableswap.abi.json": "{\"$comment\":\"Curve's int128-index exchange(i, j, dx, min_dy): the registry's CurveThreePoolABI fragment (protocols/curve), which test/registry-abi.test.ts pins to 3pool on Ethereum, 0xbEbc44782C7dB0a1A60Cb6fe97d0b483032FF1C7. StableSwap and StableSwap-NG pools share the selector. No output is declared: a 3pool-era pool returns nothing, and a declared output is decoded.\",\"abi\":[{\"name\":\"exchange\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"i\",\"type\":\"int128\"},{\"name\":\"j\",\"type\":\"int128\"},{\"name\":\"dx\",\"type\":\"uint256\"},{\"name\":\"min_dy\",\"type\":\"uint256\"}],\"outputs\":[]}]}",
|
|
9
|
+
"router/dodo-v2-pool.abi.json": "{\"$comment\":\"DODO V2 sellBase(to) and sellQuote(to), copied from the verified DVM implementation on Ethereum, 0x7cA7B5EAAf526d93705d28c1b47E9739595C90E7 (solc 0.6.9), which the WETH/USDC DVM 0x8B2F062d112aE1ac6Ccc6C358cc40C9518c847Dc clones. DPP and DSP pools declare the same two functions.\",\"abi\":[{\"name\":\"sellBase\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"receiveQuoteAmount\",\"type\":\"uint256\"}]},{\"name\":\"sellQuote\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"receiveBaseAmount\",\"type\":\"uint256\"}]}]}",
|
|
10
|
+
"router/lb-pair.abi.json": "{\"$comment\":\"Trader Joe Liquidity Book swap(swapForY, to) and getSwapOut(amountIn, swapForY), copied from the verified LBPair implementation on Avalanche, 0x7a5b4e301fc2B148ceFe57257A236EB845082797 (solc 0.8.20), which every LB v2.2 pair clones. swap returns both lanes in one word: X in the low 128 bits, Y in the high 128.\",\"abi\":[{\"name\":\"swap\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"swapForY\",\"type\":\"bool\"},{\"name\":\"to\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"amountsOut\",\"type\":\"bytes32\"}]},{\"name\":\"getSwapOut\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"amountIn\",\"type\":\"uint128\"},{\"name\":\"swapForY\",\"type\":\"bool\"}],\"outputs\":[{\"name\":\"amountInLeft\",\"type\":\"uint128\"},{\"name\":\"amountOut\",\"type\":\"uint128\"},{\"name\":\"fee\",\"type\":\"uint128\"}]}]}",
|
|
11
|
+
"router/package.json": "{\"name\":\"@sauce/router\",\"version\":\"0.0.0\",\"private\":true,\"description\":\"SauceScript swap library: one function per venue, taking run-time arguments and returning the amount received. `main` names the NEUTRAL BASE the compiler suffixes per target (router.evm.js); there is no router.js and no SVM arm, because every venue here is an EVM contract and the Pot's Router is an EVM contract, so importing the package for any other target fails at the import instead of compiling something wrong.\",\"main\":\"router.js\"}",
|
|
12
|
+
"router/router.evm.js": "// @sauce/router — EVM arm. One function per swap venue.\n//\n// Every function takes RUN-TIME arguments, so a program can choose the pool, the direction and the\n// amount while it executes, and every one returns the amount of `tokenOut` the recipient received.\n// The arguments come in one order for every venue:\n//\n// venue(pool, tokenIn, tokenOut, amountIn, <the venue's own facts>, minOut, recipient)\n//\n// `pool` is the contract the swap calls: the pair, the pool, the Balancer V2 Vault, the Uniswap V4\n// PoolManager. `minOut` is the least the recipient may receive, and below it the whole program\n// reverts; `0n` sets no floor, except for `woofi`, which requires one. `recipient` receives the\n// output, and `ctx.self()` keeps it in the Pot. Every swap is EXACT INPUT: `amountIn` is what the\n// Pot pays, and nothing here can express an exact-output swap.\n//\n// HOW EACH VENUE IS REACHED.\n//\n// - Uniswap V2 (and its forks), Curve, Balancer V2, DODO V2, Trader Joe LB and WOOFi never call\n// back, so these functions call the pool itself: they push the input first (V2, DODO, LB,\n// WooPPV2) or approve exactly the input for the pool to pull (Curve, the Vault). No Router is\n// involved, so they run in any Pot.\n// - Uniswap V3 (and its forks), Uniswap V4 and Maverick V2 pools re-enter their caller mid-swap to\n// be paid. A program cannot answer that call, so these functions call the Pot's Router\n// (`ctx.self()`, whose fallback delegatecalls it), which can. The Router checks the pool's\n// tokens against `tokenIn`/`tokenOut` and pays only what the pool asks for, up to `amountIn`.\n//\n// Every token write is `@sauce/token`'s: OpenZeppelin `SafeERC20`, so a token that returns nothing\n// (USDT) works, one that returns `false` reverts the program, and an approval resets a standing\n// allowance first.\n//\n// NO REFUND PATH. A function that pushes its input first never catches the pool's failure: each of\n// those pools spends everything it is paid or reverts (a V2 pair and a DODO V2 pool book their whole\n// balance, LB reverts `LBPair__OutOfLiquidity` rather than fill part of an input, WooPPV2 books\n// exactly `fromAmount`), and only an uncaught revert unwinds the push. The `try` functions are the\n// one way to get a swap that may fail without reverting the program, and each loses nothing: it\n// returns `0n` having moved nothing. They exist only where that can be guaranteed — `tryUniswapV2`\n// and `tryTraderJoeLB` check, before anything moves, that the pool fills the whole input at the\n// floor; `tryCurve` and `tryBalancerV2` catch the pool's failure and reset the approval to zero.\n// DODO V2 and WOOFi have neither, so they have no `try` form.\n//\n// ORIENTATION is checked from the arguments while the program runs, so a direction cannot be\n// stated backwards. A Uniswap V2 pair's direction IS the sort order of `tokenIn` and `tokenOut`\n// (`token0` is the lower address), and so is a Uniswap V4 pool's; DODO V2 takes the pool's base and\n// quote tokens and Trader Joe LB its X and Y tokens, and each reverts unless `tokenIn` and `tokenOut`\n// are those two. The facts are the caller's: take them from the pool, as you take the pool itself.\n//\n// No module-level `const` here: a compile-time define replaces a same-named `const` in every module,\n// this one included.\nimport { approve, balanceOf, transfer } from \"@sauce/token\";\nimport BalancerV2Vault from \"./balancer-v2-vault.abi.json\";\nimport CurveCryptoSwap from \"./curve-cryptoswap.abi.json\";\nimport CurveStableSwap from \"./curve-stableswap.abi.json\";\nimport DODOV2Pool from \"./dodo-v2-pool.abi.json\";\nimport LBPair from \"./lb-pair.abi.json\";\nimport SauceRouter from \"./sauce-router.abi.json\";\nimport UniswapV2Pair from \"./uniswap-v2-pair.abi.json\";\nimport WooPPV2 from \"./woo-pp-v2.abi.json\";\n\n// ---------------------------------------------------------------------------------------------\n// Uniswap V2\n// ---------------------------------------------------------------------------------------------\n\n// A Uniswap V2 pair, or a fork's. `feePpm` is the pair's LP fee in parts per million: 3000 (0.30%)\n// for Uniswap V2, which `0` also means, and 2500 for PancakeSwap V2; 1_000_000 or more is refused.\n// The output is priced from the pair's reserves with the Router's own constant-product math, and\n// taken exactly, so the pair's K check holds for a correctly stated fee and reverts for one stated\n// too low. The input is pushed first and `swap` called with empty `data` (non-empty data makes the\n// pair call `uniswapV2Call` on the recipient). The pair books its whole balance, so it consumes the\n// input or reverts — past `uint112`, for one.\nexport function uniswapV2(\n pair: Address,\n tokenIn: Address,\n tokenOut: Address,\n amountIn: Uint256,\n feePpm: Uint256,\n minOut: Uint256,\n recipient: Address,\n): Uint256 {\n require(tokenIn != tokenOut);\n require(feePpm < 1000000n);\n let fee = feePpm;\n if (fee == 0n) {\n fee = 3000n;\n }\n const zeroForOne = tokenIn < tokenOut;\n const [reserve0, reserve1, updated] = UniswapV2Pair.at(pair).getReserves();\n let reserveIn = reserve1;\n let reserveOut = reserve0;\n if (zeroForOne) {\n reserveIn = reserve0;\n reserveOut = reserve1;\n }\n const inWithFee = amountIn * (1000000n - fee);\n const out = Math.mulDiv(inWithFee, reserveOut, reserveIn * 1000000n + inWithFee);\n require(out >= minOut);\n transfer(tokenIn, pair, amountIn);\n let amount0Out = out;\n let amount1Out = 0n;\n if (zeroForOne) {\n amount0Out = 0n;\n amount1Out = out;\n }\n const data = hex``;\n UniswapV2Pair.at(pair).swap(amount0Out, amount1Out, recipient, data);\n return out;\n}\n\n// `uniswapV2`, or nothing: `0n` with nothing moved when the pair cannot take the whole input — no\n// input, an input its reserve cannot hold (past `uint112`), or an output of zero or below the floor.\n// Otherwise the swap runs uncaught, so a failure the check did not foresee still reverts.\nexport function tryUniswapV2(\n pair: Address,\n tokenIn: Address,\n tokenOut: Address,\n amountIn: Uint256,\n feePpm: Uint256,\n minOut: Uint256,\n recipient: Address,\n): Uint256 {\n require(tokenIn != tokenOut);\n require(feePpm < 1000000n);\n let fee = feePpm;\n if (fee == 0n) {\n fee = 3000n;\n }\n const zeroForOne = tokenIn < tokenOut;\n const [reserve0, reserve1, updated] = UniswapV2Pair.at(pair).getReserves();\n let reserveIn = reserve1;\n let reserveOut = reserve0;\n if (zeroForOne) {\n reserveIn = reserve0;\n reserveOut = reserve1;\n }\n // type(uint112).max: a pair's reserve refuses to grow past it. Checked before the math, which an\n // input that large would overflow.\n if (amountIn == 0n || amountIn > 5192296858534827628530496329220095n - reserveIn) {\n return 0n;\n }\n const inWithFee = amountIn * (1000000n - fee);\n const out = Math.mulDiv(inWithFee, reserveOut, reserveIn * 1000000n + inWithFee);\n if (out == 0n || out < minOut) {\n return 0n;\n }\n transfer(tokenIn, pair, amountIn);\n let amount0Out = out;\n let amount1Out = 0n;\n if (zeroForOne) {\n amount0Out = 0n;\n amount1Out = out;\n }\n const data = hex``;\n UniswapV2Pair.at(pair).swap(amount0Out, amount1Out, recipient, data);\n return out;\n}\n\n// ---------------------------------------------------------------------------------------------\n// Curve\n// ---------------------------------------------------------------------------------------------\n\n// A Curve pool's 4-argument `exchange(i, j, dx, min_dy)`, after an approval of exactly the input,\n// which the pool pulls. `i`/`j` are the coins' indices; `uint256Indices` picks the CryptoSwap\n// spelling (uint256 indices) over the StableSwap and StableSwap-NG one (int128), and `minOut` is\n// the pool's own `min_dy`. `exchange`'s output is not decoded, because a 3pool-era pool returns none:\n// what was received is the Pot's `tokenOut` balance delta, forwarded when the recipient is not the\n// Pot.\nexport function curve(\n pool: Address,\n tokenIn: Address,\n tokenOut: Address,\n amountIn: Uint256,\n i: Uint256,\n j: Uint256,\n uint256Indices: bool,\n minOut: Uint256,\n recipient: Address,\n): Uint256 {\n require(tokenIn != tokenOut);\n approve(tokenIn, pool, amountIn);\n const before = balanceOf(tokenOut, ctx.self());\n if (uint256Indices) {\n CurveCryptoSwap.at(pool).exchange(i, j, amountIn, minOut);\n } else {\n CurveStableSwap.at(pool).exchange(i, j, amountIn, minOut);\n }\n const out = balanceOf(tokenOut, ctx.self()) - before;\n if (recipient != ctx.self()) {\n transfer(tokenOut, recipient, out);\n }\n return out;\n}\n\n// `curve`, or nothing: a failed `exchange` is caught, the approval reset to zero, and `0n` returned\n// with nothing moved. The pool's floor is at least 1, so a swap that ran never reads as skipped.\nexport function tryCurve(\n pool: Address,\n tokenIn: Address,\n tokenOut: Address,\n amountIn: Uint256,\n i: Uint256,\n j: Uint256,\n uint256Indices: bool,\n minOut: Uint256,\n recipient: Address,\n): Uint256 {\n require(tokenIn != tokenOut);\n let floor = minOut;\n if (floor == 0n) {\n floor = 1n;\n }\n approve(tokenIn, pool, amountIn);\n const before = balanceOf(tokenOut, ctx.self());\n let failed = false;\n if (uint256Indices) {\n CurveCryptoSwap.at(pool)\n .exchange(i, j, amountIn, floor)\n .catch(() => {\n failed = true;\n });\n } else {\n CurveStableSwap.at(pool)\n .exchange(i, j, amountIn, floor)\n .catch(() => {\n failed = true;\n });\n }\n if (failed) {\n approve(tokenIn, pool, 0n);\n return 0n;\n }\n // A swap that ran delivered something: the pool's own floor is at least 1.\n const out = balanceOf(tokenOut, ctx.self()) - before;\n require(out > 0n);\n if (recipient != ctx.self()) {\n transfer(tokenOut, recipient, out);\n }\n return out;\n}\n\n// ---------------------------------------------------------------------------------------------\n// Balancer V2\n// ---------------------------------------------------------------------------------------------\n\n// One Balancer V2 pool, through its Vault (`pool` is the Vault, `poolId` the pool's 32-byte id): an\n// approval of exactly the input, then `Vault.swap` GIVEN_IN with `minOut` as the Vault's own limit\n// and internal balances off. The Vault pays the recipient and returns the amount.\nexport function balancerV2(\n vault: Address,\n tokenIn: Address,\n tokenOut: Address,\n amountIn: Uint256,\n poolId: Uint256,\n minOut: Uint256,\n recipient: Address,\n): Uint256 {\n require(tokenIn != tokenOut);\n approve(tokenIn, vault, amountIn);\n const userData = hex``;\n // The deadline is the largest uint256: the swap runs in this transaction or not at all.\n return BalancerV2Vault.at(vault).swap(\n {\n poolId: poolId,\n kind: 0n,\n assetIn: tokenIn,\n assetOut: tokenOut,\n amount: amountIn,\n userData: userData,\n },\n {\n sender: ctx.self(),\n fromInternalBalance: false,\n recipient: recipient,\n toInternalBalance: false,\n },\n minOut,\n 115792089237316195423570985008687907853269984665640564039457584007913129639935n,\n );\n}\n\n// `balancerV2`, or nothing: a failed `Vault.swap` is caught, the approval reset to zero, and `0n`\n// returned with nothing moved. The Vault's limit is at least 1, so a swap that ran never reads as\n// skipped.\nexport function tryBalancerV2(\n vault: Address,\n tokenIn: Address,\n tokenOut: Address,\n amountIn: Uint256,\n poolId: Uint256,\n minOut: Uint256,\n recipient: Address,\n): Uint256 {\n require(tokenIn != tokenOut);\n let floor = minOut;\n if (floor == 0n) {\n floor = 1n;\n }\n approve(tokenIn, vault, amountIn);\n const userData = hex``;\n const out = BalancerV2Vault.at(vault)\n .swap(\n {\n poolId: poolId,\n kind: 0n,\n assetIn: tokenIn,\n assetOut: tokenOut,\n amount: amountIn,\n userData: userData,\n },\n {\n sender: ctx.self(),\n fromInternalBalance: false,\n recipient: recipient,\n toInternalBalance: false,\n },\n floor,\n 115792089237316195423570985008687907853269984665640564039457584007913129639935n,\n )\n .catch(() => {\n return 0n;\n });\n if (out == 0n) {\n approve(tokenIn, vault, 0n);\n }\n return out;\n}\n\n// ---------------------------------------------------------------------------------------------\n// DODO V2\n// ---------------------------------------------------------------------------------------------\n\n// A DODO V2 pool (DVM, DPP or DSP), given its `_BASE_TOKEN_()` and `_QUOTE_TOKEN_()`: push the input,\n// then `sellBase(to)` when it is the base token or `sellQuote(to)` when it is the quote token. The\n// side cannot come from address order, and the wrong one does not revert — the pool prices the\n// side it was told to sell, sees none of it, and keeps the push — so this reverts unless `tokenIn`\n// and `tokenOut` are the base and quote tokens, in either order. The pool books its whole balance,\n// so it consumes the input or reverts.\nexport function dodoV2(\n pool: Address,\n tokenIn: Address,\n tokenOut: Address,\n amountIn: Uint256,\n baseToken: Address,\n quoteToken: Address,\n minOut: Uint256,\n recipient: Address,\n): Uint256 {\n require(tokenIn != tokenOut);\n const sellBase = tokenIn == baseToken && tokenOut == quoteToken;\n require(sellBase || (tokenIn == quoteToken && tokenOut == baseToken));\n transfer(tokenIn, pool, amountIn);\n let out = 0n;\n if (sellBase) {\n out = DODOV2Pool.at(pool).sellBase(recipient);\n } else {\n out = DODOV2Pool.at(pool).sellQuote(recipient);\n }\n require(out >= minOut);\n return out;\n}\n\n// ---------------------------------------------------------------------------------------------\n// Trader Joe Liquidity Book\n// ---------------------------------------------------------------------------------------------\n\n// A Trader Joe LB pair, given its `getTokenX()` and `getTokenY()`: push the input, then\n// `swap(swapForY, to)` with `swapForY` = `tokenIn` is X. This reverts unless `tokenIn` and `tokenOut`\n// are X and Y, in either order. The pair walks its bins until the whole input is spent or reverts\n// `LBPair__OutOfLiquidity`, and returns both lanes packed in one word (X low, Y high); the output is\n// the lane it paid. LB amounts are `uint128`.\nexport function traderJoeLB(\n pair: Address,\n tokenIn: Address,\n tokenOut: Address,\n amountIn: Uint256,\n tokenX: Address,\n tokenY: Address,\n minOut: Uint256,\n recipient: Address,\n): Uint256 {\n require(tokenIn != tokenOut);\n const swapForY = tokenIn == tokenX && tokenOut == tokenY;\n require(swapForY || (tokenIn == tokenY && tokenOut == tokenX));\n require(amountIn >> 128n == 0n);\n transfer(tokenIn, pair, amountIn);\n const packed = LBPair.at(pair).swap(swapForY, recipient);\n let out = packed & 340282366920938463463374607431768211455n;\n if (swapForY) {\n out = packed >> 128n;\n }\n require(out >= minOut);\n return out;\n}\n\n// `traderJoeLB`, or nothing: `0n` with nothing moved unless `getSwapOut` says the pair spends the\n// whole input and pays at least the floor (and at least 1). Otherwise the swap runs uncaught, so a\n// failure the check did not foresee still reverts.\nexport function tryTraderJoeLB(\n pair: Address,\n tokenIn: Address,\n tokenOut: Address,\n amountIn: Uint256,\n tokenX: Address,\n tokenY: Address,\n minOut: Uint256,\n recipient: Address,\n): Uint256 {\n require(tokenIn != tokenOut);\n const swapForY = tokenIn == tokenX && tokenOut == tokenY;\n require(swapForY || (tokenIn == tokenY && tokenOut == tokenX));\n if (amountIn == 0n || amountIn >> 128n != 0n) {\n return 0n;\n }\n let floor = minOut;\n if (floor == 0n) {\n floor = 1n;\n }\n const [left, quoted, fee] = LBPair.at(pair).getSwapOut(amountIn, swapForY);\n if (left != 0n || quoted < floor) {\n return 0n;\n }\n transfer(tokenIn, pair, amountIn);\n const packed = LBPair.at(pair).swap(swapForY, recipient);\n let out = packed & 340282366920938463463374607431768211455n;\n if (swapForY) {\n out = packed >> 128n;\n }\n require(out >= floor);\n return out;\n}\n\n// ---------------------------------------------------------------------------------------------\n// WOOFi\n// ---------------------------------------------------------------------------------------------\n\n// WOOFi's WooPPV2 itself, not its WooRouterV2: push the input, then `swap` with `minOut` as the\n// pool's own `minToAmount` and no rebate. The pool prices from an oracle, so the floor is required.\n// It books exactly `fromAmount`, which is exactly the push, and reverts when its reserve, notional\n// cap or oracle refuses the trade.\nexport function woofi(\n pool: Address,\n tokenIn: Address,\n tokenOut: Address,\n amountIn: Uint256,\n minOut: Uint256,\n recipient: Address,\n): Uint256 {\n require(tokenIn != tokenOut);\n require(minOut > 0n);\n transfer(tokenIn, pool, amountIn);\n return WooPPV2.at(pool).swap(tokenIn, tokenOut, amountIn, minOut, recipient, 0n);\n}\n\n// ---------------------------------------------------------------------------------------------\n// Through the Pot's Router: Uniswap V3, Uniswap V4, Maverick V2\n// ---------------------------------------------------------------------------------------------\n\n// A Uniswap V3 pool, or a fork's that keeps its `swap`, through the Router's `swapV3`. A V3\n// `amountSpecified` is exact input when POSITIVE, so `amountIn` must be below 2^255. A non-zero\n// `sqrtPriceLimitX96` stops the swap at that price, and the Router then takes only what the pool\n// used; the rest stays in the Pot. The output is the lane the pool paid, from the Router's deltas.\n//\n// Synthra V3 and UnitFlow V3 pools call back under their own names, which only a generation-3\n// Router answers: on an older one the swap reverts.\nexport function uniswapV3(\n pool: Address,\n tokenIn: Address,\n tokenOut: Address,\n amountIn: Uint256,\n sqrtPriceLimitX96: Uint256,\n minOut: Uint256,\n recipient: Address,\n): Uint256 {\n require(amountIn >> 255n == 0n);\n const [amount0, amount1] = SauceRouter.at(ctx.self()).swapV3(\n pool,\n tokenIn,\n tokenOut,\n amountIn,\n sqrtPriceLimitX96,\n ctx.self(),\n recipient,\n );\n // A received lane is negative; unary `-` is two's-complement negation.\n let out = -amount0;\n if (tokenIn < tokenOut) {\n out = -amount1;\n }\n require(out >= minOut);\n return out;\n}\n\n// A Uniswap V4 pool, through the Router's `swapV4` (`pool` is the PoolManager). The pool key is\n// `tokenIn` and `tokenOut` in sort order — native ETH is the zero address, which sorts first — with\n// the pool's `fee`, `tickSpacing` and `hooks`, and the direction is that order. V4 reads a NEGATIVE\n// `amountSpecified` as exact input, so this passes `-amountIn` (unary negation, never `0n - x`,\n// which reverts), and `amountIn` must be below 2^255.\nexport function uniswapV4(\n poolManager: Address,\n tokenIn: Address,\n tokenOut: Address,\n amountIn: Uint256,\n fee: Uint256,\n tickSpacing: Uint256,\n hooks: Address,\n sqrtPriceLimitX96: Uint256,\n minOut: Uint256,\n recipient: Address,\n): Uint256 {\n require(tokenIn != tokenOut);\n require(amountIn >> 255n == 0n);\n const zeroForOne = tokenIn < tokenOut;\n let currency0 = tokenOut;\n let currency1 = tokenIn;\n if (zeroForOne) {\n currency0 = tokenIn;\n currency1 = tokenOut;\n }\n const [amount0, amount1] = SauceRouter.at(ctx.self()).swapV4(\n poolManager,\n {\n currency0: currency0,\n currency1: currency1,\n fee: fee,\n tickSpacing: tickSpacing,\n hooks: hooks,\n },\n zeroForOne,\n -amountIn,\n sqrtPriceLimitX96,\n ctx.self(),\n recipient,\n );\n // The lane the PoolManager paid out is positive.\n let out = amount0;\n if (zeroForOne) {\n out = amount1;\n }\n require(out >= minOut);\n return out;\n}\n\n// A Maverick V2 pool, through the Router's unified `swap` over the pool's full tick range. The\n// Router pays exactly what the pool asks for, so if the pool runs out before taking all of\n// `amountIn`, the rest stays in the Pot. The Router returns the input it paid and the output.\nexport function maverickV2(\n pool: Address,\n tokenIn: Address,\n tokenOut: Address,\n amountIn: Uint256,\n minOut: Uint256,\n recipient: Address,\n): Uint256 {\n require(amountIn >> 255n == 0n);\n const callback = hex``;\n const [paid, out] = SauceRouter.at(ctx.self()).swap({\n poolType: 7n,\n pool: pool,\n poolKey: { currency0: 0n, currency1: 0n, fee: 0n, tickSpacing: 0n, hooks: 0n },\n tokenIn: tokenIn,\n tokenOut: tokenOut,\n amountSpecified: amountIn,\n sqrtPriceLimitX96: 0n,\n payer: ctx.self(),\n recipient: recipient,\n callback: callback,\n });\n require(out >= minOut);\n return out;\n}\n",
|
|
13
|
+
"router/sauce-router.abi.json": "{\"$comment\":\"The Sauce Router's swapV3, swapV4 and unified swap, copied from the ISauceRouter ABI the kitchen-evm release publishes (sdk/src/artifacts/ISauceRouter.json after a sync). A Pot's fallback delegatecalls its Router, so a program calls these on ctx.self(). test/std/router/compile.test.ts holds each fragment equal to the released ABI's.\",\"abi\":[{\"name\":\"swapV3\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"pool\",\"type\":\"address\"},{\"name\":\"tokenIn\",\"type\":\"address\"},{\"name\":\"tokenOut\",\"type\":\"address\"},{\"name\":\"amountSpecified\",\"type\":\"int256\"},{\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"},{\"name\":\"payer\",\"type\":\"address\"},{\"name\":\"recipient\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"amount0\",\"type\":\"int256\"},{\"name\":\"amount1\",\"type\":\"int256\"}]},{\"name\":\"swapV4\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"poolManager\",\"type\":\"address\"},{\"name\":\"key\",\"type\":\"tuple\",\"components\":[{\"name\":\"currency0\",\"type\":\"address\"},{\"name\":\"currency1\",\"type\":\"address\"},{\"name\":\"fee\",\"type\":\"uint24\"},{\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"name\":\"hooks\",\"type\":\"address\"}]},{\"name\":\"zeroForOne\",\"type\":\"bool\"},{\"name\":\"amountSpecified\",\"type\":\"int256\"},{\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"},{\"name\":\"payer\",\"type\":\"address\"},{\"name\":\"recipient\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"amount0\",\"type\":\"int256\"},{\"name\":\"amount1\",\"type\":\"int256\"}]},{\"name\":\"swap\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"params\",\"type\":\"tuple\",\"components\":[{\"name\":\"poolType\",\"type\":\"uint8\"},{\"name\":\"pool\",\"type\":\"address\"},{\"name\":\"poolKey\",\"type\":\"tuple\",\"components\":[{\"name\":\"currency0\",\"type\":\"address\"},{\"name\":\"currency1\",\"type\":\"address\"},{\"name\":\"fee\",\"type\":\"uint24\"},{\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"name\":\"hooks\",\"type\":\"address\"}]},{\"name\":\"tokenIn\",\"type\":\"address\"},{\"name\":\"tokenOut\",\"type\":\"address\"},{\"name\":\"amountSpecified\",\"type\":\"int256\"},{\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"},{\"name\":\"payer\",\"type\":\"address\"},{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"callback\",\"type\":\"bytes\"}]}],\"outputs\":[{\"name\":\"amount0\",\"type\":\"int256\"},{\"name\":\"amount1\",\"type\":\"int256\"}]}]}",
|
|
14
|
+
"router/uniswap-v2-pair.abi.json": "{\"$comment\":\"UniswapV2Pair getReserves and swap, copied from the verified Uniswap V2 WETH/USDC pair on Ethereum, 0xB4e16d0168e52d35CaCD2c6185b44281Ec28C9Dc (solc 0.5.16). Every Uniswap V2 fork's pair keeps both signatures.\",\"abi\":[{\"name\":\"getReserves\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"_reserve0\",\"type\":\"uint112\"},{\"name\":\"_reserve1\",\"type\":\"uint112\"},{\"name\":\"_blockTimestampLast\",\"type\":\"uint32\"}]},{\"name\":\"swap\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\"}],\"outputs\":[]}]}",
|
|
15
|
+
"router/woo-pp-v2.abi.json": "{\"$comment\":\"WOOFi WooPPV2.swap, copied from the verified WooPPV2 on Arbitrum, 0xEd9e3f98bBed560e66B89AaC922E29D4596A9642 (solc 0.8.14). The Base deployment's implementation is not verified on any explorer; its dispatch table carries the same selector, 0x7dc20382.\",\"abi\":[{\"name\":\"swap\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"fromToken\",\"type\":\"address\"},{\"name\":\"toToken\",\"type\":\"address\"},{\"name\":\"fromAmount\",\"type\":\"uint256\"},{\"name\":\"minToAmount\",\"type\":\"uint256\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"rebateTo\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"realToAmount\",\"type\":\"uint256\"}]}]}",
|
|
6
16
|
"token/erc20.abi.json": "[{\"name\":\"transfer\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}]},{\"name\":\"approve\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}]},{\"name\":\"transferFrom\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}]},{\"name\":\"balanceOf\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}]},{\"name\":\"allowance\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"spender\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}]},{\"name\":\"totalSupply\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}]},{\"name\":\"name\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\"}]},{\"name\":\"symbol\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\"}]},{\"name\":\"decimals\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}]},{\"name\":\"Transfer\",\"type\":\"event\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false}]},{\"name\":\"Approval\",\"type\":\"event\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true},{\"name\":\"spender\",\"type\":\"address\",\"indexed\":true},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false}]}]",
|
|
7
17
|
"token/package.json": "{\"name\":\"@sauce/token\",\"version\":\"0.0.0\",\"private\":true,\"description\":\"SauceScript ERC20/SPL token library. `main` names the NEUTRAL BASE the compiler suffixes per target (token.evm.js / token.svm.js) — there is deliberately no token.js: a token program is inherently target-specific, so there is no target-neutral body, and shipping an empty or guessed-signature neutral file would turn a missing arm into a confusing missing-export (or, worse, a silently wrong compile) instead of a clear failure to import the package.\",\"main\":\"token.js\"}",
|
|
8
|
-
"token/
|
|
9
|
-
"token/token.
|
|
18
|
+
"token/permit2.abi.json": "[{\"name\":\"approve\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\"},{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint160\"},{\"name\":\"expiration\",\"type\":\"uint48\"}],\"outputs\":[]},{\"name\":\"transferFrom\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint160\"},{\"name\":\"token\",\"type\":\"address\"}],\"outputs\":[]},{\"name\":\"permitTransferFrom\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"permit\",\"type\":\"tuple\",\"components\":[{\"name\":\"permitted\",\"type\":\"tuple\",\"components\":[{\"name\":\"token\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}]},{\"name\":\"nonce\",\"type\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\"}]},{\"name\":\"transferDetails\",\"type\":\"tuple\",\"components\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"requestedAmount\",\"type\":\"uint256\"}]},{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"signature\",\"type\":\"bytes\"}],\"outputs\":[]},{\"name\":\"nonceBitmap\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"wordPosition\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}]},{\"name\":\"lockdown\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"approvals\",\"type\":\"tuple[]\",\"components\":[{\"name\":\"token\",\"type\":\"address\"},{\"name\":\"spender\",\"type\":\"address\"}]}],\"outputs\":[]},{\"name\":\"SignatureExpired\",\"type\":\"error\",\"inputs\":[{\"name\":\"signatureDeadline\",\"type\":\"uint256\"}]},{\"name\":\"InvalidNonce\",\"type\":\"error\",\"inputs\":[]},{\"name\":\"InvalidSignature\",\"type\":\"error\",\"inputs\":[]},{\"name\":\"InvalidSignatureLength\",\"type\":\"error\",\"inputs\":[]},{\"name\":\"InvalidSigner\",\"type\":\"error\",\"inputs\":[]},{\"name\":\"InvalidContractSignature\",\"type\":\"error\",\"inputs\":[]},{\"name\":\"InvalidAmount\",\"type\":\"error\",\"inputs\":[{\"name\":\"maxAmount\",\"type\":\"uint256\"}]},{\"name\":\"LengthMismatch\",\"type\":\"error\",\"inputs\":[]},{\"name\":\"AllowanceExpired\",\"type\":\"error\",\"inputs\":[{\"name\":\"deadline\",\"type\":\"uint256\"}]},{\"name\":\"InsufficientAllowance\",\"type\":\"error\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\"}]},{\"name\":\"ExcessiveInvalidation\",\"type\":\"error\",\"inputs\":[]}]",
|
|
19
|
+
"token/token.evm.js": "// @sauce/token — EVM arm (ERC20).\n// Selected by the compiler for `--target evm`. The reads are ordinary ABI-typed calls; the writes\n// are OpenZeppelin `SafeERC20`, for the reasons below. `token`/`account` addresses ride calldata\n// like any other value.\nimport ERC20 from \"./erc20.abi.json\";\n// The registry's Permit2 ABI (`protocols/permit2`), whole: `test/std/token/compile.test.ts` holds\n// this file equal to it, so what `permitTransferFrom` below binds is what the registry evidence pins\n// against every deployed Permit2. A copy beside this module rather than an import of the registry's\n// file, because a package resolved off disk cannot reach outside its own directory.\nimport PERMIT2 from \"./permit2.abi.json\";\n\nexport function balanceOf(token: Address, account: Account): Uint256 {\n return ERC20.at(token).balanceOf(account);\n}\n\nexport function totalSupply(token: Address): Uint256 {\n return ERC20.at(token).totalSupply();\n}\n\nexport function decimals(token: Address): Uint256 {\n return ERC20.at(token).decimals();\n}\n\nexport function allowance(token: Address, owner: Address, spender: Address): Uint256 {\n return ERC20.at(token).allowance(owner, spender);\n}\n\n// `SafeERC20`'s check on what a write returned: empty returndata is success only from an address\n// that HAS code, and anything else must be an ABI word equal to 1. Both halves matter. A token that\n// returns `false` instead of reverting is the case `SafeERC20` exists for, and dropping the check\n// loses value silently; a call to an address with no code always \"succeeds\", so an unchecked write\n// to a mistyped address is a no-op the program never hears about.\n//\n// `abi.decode` as a `Uint256`, then an explicit `== 1`, because each rejects what the other lets\n// through. The decode refuses fewer than 32 bytes, which a comparison on the raw bytes would\n// zero-pad into a value, and reads only the first word of a longer return, as OpenZeppelin does. The\n// comparison refuses any word other than 1; decoding as `[\"bool\"]` instead would not, since this\n// engine does not reject a `bool` word that is neither 0 nor 1.\nfunction checked(token: Address, result: bytes): void {\n if (result.length == 0) {\n require(ctx.codeSize(token) > 0);\n } else {\n let [ok] = abi.decode(result, [\"Uint256\"]);\n require(ok == 1n);\n }\n}\n\n// WHY THE WRITES DO NOT GO THROUGH `ERC20.at(token).transfer(...)` like the reads do. The ABI\n// declares a `bool` return, and the compiler lowers a declared output to call-THEN-DECODE even when\n// the caller discards it. Decoding from empty returndata reverts, so the typed spelling reverts on\n// every token that returns nothing — USDT among them — for a transfer that actually succeeded.\n// `evm.call` hands back the raw returndata instead, which is what makes \"empty OR true\" expressible.\n//\n// The selectors are written out because the call is raw. They are the ERC20 standard's own, and\n// `test/std/token/compile.test.ts` pins each one against `keccak256` of its canonical signature.\nexport function transfer(token: Address, to: Address, amount: Uint256): void {\n const selector = hex`a9059cbb`;\n const data = selector.concat(to.toBytesBe(32)).concat(amount.toBytesBe(32));\n checked(token, evm.call(token, 0n, data));\n}\n\nexport function transferFrom(token: Address, from: Address, to: Address, amount: Uint256): void {\n const selector = hex`23b872dd`;\n const data = selector\n .concat(from.toBytesBe(32))\n .concat(to.toBytesBe(32))\n .concat(amount.toBytesBe(32));\n checked(token, evm.call(token, 0n, data));\n}\n\n// `approve` is `SafeERC20.forceApprove`, not `safeApprove`. USDT reverts when a NON-ZERO allowance\n// is changed to another non-zero value, so an approve is only safe from a zero base. OZ tries the\n// approve and falls back on catching the revert; a reverting `evm.call` cannot be caught in a Sauce\n// program, so this READS the allowance first — a `uint256`, always safe to decode — and resets only\n// when there is something to reset. Same end state, decided before the call instead of after, at\n// the cost of one STATICCALL.\n//\n// The owner is `ctx.self()` because that is the address whose allowance this call will set: the\n// executing contract is the `msg.sender` of the CALL below.\nexport function approve(token: Address, spender: Address, amount: Uint256): void {\n const selector = hex`095ea7b3`;\n const spenderWord = spender.toBytesBe(32);\n const zero = 0n;\n if (ERC20.at(token).allowance(ctx.self(), spender) > 0n) {\n checked(token, evm.call(token, 0n, selector.concat(spenderWord).concat(zero.toBytesBe(32))));\n }\n checked(token, evm.call(token, 0n, selector.concat(spenderWord).concat(amount.toBytesBe(32))));\n}\n\n// THE PULLS: moving tokens INTO the program from the account that holds them. Each is a SafeERC20\n// `safeTransferFrom`, however it is authorised:\n//\n// - a standing allowance: `transferFrom(token, owner, ctx.self(), amount)`, above;\n// - an EIP-2612 signature: `permit(...)` sets that allowance, then the same `transferFrom`;\n// - a Permit2 signature: `permitTransferFrom(...)`, where Permit2 itself does the transfer, with\n// Solmate's `SafeTransferLib.safeTransferFrom` (empty or `true` returndata, else revert).\n\n// `owner`'s nonce on an EIP-2612 token: `nonces(address)`, read raw (the ERC-20 ABI above has no\n// `nonces`), and decoded as the `uint256` the standard declares.\nfunction permitNonce(token: Address, owner: Address): Uint256 {\n const selector = hex`7ecebe00`;\n let [nonce] = abi.decode(evm.static(token, selector.concat(owner.toBytesBe(32))), [\"Uint256\"]);\n return nonce;\n}\n\n// EIP-2612 `permit`: `owner`'s signature, `(v, r, s)` over `Permit(owner, spender, value, nonce,\n// deadline)`, setting `spender`'s allowance to `value`. `permit` returns nothing, so its returndata\n// says nothing either way; what proves it ran is OpenZeppelin `safePermit`'s check, that the token's\n// nonce for `owner` moved by exactly one. Without it a token with no `permit` but a permissive\n// fallback (WETH9's accepts any call) would pass for one that granted the allowance.\nexport function permit(\n token: Address,\n owner: Address,\n spender: Address,\n value: Uint256,\n deadline: Uint256,\n v: Uint256,\n r: Uint256,\n s: Uint256,\n): void {\n const before = permitNonce(token, owner);\n const selector = hex`d505accf`;\n const data = selector\n .concat(owner.toBytesBe(32))\n .concat(spender.toBytesBe(32))\n .concat(value.toBytesBe(32))\n .concat(deadline.toBytesBe(32))\n .concat(v.toBytesBe(32))\n .concat(r.toBytesBe(32))\n .concat(s.toBytesBe(32));\n evm.call(token, 0n, data);\n require(permitNonce(token, owner) == before + 1n);\n}\n\n// Permit2 SignatureTransfer: `amount` of `token` from `owner` to this program (`ctx.self()`) on\n// `owner`'s one-time EIP-712 signature over `PermitTransferFrom(TokenPermissions(token, amount),\n// spender, nonce, deadline)`, the spender being this program — the caller Permit2 checks it\n// against. `permit2` is the Permit2 deployment (`Permit2.Permit2` in a route body). Permit2 spends\n// `nonce` and refuses a passed `deadline`, and moves the tokens with `SafeTransferLib`, so a\n// token that returns nothing (USDT) works and one that returns `false` reverts the program.\nexport function permitTransferFrom(\n token: Address,\n owner: Address,\n amount: Uint256,\n nonce: Uint256,\n deadline: Uint256,\n signature: bytes,\n permit2: Address,\n): void {\n PERMIT2.at(permit2).permitTransferFrom(\n { permitted: { token: token, amount: amount }, nonce: nonce, deadline: deadline },\n { to: ctx.self(), requestedAmount: amount },\n owner,\n signature,\n );\n}\n",
|
|
20
|
+
"token/token.svm.js": "// @sauce/token — SVM arm (SPL Token and Token-2022).\n// Selected by the compiler for `--target svm`. Reads are a byte-range `svm.sload` into the SPL\n// account layout; writes are a `svm.call` CPI into a token program, which each write requires by\n// identity. Accounts are passed as `Account` slots; the token's own identity (`token`) is a plain\n// address value (the mint pubkey).\n//\n// TWO TOKEN PROGRAMS. A mint, and every token account of it, is owned by the legacy SPL Token program\n// (`Tokenkeg…`) or by Token-2022 (`TokenzQd…`). Token-2022 keeps the legacy layouts as its base and\n// appends extensions after them, so one set of offsets reads both:\n// - every read (`balanceOf`, `ownerOf`, `allowance`, `totalSupply`, `decimals`) takes an account\n// owned by either program;\n// - the checked writes (`transferChecked`, `approveChecked`) CPI into whichever of the two owns the\n// accounts — the `TransferChecked`/`ApproveChecked` instructions, which carry the mint and its\n// decimals and which both programs implement. Token-2022 refuses the plain `Transfer` for a mint\n// whose extensions need the mint to move it (a transfer fee, a transfer hook, a pause), so a\n// program that moves Token-2022 tokens uses these;\n// - the plain writes (`transfer`, `transferFrom`, `approve`) are unchanged: they CPI the legacy\n// `Transfer`/`Approve` into legacy SPL Token only, and refuse a Token-2022 callee or account.\n//\n// Every function requires `<account>.owner` to be a token program before it reads an SPL layout out\n// of an account. The layout checks below say what the bytes claim to be; the owner says who was\n// allowed to write them, and only the owning program may. Without it a hand-assembled account with the\n// right bytes at the right offsets reads exactly like a genuine one.\n//\n// Each check reverts with a reason, so a refused account is named rather than failing in silence:\n// \"not a token account\" (an owner that is no token program, or a Token-2022 account that is not a\n// token account), \"wrong mint\", \"not a mint\", \"uninitialized mint\", \"not the token program\" (the CPI\n// callee), \"amount over u64\" and \"transfer hook\" (a Token-2022 mint whose transfer hook names a\n// program, below). They are short on purpose: a reason is compiled into the program byte for byte,\n// and on Solana the program rides in a transaction of at most 1,232 bytes (`transfer`'s four add 65).\n//\n// SPL token-account layout (`spl_token::state::Account`, `LEN` = 165): mint@0 (pubkey), owner@32\n// (pubkey: whose balance it is, a wallet or a PDA such as a Pot), amount@64 (u64 LE), delegate\n// COption tag@72 (u32 LE: 0 = None, 1 = Some), delegate@76 (pubkey), state@108 (u8), is_native\n// COption@109, delegated_amount@121 (u64 LE), close_authority COption@129.\n// SPL mint layout (`spl_token::state::Mint`, `LEN` = 82): supply@36 (u64 LE), decimals@44 (u8), initialized@45 (bool).\n// Instruction tags: Transfer=3, Approve=4, TransferChecked=12, ApproveChecked=13.\n//\n// Token-2022 (`spl_token_2022::extension`): an account with no extensions is exactly the legacy size,\n// 82 bytes for a mint and 165 for a token account. An account WITH extensions is longer than 165: a\n// mint's 82 bytes are padded to 165, and either way byte 165 is the account type (1 = Mint,\n// 2 = Account), followed by the extensions as TLV entries (a u16 type, a u16 length, the value).\n// Token-2022 refuses to read a 355-byte account as either, because that is the size of its multisig,\n// whose byte 165 falls inside a signer key; so do these checks.\n//\n// The token program is an `Account` the caller attaches, like every other: `svm.call`'s callee is\n// named by the slot it occupies, so it rides in as `tokenProgram` and reaches the manifest under that\n// name. Which account arrives there is the caller's choice, so each write `require`s that it is a\n// token program — the same shape as the mint check beside it, and the reason `Account` compares for\n// identity.\n\nconst SPL_TOKEN_PROGRAM = 0x06ddf6e1d765a193d9cbe146ceeb79ac1cb485ed5f5b37913a8cf5857eff00a9;\nconst TOKEN_2022_PROGRAM = 0x06ddf6e1ee758fde18425dbce46ccddab61afc4d83b90d27febdf928d8a18bfc;\n\n// `spl_token::state::Mint::LEN` — the legacy SPL mint's exact size. Exact, not a floor: the legacy\n// program's `Pack` refuses any other length for a mint, so every account it ever initialized as one\n// is this size and nothing genuine is turned away by requiring it. A floor (`>= 82`) would admit the\n// 165-byte token account this exists to reject, since a token account is longer than a mint, not\n// shorter. A Token-2022 mint is this size too until it carries an extension.\nconst SPL_MINT_LEN = 82;\n\n// `spl_token::state::Account::LEN`, and the offset of a Token-2022 account's type byte.\nconst SPL_ACCOUNT_LEN = 165;\n\n// `spl_token_2022::state::Multisig::LEN`, the one length above 165 that is no extended account.\nconst SPL_MULTISIG_LEN = 355;\n\n// A token account of `token`, owned by either token program. A legacy SPL Token account is taken on\n// its owner, as it always was. A Token-2022 one is 165 bytes, or longer with its type byte (165) set\n// to Account (2), and never the multisig's 355; that keeps out a Token-2022 mint, whose first 32\n// bytes are its mint authority. Then its mint@0 must be `token`.\n//\n// The reads share it rather than each repeating it: a function is emitted once however many calls\n// reach it, so a program that reads an account twice over (`ownerOf`, then `balanceOf`) carries one\n// copy of the checks and their reasons, at the price of a call for a program that reads once.\nfunction requireTokenAccount(token: Address, account: Account): void {\n if (account.owner != SPL_TOKEN_PROGRAM) {\n const size = account.dataLen;\n require(account.owner == TOKEN_2022_PROGRAM &&\n (size == SPL_ACCOUNT_LEN ||\n (size > SPL_ACCOUNT_LEN &&\n size != SPL_MULTISIG_LEN &&\n svm.sload(account, SPL_ACCOUNT_LEN, 1).toLe() == 2)), \"not a token account\");\n }\n require(svm.sload(account, 0, 32).toBe() == token, \"wrong mint\");\n}\n\n// An initialized mint, owned by either token program: 82 bytes, or a Token-2022 mint longer than 165\n// with its type byte set to Mint (1). Owner must be checked before size, and size before the type\n// byte, which only an extended account has: each program owns both mints and token accounts, and a\n// legacy mint is exactly 82 bytes. Size alone also admits permissionlessly allocated but\n// uninitialized accounts, so require the mint's initialization byte before reading its fields.\nfunction requireMint(token: Account): void {\n const size = token.dataLen;\n if (token.owner == TOKEN_2022_PROGRAM) {\n require(size == SPL_MINT_LEN ||\n (size > SPL_ACCOUNT_LEN &&\n size != SPL_MULTISIG_LEN &&\n svm.sload(token, SPL_ACCOUNT_LEN, 1).toLe() == 1), \"not a mint\");\n } else {\n require(token.owner == SPL_TOKEN_PROGRAM && size == SPL_MINT_LEN, \"not a mint\");\n }\n require(svm.sload(token, 45, 1).toLe() == 1, \"uninitialized mint\");\n}\n\nexport function balanceOf(token: Address, account: Account): Uint256 {\n requireTokenAccount(token, account);\n return svm.sload(account, 64, 8).toLe();\n}\n\n// Whose token account this is: its owner@32, a wallet or a PDA such as a Pot. Not `account.owner`,\n// which is the program that owns the account's data (a token program, checked first as everywhere\n// here), and not the `authority` a write is signed by: SPL accepts the account's delegate there too,\n// so a `transfer(…, authority)` that succeeds proves `authority` may spend from `source`, not that\n// `source` is `authority`'s. A program measuring its own balance requires\n// `ownerOf(token, account) == authority` first. There is no EVM counterpart: an ERC-20 balance has no\n// account apart from its holder, so the holder is already the address a program passes.\nexport function ownerOf(token: Address, account: Account): Address {\n requireTokenAccount(token, account);\n return svm.sload(account, 32, 32).toBe();\n}\n\nexport function totalSupply(token: Account): Uint256 {\n requireMint(token);\n return svm.sload(token, 36, 8).toLe();\n}\n\nexport function decimals(token: Account): Uint256 {\n requireMint(token);\n return svm.sload(token, 44, 1).toLe();\n}\n\nexport function allowance(token: Address, account: Account, spender: Address): Uint256 {\n requireTokenAccount(token, account);\n // The delegate is a `COption<Pubkey>`: read `delegated_amount` only when the tag is `Some` (1)\n // *and* the delegate matches `spender`. spl-token leaves the delegate bytes stale after `Revoke`,\n // so the tag must gate the pubkey compare — else a revoked delegate would still match.\n if (svm.sload(account, 72, 4).toLe() == 1 && svm.sload(account, 76, 32).toBe() == spender) {\n return svm.sload(account, 121, 8).toLe();\n }\n return 0;\n}\n\n// The writes enforce the named asset the same way the reads do: `require` the source ATA's `mint`@0\n// equals `token`, so a caller can't attach an account of the wrong mint. `source` only, matching the\n// reads and for the same reason: `dest` is the CPI's to validate, and the genuine SPL processor does. Two documented cross-target\n// divergences (see README's cross-target divergences ledger): (1) the `u64` amount guard — SPL\n// amounts are `u64`, so an infinite-approve (`2^256 - 1`) reverts here while it succeeds on the EVM\n// (`uint256`); (2) the mint check reverts on a wrong `token`, where the EVM read arm returns 0 for a\n// codeless/wrong address — an error-path divergence, not a value one.\nexport function transfer(\n token: Address,\n tokenProgram: Account,\n source: Account,\n dest: Account,\n authority: Account,\n amount: Uint256,\n): void {\n require(tokenProgram == SPL_TOKEN_PROGRAM, \"not the token program\");\n require(source.owner == SPL_TOKEN_PROGRAM, \"not a token account\");\n require(svm.sload(source, 0, 32).toBe() == token, \"wrong mint\");\n require(amount <= 0xffffffffffffffff, \"amount over u64\");\n let data = hex`03`;\n svm.call(tokenProgram, [source, dest, authority], data.concat(amount.toBytesLe(8)));\n}\n\n// SPL has no separate delegated-transfer instruction: `Transfer` (tag 3) covers both the owner and\n// the delegate moving funds, and which one it is follows from the `authority` the caller attaches —\n// so `transferFrom` IS `transfer` here, and delegates to it rather than repeating the CPI. (The EVM\n// arm keeps two distinct methods because ERC20 genuinely has two: `transfer` moves the caller's\n// balance, `transferFrom` spends an allowance.)\nexport function transferFrom(\n token: Address,\n tokenProgram: Account,\n source: Account,\n dest: Account,\n authority: Account,\n amount: Uint256,\n): void {\n transfer(token, tokenProgram, source, dest, authority, amount);\n}\n\n// `approve` sets a single SPL delegate on `source` (SPL tracks one delegate per account, so a second\n// approve overwrites the first) — the EVM's `approve` writes a per-spender allowance map, so this\n// arm and `allowance` are single-delegate where the EVM is per-spender (a documented divergence).\nexport function approve(\n token: Address,\n tokenProgram: Account,\n source: Account,\n delegate: Account,\n authority: Account,\n amount: Uint256,\n): void {\n require(tokenProgram == SPL_TOKEN_PROGRAM, \"not the token program\");\n require(source.owner == SPL_TOKEN_PROGRAM, \"not a token account\");\n require(svm.sload(source, 0, 32).toBe() == token, \"wrong mint\");\n require(amount <= 0xffffffffffffffff, \"amount over u64\");\n let data = hex`04`;\n svm.call(tokenProgram, [source, delegate, authority], data.concat(amount.toBytesLe(8)));\n}\n\n// The checked writes, for either token program: `TransferChecked` (12) and `ApproveChecked` (13) name\n// the mint as an account and carry its decimals. The callee must be one of the two token programs,\n// and the program that owns `source`, `dest` and `mint` — a Token-2022 account is moved by Token-2022\n// and a legacy one by legacy SPL Token, never across. `mint` must be `token`; the token program then\n// refuses a `source` or `dest` of any other mint, so the asset is pinned without reading either.\n// `decimals` must be the mint's own: the token program refuses a mismatch too, but the instruction\n// carries one byte, so a value past 255 would wrap onto the mint's and pass, where this refuses it.\n//\n// What Token-2022's extensions do to a checked write is the token program's, not this library's: a\n// transfer fee is withheld from what `dest` receives (a program measures the balance it got, not the\n// amount it sent), a paused mint and a frozen account refuse the CPI with the token program's own\n// error, and amounts are always raw base units (a scaled UI amount is a display multiplier no program\n// sees). The one extension refused here is a transfer hook that names a program: Token-2022 then\n// calls that program with the accounts its hook lists, which a fixed list of four cannot carry, so\n// the transfer is refused as \"transfer hook\" before it is attempted. A hook extension with no program\n// set is no hook, and transfers as any other mint.\nexport function transferChecked(\n token: Address,\n tokenProgram: Account,\n source: Account,\n mint: Account,\n dest: Account,\n authority: Account,\n amount: Uint256,\n decimals: Uint256,\n): void {\n require(tokenProgram == SPL_TOKEN_PROGRAM ||\n tokenProgram == TOKEN_2022_PROGRAM, \"not the token program\");\n const program = tokenProgram.address;\n require(source.owner == program && dest.owner == program, \"not a token account\");\n require(mint.owner == program, \"not a mint\");\n require(mint == token, \"wrong mint\");\n require(decimals == svm.sload(mint, 44, 1).toLe(), \"wrong decimals\");\n require(amount <= 0xffffffffffffffff, \"amount over u64\");\n // A mint's extensions follow its type byte, each a u16 type, a u16 length and the value.\n // TransferHook (type 14) is its authority, then its program: all zeros is no program. A legacy mint,\n // and a Token-2022 mint with no extensions, are 82 bytes, so the walk never starts. Token-2022 stops\n // at an Uninitialized (0) entry and writes nothing after one; walking on reads only zeros.\n let at = SPL_ACCOUNT_LEN + 1;\n while (at + 4 <= mint.dataLen) {\n const kind = svm.sload(mint, at, 2).toLe();\n require(kind != 14 || svm.sload(mint, at + 36, 32).toBe() == 0, \"transfer hook\");\n at = at + 4 + svm.sload(mint, at + 2, 2).toLe();\n }\n let data = hex`0c`;\n svm.call(\n tokenProgram,\n [source, mint, dest, authority],\n data.concat(amount.toBytesLe(8)).concat(decimals.toBytesLe(1)),\n );\n}\n\n// `ApproveChecked` sets the single delegate on `source`, as `approve` does, for either token program.\n// The delegate is any key, not a token account, so only `source` and `mint` are checked. A transfer\n// hook runs on transfers only, so an approval needs no walk.\nexport function approveChecked(\n token: Address,\n tokenProgram: Account,\n source: Account,\n mint: Account,\n delegate: Account,\n authority: Account,\n amount: Uint256,\n decimals: Uint256,\n): void {\n require(tokenProgram == SPL_TOKEN_PROGRAM ||\n tokenProgram == TOKEN_2022_PROGRAM, \"not the token program\");\n const program = tokenProgram.address;\n require(source.owner == program, \"not a token account\");\n require(mint.owner == program, \"not a mint\");\n require(mint == token, \"wrong mint\");\n require(decimals == svm.sload(mint, 44, 1).toLe(), \"wrong decimals\");\n require(amount <= 0xffffffffffffffff, \"amount over u64\");\n let data = hex`0d`;\n svm.call(\n tokenProgram,\n [source, mint, delegate, authority],\n data.concat(amount.toBytesLe(8)).concat(decimals.toBytesLe(1)),\n );\n}\n",
|
|
10
21
|
};
|
|
11
22
|
/** Each shipped `.sauce.ts` recipe, keyed by path under `src/`, verbatim. */
|
|
12
23
|
export const RECIPE_SOURCES = {
|
|
13
|
-
"recipes/cctp-split.sauce.ts": "/**\n * cctp-split — move a USDC `CCTP_AMOUNT` in CCTP burns capped at `CCTP_CHUNK_SIZE`, ATOMIC in one\n * Sauce cook.\n *\n * The INTERFACE is the whole point: you pass the TOTAL amount and the per-message chunk size, and\n * THE SCRIPT does the splitting — `count = amount / chunkSize` full-cap burns, then one final burn of\n * the leftover `remainder = amount % chunkSize` when it isn't zero. No divisibility assumption, no\n * remainder dropped: `$2.50` at a `$1` cap becomes `$1 + $1 + $0.50`. The TypeScript builder computes\n * nothing; it only hands the script its two numbers.\n *\n * THIS INTENT'S VALUES ARRIVE AS `defines`. The five consts below are declared with placeholder\n * defaults so this file reads (and compiles) standalone; the builder\n * (`recipes/cctp-transfer.ts`) overrides each one per intent, and a define REPLACES the module's own\n * `const` of that name. They are constant-folded, so a given set of values yields fixed bytecode.\n * Standalone asset, not a string assembled in TypeScript. NOT the same shape as `settle.sauce.ts`: that one takes its values as runtime entry\n * arguments precisely so its bytecode stays invariant and hash-pinnable (`settle.sauce.ts:44`), where\n * these fold the values in and change bytecode with them.\n *\n * DSL-NATIVE, ZERO HARDCODING — no ABI, no address:\n * • `USDC` resolves to the source chain's USDC address from the token registry.\n * • `Cctp.TokenMessenger.depositForBurn(...)` resolves interface + address from the CCTP protocol\n * descriptor.\n * • `Cctp.TokenMessenger` (the approve spender) resolves to that same address as a VALUE — the\n * accessor works in value position, not just as a call target (equivalent to the underscore\n * ambient define `Cctp_TokenMessenger`, just the accessor-consistent spelling).\n * One approval for the whole amount, then the burns against it — if any burn reverts (e.g. it\n * exceeds Circle's per-message cap) the entire source-chain tx reverts (all-or-nothing). The\n * approval is `@sauce/token`'s SafeERC20 `approve`: it resets an allowance a previous cook left\n * standing to zero before setting the new one, and reverts on a `false` return.\n *\n * Declarations are
|
|
14
|
-
"recipes/plain-transfer.sauce.ts": "/**\n * plain-transfer — the no-bridge baseline: move `XFER_AMOUNT` USDC to `XFER_RECIPIENT` in one call.\n * Same standalone-asset shape as `cctp-split.sauce.ts`: the two consts below carry placeholder\n * defaults and the builder overrides them per intent via `defines`, which are constant-folded into\n * fixed bytecode. `USDC` resolves from the token registry. Declarations unannotated
|
|
24
|
+
"recipes/cctp-split.sauce.ts": "/**\n * cctp-split — move a USDC `CCTP_AMOUNT` in CCTP burns capped at `CCTP_CHUNK_SIZE`, ATOMIC in one\n * Sauce cook.\n *\n * The INTERFACE is the whole point: you pass the TOTAL amount and the per-message chunk size, and\n * THE SCRIPT does the splitting — `count = amount / chunkSize` full-cap burns, then one final burn of\n * the leftover `remainder = amount % chunkSize` when it isn't zero. No divisibility assumption, no\n * remainder dropped: `$2.50` at a `$1` cap becomes `$1 + $1 + $0.50`. The TypeScript builder computes\n * nothing; it only hands the script its two numbers.\n *\n * THIS INTENT'S VALUES ARRIVE AS `defines`. The five consts below are declared with placeholder\n * defaults so this file reads (and compiles) standalone; the builder\n * (`recipes/cctp-transfer.ts`) overrides each one per intent, and a define REPLACES the module's own\n * `const` of that name. They are constant-folded, so a given set of values yields fixed bytecode.\n * Standalone asset, not a string assembled in TypeScript. NOT the same shape as `settle.sauce.ts`: that one takes its values as runtime entry\n * arguments precisely so its bytecode stays invariant and hash-pinnable (`settle.sauce.ts:44`), where\n * these fold the values in and change bytecode with them.\n *\n * DSL-NATIVE, ZERO HARDCODING — no ABI, no address:\n * • `USDC` resolves to the source chain's USDC address from the token registry.\n * • `Cctp.TokenMessenger.depositForBurn(...)` resolves interface + address from the CCTP protocol\n * descriptor.\n * • `Cctp.TokenMessenger` (the approve spender) resolves to that same address as a VALUE — the\n * accessor works in value position, not just as a call target (equivalent to the underscore\n * ambient define `Cctp_TokenMessenger`, just the accessor-consistent spelling).\n * One approval for the whole amount, then the burns against it — if any burn reverts (e.g. it\n * exceeds Circle's per-message cap) the entire source-chain tx reverts (all-or-nothing). The\n * approval is `@sauce/token`'s SafeERC20 `approve`: it resets an allowance a previous cook left\n * standing to zero before setting the new one, and reverts on a `false` return.\n *\n * Declarations are unannotated: every value here is a number, which is what SauceScript reads an\n * unannotated declaration as.\n */\nconst CCTP_RECIPIENT = 0n;\nconst CCTP_AMOUNT = 0n;\nconst CCTP_CHUNK_SIZE = 1n;\nconst CCTP_DEST_DOMAIN = 0n;\nconst CCTP_MAX_FEE = 0n;\n\nfunction main() {\n USDC.approve(Cctp.TokenMessenger, CCTP_AMOUNT);\n let count = CCTP_AMOUNT / CCTP_CHUNK_SIZE;\n for (let i = 0n; i < count; i++) {\n Cctp.TokenMessenger.depositForBurn(\n CCTP_CHUNK_SIZE,\n CCTP_DEST_DOMAIN,\n CCTP_RECIPIENT,\n USDC,\n 0n,\n CCTP_MAX_FEE,\n 0n,\n );\n }\n let remainder = CCTP_AMOUNT % CCTP_CHUNK_SIZE;\n if (remainder > 0n) {\n Cctp.TokenMessenger.depositForBurn(\n remainder,\n CCTP_DEST_DOMAIN,\n CCTP_RECIPIENT,\n USDC,\n 0n,\n CCTP_MAX_FEE,\n 0n,\n );\n }\n return 0n;\n}\n",
|
|
25
|
+
"recipes/plain-transfer.sauce.ts": "/**\n * plain-transfer — the no-bridge baseline: move `XFER_AMOUNT` USDC to `XFER_RECIPIENT` in one call.\n * Same standalone-asset shape as `cctp-split.sauce.ts`: the two consts below carry placeholder\n * defaults and the builder overrides them per intent via `defines`, which are constant-folded into\n * fixed bytecode. `USDC` resolves from the token registry. Declarations are unannotated numbers,\n * as there.\n *\n * `USDC.transfer(...)` is lowered to `@sauce/token`'s `transfer`, which is OpenZeppelin `SafeERC20`:\n * a token that returns nothing is accepted, and one that returns `false` reverts the cook.\n */\nconst XFER_RECIPIENT = 0n;\nconst XFER_AMOUNT = 0n;\n\nfunction main() {\n USDC.transfer(XFER_RECIPIENT, XFER_AMOUNT);\n return 0n;\n}\n",
|
|
15
26
|
"recipes/settle.sauce.ts": "import { IERC20 } from \"./artifacts/IERC20.json\";\n\n// settle.sauce.ts — a STANDALONE, reusable Sauce program: sweep the Pot's balance of a list of\n// tokens to one recipient, with a minimum-output floor enforced on the first token.\n//\n// It is deliberately NOT tied to any recipe, protocol or product. Nothing in the program below\n// knows what produced the balances it moves — a swap, a bridge, an airdrop, a manual transfer, or\n// nothing at all. Its contract is exactly \"these tokens, this floor, this recipient\", so any caller\n// that needs a Pot emptied to a destination can compile and run it. Keep it that way: no\n// caller-specific names, in the code OR in the revert string (the string is inside the compiled\n// program, so changing it rotates SETTLE_WIRE.PROGRAM_HASH — see sdk/src/verify/wire.ts).\n//\n// COMPOSING IT AFTER ANOTHER PROGRAM (the common case, and the reason the floor exists): a\n// V12Pot.cook runs exactly ONE program, so ONE cook cannot run\n// \"do the thing, then sweep\". That composition is TWO TOP-LEVEL cook() calls joined by an\n// owner-authorised multicall in ONE transaction:\n// multicall → [ Pot.cook(engine, producerProgram) , Pot.cook(engine, sweepProgram) ]\n// The multicall contract MUST be this Pot's `owner` (V12Pot.cook is\n// `msg.sender == owner || msg.sender == address(this)`-gated — there is no third path) and MUST\n// propagate a reverting call's revert data rather than swallow it (a non-reverting/tryAggregate\n// dispatch turns a sweep failure into \"the first cook landed, the recipient got nothing\").\n// SECURITY: the multicall must NEVER be a permissionless batcher. Multicall3's `aggregate3` CALLs\n// from its own address, so if it owned a Pot, any address could call\n// `aggregate3([{target: pot, callData: cook([drainProgram])}])` and drain it — owning the batcher\n// IS owning the Pot. The operator's batcher must be owner-controlled (see OwnerMulticall.sol,\n// this repo's test-only reference fixture for the shape a real deployment needs).\n//\n// COMPILED BY THE ORDINARY COMPILER — see `sdk/src/recipes/index.ts` for the exact snippet and\n// options. This file is the ONE source of truth for the program text; consumers compile it rather\n// than keeping a second copy. `sdk/src/verify/` itself is the DECODING / authenticity surface (turn\n// a payload's bytes back into `(tokens, minOut, recipient)` and prove the program half is this\n// audited template); the program source lives here, outside it, because a reusable program is not a\n// verification concern.\n//\n// THE COMPILED PROGRAM IS A FUNCTION OF THIS FILE AND THE COMPILER PIN ONLY — never of the\n// arguments. `main`'s three parameters below are RUNTIME ENTRY ARGUMENTS: the caller appends them\n// to the compiled program as 32-byte words and the program reads them back through CALLDATA, so no\n// value a caller picks is visible to the compiler at all. One 435-byte blob therefore serves every\n// token list, floor and recipient, which is what lets `sdk/src/verify/` pin a single\n// `keccak256(program)` and still report per-payload params.\n//\n// KEEP THEM PARAMETERS. Moving any of the three to a compile-time `define` would fold it into the\n// program and make the bytes vary per caller — the pinned-hash design would collapse, and the whole\n// `/verify` surface with it.\n//\n// THE SHAPE: `main(tokens, minOut, recipient)` sweeps the Pot's CURRENT balance of EVERY token in\n// `tokens` to `recipient` — a full-balance sweep is the EXPLICIT INTENT (not a hazard to guard\n// against): after this cook lands, the Pot holds none of the listed tokens. `tokens[0]` is the\n// FLOOR TOKEN by POSITION (not a separately-named arg) — chosen over a named field because the\n// decoded shape this way is exactly `(tokens[], minOut, recipient)`, the same three values the\n// caller compiled it with, with no fourth field that could itself drift out of sync with which\n// array slot it names. `minOut` is enforced against tokens[0]'s balance BEFORE any transfer runs,\n// so an unmeetable floor reverts the WHOLE sweep cook (and, when composed with another cook in one\n// transaction, that whole transaction) before anything moves.\n//\n// EVERY TRANSFER IS A SafeERC20 TRANSFER. The loop body's write is exactly what\n// `sdk/src/token/safe.ts#safeTransferStatements` emits — the SDK's one token-write mechanism — and\n// `recipes-assets.test.ts` pins that it stays so. It is OpenZeppelin's `_callOptionalReturn`: the\n// call goes out as raw bytes through `evm.call`, so nothing is decoded on the way back (a `bool`\n// decoded from a no-return token's EMPTY returndata reverts on this engine, which is why a transfer\n// through `IERC20` could not sweep USDT), and then what came back is CHECKED. Empty returndata passes\n// only from an address that has code; anything else must decode as an ABI word equal to `1`, so a\n// token that answers `false` reverts the sweep rather than reading as swept, and so does a return\n// shorter than one word. A transfer that reverts still reverts it.\n// The floor and the balances are read through `IERC20.balanceOf`, whose `uint256` is always there.\n//\n// USEFUL ORDERING PROPERTY: tokens[0] is swept FIRST, and no external call runs between the floor\n// check and that transfer — so for the floor token the amount CHECKED is the amount TRANSFERRED. A\n// hostile token later in the list cannot retroactively affect it, and a duplicate entry is a no-op\n// on its second pass (its balance is already 0).\n//\n// KNOWN PROPERTY, DOCUMENTED AND ACCEPTED — NOT DEFENDED AGAINST: the floor and the sweep both\n// read the Pot's CURRENT balance, not a delta against some baseline. A pre-existing or donated\n// balance of tokens[0] in the Pot therefore counts toward minOut and rides to the recipient along\n// with whatever the caller actually produced. This is a consequence of the sweep model the\n// maintainer chose (the Pot ending clean is the point), not an oversight — do not add baseline/\n// delta machinery to defend against it.\n//\n// A given execution's `tokens`/`minOut`/`recipient` arrive as RUNTIME ENTRY ARGUMENTS, appended after\n// the program as 32-byte words (see `verify/decode.ts` for the layout) — there is no\n// cross-cook or cross-program handoff of any kind (an earlier design used a tagged EIP-1153\n// transient-storage handoff between two cooks; the sweep model made it unnecessary — this program\n// simply carries its own destination and floor, and reads only the Pot's live balances). Running it\n// on its own, against a Pot holding nothing, sweeps whatever is there (0, ordinarily) — there is\n// nothing to \"orphan\" against, since its target and floor are self-contained.\n//\n// THE DECODER (sdk/src/verify/decode.ts's decodeSettleProgram/validateSettleProgram): a payload is\n// `program || args`, and the two regions are disjoint. decodeSettleProgram pins the program's\n// LENGTH and reads the argument tail — three 32-byte head words (a pointer to the token array,\n// `minOut`, `recipient`) followed by the array's count and its elements — so it names the values a\n// payload will run with. validateSettleProgram adds `keccak256` over the WHOLE program against the\n// pinned hash, which is a COMPLETE authenticity answer here: a program carrying different or extra\n// behaviour (say, sweeping to a hardcoded address instead of the supplied `recipient`) is different\n// bytes, so it fails the hash. There is no body/prologue split to reason about any more, and no\n// argument-independent suffix to hash separately — the whole program is argument-independent.\nfunction main(tokens: Address[], minOut: Uint256, recipient: Address): Uint256 {\n const floorToken = IERC20.at(tokens[0]);\n const floorBal: Uint256 = floorToken.balanceOf(ctx.self());\n if (minOut > 0) {\n if (floorBal < minOut) {\n throw \"settle: balance below minOut\";\n }\n }\n for (let i = 0; i < tokens.length; i = i + 1) {\n const t = IERC20.at(tokens[i]);\n const bal: Uint256 = t.balanceOf(ctx.self());\n if (bal > 0) {\n const sweep_tr0 = hex`a9059cbb`;\n const sweep_tr = evm.call(tokens[i], 0n, sweep_tr0.concat(recipient.toBytesBe(32)).concat(bal.toBytesBe(32)));\n if (sweep_tr.length == 0) { require(ctx.codeSize(tokens[i]) > 0); } else { const [sweep_trok] = abi.decode(sweep_tr, [\"Uint256\"]); require(sweep_trok == 1n); }\n }\n }\n return floorBal;\n}\n",
|
|
16
27
|
};
|
|
17
28
|
/** Every protocol ABI twin, keyed `<slug>/<Export>.json`, minified. */
|
|
@@ -24,9 +35,11 @@ export const PROTOCOL_ABIS = {
|
|
|
24
35
|
"abracadabra/DegenBoxABI.json": "{\"abi\":[{\"name\":\"deposit\",\"type\":\"function\",\"stateMutability\":\"payable\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\"},{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"},{\"name\":\"share\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"amountOut\",\"type\":\"uint256\"},{\"name\":\"shareOut\",\"type\":\"uint256\"}]},{\"name\":\"withdraw\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\"},{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"},{\"name\":\"share\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"amountOut\",\"type\":\"uint256\"},{\"name\":\"shareOut\",\"type\":\"uint256\"}]},{\"name\":\"balanceOf\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\"},{\"name\":\"user\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}]}]}",
|
|
25
36
|
"across/AcrossHubPoolABI.json": "{\"abi\":[{\"name\":\"liquidityUtilizationCurrent\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"l1Token\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}]},{\"name\":\"pooledTokens\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"l1Token\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"lpToken\",\"type\":\"address\"},{\"name\":\"isEnabled\",\"type\":\"bool\"},{\"name\":\"lastLpFeeUpdate\",\"type\":\"uint32\"},{\"name\":\"utilizedReserves\",\"type\":\"int256\"},{\"name\":\"liquidReserves\",\"type\":\"uint256\"},{\"name\":\"undistributedLpFees\",\"type\":\"uint256\"}]}]}",
|
|
26
37
|
"across/AcrossSpokePoolABI.json": "{\"abi\":[{\"name\":\"depositV3\",\"type\":\"function\",\"stateMutability\":\"payable\",\"inputs\":[{\"name\":\"depositor\",\"type\":\"address\"},{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"inputToken\",\"type\":\"address\"},{\"name\":\"outputToken\",\"type\":\"address\"},{\"name\":\"inputAmount\",\"type\":\"uint256\"},{\"name\":\"outputAmount\",\"type\":\"uint256\"},{\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"name\":\"exclusiveRelayer\",\"type\":\"address\"},{\"name\":\"quoteTimestamp\",\"type\":\"uint32\"},{\"name\":\"fillDeadline\",\"type\":\"uint32\"},{\"name\":\"exclusivityParameter\",\"type\":\"uint32\"},{\"name\":\"message\",\"type\":\"bytes\"}],\"outputs\":[]},{\"name\":\"deposit\",\"type\":\"function\",\"stateMutability\":\"payable\",\"inputs\":[{\"name\":\"depositor\",\"type\":\"bytes32\"},{\"name\":\"recipient\",\"type\":\"bytes32\"},{\"name\":\"inputToken\",\"type\":\"bytes32\"},{\"name\":\"outputToken\",\"type\":\"bytes32\"},{\"name\":\"inputAmount\",\"type\":\"uint256\"},{\"name\":\"outputAmount\",\"type\":\"uint256\"},{\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"name\":\"exclusiveRelayer\",\"type\":\"bytes32\"},{\"name\":\"quoteTimestamp\",\"type\":\"uint32\"},{\"name\":\"fillDeadline\",\"type\":\"uint32\"},{\"name\":\"exclusivityParameter\",\"type\":\"uint32\"},{\"name\":\"message\",\"type\":\"bytes\"}],\"outputs\":[]}]}",
|
|
38
|
+
"aerodrome/AerodromePoolABI.json": "{\"abi\":[{\"name\":\"getReserves\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"_reserve0\",\"type\":\"uint256\"},{\"name\":\"_reserve1\",\"type\":\"uint256\"},{\"name\":\"_blockTimestampLast\",\"type\":\"uint256\"}]},{\"name\":\"getAmountOut\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"amountIn\",\"type\":\"uint256\"},{\"name\":\"tokenIn\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}]},{\"name\":\"stable\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}]},{\"name\":\"token0\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}]},{\"name\":\"token1\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}]},{\"name\":\"swap\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\"}],\"outputs\":[]}]}",
|
|
27
39
|
"aerodrome/AerodromePoolFactoryABI.json": "{\"abi\":[{\"name\":\"getPool\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"tokenA\",\"type\":\"address\"},{\"name\":\"tokenB\",\"type\":\"address\"},{\"name\":\"stable\",\"type\":\"bool\"}],\"outputs\":[{\"name\":\"pool\",\"type\":\"address\"}]}]}",
|
|
28
40
|
"aerodrome/AerodromeRouterABI.json": "{\"abi\":[{\"name\":\"swapExactTokensForTokens\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"amountIn\",\"type\":\"uint256\"},{\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"name\":\"routes\",\"type\":\"tuple[]\",\"components\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"stable\",\"type\":\"bool\"},{\"name\":\"factory\",\"type\":\"address\"}]},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"deadline\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"amounts\",\"type\":\"uint256[]\"}]},{\"name\":\"addLiquidity\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"tokenA\",\"type\":\"address\"},{\"name\":\"tokenB\",\"type\":\"address\"},{\"name\":\"stable\",\"type\":\"bool\"},{\"name\":\"amountADesired\",\"type\":\"uint256\"},{\"name\":\"amountBDesired\",\"type\":\"uint256\"},{\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"deadline\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"amountA\",\"type\":\"uint256\"},{\"name\":\"amountB\",\"type\":\"uint256\"},{\"name\":\"liquidity\",\"type\":\"uint256\"}]},{\"name\":\"removeLiquidity\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"tokenA\",\"type\":\"address\"},{\"name\":\"tokenB\",\"type\":\"address\"},{\"name\":\"stable\",\"type\":\"bool\"},{\"name\":\"liquidity\",\"type\":\"uint256\"},{\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"deadline\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"amountA\",\"type\":\"uint256\"},{\"name\":\"amountB\",\"type\":\"uint256\"}]}]}",
|
|
29
41
|
"aerodrome-slipstream/AeroMetarouterABI.json": "{\"abi\":[{\"name\":\"execute\",\"type\":\"function\",\"stateMutability\":\"payable\",\"inputs\":[{\"name\":\"_commands\",\"type\":\"bytes\"},{\"name\":\"_inputs\",\"type\":\"bytes[]\"},{\"name\":\"_deadline\",\"type\":\"uint256\"}],\"outputs\":[]}]}",
|
|
42
|
+
"aerodrome-slipstream/AerodromeSlipstreamPoolABI.json": "{\"abi\":[{\"name\":\"slot0\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"name\":\"tick\",\"type\":\"int24\"},{\"name\":\"observationIndex\",\"type\":\"uint16\"},{\"name\":\"observationCardinality\",\"type\":\"uint16\"},{\"name\":\"observationCardinalityNext\",\"type\":\"uint16\"},{\"name\":\"unlocked\",\"type\":\"bool\"}]},{\"name\":\"liquidity\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint128\"}]},{\"name\":\"fee\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint24\"}]},{\"name\":\"tickSpacing\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"int24\"}]},{\"name\":\"token0\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}]},{\"name\":\"token1\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}]}]}",
|
|
30
43
|
"aerodrome-slipstream/SlipstreamCLFactoryABI.json": "{\"abi\":[{\"name\":\"getPool\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"tokenA\",\"type\":\"address\"},{\"name\":\"tokenB\",\"type\":\"address\"},{\"name\":\"tickSpacing\",\"type\":\"int24\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}]},{\"name\":\"allPoolsLength\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}]},{\"name\":\"tickSpacingToFee\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"\",\"type\":\"int24\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint24\"}]}]}",
|
|
31
44
|
"aerodrome-slipstream/SlipstreamPositionManagerABI.json": "{\"abi\":[{\"name\":\"factory\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}]},{\"name\":\"positions\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"nonce\",\"type\":\"uint96\"},{\"name\":\"operator\",\"type\":\"address\"},{\"name\":\"token0\",\"type\":\"address\"},{\"name\":\"token1\",\"type\":\"address\"},{\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"name\":\"tickLower\",\"type\":\"int24\"},{\"name\":\"tickUpper\",\"type\":\"int24\"},{\"name\":\"liquidity\",\"type\":\"uint128\"},{\"name\":\"feeGrowthInside0LastX128\",\"type\":\"uint256\"},{\"name\":\"feeGrowthInside1LastX128\",\"type\":\"uint256\"},{\"name\":\"tokensOwed0\",\"type\":\"uint128\"},{\"name\":\"tokensOwed1\",\"type\":\"uint128\"}]}]}",
|
|
32
45
|
"aevo/DepositContractABI.json": "{\"abi\":[{\"name\":\"depositERC20\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"l1Token\",\"type\":\"address\"},{\"name\":\"l2Token\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"},{\"name\":\"minGasLimit\",\"type\":\"uint32\"},{\"name\":\"extraData\",\"type\":\"bytes\"}],\"outputs\":[]},{\"name\":\"depositETH\",\"type\":\"function\",\"stateMutability\":\"payable\",\"inputs\":[{\"name\":\"minGasLimit\",\"type\":\"uint32\"},{\"name\":\"extraData\",\"type\":\"bytes\"}],\"outputs\":[]}]}",
|
|
@@ -44,7 +57,11 @@ export const PROTOCOL_ABIS = {
|
|
|
44
57
|
"beefy/BeefyVaultABI.json": "{\"abi\":[{\"name\":\"deposit\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\"}],\"outputs\":[]},{\"name\":\"depositAll\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[],\"outputs\":[]},{\"name\":\"withdraw\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"_shares\",\"type\":\"uint256\"}],\"outputs\":[]},{\"name\":\"withdrawAll\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[],\"outputs\":[]},{\"name\":\"getPricePerFullShare\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}]},{\"name\":\"balance\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}]},{\"name\":\"balanceOf\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}]},{\"name\":\"want\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}]}]}",
|
|
45
58
|
"benqi/BenqiComptrollerABI.json": "{\"abi\":[{\"name\":\"enterMarkets\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"qiTokens\",\"type\":\"address[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[]\"}]},{\"name\":\"exitMarket\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"qiToken\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}]}]}",
|
|
46
59
|
"benqi/QiTokenABI.json": "{\"abi\":[{\"name\":\"mint\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"mintAmount\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}]},{\"name\":\"redeem\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}]},{\"name\":\"redeemUnderlying\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"redeemAmount\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}]},{\"name\":\"borrow\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"borrowAmount\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}]},{\"name\":\"repayBorrow\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"repayAmount\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}]}]}",
|
|
60
|
+
"camelot/CamelotV2FactoryABI.json": "{\"abi\":[{\"name\":\"getPair\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"tokenA\",\"type\":\"address\"},{\"name\":\"tokenB\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"pair\",\"type\":\"address\"}]}]}",
|
|
61
|
+
"camelot/CamelotV2PairABI.json": "{\"abi\":[{\"name\":\"getReserves\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"_reserve0\",\"type\":\"uint112\"},{\"name\":\"_reserve1\",\"type\":\"uint112\"},{\"name\":\"_token0FeePercent\",\"type\":\"uint16\"},{\"name\":\"_token1FeePercent\",\"type\":\"uint16\"}]},{\"name\":\"getAmountOut\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"amountIn\",\"type\":\"uint256\"},{\"name\":\"tokenIn\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}]},{\"name\":\"stableSwap\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}]},{\"name\":\"token0\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}]},{\"name\":\"token1\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}]},{\"name\":\"swap\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\"}],\"outputs\":[]}]}",
|
|
47
62
|
"camelot/CamelotV2RouterABI.json": "{\"abi\":[{\"name\":\"swapExactTokensForTokensSupportingFeeOnTransferTokens\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"amountIn\",\"type\":\"uint256\"},{\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"name\":\"path\",\"type\":\"address[]\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"referrer\",\"type\":\"address\"},{\"name\":\"deadline\",\"type\":\"uint256\"}],\"outputs\":[]},{\"name\":\"addLiquidity\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"tokenA\",\"type\":\"address\"},{\"name\":\"tokenB\",\"type\":\"address\"},{\"name\":\"amountADesired\",\"type\":\"uint256\"},{\"name\":\"amountBDesired\",\"type\":\"uint256\"},{\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"deadline\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"amountA\",\"type\":\"uint256\"},{\"name\":\"amountB\",\"type\":\"uint256\"},{\"name\":\"liquidity\",\"type\":\"uint256\"}]},{\"name\":\"removeLiquidity\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"tokenA\",\"type\":\"address\"},{\"name\":\"tokenB\",\"type\":\"address\"},{\"name\":\"liquidity\",\"type\":\"uint256\"},{\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"deadline\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"amountA\",\"type\":\"uint256\"},{\"name\":\"amountB\",\"type\":\"uint256\"}]}]}",
|
|
63
|
+
"camelot/CamelotV3FactoryABI.json": "{\"abi\":[{\"name\":\"poolByPair\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"tokenA\",\"type\":\"address\"},{\"name\":\"tokenB\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"pool\",\"type\":\"address\"}]}]}",
|
|
64
|
+
"camelot/CamelotV3PoolABI.json": "{\"abi\":[{\"name\":\"globalState\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"price\",\"type\":\"uint160\"},{\"name\":\"tick\",\"type\":\"int24\"},{\"name\":\"feeZto\",\"type\":\"uint16\"},{\"name\":\"feeOtz\",\"type\":\"uint16\"},{\"name\":\"timepointIndex\",\"type\":\"uint16\"},{\"name\":\"communityFeeToken0\",\"type\":\"uint8\"},{\"name\":\"communityFeeToken1\",\"type\":\"uint8\"},{\"name\":\"unlocked\",\"type\":\"bool\"}]},{\"name\":\"liquidity\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint128\"}]},{\"name\":\"tickSpacing\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"int24\"}]},{\"name\":\"token0\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}]},{\"name\":\"token1\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}]}]}",
|
|
48
65
|
"camelot/CamelotV3SwapRouterABI.json": "{\"abi\":[{\"name\":\"exactInputSingle\",\"type\":\"function\",\"stateMutability\":\"payable\",\"inputs\":[{\"name\":\"params\",\"type\":\"tuple\",\"components\":[{\"name\":\"tokenIn\",\"type\":\"address\"},{\"name\":\"tokenOut\",\"type\":\"address\"},{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"deadline\",\"type\":\"uint256\"},{\"name\":\"amountIn\",\"type\":\"uint256\"},{\"name\":\"amountOutMinimum\",\"type\":\"uint256\"},{\"name\":\"limitSqrtPrice\",\"type\":\"uint160\"}]}],\"outputs\":[{\"name\":\"amountOut\",\"type\":\"uint256\"}]}]}",
|
|
49
66
|
"cbeth/CbETHABI.json": "{\"abi\":[{\"name\":\"mint\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}]},{\"name\":\"exchangeRate\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}]},{\"name\":\"balanceOf\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}]},{\"name\":\"approve\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}]},{\"name\":\"transfer\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}]}]}",
|
|
50
67
|
"cctp/TokenMessengerABI.json": "{\"abi\":[{\"type\":\"function\",\"name\":\"depositForBurn\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\"},{\"name\":\"destinationDomain\",\"type\":\"uint32\"},{\"name\":\"mintRecipient\",\"type\":\"bytes32\"},{\"name\":\"burnToken\",\"type\":\"address\"},{\"name\":\"destinationCaller\",\"type\":\"bytes32\"},{\"name\":\"maxFee\",\"type\":\"uint256\"},{\"name\":\"minFinalityThreshold\",\"type\":\"uint32\"}],\"outputs\":[]}]}",
|
|
@@ -69,6 +86,8 @@ export const PROTOCOL_ABIS = {
|
|
|
69
86
|
"debridge/DlnDestinationABI.json": "{\"abi\":[{\"name\":\"fulfillOrder\",\"type\":\"function\",\"stateMutability\":\"payable\",\"inputs\":[{\"name\":\"_order\",\"type\":\"tuple\",\"components\":[{\"name\":\"makerOrderNonce\",\"type\":\"uint64\"},{\"name\":\"makerSrc\",\"type\":\"bytes\"},{\"name\":\"giveChainId\",\"type\":\"uint256\"},{\"name\":\"giveTokenAddress\",\"type\":\"bytes\"},{\"name\":\"giveAmount\",\"type\":\"uint256\"},{\"name\":\"takeChainId\",\"type\":\"uint256\"},{\"name\":\"takeTokenAddress\",\"type\":\"bytes\"},{\"name\":\"takeAmount\",\"type\":\"uint256\"},{\"name\":\"receiverDst\",\"type\":\"bytes\"},{\"name\":\"givePatchAuthoritySrc\",\"type\":\"bytes\"},{\"name\":\"orderAuthorityAddressDst\",\"type\":\"bytes\"},{\"name\":\"allowedTakerDst\",\"type\":\"bytes\"},{\"name\":\"allowedCancelBeneficiarySrc\",\"type\":\"bytes\"},{\"name\":\"externalCall\",\"type\":\"bytes\"}]},{\"name\":\"_fulFillAmount\",\"type\":\"uint256\"},{\"name\":\"_orderId\",\"type\":\"bytes32\"},{\"name\":\"_permitEnvelope\",\"type\":\"bytes\"},{\"name\":\"_unlockAuthority\",\"type\":\"address\"}],\"outputs\":[]}]}",
|
|
70
87
|
"debridge/DlnSourceABI.json": "{\"abi\":[{\"name\":\"createOrder\",\"type\":\"function\",\"stateMutability\":\"payable\",\"inputs\":[{\"name\":\"_orderCreation\",\"type\":\"tuple\",\"components\":[{\"name\":\"giveTokenAddress\",\"type\":\"address\"},{\"name\":\"giveAmount\",\"type\":\"uint256\"},{\"name\":\"takeTokenAddress\",\"type\":\"bytes\"},{\"name\":\"takeAmount\",\"type\":\"uint256\"},{\"name\":\"takeChainId\",\"type\":\"uint256\"},{\"name\":\"receiverDst\",\"type\":\"bytes\"},{\"name\":\"givePatchAuthoritySrc\",\"type\":\"address\"},{\"name\":\"orderAuthorityAddressDst\",\"type\":\"bytes\"},{\"name\":\"allowedTakerDst\",\"type\":\"bytes\"},{\"name\":\"externalCall\",\"type\":\"bytes\"},{\"name\":\"allowedCancelBeneficiarySrc\",\"type\":\"bytes\"}]},{\"name\":\"_affiliateFee\",\"type\":\"bytes\"},{\"name\":\"_referralCode\",\"type\":\"uint32\"},{\"name\":\"_permitEnvelope\",\"type\":\"bytes\"}],\"outputs\":[{\"name\":\"orderId\",\"type\":\"bytes32\"}]}]}",
|
|
71
88
|
"dodo/DODOV2ProxyABI.json": "{\"abi\":[{\"name\":\"dodoSwapV2TokenToToken\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"fromToken\",\"type\":\"address\"},{\"name\":\"toToken\",\"type\":\"address\"},{\"name\":\"fromTokenAmount\",\"type\":\"uint256\"},{\"name\":\"minReturnAmount\",\"type\":\"uint256\"},{\"name\":\"dodoPairs\",\"type\":\"address[]\"},{\"name\":\"directions\",\"type\":\"uint256\"},{\"name\":\"isIncentive\",\"type\":\"bool\"},{\"name\":\"deadLine\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"returnAmount\",\"type\":\"uint256\"}]}]}",
|
|
89
|
+
"eco-routes/PortalABI.json": "{\"abi\":[{\"type\":\"function\",\"name\":\"publish\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"destination\",\"type\":\"uint64\"},{\"name\":\"route\",\"type\":\"bytes\"},{\"name\":\"reward\",\"type\":\"tuple\",\"components\":[{\"name\":\"deadline\",\"type\":\"uint64\"},{\"name\":\"creator\",\"type\":\"address\"},{\"name\":\"prover\",\"type\":\"address\"},{\"name\":\"nativeAmount\",\"type\":\"uint256\"},{\"name\":\"tokens\",\"type\":\"tuple[]\",\"components\":[{\"name\":\"token\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}]}]}],\"outputs\":[{\"name\":\"intentHash\",\"type\":\"bytes32\"},{\"name\":\"vault\",\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"publishAndFund\",\"stateMutability\":\"payable\",\"inputs\":[{\"name\":\"destination\",\"type\":\"uint64\"},{\"name\":\"route\",\"type\":\"bytes\"},{\"name\":\"reward\",\"type\":\"tuple\",\"components\":[{\"name\":\"deadline\",\"type\":\"uint64\"},{\"name\":\"creator\",\"type\":\"address\"},{\"name\":\"prover\",\"type\":\"address\"},{\"name\":\"nativeAmount\",\"type\":\"uint256\"},{\"name\":\"tokens\",\"type\":\"tuple[]\",\"components\":[{\"name\":\"token\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}]}]},{\"name\":\"allowPartial\",\"type\":\"bool\"}],\"outputs\":[{\"name\":\"intentHash\",\"type\":\"bytes32\"},{\"name\":\"vault\",\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"fund\",\"stateMutability\":\"payable\",\"inputs\":[{\"name\":\"destination\",\"type\":\"uint64\"},{\"name\":\"routeHash\",\"type\":\"bytes32\"},{\"name\":\"reward\",\"type\":\"tuple\",\"components\":[{\"name\":\"deadline\",\"type\":\"uint64\"},{\"name\":\"creator\",\"type\":\"address\"},{\"name\":\"prover\",\"type\":\"address\"},{\"name\":\"nativeAmount\",\"type\":\"uint256\"},{\"name\":\"tokens\",\"type\":\"tuple[]\",\"components\":[{\"name\":\"token\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}]}]},{\"name\":\"allowPartial\",\"type\":\"bool\"}],\"outputs\":[{\"name\":\"intentHash\",\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"fulfill\",\"stateMutability\":\"payable\",\"inputs\":[{\"name\":\"intentHash\",\"type\":\"bytes32\"},{\"name\":\"route\",\"type\":\"tuple\",\"components\":[{\"name\":\"salt\",\"type\":\"bytes32\"},{\"name\":\"deadline\",\"type\":\"uint64\"},{\"name\":\"portal\",\"type\":\"address\"},{\"name\":\"nativeAmount\",\"type\":\"uint256\"},{\"name\":\"tokens\",\"type\":\"tuple[]\",\"components\":[{\"name\":\"token\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}]},{\"name\":\"calls\",\"type\":\"tuple[]\",\"components\":[{\"name\":\"target\",\"type\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\"},{\"name\":\"value\",\"type\":\"uint256\"}]}]},{\"name\":\"rewardHash\",\"type\":\"bytes32\"},{\"name\":\"claimant\",\"type\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes[]\"}]},{\"type\":\"function\",\"name\":\"getIntentHash\",\"stateMutability\":\"pure\",\"inputs\":[{\"name\":\"destination\",\"type\":\"uint64\"},{\"name\":\"route\",\"type\":\"bytes\"},{\"name\":\"reward\",\"type\":\"tuple\",\"components\":[{\"name\":\"deadline\",\"type\":\"uint64\"},{\"name\":\"creator\",\"type\":\"address\"},{\"name\":\"prover\",\"type\":\"address\"},{\"name\":\"nativeAmount\",\"type\":\"uint256\"},{\"name\":\"tokens\",\"type\":\"tuple[]\",\"components\":[{\"name\":\"token\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}]}]}],\"outputs\":[{\"name\":\"intentHash\",\"type\":\"bytes32\"},{\"name\":\"routeHash\",\"type\":\"bytes32\"},{\"name\":\"rewardHash\",\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"intentVaultAddress\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"destination\",\"type\":\"uint64\"},{\"name\":\"route\",\"type\":\"bytes\"},{\"name\":\"reward\",\"type\":\"tuple\",\"components\":[{\"name\":\"deadline\",\"type\":\"uint64\"},{\"name\":\"creator\",\"type\":\"address\"},{\"name\":\"prover\",\"type\":\"address\"},{\"name\":\"nativeAmount\",\"type\":\"uint256\"},{\"name\":\"tokens\",\"type\":\"tuple[]\",\"components\":[{\"name\":\"token\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}]}]}],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"isIntentFunded\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"destination\",\"type\":\"uint64\"},{\"name\":\"route\",\"type\":\"bytes\"},{\"name\":\"reward\",\"type\":\"tuple\",\"components\":[{\"name\":\"deadline\",\"type\":\"uint64\"},{\"name\":\"creator\",\"type\":\"address\"},{\"name\":\"prover\",\"type\":\"address\"},{\"name\":\"nativeAmount\",\"type\":\"uint256\"},{\"name\":\"tokens\",\"type\":\"tuple[]\",\"components\":[{\"name\":\"token\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}]}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"getRewardStatus\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"intentHash\",\"type\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}]},{\"type\":\"function\",\"name\":\"executor\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"claimants\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"intentHash\",\"type\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"fulfillAndProve\",\"stateMutability\":\"payable\",\"inputs\":[{\"name\":\"intentHash\",\"type\":\"bytes32\"},{\"name\":\"route\",\"type\":\"tuple\",\"components\":[{\"name\":\"salt\",\"type\":\"bytes32\"},{\"name\":\"deadline\",\"type\":\"uint64\"},{\"name\":\"portal\",\"type\":\"address\"},{\"name\":\"nativeAmount\",\"type\":\"uint256\"},{\"name\":\"tokens\",\"type\":\"tuple[]\",\"components\":[{\"name\":\"token\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}]},{\"name\":\"calls\",\"type\":\"tuple[]\",\"components\":[{\"name\":\"target\",\"type\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\"},{\"name\":\"value\",\"type\":\"uint256\"}]}]},{\"name\":\"rewardHash\",\"type\":\"bytes32\"},{\"name\":\"claimant\",\"type\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\"},{\"name\":\"sourceChainDomainID\",\"type\":\"uint64\"},{\"name\":\"data\",\"type\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes[]\"}]},{\"type\":\"function\",\"name\":\"prove\",\"stateMutability\":\"payable\",\"inputs\":[{\"name\":\"prover\",\"type\":\"address\"},{\"name\":\"sourceChainDomainID\",\"type\":\"uint64\"},{\"name\":\"intentHashes\",\"type\":\"bytes32[]\"},{\"name\":\"data\",\"type\":\"bytes\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"withdraw\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"destination\",\"type\":\"uint64\"},{\"name\":\"routeHash\",\"type\":\"bytes32\"},{\"name\":\"reward\",\"type\":\"tuple\",\"components\":[{\"name\":\"deadline\",\"type\":\"uint64\"},{\"name\":\"creator\",\"type\":\"address\"},{\"name\":\"prover\",\"type\":\"address\"},{\"name\":\"nativeAmount\",\"type\":\"uint256\"},{\"name\":\"tokens\",\"type\":\"tuple[]\",\"components\":[{\"name\":\"token\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}]}]}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"batchWithdraw\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"destinations\",\"type\":\"uint64[]\"},{\"name\":\"routeHashes\",\"type\":\"bytes32[]\"},{\"name\":\"rewards\",\"type\":\"tuple[]\",\"components\":[{\"name\":\"deadline\",\"type\":\"uint64\"},{\"name\":\"creator\",\"type\":\"address\"},{\"name\":\"prover\",\"type\":\"address\"},{\"name\":\"nativeAmount\",\"type\":\"uint256\"},{\"name\":\"tokens\",\"type\":\"tuple[]\",\"components\":[{\"name\":\"token\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}]}]}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"refund\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"destination\",\"type\":\"uint64\"},{\"name\":\"routeHash\",\"type\":\"bytes32\"},{\"name\":\"reward\",\"type\":\"tuple\",\"components\":[{\"name\":\"deadline\",\"type\":\"uint64\"},{\"name\":\"creator\",\"type\":\"address\"},{\"name\":\"prover\",\"type\":\"address\"},{\"name\":\"nativeAmount\",\"type\":\"uint256\"},{\"name\":\"tokens\",\"type\":\"tuple[]\",\"components\":[{\"name\":\"token\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}]}]}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"refundTo\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"destination\",\"type\":\"uint64\"},{\"name\":\"routeHash\",\"type\":\"bytes32\"},{\"name\":\"reward\",\"type\":\"tuple\",\"components\":[{\"name\":\"deadline\",\"type\":\"uint64\"},{\"name\":\"creator\",\"type\":\"address\"},{\"name\":\"prover\",\"type\":\"address\"},{\"name\":\"nativeAmount\",\"type\":\"uint256\"},{\"name\":\"tokens\",\"type\":\"tuple[]\",\"components\":[{\"name\":\"token\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}]}]},{\"name\":\"refundee\",\"type\":\"address\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"cancel\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"intentHash\",\"type\":\"bytes32\"},{\"name\":\"route\",\"type\":\"tuple\",\"components\":[{\"name\":\"salt\",\"type\":\"bytes32\"},{\"name\":\"deadline\",\"type\":\"uint64\"},{\"name\":\"portal\",\"type\":\"address\"},{\"name\":\"nativeAmount\",\"type\":\"uint256\"},{\"name\":\"tokens\",\"type\":\"tuple[]\",\"components\":[{\"name\":\"token\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}]},{\"name\":\"calls\",\"type\":\"tuple[]\",\"components\":[{\"name\":\"target\",\"type\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\"},{\"name\":\"value\",\"type\":\"uint256\"}]}]},{\"name\":\"rewardHash\",\"type\":\"bytes32\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"cancelAndProve\",\"stateMutability\":\"payable\",\"inputs\":[{\"name\":\"intentHash\",\"type\":\"bytes32\"},{\"name\":\"route\",\"type\":\"tuple\",\"components\":[{\"name\":\"salt\",\"type\":\"bytes32\"},{\"name\":\"deadline\",\"type\":\"uint64\"},{\"name\":\"portal\",\"type\":\"address\"},{\"name\":\"nativeAmount\",\"type\":\"uint256\"},{\"name\":\"tokens\",\"type\":\"tuple[]\",\"components\":[{\"name\":\"token\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}]},{\"name\":\"calls\",\"type\":\"tuple[]\",\"components\":[{\"name\":\"target\",\"type\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\"},{\"name\":\"value\",\"type\":\"uint256\"}]}]},{\"name\":\"rewardHash\",\"type\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\"},{\"name\":\"sourceChainDomainID\",\"type\":\"uint64\"},{\"name\":\"data\",\"type\":\"bytes\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"version\",\"stateMutability\":\"pure\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\"}]},{\"type\":\"event\",\"name\":\"IntentPublished\",\"inputs\":[{\"name\":\"intentHash\",\"type\":\"bytes32\",\"indexed\":true},{\"name\":\"destination\",\"type\":\"uint64\",\"indexed\":false},{\"name\":\"route\",\"type\":\"bytes\",\"indexed\":false},{\"name\":\"creator\",\"type\":\"address\",\"indexed\":true},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true},{\"name\":\"rewardDeadline\",\"type\":\"uint64\",\"indexed\":false},{\"name\":\"rewardNativeAmount\",\"type\":\"uint256\",\"indexed\":false},{\"name\":\"rewardTokens\",\"type\":\"tuple[]\",\"indexed\":false,\"components\":[{\"name\":\"token\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}]}]},{\"type\":\"event\",\"name\":\"IntentFunded\",\"inputs\":[{\"name\":\"intentHash\",\"type\":\"bytes32\",\"indexed\":false},{\"name\":\"funder\",\"type\":\"address\",\"indexed\":false},{\"name\":\"complete\",\"type\":\"bool\",\"indexed\":false}]},{\"type\":\"event\",\"name\":\"IntentFulfilled\",\"inputs\":[{\"name\":\"intentHash\",\"type\":\"bytes32\",\"indexed\":true},{\"name\":\"claimant\",\"type\":\"bytes32\",\"indexed\":true}]},{\"type\":\"event\",\"name\":\"IntentProven\",\"inputs\":[{\"name\":\"intentHash\",\"type\":\"bytes32\",\"indexed\":true},{\"name\":\"claimant\",\"type\":\"bytes32\",\"indexed\":true}]},{\"type\":\"event\",\"name\":\"IntentWithdrawn\",\"inputs\":[{\"name\":\"intentHash\",\"type\":\"bytes32\",\"indexed\":false},{\"name\":\"claimant\",\"type\":\"address\",\"indexed\":true}]},{\"type\":\"event\",\"name\":\"IntentRefunded\",\"inputs\":[{\"name\":\"intentHash\",\"type\":\"bytes32\",\"indexed\":false},{\"name\":\"refundee\",\"type\":\"address\",\"indexed\":true}]},{\"type\":\"event\",\"name\":\"IntentTokenRecovered\",\"inputs\":[{\"name\":\"intentHash\",\"type\":\"bytes32\",\"indexed\":false},{\"name\":\"refundee\",\"type\":\"address\",\"indexed\":true},{\"name\":\"token\",\"type\":\"address\",\"indexed\":true}]},{\"type\":\"event\",\"name\":\"IntentCancelled\",\"inputs\":[{\"name\":\"intentHash\",\"type\":\"bytes32\",\"indexed\":true}]},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\"}]},{\"type\":\"error\",\"name\":\"ArrayLengthMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CancelledIntent\",\"inputs\":[{\"name\":\"intentHash\",\"type\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientFunds\",\"inputs\":[{\"name\":\"intentHash\",\"type\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InsufficientNativeAmount\",\"inputs\":[{\"name\":\"sent\",\"type\":\"uint256\"},{\"name\":\"required\",\"type\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"IntentAlreadyExists\",\"inputs\":[{\"name\":\"intentHash\",\"type\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"IntentAlreadyFulfilled\",\"inputs\":[{\"name\":\"intentHash\",\"type\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"IntentExpired\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"IntentNotClaimed\",\"inputs\":[{\"name\":\"intentHash\",\"type\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"IntentNotFulfilled\",\"inputs\":[{\"name\":\"intentHash\",\"type\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidClaimant\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCreatorBinding\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\"},{\"name\":\"creator\",\"type\":\"address\"}]},{\"type\":\"error\",\"name\":\"InvalidHash\",\"inputs\":[{\"name\":\"expectedHash\",\"type\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidOriginChainId\",\"inputs\":[{\"name\":\"expected\",\"type\":\"uint256\"},{\"name\":\"actual\",\"type\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidOriginSettler\",\"inputs\":[{\"name\":\"expected\",\"type\":\"address\"},{\"name\":\"actual\",\"type\":\"address\"}]},{\"type\":\"error\",\"name\":\"InvalidPortal\",\"inputs\":[{\"name\":\"portal\",\"type\":\"address\"}]},{\"type\":\"error\",\"name\":\"InvalidRecoverToken\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\"}]},{\"type\":\"error\",\"name\":\"InvalidShortString\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSignature\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidStatusForFunding\",\"inputs\":[{\"name\":\"status\",\"type\":\"uint8\"}]},{\"type\":\"error\",\"name\":\"InvalidStatusForRefund\",\"inputs\":[{\"name\":\"status\",\"type\":\"uint8\"},{\"name\":\"currentTime\",\"type\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidStatusForWithdrawal\",\"inputs\":[{\"name\":\"status\",\"type\":\"uint8\"}]},{\"type\":\"error\",\"name\":\"NotCreatorCaller\",\"inputs\":[{\"name\":\"caller\",\"type\":\"address\"}]},{\"type\":\"error\",\"name\":\"OpenDeadlinePassed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReservedClaimant\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RewardTokensNotUnique\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\"}]},{\"type\":\"error\",\"name\":\"RouteNotExpired\",\"inputs\":[{\"name\":\"deadline\",\"type\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\"}]},{\"type\":\"error\",\"name\":\"TypeSignatureMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroClaimant\",\"inputs\":[]}]}",
|
|
90
|
+
"eco-routes/ProverABI.json": "{\"abi\":[{\"type\":\"function\",\"name\":\"provenIntents\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"intentHash\",\"type\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"components\":[{\"name\":\"claimant\",\"type\":\"address\"},{\"name\":\"destination\",\"type\":\"uint64\"}]}]},{\"type\":\"function\",\"name\":\"getProofType\",\"stateMutability\":\"pure\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\"}]},{\"type\":\"function\",\"name\":\"version\",\"stateMutability\":\"pure\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\"}]},{\"type\":\"function\",\"name\":\"PORTAL\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"isWhitelisted\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"addr\",\"type\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}]},{\"type\":\"event\",\"name\":\"IntentProven\",\"inputs\":[{\"name\":\"intentHash\",\"type\":\"bytes32\",\"indexed\":true},{\"name\":\"claimant\",\"type\":\"address\",\"indexed\":true},{\"name\":\"destination\",\"type\":\"uint64\",\"indexed\":false}]},{\"type\":\"event\",\"name\":\"IntentProofInvalidated\",\"inputs\":[{\"name\":\"intentHash\",\"type\":\"bytes32\",\"indexed\":true}]},{\"type\":\"event\",\"name\":\"IntentAlreadyProven\",\"inputs\":[{\"name\":\"intentHash\",\"type\":\"bytes32\",\"indexed\":false}]},{\"type\":\"function\",\"name\":\"fetchFee\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"domainID\",\"type\":\"uint64\"},{\"name\":\"encodedProofs\",\"type\":\"bytes\"},{\"name\":\"data\",\"type\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InsufficientFee\",\"inputs\":[{\"name\":\"requiredFee\",\"type\":\"uint256\"}]}]}",
|
|
72
91
|
"eigenlayer/DelegationManagerABI.json": "{\"abi\":[{\"name\":\"delegateTo\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\"},{\"name\":\"approverSignatureAndExpiry\",\"type\":\"tuple\",\"components\":[{\"name\":\"signature\",\"type\":\"bytes\"},{\"name\":\"expiry\",\"type\":\"uint256\"}]},{\"name\":\"approverSalt\",\"type\":\"bytes32\"}],\"outputs\":[]},{\"name\":\"undelegate\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"withdrawalRoots\",\"type\":\"bytes32[]\"}]},{\"name\":\"isDelegated\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}]}]}",
|
|
73
92
|
"eigenlayer/StrategyABI.json": "{\"abi\":[{\"name\":\"sharesToUnderlyingView\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"amountShares\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}]},{\"name\":\"underlyingToSharesView\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"amountUnderlying\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}]}]}",
|
|
74
93
|
"eigenlayer/StrategyManagerABI.json": "{\"abi\":[{\"name\":\"depositIntoStrategy\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\"},{\"name\":\"token\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"shares\",\"type\":\"uint256\"}]},{\"name\":\"stakerDepositShares\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"shares\",\"type\":\"uint256\"}]}]}",
|
|
@@ -128,6 +147,7 @@ export const PROTOCOL_ABIS = {
|
|
|
128
147
|
"mantle-meth/METHABI.json": "{\"abi\":[{\"name\":\"balanceOf\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}]},{\"name\":\"approve\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}]}]}",
|
|
129
148
|
"mantle-meth/METHStakingABI.json": "{\"abi\":[{\"name\":\"stake\",\"type\":\"function\",\"stateMutability\":\"payable\",\"inputs\":[{\"name\":\"minMETHAmount\",\"type\":\"uint256\"}],\"outputs\":[]},{\"name\":\"mETHToETH\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"mETHAmount\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}]},{\"name\":\"ethToMETH\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"ethAmount\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}]}]}",
|
|
130
149
|
"maverick/MaverickV2FactoryABI.json": "{\"abi\":[{\"name\":\"lookup\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"tokenA\",\"type\":\"address\"},{\"name\":\"tokenB\",\"type\":\"address\"},{\"name\":\"startIndex\",\"type\":\"uint256\"},{\"name\":\"endIndex\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"pools\",\"type\":\"address[]\"}]}]}",
|
|
150
|
+
"maverick/MaverickV2PoolABI.json": "{\"abi\":[{\"name\":\"getState\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"components\":[{\"name\":\"reserveA\",\"type\":\"uint128\"},{\"name\":\"reserveB\",\"type\":\"uint128\"},{\"name\":\"lastTwaD8\",\"type\":\"int64\"},{\"name\":\"lastLogPriceD8\",\"type\":\"int64\"},{\"name\":\"lastTimestamp\",\"type\":\"uint40\"},{\"name\":\"activeTick\",\"type\":\"int32\"},{\"name\":\"isLocked\",\"type\":\"bool\"},{\"name\":\"binCounter\",\"type\":\"uint32\"},{\"name\":\"protocolFeeRatioD3\",\"type\":\"uint8\"}]}]},{\"name\":\"fee\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"tokenAIn\",\"type\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}]},{\"name\":\"tickSpacing\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}]},{\"name\":\"tokenA\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}]},{\"name\":\"tokenB\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}]}]}",
|
|
131
151
|
"maverick/MaverickV2RouterABI.json": "{\"abi\":[{\"name\":\"exactInputSingle\",\"type\":\"function\",\"stateMutability\":\"payable\",\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"pool\",\"type\":\"address\"},{\"name\":\"tokenAIn\",\"type\":\"bool\"},{\"name\":\"amountIn\",\"type\":\"uint256\"},{\"name\":\"amountOutMinimum\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"amountOut\",\"type\":\"uint256\"}]},{\"name\":\"exactOutputSingle\",\"type\":\"function\",\"stateMutability\":\"payable\",\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"pool\",\"type\":\"address\"},{\"name\":\"tokenAIn\",\"type\":\"bool\"},{\"name\":\"amountOut\",\"type\":\"uint256\"},{\"name\":\"amountInMaximum\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"amountIn\",\"type\":\"uint256\"},{\"name\":\"amountOut\",\"type\":\"uint256\"}]}]}",
|
|
132
152
|
"moonwell/MTokenABI.json": "{\"abi\":[{\"name\":\"mint\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"mintAmount\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}]},{\"name\":\"redeem\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}]},{\"name\":\"redeemUnderlying\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"redeemAmount\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}]},{\"name\":\"borrow\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"borrowAmount\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}]},{\"name\":\"repayBorrow\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"repayAmount\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}]}]}",
|
|
133
153
|
"moonwell/MoonwellComptrollerABI.json": "{\"abi\":[{\"name\":\"enterMarkets\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"mTokens\",\"type\":\"address[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[]\"}]},{\"name\":\"exitMarket\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"mToken\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}]}]}",
|
|
@@ -140,20 +160,26 @@ export const PROTOCOL_ABIS = {
|
|
|
140
160
|
"optimism-bridge/OptimismL1StandardBridgeABI.json": "{\"abi\":[{\"name\":\"depositETH\",\"type\":\"function\",\"stateMutability\":\"payable\",\"inputs\":[{\"name\":\"_minGasLimit\",\"type\":\"uint32\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"outputs\":[]},{\"name\":\"depositERC20\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"_l1Token\",\"type\":\"address\"},{\"name\":\"_l2Token\",\"type\":\"address\"},{\"name\":\"_amount\",\"type\":\"uint256\"},{\"name\":\"_minGasLimit\",\"type\":\"uint32\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"outputs\":[]},{\"name\":\"depositETHTo\",\"type\":\"function\",\"stateMutability\":\"payable\",\"inputs\":[{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_minGasLimit\",\"type\":\"uint32\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"outputs\":[]},{\"name\":\"depositERC20To\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"_l1Token\",\"type\":\"address\"},{\"name\":\"_l2Token\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_amount\",\"type\":\"uint256\"},{\"name\":\"_minGasLimit\",\"type\":\"uint32\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"outputs\":[]}]}",
|
|
141
161
|
"opyn/ControllerABI.json": "{\"abi\":[{\"name\":\"mintPowerPerpAmount\",\"type\":\"function\",\"stateMutability\":\"payable\",\"inputs\":[{\"name\":\"_vaultId\",\"type\":\"uint256\"},{\"name\":\"_powerPerpAmount\",\"type\":\"uint256\"},{\"name\":\"_uniTokenId\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\"}]},{\"name\":\"burnPowerPerpAmount\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"_vaultId\",\"type\":\"uint256\"},{\"name\":\"_powerPerpAmount\",\"type\":\"uint256\"},{\"name\":\"_withdrawAmount\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"wPowerPerpAmount\",\"type\":\"uint256\"}]},{\"name\":\"deposit\",\"type\":\"function\",\"stateMutability\":\"payable\",\"inputs\":[{\"name\":\"_vaultId\",\"type\":\"uint256\"}],\"outputs\":[]},{\"name\":\"withdraw\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"_vaultId\",\"type\":\"uint256\"},{\"name\":\"_amount\",\"type\":\"uint256\"}],\"outputs\":[]}]}",
|
|
142
162
|
"pancakeswap-v2/PancakeSwapV2FactoryABI.json": "{\"abi\":[{\"name\":\"getPair\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"tokenA\",\"type\":\"address\"},{\"name\":\"tokenB\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"pair\",\"type\":\"address\"}]},{\"name\":\"createPair\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"tokenA\",\"type\":\"address\"},{\"name\":\"tokenB\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"pair\",\"type\":\"address\"}]}]}",
|
|
163
|
+
"pancakeswap-v2/PancakeSwapV2PairABI.json": "{\"abi\":[{\"name\":\"getReserves\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"_reserve0\",\"type\":\"uint112\"},{\"name\":\"_reserve1\",\"type\":\"uint112\"},{\"name\":\"_blockTimestampLast\",\"type\":\"uint32\"}]},{\"name\":\"token0\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}]},{\"name\":\"token1\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}]},{\"name\":\"swap\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\"}],\"outputs\":[]}]}",
|
|
143
164
|
"pancakeswap-v2/PancakeSwapV2RouterABI.json": "{\"abi\":[{\"name\":\"swapExactTokensForTokens\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"amountIn\",\"type\":\"uint256\"},{\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"name\":\"path\",\"type\":\"address[]\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"deadline\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"amounts\",\"type\":\"uint256[]\"}]},{\"name\":\"swapTokensForExactTokens\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"amountOut\",\"type\":\"uint256\"},{\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"name\":\"path\",\"type\":\"address[]\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"deadline\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"amounts\",\"type\":\"uint256[]\"}]},{\"name\":\"addLiquidity\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"tokenA\",\"type\":\"address\"},{\"name\":\"tokenB\",\"type\":\"address\"},{\"name\":\"amountADesired\",\"type\":\"uint256\"},{\"name\":\"amountBDesired\",\"type\":\"uint256\"},{\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"deadline\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"amountA\",\"type\":\"uint256\"},{\"name\":\"amountB\",\"type\":\"uint256\"},{\"name\":\"liquidity\",\"type\":\"uint256\"}]},{\"name\":\"removeLiquidity\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"tokenA\",\"type\":\"address\"},{\"name\":\"tokenB\",\"type\":\"address\"},{\"name\":\"liquidity\",\"type\":\"uint256\"},{\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"deadline\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"amountA\",\"type\":\"uint256\"},{\"name\":\"amountB\",\"type\":\"uint256\"}]},{\"name\":\"getAmountsOut\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"amountIn\",\"type\":\"uint256\"},{\"name\":\"path\",\"type\":\"address[]\"}],\"outputs\":[{\"name\":\"amounts\",\"type\":\"uint256[]\"}]}]}",
|
|
144
165
|
"pancakeswap-v3/PancakeSwapV3FactoryABI.json": "{\"abi\":[{\"name\":\"getPool\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"tokenA\",\"type\":\"address\"},{\"name\":\"tokenB\",\"type\":\"address\"},{\"name\":\"fee\",\"type\":\"uint24\"}],\"outputs\":[{\"name\":\"pool\",\"type\":\"address\"}]}]}",
|
|
145
166
|
"pancakeswap-v3/PancakeSwapV3NFPMABI.json": "{\"abi\":[{\"name\":\"mint\",\"type\":\"function\",\"stateMutability\":\"payable\",\"inputs\":[{\"name\":\"params\",\"type\":\"tuple\",\"components\":[{\"name\":\"token0\",\"type\":\"address\"},{\"name\":\"token1\",\"type\":\"address\"},{\"name\":\"fee\",\"type\":\"uint24\"},{\"name\":\"tickLower\",\"type\":\"int24\"},{\"name\":\"tickUpper\",\"type\":\"int24\"},{\"name\":\"amount0Desired\",\"type\":\"uint256\"},{\"name\":\"amount1Desired\",\"type\":\"uint256\"},{\"name\":\"amount0Min\",\"type\":\"uint256\"},{\"name\":\"amount1Min\",\"type\":\"uint256\"},{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"deadline\",\"type\":\"uint256\"}]}],\"outputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"},{\"name\":\"liquidity\",\"type\":\"uint128\"},{\"name\":\"amount0\",\"type\":\"uint256\"},{\"name\":\"amount1\",\"type\":\"uint256\"}]}]}",
|
|
167
|
+
"pancakeswap-v3/PancakeSwapV3PoolABI.json": "{\"abi\":[{\"name\":\"slot0\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"name\":\"tick\",\"type\":\"int24\"},{\"name\":\"observationIndex\",\"type\":\"uint16\"},{\"name\":\"observationCardinality\",\"type\":\"uint16\"},{\"name\":\"observationCardinalityNext\",\"type\":\"uint16\"},{\"name\":\"feeProtocol\",\"type\":\"uint32\"},{\"name\":\"unlocked\",\"type\":\"bool\"}]},{\"name\":\"liquidity\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint128\"}]},{\"name\":\"fee\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint24\"}]},{\"name\":\"tickSpacing\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"int24\"}]},{\"name\":\"token0\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}]},{\"name\":\"token1\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}]}]}",
|
|
146
168
|
"pancakeswap-v3/PancakeSwapV3SmartRouterABI.json": "{\"abi\":[{\"name\":\"exactInputSingle\",\"type\":\"function\",\"stateMutability\":\"payable\",\"inputs\":[{\"name\":\"params\",\"type\":\"tuple\",\"components\":[{\"name\":\"tokenIn\",\"type\":\"address\"},{\"name\":\"tokenOut\",\"type\":\"address\"},{\"name\":\"fee\",\"type\":\"uint24\"},{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"amountIn\",\"type\":\"uint256\"},{\"name\":\"amountOutMinimum\",\"type\":\"uint256\"},{\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}]}],\"outputs\":[{\"name\":\"amountOut\",\"type\":\"uint256\"}]},{\"name\":\"exactOutputSingle\",\"type\":\"function\",\"stateMutability\":\"payable\",\"inputs\":[{\"name\":\"params\",\"type\":\"tuple\",\"components\":[{\"name\":\"tokenIn\",\"type\":\"address\"},{\"name\":\"tokenOut\",\"type\":\"address\"},{\"name\":\"fee\",\"type\":\"uint24\"},{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"amountOut\",\"type\":\"uint256\"},{\"name\":\"amountInMaximum\",\"type\":\"uint256\"},{\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}]}],\"outputs\":[{\"name\":\"amountIn\",\"type\":\"uint256\"}]}]}",
|
|
147
169
|
"paraswap/AugustusV5ABI.json": "{\"abi\":[{\"name\":\"simpleSwap\",\"type\":\"function\",\"stateMutability\":\"payable\",\"inputs\":[{\"name\":\"data\",\"type\":\"tuple\",\"components\":[{\"name\":\"fromToken\",\"type\":\"address\"},{\"name\":\"toToken\",\"type\":\"address\"},{\"name\":\"fromAmount\",\"type\":\"uint256\"},{\"name\":\"toAmount\",\"type\":\"uint256\"},{\"name\":\"expectedAmount\",\"type\":\"uint256\"},{\"name\":\"callees\",\"type\":\"address[]\"},{\"name\":\"exchangeData\",\"type\":\"bytes\"},{\"name\":\"startIndexes\",\"type\":\"uint256[]\"},{\"name\":\"values\",\"type\":\"uint256[]\"},{\"name\":\"beneficiary\",\"type\":\"address\"},{\"name\":\"partner\",\"type\":\"address\"},{\"name\":\"feePercent\",\"type\":\"uint256\"},{\"name\":\"permit\",\"type\":\"bytes\"},{\"name\":\"deadline\",\"type\":\"uint256\"},{\"name\":\"uuid\",\"type\":\"bytes16\"}]}],\"outputs\":[{\"name\":\"receivedAmount\",\"type\":\"uint256\"}]}]}",
|
|
148
170
|
"pendle/PendleRouterABI.json": "{\"abi\":[{\"name\":\"addLiquiditySingleToken\",\"type\":\"function\",\"stateMutability\":\"payable\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\"},{\"name\":\"market\",\"type\":\"address\"},{\"name\":\"minLpOut\",\"type\":\"uint256\"},{\"name\":\"guessPtReceivedFromSy\",\"type\":\"tuple\",\"components\":[{\"name\":\"guessMin\",\"type\":\"uint256\"},{\"name\":\"guessMax\",\"type\":\"uint256\"},{\"name\":\"guessOffchain\",\"type\":\"uint256\"},{\"name\":\"maxIteration\",\"type\":\"uint256\"},{\"name\":\"eps\",\"type\":\"uint256\"}]},{\"name\":\"input\",\"type\":\"tuple\",\"components\":[{\"name\":\"tokenIn\",\"type\":\"address\"},{\"name\":\"netTokenIn\",\"type\":\"uint256\"},{\"name\":\"tokenMintSy\",\"type\":\"address\"},{\"name\":\"pendleSwap\",\"type\":\"address\"},{\"name\":\"swapData\",\"type\":\"tuple\",\"components\":[{\"name\":\"swapType\",\"type\":\"uint8\"},{\"name\":\"extRouter\",\"type\":\"address\"},{\"name\":\"extCalldata\",\"type\":\"bytes\"},{\"name\":\"needScale\",\"type\":\"bool\"}]}]},{\"name\":\"limit\",\"type\":\"tuple\",\"components\":[{\"name\":\"limitRouter\",\"type\":\"address\"},{\"name\":\"epsSkipMarket\",\"type\":\"uint256\"},{\"name\":\"normalFills\",\"type\":\"tuple[]\",\"components\":[{\"name\":\"order\",\"type\":\"tuple\",\"components\":[{\"name\":\"salt\",\"type\":\"uint256\"},{\"name\":\"expiry\",\"type\":\"uint256\"},{\"name\":\"nonce\",\"type\":\"uint256\"},{\"name\":\"orderType\",\"type\":\"uint8\"},{\"name\":\"token\",\"type\":\"address\"},{\"name\":\"YT\",\"type\":\"address\"},{\"name\":\"maker\",\"type\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\"},{\"name\":\"makingAmount\",\"type\":\"uint256\"},{\"name\":\"lnImpliedRate\",\"type\":\"uint256\"},{\"name\":\"failSafeRate\",\"type\":\"uint256\"},{\"name\":\"permit\",\"type\":\"bytes\"}]},{\"name\":\"signature\",\"type\":\"bytes\"},{\"name\":\"makingAmount\",\"type\":\"uint256\"}]},{\"name\":\"flashFills\",\"type\":\"tuple[]\",\"components\":[{\"name\":\"order\",\"type\":\"tuple\",\"components\":[{\"name\":\"salt\",\"type\":\"uint256\"},{\"name\":\"expiry\",\"type\":\"uint256\"},{\"name\":\"nonce\",\"type\":\"uint256\"},{\"name\":\"orderType\",\"type\":\"uint8\"},{\"name\":\"token\",\"type\":\"address\"},{\"name\":\"YT\",\"type\":\"address\"},{\"name\":\"maker\",\"type\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\"},{\"name\":\"makingAmount\",\"type\":\"uint256\"},{\"name\":\"lnImpliedRate\",\"type\":\"uint256\"},{\"name\":\"failSafeRate\",\"type\":\"uint256\"},{\"name\":\"permit\",\"type\":\"bytes\"}]},{\"name\":\"signature\",\"type\":\"bytes\"},{\"name\":\"makingAmount\",\"type\":\"uint256\"}]},{\"name\":\"optData\",\"type\":\"bytes\"}]}],\"outputs\":[{\"name\":\"netLpOut\",\"type\":\"uint256\"},{\"name\":\"netSyFee\",\"type\":\"uint256\"},{\"name\":\"netSyInterm\",\"type\":\"uint256\"}]},{\"name\":\"removeLiquiditySingleToken\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\"},{\"name\":\"market\",\"type\":\"address\"},{\"name\":\"netLpToRemove\",\"type\":\"uint256\"},{\"name\":\"output\",\"type\":\"tuple\",\"components\":[{\"name\":\"tokenOut\",\"type\":\"address\"},{\"name\":\"minTokenOut\",\"type\":\"uint256\"},{\"name\":\"tokenRedeemSy\",\"type\":\"address\"},{\"name\":\"pendleSwap\",\"type\":\"address\"},{\"name\":\"swapData\",\"type\":\"tuple\",\"components\":[{\"name\":\"swapType\",\"type\":\"uint8\"},{\"name\":\"extRouter\",\"type\":\"address\"},{\"name\":\"extCalldata\",\"type\":\"bytes\"},{\"name\":\"needScale\",\"type\":\"bool\"}]}]},{\"name\":\"limit\",\"type\":\"tuple\",\"components\":[{\"name\":\"limitRouter\",\"type\":\"address\"},{\"name\":\"epsSkipMarket\",\"type\":\"uint256\"},{\"name\":\"normalFills\",\"type\":\"tuple[]\",\"components\":[{\"name\":\"order\",\"type\":\"tuple\",\"components\":[{\"name\":\"salt\",\"type\":\"uint256\"},{\"name\":\"expiry\",\"type\":\"uint256\"},{\"name\":\"nonce\",\"type\":\"uint256\"},{\"name\":\"orderType\",\"type\":\"uint8\"},{\"name\":\"token\",\"type\":\"address\"},{\"name\":\"YT\",\"type\":\"address\"},{\"name\":\"maker\",\"type\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\"},{\"name\":\"makingAmount\",\"type\":\"uint256\"},{\"name\":\"lnImpliedRate\",\"type\":\"uint256\"},{\"name\":\"failSafeRate\",\"type\":\"uint256\"},{\"name\":\"permit\",\"type\":\"bytes\"}]},{\"name\":\"signature\",\"type\":\"bytes\"},{\"name\":\"makingAmount\",\"type\":\"uint256\"}]},{\"name\":\"flashFills\",\"type\":\"tuple[]\",\"components\":[{\"name\":\"order\",\"type\":\"tuple\",\"components\":[{\"name\":\"salt\",\"type\":\"uint256\"},{\"name\":\"expiry\",\"type\":\"uint256\"},{\"name\":\"nonce\",\"type\":\"uint256\"},{\"name\":\"orderType\",\"type\":\"uint8\"},{\"name\":\"token\",\"type\":\"address\"},{\"name\":\"YT\",\"type\":\"address\"},{\"name\":\"maker\",\"type\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\"},{\"name\":\"makingAmount\",\"type\":\"uint256\"},{\"name\":\"lnImpliedRate\",\"type\":\"uint256\"},{\"name\":\"failSafeRate\",\"type\":\"uint256\"},{\"name\":\"permit\",\"type\":\"bytes\"}]},{\"name\":\"signature\",\"type\":\"bytes\"},{\"name\":\"makingAmount\",\"type\":\"uint256\"}]},{\"name\":\"optData\",\"type\":\"bytes\"}]}],\"outputs\":[{\"name\":\"netTokenOut\",\"type\":\"uint256\"},{\"name\":\"netSyFee\",\"type\":\"uint256\"},{\"name\":\"netSyInterm\",\"type\":\"uint256\"}]},{\"name\":\"swapExactTokenForPt\",\"type\":\"function\",\"stateMutability\":\"payable\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\"},{\"name\":\"market\",\"type\":\"address\"},{\"name\":\"minPtOut\",\"type\":\"uint256\"},{\"name\":\"guessPtOut\",\"type\":\"tuple\",\"components\":[{\"name\":\"guessMin\",\"type\":\"uint256\"},{\"name\":\"guessMax\",\"type\":\"uint256\"},{\"name\":\"guessOffchain\",\"type\":\"uint256\"},{\"name\":\"maxIteration\",\"type\":\"uint256\"},{\"name\":\"eps\",\"type\":\"uint256\"}]},{\"name\":\"input\",\"type\":\"tuple\",\"components\":[{\"name\":\"tokenIn\",\"type\":\"address\"},{\"name\":\"netTokenIn\",\"type\":\"uint256\"},{\"name\":\"tokenMintSy\",\"type\":\"address\"},{\"name\":\"pendleSwap\",\"type\":\"address\"},{\"name\":\"swapData\",\"type\":\"tuple\",\"components\":[{\"name\":\"swapType\",\"type\":\"uint8\"},{\"name\":\"extRouter\",\"type\":\"address\"},{\"name\":\"extCalldata\",\"type\":\"bytes\"},{\"name\":\"needScale\",\"type\":\"bool\"}]}]},{\"name\":\"limit\",\"type\":\"tuple\",\"components\":[{\"name\":\"limitRouter\",\"type\":\"address\"},{\"name\":\"epsSkipMarket\",\"type\":\"uint256\"},{\"name\":\"normalFills\",\"type\":\"tuple[]\",\"components\":[{\"name\":\"order\",\"type\":\"tuple\",\"components\":[{\"name\":\"salt\",\"type\":\"uint256\"},{\"name\":\"expiry\",\"type\":\"uint256\"},{\"name\":\"nonce\",\"type\":\"uint256\"},{\"name\":\"orderType\",\"type\":\"uint8\"},{\"name\":\"token\",\"type\":\"address\"},{\"name\":\"YT\",\"type\":\"address\"},{\"name\":\"maker\",\"type\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\"},{\"name\":\"makingAmount\",\"type\":\"uint256\"},{\"name\":\"lnImpliedRate\",\"type\":\"uint256\"},{\"name\":\"failSafeRate\",\"type\":\"uint256\"},{\"name\":\"permit\",\"type\":\"bytes\"}]},{\"name\":\"signature\",\"type\":\"bytes\"},{\"name\":\"makingAmount\",\"type\":\"uint256\"}]},{\"name\":\"flashFills\",\"type\":\"tuple[]\",\"components\":[{\"name\":\"order\",\"type\":\"tuple\",\"components\":[{\"name\":\"salt\",\"type\":\"uint256\"},{\"name\":\"expiry\",\"type\":\"uint256\"},{\"name\":\"nonce\",\"type\":\"uint256\"},{\"name\":\"orderType\",\"type\":\"uint8\"},{\"name\":\"token\",\"type\":\"address\"},{\"name\":\"YT\",\"type\":\"address\"},{\"name\":\"maker\",\"type\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\"},{\"name\":\"makingAmount\",\"type\":\"uint256\"},{\"name\":\"lnImpliedRate\",\"type\":\"uint256\"},{\"name\":\"failSafeRate\",\"type\":\"uint256\"},{\"name\":\"permit\",\"type\":\"bytes\"}]},{\"name\":\"signature\",\"type\":\"bytes\"},{\"name\":\"makingAmount\",\"type\":\"uint256\"}]},{\"name\":\"optData\",\"type\":\"bytes\"}]}],\"outputs\":[{\"name\":\"netPtOut\",\"type\":\"uint256\"},{\"name\":\"netSyFee\",\"type\":\"uint256\"},{\"name\":\"netSyInterm\",\"type\":\"uint256\"}]},{\"name\":\"swapExactTokenForYt\",\"type\":\"function\",\"stateMutability\":\"payable\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\"},{\"name\":\"market\",\"type\":\"address\"},{\"name\":\"minYtOut\",\"type\":\"uint256\"},{\"name\":\"guessYtOut\",\"type\":\"tuple\",\"components\":[{\"name\":\"guessMin\",\"type\":\"uint256\"},{\"name\":\"guessMax\",\"type\":\"uint256\"},{\"name\":\"guessOffchain\",\"type\":\"uint256\"},{\"name\":\"maxIteration\",\"type\":\"uint256\"},{\"name\":\"eps\",\"type\":\"uint256\"}]},{\"name\":\"input\",\"type\":\"tuple\",\"components\":[{\"name\":\"tokenIn\",\"type\":\"address\"},{\"name\":\"netTokenIn\",\"type\":\"uint256\"},{\"name\":\"tokenMintSy\",\"type\":\"address\"},{\"name\":\"pendleSwap\",\"type\":\"address\"},{\"name\":\"swapData\",\"type\":\"tuple\",\"components\":[{\"name\":\"swapType\",\"type\":\"uint8\"},{\"name\":\"extRouter\",\"type\":\"address\"},{\"name\":\"extCalldata\",\"type\":\"bytes\"},{\"name\":\"needScale\",\"type\":\"bool\"}]}]},{\"name\":\"limit\",\"type\":\"tuple\",\"components\":[{\"name\":\"limitRouter\",\"type\":\"address\"},{\"name\":\"epsSkipMarket\",\"type\":\"uint256\"},{\"name\":\"normalFills\",\"type\":\"tuple[]\",\"components\":[{\"name\":\"order\",\"type\":\"tuple\",\"components\":[{\"name\":\"salt\",\"type\":\"uint256\"},{\"name\":\"expiry\",\"type\":\"uint256\"},{\"name\":\"nonce\",\"type\":\"uint256\"},{\"name\":\"orderType\",\"type\":\"uint8\"},{\"name\":\"token\",\"type\":\"address\"},{\"name\":\"YT\",\"type\":\"address\"},{\"name\":\"maker\",\"type\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\"},{\"name\":\"makingAmount\",\"type\":\"uint256\"},{\"name\":\"lnImpliedRate\",\"type\":\"uint256\"},{\"name\":\"failSafeRate\",\"type\":\"uint256\"},{\"name\":\"permit\",\"type\":\"bytes\"}]},{\"name\":\"signature\",\"type\":\"bytes\"},{\"name\":\"makingAmount\",\"type\":\"uint256\"}]},{\"name\":\"flashFills\",\"type\":\"tuple[]\",\"components\":[{\"name\":\"order\",\"type\":\"tuple\",\"components\":[{\"name\":\"salt\",\"type\":\"uint256\"},{\"name\":\"expiry\",\"type\":\"uint256\"},{\"name\":\"nonce\",\"type\":\"uint256\"},{\"name\":\"orderType\",\"type\":\"uint8\"},{\"name\":\"token\",\"type\":\"address\"},{\"name\":\"YT\",\"type\":\"address\"},{\"name\":\"maker\",\"type\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\"},{\"name\":\"makingAmount\",\"type\":\"uint256\"},{\"name\":\"lnImpliedRate\",\"type\":\"uint256\"},{\"name\":\"failSafeRate\",\"type\":\"uint256\"},{\"name\":\"permit\",\"type\":\"bytes\"}]},{\"name\":\"signature\",\"type\":\"bytes\"},{\"name\":\"makingAmount\",\"type\":\"uint256\"}]},{\"name\":\"optData\",\"type\":\"bytes\"}]}],\"outputs\":[{\"name\":\"netYtOut\",\"type\":\"uint256\"},{\"name\":\"netSyFee\",\"type\":\"uint256\"},{\"name\":\"netSyInterm\",\"type\":\"uint256\"}]}]}",
|
|
149
|
-
"permit2/Permit2ABI.json": "{\"abi\":[{\"name\":\"approve\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\"},{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint160\"},{\"name\":\"expiration\",\"type\":\"uint48\"}],\"outputs\":[]},{\"name\":\"transferFrom\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint160\"},{\"name\":\"token\",\"type\":\"address\"}],\"outputs\":[]},{\"name\":\"lockdown\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"approvals\",\"type\":\"tuple[]\",\"components\":[{\"name\":\"token\",\"type\":\"address\"},{\"name\":\"spender\",\"type\":\"address\"}]}],\"outputs\":[]}]}",
|
|
171
|
+
"permit2/Permit2ABI.json": "{\"abi\":[{\"name\":\"approve\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\"},{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint160\"},{\"name\":\"expiration\",\"type\":\"uint48\"}],\"outputs\":[]},{\"name\":\"transferFrom\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint160\"},{\"name\":\"token\",\"type\":\"address\"}],\"outputs\":[]},{\"name\":\"permitTransferFrom\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"permit\",\"type\":\"tuple\",\"components\":[{\"name\":\"permitted\",\"type\":\"tuple\",\"components\":[{\"name\":\"token\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}]},{\"name\":\"nonce\",\"type\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\"}]},{\"name\":\"transferDetails\",\"type\":\"tuple\",\"components\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"requestedAmount\",\"type\":\"uint256\"}]},{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"signature\",\"type\":\"bytes\"}],\"outputs\":[]},{\"name\":\"nonceBitmap\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"wordPosition\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}]},{\"name\":\"lockdown\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"approvals\",\"type\":\"tuple[]\",\"components\":[{\"name\":\"token\",\"type\":\"address\"},{\"name\":\"spender\",\"type\":\"address\"}]}],\"outputs\":[]},{\"name\":\"SignatureExpired\",\"type\":\"error\",\"inputs\":[{\"name\":\"signatureDeadline\",\"type\":\"uint256\"}]},{\"name\":\"InvalidNonce\",\"type\":\"error\",\"inputs\":[]},{\"name\":\"InvalidSignature\",\"type\":\"error\",\"inputs\":[]},{\"name\":\"InvalidSignatureLength\",\"type\":\"error\",\"inputs\":[]},{\"name\":\"InvalidSigner\",\"type\":\"error\",\"inputs\":[]},{\"name\":\"InvalidContractSignature\",\"type\":\"error\",\"inputs\":[]},{\"name\":\"InvalidAmount\",\"type\":\"error\",\"inputs\":[{\"name\":\"maxAmount\",\"type\":\"uint256\"}]},{\"name\":\"LengthMismatch\",\"type\":\"error\",\"inputs\":[]},{\"name\":\"AllowanceExpired\",\"type\":\"error\",\"inputs\":[{\"name\":\"deadline\",\"type\":\"uint256\"}]},{\"name\":\"InsufficientAllowance\",\"type\":\"error\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\"}]},{\"name\":\"ExcessiveInvalidation\",\"type\":\"error\",\"inputs\":[]}]}",
|
|
150
172
|
"perpetual-protocol/ClearingHouseABI.json": "{\"abi\":[{\"name\":\"openPosition\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"params\",\"type\":\"tuple\",\"components\":[{\"name\":\"baseToken\",\"type\":\"address\"},{\"name\":\"isBaseToQuote\",\"type\":\"bool\"},{\"name\":\"isExactInput\",\"type\":\"bool\"},{\"name\":\"amount\",\"type\":\"uint256\"},{\"name\":\"oppositeAmountBound\",\"type\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\"},{\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"},{\"name\":\"referralCode\",\"type\":\"bytes32\"}]}],\"outputs\":[{\"name\":\"base\",\"type\":\"uint256\"},{\"name\":\"quote\",\"type\":\"uint256\"}]},{\"name\":\"closePosition\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"params\",\"type\":\"tuple\",\"components\":[{\"name\":\"baseToken\",\"type\":\"address\"},{\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"},{\"name\":\"oppositeAmountBound\",\"type\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\"},{\"name\":\"referralCode\",\"type\":\"bytes32\"}]}],\"outputs\":[{\"name\":\"base\",\"type\":\"uint256\"},{\"name\":\"quote\",\"type\":\"uint256\"}]},{\"name\":\"getAccountValue\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"trader\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"int256\"}]}]}",
|
|
151
173
|
"perpetual-protocol/VaultABI.json": "{\"abi\":[{\"name\":\"deposit\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"outputs\":[]},{\"name\":\"withdraw\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"outputs\":[]},{\"name\":\"getFreeCollateral\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"trader\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}]}]}",
|
|
152
174
|
"polygon-bridge/PolygonRootChainManagerABI.json": "{\"abi\":[{\"name\":\"depositEtherFor\",\"type\":\"function\",\"stateMutability\":\"payable\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\"}],\"outputs\":[]},{\"name\":\"depositFor\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\"},{\"name\":\"rootToken\",\"type\":\"address\"},{\"name\":\"depositData\",\"type\":\"bytes\"}],\"outputs\":[]},{\"name\":\"exit\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"inputData\",\"type\":\"bytes\"}],\"outputs\":[]}]}",
|
|
153
175
|
"premia/DiamondABI.json": "{\"abi\":[{\"name\":\"trade\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"size\",\"type\":\"uint256\"},{\"name\":\"isBuy\",\"type\":\"bool\"},{\"name\":\"premiumLimit\",\"type\":\"uint256\"},{\"name\":\"referrer\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"totalPremium\",\"type\":\"uint256\"},{\"name\":\"delta\",\"type\":\"tuple\",\"components\":[{\"name\":\"collateral\",\"type\":\"int256\"},{\"name\":\"longs\",\"type\":\"int256\"},{\"name\":\"shorts\",\"type\":\"int256\"}]}]},{\"name\":\"exercise\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[],\"outputs\":[{\"name\":\"exerciseValue\",\"type\":\"uint256\"},{\"name\":\"exerciseFee\",\"type\":\"uint256\"}]},{\"name\":\"settle\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[],\"outputs\":[{\"name\":\"collateral\",\"type\":\"uint256\"}]}]}",
|
|
154
176
|
"puffer/PufferVaultABI.json": "{\"abi\":[{\"name\":\"deposit\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"assets\",\"type\":\"uint256\"},{\"name\":\"receiver\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"shares\",\"type\":\"uint256\"}]},{\"name\":\"redeem\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"shares\",\"type\":\"uint256\"},{\"name\":\"receiver\",\"type\":\"address\"},{\"name\":\"owner\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"assets\",\"type\":\"uint256\"}]},{\"name\":\"convertToShares\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"assets\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}]},{\"name\":\"convertToAssets\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"shares\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}]},{\"name\":\"balanceOf\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}]}]}",
|
|
155
177
|
"pyth/PythOracleABI.json": "{\"abi\":[{\"name\":\"updatePriceFeeds\",\"type\":\"function\",\"stateMutability\":\"payable\",\"inputs\":[{\"name\":\"updateData\",\"type\":\"bytes[]\"}],\"outputs\":[]},{\"name\":\"getPrice\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"id\",\"type\":\"bytes32\"}],\"outputs\":[{\"name\":\"price\",\"type\":\"tuple\",\"components\":[{\"name\":\"price\",\"type\":\"int64\"},{\"name\":\"conf\",\"type\":\"uint64\"},{\"name\":\"expo\",\"type\":\"int32\"},{\"name\":\"publishTime\",\"type\":\"uint256\"}]}]},{\"name\":\"getUpdateFee\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"updateData\",\"type\":\"bytes[]\"}],\"outputs\":[{\"name\":\"feeAmount\",\"type\":\"uint256\"}]}]}",
|
|
178
|
+
"quickswap/QuickSwapV2FactoryABI.json": "{\"abi\":[{\"name\":\"getPair\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"tokenA\",\"type\":\"address\"},{\"name\":\"tokenB\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"pair\",\"type\":\"address\"}]}]}",
|
|
179
|
+
"quickswap/QuickSwapV2PairABI.json": "{\"abi\":[{\"name\":\"getReserves\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"_reserve0\",\"type\":\"uint112\"},{\"name\":\"_reserve1\",\"type\":\"uint112\"},{\"name\":\"_blockTimestampLast\",\"type\":\"uint32\"}]},{\"name\":\"token0\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}]},{\"name\":\"token1\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}]},{\"name\":\"swap\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\"}],\"outputs\":[]}]}",
|
|
156
180
|
"quickswap/QuickSwapV2RouterABI.json": "{\"abi\":[{\"name\":\"swapExactTokensForTokens\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"amountIn\",\"type\":\"uint256\"},{\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"name\":\"path\",\"type\":\"address[]\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"deadline\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"amounts\",\"type\":\"uint256[]\"}]},{\"name\":\"addLiquidity\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"tokenA\",\"type\":\"address\"},{\"name\":\"tokenB\",\"type\":\"address\"},{\"name\":\"amountADesired\",\"type\":\"uint256\"},{\"name\":\"amountBDesired\",\"type\":\"uint256\"},{\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"deadline\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"amountA\",\"type\":\"uint256\"},{\"name\":\"amountB\",\"type\":\"uint256\"},{\"name\":\"liquidity\",\"type\":\"uint256\"}]},{\"name\":\"removeLiquidity\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"tokenA\",\"type\":\"address\"},{\"name\":\"tokenB\",\"type\":\"address\"},{\"name\":\"liquidity\",\"type\":\"uint256\"},{\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"deadline\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"amountA\",\"type\":\"uint256\"},{\"name\":\"amountB\",\"type\":\"uint256\"}]}]}",
|
|
181
|
+
"quickswap/QuickSwapV3FactoryABI.json": "{\"abi\":[{\"name\":\"poolByPair\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"tokenA\",\"type\":\"address\"},{\"name\":\"tokenB\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"pool\",\"type\":\"address\"}]}]}",
|
|
182
|
+
"quickswap/QuickSwapV3PoolABI.json": "{\"abi\":[{\"name\":\"globalState\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"price\",\"type\":\"uint160\"},{\"name\":\"tick\",\"type\":\"int24\"},{\"name\":\"fee\",\"type\":\"uint16\"},{\"name\":\"timepointIndex\",\"type\":\"uint16\"},{\"name\":\"communityFeeToken0\",\"type\":\"uint8\"},{\"name\":\"communityFeeToken1\",\"type\":\"uint8\"},{\"name\":\"unlocked\",\"type\":\"bool\"}]},{\"name\":\"liquidity\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint128\"}]},{\"name\":\"tickSpacing\",\"type\":\"function\",\"stateMutability\":\"pure\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"int24\"}]},{\"name\":\"token0\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}]},{\"name\":\"token1\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}]}]}",
|
|
157
183
|
"quickswap/QuickSwapV3SwapRouterABI.json": "{\"abi\":[{\"name\":\"exactInputSingle\",\"type\":\"function\",\"stateMutability\":\"payable\",\"inputs\":[{\"name\":\"params\",\"type\":\"tuple\",\"components\":[{\"name\":\"tokenIn\",\"type\":\"address\"},{\"name\":\"tokenOut\",\"type\":\"address\"},{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"deadline\",\"type\":\"uint256\"},{\"name\":\"amountIn\",\"type\":\"uint256\"},{\"name\":\"amountOutMinimum\",\"type\":\"uint256\"},{\"name\":\"limitSqrtPrice\",\"type\":\"uint160\"}]}],\"outputs\":[{\"name\":\"amountOut\",\"type\":\"uint256\"}]}]}",
|
|
158
184
|
"radiant/RadiantLendingPoolABI.json": "{\"abi\":[{\"name\":\"deposit\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"},{\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"name\":\"referralCode\",\"type\":\"uint16\"}],\"outputs\":[]},{\"name\":\"withdraw\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"},{\"name\":\"to\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}]},{\"name\":\"borrow\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"},{\"name\":\"interestRateMode\",\"type\":\"uint256\"},{\"name\":\"referralCode\",\"type\":\"uint16\"},{\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"outputs\":[]},{\"name\":\"repay\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"},{\"name\":\"rateMode\",\"type\":\"uint256\"},{\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}]}]}",
|
|
159
185
|
"ramses/RamsesRouterABI.json": "{\"abi\":[{\"name\":\"swapExactTokensForTokens\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"amountIn\",\"type\":\"uint256\"},{\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"name\":\"routes\",\"type\":\"tuple[]\",\"components\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"stable\",\"type\":\"bool\"}]},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"deadline\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"amounts\",\"type\":\"uint256[]\"}]},{\"name\":\"addLiquidity\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"tokenA\",\"type\":\"address\"},{\"name\":\"tokenB\",\"type\":\"address\"},{\"name\":\"stable\",\"type\":\"bool\"},{\"name\":\"amountADesired\",\"type\":\"uint256\"},{\"name\":\"amountBDesired\",\"type\":\"uint256\"},{\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"deadline\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"amountA\",\"type\":\"uint256\"},{\"name\":\"amountB\",\"type\":\"uint256\"},{\"name\":\"liquidity\",\"type\":\"uint256\"}]}]}",
|
|
@@ -182,6 +208,7 @@ export const PROTOCOL_ABIS = {
|
|
|
182
208
|
"stargate/StargatePoolABI.json": "{\"abi\":[{\"name\":\"send\",\"type\":\"function\",\"stateMutability\":\"payable\",\"inputs\":[{\"name\":\"_sendParam\",\"type\":\"tuple\",\"components\":[{\"name\":\"dstEid\",\"type\":\"uint32\"},{\"name\":\"to\",\"type\":\"bytes32\"},{\"name\":\"amountLD\",\"type\":\"uint256\"},{\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"name\":\"extraOptions\",\"type\":\"bytes\"},{\"name\":\"composeMsg\",\"type\":\"bytes\"},{\"name\":\"oftCmd\",\"type\":\"bytes\"}]},{\"name\":\"_fee\",\"type\":\"tuple\",\"components\":[{\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"name\":\"lzTokenFee\",\"type\":\"uint256\"}]},{\"name\":\"_refundAddress\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"msgReceipt\",\"type\":\"tuple\",\"components\":[{\"name\":\"guid\",\"type\":\"bytes32\"},{\"name\":\"nonce\",\"type\":\"uint64\"},{\"name\":\"fee\",\"type\":\"tuple\",\"components\":[{\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"name\":\"lzTokenFee\",\"type\":\"uint256\"}]}]},{\"name\":\"oftReceipt\",\"type\":\"tuple\",\"components\":[{\"name\":\"amountSentLD\",\"type\":\"uint256\"},{\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}]}]},{\"name\":\"quoteOFT\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"_sendParam\",\"type\":\"tuple\",\"components\":[{\"name\":\"dstEid\",\"type\":\"uint32\"},{\"name\":\"to\",\"type\":\"bytes32\"},{\"name\":\"amountLD\",\"type\":\"uint256\"},{\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"name\":\"extraOptions\",\"type\":\"bytes\"},{\"name\":\"composeMsg\",\"type\":\"bytes\"},{\"name\":\"oftCmd\",\"type\":\"bytes\"}]}],\"outputs\":[{\"name\":\"oftLimit\",\"type\":\"tuple\",\"components\":[{\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"name\":\"maxAmountLD\",\"type\":\"uint256\"}]},{\"name\":\"oftFeeDetails\",\"type\":\"tuple[]\",\"components\":[{\"name\":\"feeAmountLD\",\"type\":\"int256\"},{\"name\":\"description\",\"type\":\"string\"}]},{\"name\":\"oftReceipt\",\"type\":\"tuple\",\"components\":[{\"name\":\"amountSentLD\",\"type\":\"uint256\"},{\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}]}]}]}",
|
|
183
209
|
"superfluid/CFAForwarderABI.json": "{\"abi\":[{\"name\":\"createFlow\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\"},{\"name\":\"sender\",\"type\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\"},{\"name\":\"flowrate\",\"type\":\"int96\"},{\"name\":\"userData\",\"type\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}]},{\"name\":\"updateFlow\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\"},{\"name\":\"sender\",\"type\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\"},{\"name\":\"flowrate\",\"type\":\"int96\"},{\"name\":\"userData\",\"type\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}]},{\"name\":\"deleteFlow\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\"},{\"name\":\"sender\",\"type\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\"},{\"name\":\"userData\",\"type\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}]}]}",
|
|
184
210
|
"sushiswap-v2/SushiSwapV2FactoryABI.json": "{\"abi\":[{\"name\":\"getPair\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"tokenA\",\"type\":\"address\"},{\"name\":\"tokenB\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"pair\",\"type\":\"address\"}]},{\"name\":\"createPair\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"tokenA\",\"type\":\"address\"},{\"name\":\"tokenB\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"pair\",\"type\":\"address\"}]}]}",
|
|
211
|
+
"sushiswap-v2/SushiSwapV2PairABI.json": "{\"abi\":[{\"name\":\"getReserves\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"_reserve0\",\"type\":\"uint112\"},{\"name\":\"_reserve1\",\"type\":\"uint112\"},{\"name\":\"_blockTimestampLast\",\"type\":\"uint32\"}]},{\"name\":\"token0\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}]},{\"name\":\"token1\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}]},{\"name\":\"swap\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\"}],\"outputs\":[]}]}",
|
|
185
212
|
"sushiswap-v2/SushiSwapV2RouterABI.json": "{\"abi\":[{\"name\":\"swapExactTokensForTokens\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"amountIn\",\"type\":\"uint256\"},{\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"name\":\"path\",\"type\":\"address[]\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"deadline\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"amounts\",\"type\":\"uint256[]\"}]},{\"name\":\"swapTokensForExactTokens\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"amountOut\",\"type\":\"uint256\"},{\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"name\":\"path\",\"type\":\"address[]\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"deadline\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"amounts\",\"type\":\"uint256[]\"}]},{\"name\":\"addLiquidity\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"tokenA\",\"type\":\"address\"},{\"name\":\"tokenB\",\"type\":\"address\"},{\"name\":\"amountADesired\",\"type\":\"uint256\"},{\"name\":\"amountBDesired\",\"type\":\"uint256\"},{\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"deadline\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"amountA\",\"type\":\"uint256\"},{\"name\":\"amountB\",\"type\":\"uint256\"},{\"name\":\"liquidity\",\"type\":\"uint256\"}]},{\"name\":\"removeLiquidity\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"tokenA\",\"type\":\"address\"},{\"name\":\"tokenB\",\"type\":\"address\"},{\"name\":\"liquidity\",\"type\":\"uint256\"},{\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"deadline\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"amountA\",\"type\":\"uint256\"},{\"name\":\"amountB\",\"type\":\"uint256\"}]},{\"name\":\"getAmountsOut\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"amountIn\",\"type\":\"uint256\"},{\"name\":\"path\",\"type\":\"address[]\"}],\"outputs\":[{\"name\":\"amounts\",\"type\":\"uint256[]\"}]}]}",
|
|
186
213
|
"swell/RswETHABI.json": "{\"abi\":[{\"name\":\"deposit\",\"type\":\"function\",\"stateMutability\":\"payable\",\"inputs\":[],\"outputs\":[]},{\"name\":\"rswETHToETHRate\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}]},{\"name\":\"balanceOf\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}]}]}",
|
|
187
214
|
"swell/SwETHABI.json": "{\"abi\":[{\"name\":\"deposit\",\"type\":\"function\",\"stateMutability\":\"payable\",\"inputs\":[],\"outputs\":[]},{\"name\":\"swETHToETHRate\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}]},{\"name\":\"balanceOf\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}]}]}",
|
|
@@ -191,6 +218,7 @@ export const PROTOCOL_ABIS = {
|
|
|
191
218
|
"synthetix-v3/PerpsMarketProxyABI.json": "{\"abi\":[{\"name\":\"commitOrder\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"commitment\",\"type\":\"tuple\",\"components\":[{\"name\":\"marketId\",\"type\":\"uint128\"},{\"name\":\"accountId\",\"type\":\"uint128\"},{\"name\":\"sizeDelta\",\"type\":\"int128\"},{\"name\":\"settlementStrategyId\",\"type\":\"uint128\"},{\"name\":\"acceptablePrice\",\"type\":\"uint256\"},{\"name\":\"trackingCode\",\"type\":\"bytes32\"},{\"name\":\"referrer\",\"type\":\"address\"}]}],\"outputs\":[{\"name\":\"retOrder\",\"type\":\"tuple\",\"components\":[{\"name\":\"commitmentTime\",\"type\":\"uint256\"},{\"name\":\"request\",\"type\":\"tuple\",\"components\":[{\"name\":\"marketId\",\"type\":\"uint128\"},{\"name\":\"accountId\",\"type\":\"uint128\"},{\"name\":\"sizeDelta\",\"type\":\"int128\"},{\"name\":\"settlementStrategyId\",\"type\":\"uint128\"},{\"name\":\"acceptablePrice\",\"type\":\"uint256\"},{\"name\":\"trackingCode\",\"type\":\"bytes32\"},{\"name\":\"referrer\",\"type\":\"address\"}]}]},{\"name\":\"fees\",\"type\":\"uint256\"}]},{\"name\":\"modifyCollateral\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"accountId\",\"type\":\"uint128\"},{\"name\":\"collateralId\",\"type\":\"uint128\"},{\"name\":\"amountDelta\",\"type\":\"int256\"}],\"outputs\":[]}]}",
|
|
192
219
|
"synthra-v3/SynthraV3FactoryABI.json": "{\"abi\":[{\"name\":\"getPool\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"tokenA\",\"type\":\"address\"},{\"name\":\"tokenB\",\"type\":\"address\"},{\"name\":\"fee\",\"type\":\"uint24\"}],\"outputs\":[{\"name\":\"pool\",\"type\":\"address\"}]},{\"name\":\"createPool\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"tokenA\",\"type\":\"address\"},{\"name\":\"tokenB\",\"type\":\"address\"},{\"name\":\"fee\",\"type\":\"uint24\"}],\"outputs\":[{\"name\":\"pool\",\"type\":\"address\"}]}]}",
|
|
193
220
|
"synthra-v3/SynthraV3NonfungiblePositionManagerABI.json": "{\"abi\":[{\"name\":\"mint\",\"type\":\"function\",\"stateMutability\":\"payable\",\"inputs\":[{\"name\":\"params\",\"type\":\"tuple\",\"components\":[{\"name\":\"token0\",\"type\":\"address\"},{\"name\":\"token1\",\"type\":\"address\"},{\"name\":\"fee\",\"type\":\"uint24\"},{\"name\":\"tickLower\",\"type\":\"int24\"},{\"name\":\"tickUpper\",\"type\":\"int24\"},{\"name\":\"amount0Desired\",\"type\":\"uint256\"},{\"name\":\"amount1Desired\",\"type\":\"uint256\"},{\"name\":\"amount0Min\",\"type\":\"uint256\"},{\"name\":\"amount1Min\",\"type\":\"uint256\"},{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"deadline\",\"type\":\"uint256\"}]}],\"outputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"},{\"name\":\"liquidity\",\"type\":\"uint128\"},{\"name\":\"amount0\",\"type\":\"uint256\"},{\"name\":\"amount1\",\"type\":\"uint256\"}]},{\"name\":\"increaseLiquidity\",\"type\":\"function\",\"stateMutability\":\"payable\",\"inputs\":[{\"name\":\"params\",\"type\":\"tuple\",\"components\":[{\"name\":\"tokenId\",\"type\":\"uint256\"},{\"name\":\"amount0Desired\",\"type\":\"uint256\"},{\"name\":\"amount1Desired\",\"type\":\"uint256\"},{\"name\":\"amount0Min\",\"type\":\"uint256\"},{\"name\":\"amount1Min\",\"type\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\"}]}],\"outputs\":[{\"name\":\"liquidity\",\"type\":\"uint128\"},{\"name\":\"amount0\",\"type\":\"uint256\"},{\"name\":\"amount1\",\"type\":\"uint256\"}]},{\"name\":\"decreaseLiquidity\",\"type\":\"function\",\"stateMutability\":\"payable\",\"inputs\":[{\"name\":\"params\",\"type\":\"tuple\",\"components\":[{\"name\":\"tokenId\",\"type\":\"uint256\"},{\"name\":\"liquidity\",\"type\":\"uint128\"},{\"name\":\"amount0Min\",\"type\":\"uint256\"},{\"name\":\"amount1Min\",\"type\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\"}]}],\"outputs\":[{\"name\":\"amount0\",\"type\":\"uint256\"},{\"name\":\"amount1\",\"type\":\"uint256\"}]},{\"name\":\"collect\",\"type\":\"function\",\"stateMutability\":\"payable\",\"inputs\":[{\"name\":\"params\",\"type\":\"tuple\",\"components\":[{\"name\":\"tokenId\",\"type\":\"uint256\"},{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"amount0Max\",\"type\":\"uint128\"},{\"name\":\"amount1Max\",\"type\":\"uint128\"}]}],\"outputs\":[{\"name\":\"amount0\",\"type\":\"uint256\"},{\"name\":\"amount1\",\"type\":\"uint256\"}]}]}",
|
|
221
|
+
"synthra-v3/SynthraV3PoolABI.json": "{\"abi\":[{\"name\":\"slot0\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"name\":\"tick\",\"type\":\"int24\"},{\"name\":\"observationIndex\",\"type\":\"uint16\"},{\"name\":\"observationCardinality\",\"type\":\"uint16\"},{\"name\":\"observationCardinalityNext\",\"type\":\"uint16\"},{\"name\":\"feeProtocol\",\"type\":\"uint8\"},{\"name\":\"unlocked\",\"type\":\"bool\"}]},{\"name\":\"liquidity\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint128\"}]},{\"name\":\"fee\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint24\"}]},{\"name\":\"tickSpacing\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"int24\"}]},{\"name\":\"token0\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}]},{\"name\":\"token1\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}]}]}",
|
|
194
222
|
"synthra-v3/SynthraV3QuoterV2ABI.json": "{\"abi\":[{\"name\":\"quoteExactInputSingle\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"params\",\"type\":\"tuple\",\"components\":[{\"name\":\"tokenIn\",\"type\":\"address\"},{\"name\":\"tokenOut\",\"type\":\"address\"},{\"name\":\"amountIn\",\"type\":\"uint256\"},{\"name\":\"fee\",\"type\":\"uint24\"},{\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}]}],\"outputs\":[{\"name\":\"amountOut\",\"type\":\"uint256\"},{\"name\":\"sqrtPriceX96After\",\"type\":\"uint160\"},{\"name\":\"initializedTicksCrossed\",\"type\":\"uint32\"},{\"name\":\"gasEstimate\",\"type\":\"uint256\"}]}]}",
|
|
195
223
|
"synthra-v3/SynthraV3SwapRouter02ABI.json": "{\"abi\":[{\"name\":\"exactInputSingle\",\"type\":\"function\",\"stateMutability\":\"payable\",\"inputs\":[{\"name\":\"params\",\"type\":\"tuple\",\"components\":[{\"name\":\"tokenIn\",\"type\":\"address\"},{\"name\":\"tokenOut\",\"type\":\"address\"},{\"name\":\"fee\",\"type\":\"uint24\"},{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"amountIn\",\"type\":\"uint256\"},{\"name\":\"amountOutMinimum\",\"type\":\"uint256\"},{\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}]}],\"outputs\":[{\"name\":\"amountOut\",\"type\":\"uint256\"}]},{\"name\":\"exactInput\",\"type\":\"function\",\"stateMutability\":\"payable\",\"inputs\":[{\"name\":\"params\",\"type\":\"tuple\",\"components\":[{\"name\":\"path\",\"type\":\"bytes\"},{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"amountIn\",\"type\":\"uint256\"},{\"name\":\"amountOutMinimum\",\"type\":\"uint256\"}]}],\"outputs\":[{\"name\":\"amountOut\",\"type\":\"uint256\"}]},{\"name\":\"exactOutputSingle\",\"type\":\"function\",\"stateMutability\":\"payable\",\"inputs\":[{\"name\":\"params\",\"type\":\"tuple\",\"components\":[{\"name\":\"tokenIn\",\"type\":\"address\"},{\"name\":\"tokenOut\",\"type\":\"address\"},{\"name\":\"fee\",\"type\":\"uint24\"},{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"amountOut\",\"type\":\"uint256\"},{\"name\":\"amountInMaximum\",\"type\":\"uint256\"},{\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}]}],\"outputs\":[{\"name\":\"amountIn\",\"type\":\"uint256\"}]},{\"name\":\"exactOutput\",\"type\":\"function\",\"stateMutability\":\"payable\",\"inputs\":[{\"name\":\"params\",\"type\":\"tuple\",\"components\":[{\"name\":\"path\",\"type\":\"bytes\"},{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"amountOut\",\"type\":\"uint256\"},{\"name\":\"amountInMaximum\",\"type\":\"uint256\"}]}],\"outputs\":[{\"name\":\"amountIn\",\"type\":\"uint256\"}]}]}",
|
|
196
224
|
"thales/PositionalMarketABI.json": "{\"abi\":[{\"name\":\"exerciseOptions\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}]}]}",
|
|
@@ -200,20 +228,26 @@ export const PROTOCOL_ABIS = {
|
|
|
200
228
|
"thruster/ThrusterV3SwapRouterABI.json": "{\"abi\":[{\"name\":\"exactInputSingle\",\"type\":\"function\",\"stateMutability\":\"payable\",\"inputs\":[{\"name\":\"params\",\"type\":\"tuple\",\"components\":[{\"name\":\"tokenIn\",\"type\":\"address\"},{\"name\":\"tokenOut\",\"type\":\"address\"},{\"name\":\"fee\",\"type\":\"uint24\"},{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"deadline\",\"type\":\"uint256\"},{\"name\":\"amountIn\",\"type\":\"uint256\"},{\"name\":\"amountOutMinimum\",\"type\":\"uint256\"},{\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}]}],\"outputs\":[{\"name\":\"amountOut\",\"type\":\"uint256\"}]}]}",
|
|
201
229
|
"tokemak/AutopoolABI.json": "{\"abi\":[{\"name\":\"deposit\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"assets\",\"type\":\"uint256\"},{\"name\":\"receiver\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"shares\",\"type\":\"uint256\"}]},{\"name\":\"withdraw\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"assets\",\"type\":\"uint256\"},{\"name\":\"receiver\",\"type\":\"address\"},{\"name\":\"owner\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"shares\",\"type\":\"uint256\"}]},{\"name\":\"redeem\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"shares\",\"type\":\"uint256\"},{\"name\":\"receiver\",\"type\":\"address\"},{\"name\":\"owner\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"assets\",\"type\":\"uint256\"}]},{\"name\":\"totalAssets\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}]},{\"name\":\"convertToShares\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"assets\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}]},{\"name\":\"convertToAssets\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"shares\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}]}]}",
|
|
202
230
|
"trader-joe/LBFactoryABI.json": "{\"abi\":[{\"name\":\"getLBPairInformation\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"tokenA\",\"type\":\"address\"},{\"name\":\"tokenB\",\"type\":\"address\"},{\"name\":\"binStep\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"lbPairInformation\",\"type\":\"tuple\",\"components\":[{\"name\":\"binStep\",\"type\":\"uint16\"},{\"name\":\"LBPair\",\"type\":\"address\"},{\"name\":\"createdByOwner\",\"type\":\"bool\"},{\"name\":\"ignoredForRouting\",\"type\":\"bool\"}]}]}]}",
|
|
231
|
+
"trader-joe/LBPairABI.json": "{\"abi\":[{\"name\":\"getTokenX\",\"type\":\"function\",\"stateMutability\":\"pure\",\"inputs\":[],\"outputs\":[{\"name\":\"tokenX\",\"type\":\"address\"}]},{\"name\":\"getTokenY\",\"type\":\"function\",\"stateMutability\":\"pure\",\"inputs\":[],\"outputs\":[{\"name\":\"tokenY\",\"type\":\"address\"}]},{\"name\":\"getBinStep\",\"type\":\"function\",\"stateMutability\":\"pure\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\"}]},{\"name\":\"getActiveId\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"activeId\",\"type\":\"uint24\"}]},{\"name\":\"getReserves\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"reserveX\",\"type\":\"uint128\"},{\"name\":\"reserveY\",\"type\":\"uint128\"}]},{\"name\":\"getBin\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint24\"}],\"outputs\":[{\"name\":\"binReserveX\",\"type\":\"uint128\"},{\"name\":\"binReserveY\",\"type\":\"uint128\"}]},{\"name\":\"getPriceFromId\",\"type\":\"function\",\"stateMutability\":\"pure\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint24\"}],\"outputs\":[{\"name\":\"price\",\"type\":\"uint256\"}]},{\"name\":\"getSwapIn\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"amountOut\",\"type\":\"uint128\"},{\"name\":\"swapForY\",\"type\":\"bool\"}],\"outputs\":[{\"name\":\"amountIn\",\"type\":\"uint128\"},{\"name\":\"amountOutLeft\",\"type\":\"uint128\"},{\"name\":\"fee\",\"type\":\"uint128\"}]},{\"name\":\"getSwapOut\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"amountIn\",\"type\":\"uint128\"},{\"name\":\"swapForY\",\"type\":\"bool\"}],\"outputs\":[{\"name\":\"amountInLeft\",\"type\":\"uint128\"},{\"name\":\"amountOut\",\"type\":\"uint128\"},{\"name\":\"fee\",\"type\":\"uint128\"}]},{\"name\":\"swap\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"swapForY\",\"type\":\"bool\"},{\"name\":\"to\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"amountsOut\",\"type\":\"bytes32\"}]}]}",
|
|
203
232
|
"trader-joe/LBRouterABI.json": "{\"abi\":[{\"name\":\"swapExactTokensForTokens\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"amountIn\",\"type\":\"uint256\"},{\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"name\":\"path\",\"type\":\"tuple\",\"components\":[{\"name\":\"pairBinSteps\",\"type\":\"uint256[]\"},{\"name\":\"versions\",\"type\":\"uint8[]\"},{\"name\":\"tokenPath\",\"type\":\"address[]\"}]},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"deadline\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"amountOut\",\"type\":\"uint256\"}]},{\"name\":\"swapTokensForExactTokens\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"amountOut\",\"type\":\"uint256\"},{\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"name\":\"path\",\"type\":\"tuple\",\"components\":[{\"name\":\"pairBinSteps\",\"type\":\"uint256[]\"},{\"name\":\"versions\",\"type\":\"uint8[]\"},{\"name\":\"tokenPath\",\"type\":\"address[]\"}]},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"deadline\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"amountsIn\",\"type\":\"uint256[]\"}]},{\"name\":\"addLiquidity\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"liquidityParameters\",\"type\":\"tuple\",\"components\":[{\"name\":\"tokenX\",\"type\":\"address\"},{\"name\":\"tokenY\",\"type\":\"address\"},{\"name\":\"binStep\",\"type\":\"uint256\"},{\"name\":\"amountX\",\"type\":\"uint256\"},{\"name\":\"amountY\",\"type\":\"uint256\"},{\"name\":\"amountXMin\",\"type\":\"uint256\"},{\"name\":\"amountYMin\",\"type\":\"uint256\"},{\"name\":\"activeIdDesired\",\"type\":\"uint256\"},{\"name\":\"idSlippage\",\"type\":\"uint256\"},{\"name\":\"deltaIds\",\"type\":\"int256[]\"},{\"name\":\"distributionX\",\"type\":\"uint256[]\"},{\"name\":\"distributionY\",\"type\":\"uint256[]\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"refundTo\",\"type\":\"address\"},{\"name\":\"deadline\",\"type\":\"uint256\"}]}],\"outputs\":[{\"name\":\"amountXAdded\",\"type\":\"uint256\"},{\"name\":\"amountYAdded\",\"type\":\"uint256\"},{\"name\":\"amountXLeft\",\"type\":\"uint256\"},{\"name\":\"amountYLeft\",\"type\":\"uint256\"},{\"name\":\"depositIds\",\"type\":\"uint256[]\"},{\"name\":\"liquidityMinted\",\"type\":\"uint256[]\"}]}]}",
|
|
204
233
|
"uniswap-v2/UniswapV2FactoryABI.json": "{\"abi\":[{\"name\":\"getPair\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"tokenA\",\"type\":\"address\"},{\"name\":\"tokenB\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"pair\",\"type\":\"address\"}]},{\"name\":\"createPair\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"tokenA\",\"type\":\"address\"},{\"name\":\"tokenB\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"pair\",\"type\":\"address\"}]}]}",
|
|
234
|
+
"uniswap-v2/UniswapV2PairABI.json": "{\"abi\":[{\"name\":\"getReserves\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"_reserve0\",\"type\":\"uint112\"},{\"name\":\"_reserve1\",\"type\":\"uint112\"},{\"name\":\"_blockTimestampLast\",\"type\":\"uint32\"}]},{\"name\":\"token0\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}]},{\"name\":\"token1\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}]},{\"name\":\"swap\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\"}],\"outputs\":[]}]}",
|
|
205
235
|
"uniswap-v2/UniswapV2RouterABI.json": "{\"abi\":[{\"name\":\"swapExactTokensForTokens\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"amountIn\",\"type\":\"uint256\"},{\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"name\":\"path\",\"type\":\"address[]\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"deadline\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"amounts\",\"type\":\"uint256[]\"}]},{\"name\":\"swapTokensForExactTokens\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"amountOut\",\"type\":\"uint256\"},{\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"name\":\"path\",\"type\":\"address[]\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"deadline\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"amounts\",\"type\":\"uint256[]\"}]},{\"name\":\"addLiquidity\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"tokenA\",\"type\":\"address\"},{\"name\":\"tokenB\",\"type\":\"address\"},{\"name\":\"amountADesired\",\"type\":\"uint256\"},{\"name\":\"amountBDesired\",\"type\":\"uint256\"},{\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"deadline\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"amountA\",\"type\":\"uint256\"},{\"name\":\"amountB\",\"type\":\"uint256\"},{\"name\":\"liquidity\",\"type\":\"uint256\"}]},{\"name\":\"removeLiquidity\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"tokenA\",\"type\":\"address\"},{\"name\":\"tokenB\",\"type\":\"address\"},{\"name\":\"liquidity\",\"type\":\"uint256\"},{\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"deadline\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"amountA\",\"type\":\"uint256\"},{\"name\":\"amountB\",\"type\":\"uint256\"}]},{\"name\":\"getAmountsOut\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"amountIn\",\"type\":\"uint256\"},{\"name\":\"path\",\"type\":\"address[]\"}],\"outputs\":[{\"name\":\"amounts\",\"type\":\"uint256[]\"}]}]}",
|
|
206
236
|
"uniswap-v3/UniswapV3FactoryABI.json": "{\"abi\":[{\"name\":\"getPool\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"tokenA\",\"type\":\"address\"},{\"name\":\"tokenB\",\"type\":\"address\"},{\"name\":\"fee\",\"type\":\"uint24\"}],\"outputs\":[{\"name\":\"pool\",\"type\":\"address\"}]},{\"name\":\"createPool\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"tokenA\",\"type\":\"address\"},{\"name\":\"tokenB\",\"type\":\"address\"},{\"name\":\"fee\",\"type\":\"uint24\"}],\"outputs\":[{\"name\":\"pool\",\"type\":\"address\"}]}]}",
|
|
207
237
|
"uniswap-v3/UniswapV3NonfungiblePositionManagerABI.json": "{\"abi\":[{\"name\":\"mint\",\"type\":\"function\",\"stateMutability\":\"payable\",\"inputs\":[{\"name\":\"params\",\"type\":\"tuple\",\"components\":[{\"name\":\"token0\",\"type\":\"address\"},{\"name\":\"token1\",\"type\":\"address\"},{\"name\":\"fee\",\"type\":\"uint24\"},{\"name\":\"tickLower\",\"type\":\"int24\"},{\"name\":\"tickUpper\",\"type\":\"int24\"},{\"name\":\"amount0Desired\",\"type\":\"uint256\"},{\"name\":\"amount1Desired\",\"type\":\"uint256\"},{\"name\":\"amount0Min\",\"type\":\"uint256\"},{\"name\":\"amount1Min\",\"type\":\"uint256\"},{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"deadline\",\"type\":\"uint256\"}]}],\"outputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"},{\"name\":\"liquidity\",\"type\":\"uint128\"},{\"name\":\"amount0\",\"type\":\"uint256\"},{\"name\":\"amount1\",\"type\":\"uint256\"}]},{\"name\":\"increaseLiquidity\",\"type\":\"function\",\"stateMutability\":\"payable\",\"inputs\":[{\"name\":\"params\",\"type\":\"tuple\",\"components\":[{\"name\":\"tokenId\",\"type\":\"uint256\"},{\"name\":\"amount0Desired\",\"type\":\"uint256\"},{\"name\":\"amount1Desired\",\"type\":\"uint256\"},{\"name\":\"amount0Min\",\"type\":\"uint256\"},{\"name\":\"amount1Min\",\"type\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\"}]}],\"outputs\":[{\"name\":\"liquidity\",\"type\":\"uint128\"},{\"name\":\"amount0\",\"type\":\"uint256\"},{\"name\":\"amount1\",\"type\":\"uint256\"}]},{\"name\":\"decreaseLiquidity\",\"type\":\"function\",\"stateMutability\":\"payable\",\"inputs\":[{\"name\":\"params\",\"type\":\"tuple\",\"components\":[{\"name\":\"tokenId\",\"type\":\"uint256\"},{\"name\":\"liquidity\",\"type\":\"uint128\"},{\"name\":\"amount0Min\",\"type\":\"uint256\"},{\"name\":\"amount1Min\",\"type\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\"}]}],\"outputs\":[{\"name\":\"amount0\",\"type\":\"uint256\"},{\"name\":\"amount1\",\"type\":\"uint256\"}]},{\"name\":\"collect\",\"type\":\"function\",\"stateMutability\":\"payable\",\"inputs\":[{\"name\":\"params\",\"type\":\"tuple\",\"components\":[{\"name\":\"tokenId\",\"type\":\"uint256\"},{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"amount0Max\",\"type\":\"uint128\"},{\"name\":\"amount1Max\",\"type\":\"uint128\"}]}],\"outputs\":[{\"name\":\"amount0\",\"type\":\"uint256\"},{\"name\":\"amount1\",\"type\":\"uint256\"}]}]}",
|
|
238
|
+
"uniswap-v3/UniswapV3PoolABI.json": "{\"abi\":[{\"name\":\"slot0\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"name\":\"tick\",\"type\":\"int24\"},{\"name\":\"observationIndex\",\"type\":\"uint16\"},{\"name\":\"observationCardinality\",\"type\":\"uint16\"},{\"name\":\"observationCardinalityNext\",\"type\":\"uint16\"},{\"name\":\"feeProtocol\",\"type\":\"uint8\"},{\"name\":\"unlocked\",\"type\":\"bool\"}]},{\"name\":\"liquidity\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint128\"}]},{\"name\":\"fee\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint24\"}]},{\"name\":\"tickSpacing\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"int24\"}]},{\"name\":\"token0\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}]},{\"name\":\"token1\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}]}]}",
|
|
208
239
|
"uniswap-v3/UniswapV3QuoterV2ABI.json": "{\"abi\":[{\"name\":\"quoteExactInputSingle\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"params\",\"type\":\"tuple\",\"components\":[{\"name\":\"tokenIn\",\"type\":\"address\"},{\"name\":\"tokenOut\",\"type\":\"address\"},{\"name\":\"amountIn\",\"type\":\"uint256\"},{\"name\":\"fee\",\"type\":\"uint24\"},{\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}]}],\"outputs\":[{\"name\":\"amountOut\",\"type\":\"uint256\"},{\"name\":\"sqrtPriceX96After\",\"type\":\"uint160\"},{\"name\":\"initializedTicksCrossed\",\"type\":\"uint32\"},{\"name\":\"gasEstimate\",\"type\":\"uint256\"}]}]}",
|
|
209
240
|
"uniswap-v3/UniswapV3SwapRouter02ABI.json": "{\"abi\":[{\"name\":\"exactInputSingle\",\"type\":\"function\",\"stateMutability\":\"payable\",\"inputs\":[{\"name\":\"params\",\"type\":\"tuple\",\"components\":[{\"name\":\"tokenIn\",\"type\":\"address\"},{\"name\":\"tokenOut\",\"type\":\"address\"},{\"name\":\"fee\",\"type\":\"uint24\"},{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"amountIn\",\"type\":\"uint256\"},{\"name\":\"amountOutMinimum\",\"type\":\"uint256\"},{\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}]}],\"outputs\":[{\"name\":\"amountOut\",\"type\":\"uint256\"}]},{\"name\":\"exactInput\",\"type\":\"function\",\"stateMutability\":\"payable\",\"inputs\":[{\"name\":\"params\",\"type\":\"tuple\",\"components\":[{\"name\":\"path\",\"type\":\"bytes\"},{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"amountIn\",\"type\":\"uint256\"},{\"name\":\"amountOutMinimum\",\"type\":\"uint256\"}]}],\"outputs\":[{\"name\":\"amountOut\",\"type\":\"uint256\"}]},{\"name\":\"exactOutputSingle\",\"type\":\"function\",\"stateMutability\":\"payable\",\"inputs\":[{\"name\":\"params\",\"type\":\"tuple\",\"components\":[{\"name\":\"tokenIn\",\"type\":\"address\"},{\"name\":\"tokenOut\",\"type\":\"address\"},{\"name\":\"fee\",\"type\":\"uint24\"},{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"amountOut\",\"type\":\"uint256\"},{\"name\":\"amountInMaximum\",\"type\":\"uint256\"},{\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}]}],\"outputs\":[{\"name\":\"amountIn\",\"type\":\"uint256\"}]},{\"name\":\"exactOutput\",\"type\":\"function\",\"stateMutability\":\"payable\",\"inputs\":[{\"name\":\"params\",\"type\":\"tuple\",\"components\":[{\"name\":\"path\",\"type\":\"bytes\"},{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"amountOut\",\"type\":\"uint256\"},{\"name\":\"amountInMaximum\",\"type\":\"uint256\"}]}],\"outputs\":[{\"name\":\"amountIn\",\"type\":\"uint256\"}]}]}",
|
|
210
241
|
"uniswap-v3/UniswapV3SwapRouterABI.json": "{\"abi\":[{\"name\":\"exactInputSingle\",\"type\":\"function\",\"stateMutability\":\"payable\",\"inputs\":[{\"name\":\"params\",\"type\":\"tuple\",\"components\":[{\"name\":\"tokenIn\",\"type\":\"address\"},{\"name\":\"tokenOut\",\"type\":\"address\"},{\"name\":\"fee\",\"type\":\"uint24\"},{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"deadline\",\"type\":\"uint256\"},{\"name\":\"amountIn\",\"type\":\"uint256\"},{\"name\":\"amountOutMinimum\",\"type\":\"uint256\"},{\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}]}],\"outputs\":[{\"name\":\"amountOut\",\"type\":\"uint256\"}]},{\"name\":\"exactInput\",\"type\":\"function\",\"stateMutability\":\"payable\",\"inputs\":[{\"name\":\"params\",\"type\":\"tuple\",\"components\":[{\"name\":\"path\",\"type\":\"bytes\"},{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"deadline\",\"type\":\"uint256\"},{\"name\":\"amountIn\",\"type\":\"uint256\"},{\"name\":\"amountOutMinimum\",\"type\":\"uint256\"}]}],\"outputs\":[{\"name\":\"amountOut\",\"type\":\"uint256\"}]},{\"name\":\"exactOutputSingle\",\"type\":\"function\",\"stateMutability\":\"payable\",\"inputs\":[{\"name\":\"params\",\"type\":\"tuple\",\"components\":[{\"name\":\"tokenIn\",\"type\":\"address\"},{\"name\":\"tokenOut\",\"type\":\"address\"},{\"name\":\"fee\",\"type\":\"uint24\"},{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"deadline\",\"type\":\"uint256\"},{\"name\":\"amountOut\",\"type\":\"uint256\"},{\"name\":\"amountInMaximum\",\"type\":\"uint256\"},{\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}]}],\"outputs\":[{\"name\":\"amountIn\",\"type\":\"uint256\"}]},{\"name\":\"exactOutput\",\"type\":\"function\",\"stateMutability\":\"payable\",\"inputs\":[{\"name\":\"params\",\"type\":\"tuple\",\"components\":[{\"name\":\"path\",\"type\":\"bytes\"},{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"deadline\",\"type\":\"uint256\"},{\"name\":\"amountOut\",\"type\":\"uint256\"},{\"name\":\"amountInMaximum\",\"type\":\"uint256\"}]}],\"outputs\":[{\"name\":\"amountIn\",\"type\":\"uint256\"}]}]}",
|
|
211
|
-
"uniswap-v4/UniswapV4PoolManagerABI.json": "{\"abi\":[{\"name\":\"initialize\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"key\",\"type\":\"tuple\",\"components\":[{\"name\":\"currency0\",\"type\":\"address\"},{\"name\":\"currency1\",\"type\":\"address\"},{\"name\":\"fee\",\"type\":\"uint24\"},{\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"name\":\"hooks\",\"type\":\"address\"}]},{\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"}],\"outputs\":[{\"name\":\"tick\",\"type\":\"int24\"}]},{\"name\":\"swap\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"key\",\"type\":\"tuple\",\"components\":[{\"name\":\"currency0\",\"type\":\"address\"},{\"name\":\"currency1\",\"type\":\"address\"},{\"name\":\"fee\",\"type\":\"uint24\"},{\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"name\":\"hooks\",\"type\":\"address\"}]},{\"name\":\"params\",\"type\":\"tuple\",\"components\":[{\"name\":\"zeroForOne\",\"type\":\"bool\"},{\"name\":\"amountSpecified\",\"type\":\"int256\"},{\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}]},{\"name\":\"hookData\",\"type\":\"bytes\"}],\"outputs\":[{\"name\":\"delta\",\"type\":\"int256\"}]},{\"name\":\"modifyLiquidity\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"key\",\"type\":\"tuple\",\"components\":[{\"name\":\"currency0\",\"type\":\"address\"},{\"name\":\"currency1\",\"type\":\"address\"},{\"name\":\"fee\",\"type\":\"uint24\"},{\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"name\":\"hooks\",\"type\":\"address\"}]},{\"name\":\"params\",\"type\":\"tuple\",\"components\":[{\"name\":\"tickLower\",\"type\":\"int24\"},{\"name\":\"tickUpper\",\"type\":\"int24\"},{\"name\":\"liquidityDelta\",\"type\":\"int256\"},{\"name\":\"salt\",\"type\":\"bytes32\"}]},{\"name\":\"hookData\",\"type\":\"bytes\"}],\"outputs\":[{\"name\":\"delta\",\"type\":\"int256\"},{\"name\":\"feeDelta\",\"type\":\"int256\"}]}]}",
|
|
242
|
+
"uniswap-v4/UniswapV4PoolManagerABI.json": "{\"abi\":[{\"name\":\"initialize\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"key\",\"type\":\"tuple\",\"components\":[{\"name\":\"currency0\",\"type\":\"address\"},{\"name\":\"currency1\",\"type\":\"address\"},{\"name\":\"fee\",\"type\":\"uint24\"},{\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"name\":\"hooks\",\"type\":\"address\"}]},{\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"}],\"outputs\":[{\"name\":\"tick\",\"type\":\"int24\"}]},{\"name\":\"swap\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"key\",\"type\":\"tuple\",\"components\":[{\"name\":\"currency0\",\"type\":\"address\"},{\"name\":\"currency1\",\"type\":\"address\"},{\"name\":\"fee\",\"type\":\"uint24\"},{\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"name\":\"hooks\",\"type\":\"address\"}]},{\"name\":\"params\",\"type\":\"tuple\",\"components\":[{\"name\":\"zeroForOne\",\"type\":\"bool\"},{\"name\":\"amountSpecified\",\"type\":\"int256\"},{\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}]},{\"name\":\"hookData\",\"type\":\"bytes\"}],\"outputs\":[{\"name\":\"delta\",\"type\":\"int256\"}]},{\"name\":\"modifyLiquidity\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"key\",\"type\":\"tuple\",\"components\":[{\"name\":\"currency0\",\"type\":\"address\"},{\"name\":\"currency1\",\"type\":\"address\"},{\"name\":\"fee\",\"type\":\"uint24\"},{\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"name\":\"hooks\",\"type\":\"address\"}]},{\"name\":\"params\",\"type\":\"tuple\",\"components\":[{\"name\":\"tickLower\",\"type\":\"int24\"},{\"name\":\"tickUpper\",\"type\":\"int24\"},{\"name\":\"liquidityDelta\",\"type\":\"int256\"},{\"name\":\"salt\",\"type\":\"bytes32\"}]},{\"name\":\"hookData\",\"type\":\"bytes\"}],\"outputs\":[{\"name\":\"delta\",\"type\":\"int256\"},{\"name\":\"feeDelta\",\"type\":\"int256\"}]},{\"name\":\"extsload\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"slot\",\"type\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\"}]},{\"name\":\"extsload\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"startSlot\",\"type\":\"bytes32\"},{\"name\":\"nSlots\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32[]\"}]}]}",
|
|
212
243
|
"uniswap-v4/UniswapV4PositionManagerABI.json": "{\"abi\":[{\"name\":\"modifyLiquidities\",\"type\":\"function\",\"stateMutability\":\"payable\",\"inputs\":[{\"name\":\"unlockData\",\"type\":\"bytes\"},{\"name\":\"deadline\",\"type\":\"uint256\"}],\"outputs\":[]}]}",
|
|
244
|
+
"uniswap-v4/UniswapV4StateViewABI.json": "{\"abi\":[{\"name\":\"getSlot0\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"poolId\",\"type\":\"bytes32\"}],\"outputs\":[{\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"name\":\"tick\",\"type\":\"int24\"},{\"name\":\"protocolFee\",\"type\":\"uint24\"},{\"name\":\"lpFee\",\"type\":\"uint24\"}]},{\"name\":\"getLiquidity\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"poolId\",\"type\":\"bytes32\"}],\"outputs\":[{\"name\":\"liquidity\",\"type\":\"uint128\"}]},{\"name\":\"getTickInfo\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"poolId\",\"type\":\"bytes32\"},{\"name\":\"tick\",\"type\":\"int24\"}],\"outputs\":[{\"name\":\"liquidityGross\",\"type\":\"uint128\"},{\"name\":\"liquidityNet\",\"type\":\"int128\"},{\"name\":\"feeGrowthOutside0X128\",\"type\":\"uint256\"},{\"name\":\"feeGrowthOutside1X128\",\"type\":\"uint256\"}]},{\"name\":\"getTickLiquidity\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"poolId\",\"type\":\"bytes32\"},{\"name\":\"tick\",\"type\":\"int24\"}],\"outputs\":[{\"name\":\"liquidityGross\",\"type\":\"uint128\"},{\"name\":\"liquidityNet\",\"type\":\"int128\"}]},{\"name\":\"getTickFeeGrowthOutside\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"poolId\",\"type\":\"bytes32\"},{\"name\":\"tick\",\"type\":\"int24\"}],\"outputs\":[{\"name\":\"feeGrowthOutside0X128\",\"type\":\"uint256\"},{\"name\":\"feeGrowthOutside1X128\",\"type\":\"uint256\"}]},{\"name\":\"getTickBitmap\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"poolId\",\"type\":\"bytes32\"},{\"name\":\"tick\",\"type\":\"int16\"}],\"outputs\":[{\"name\":\"tickBitmap\",\"type\":\"uint256\"}]},{\"name\":\"getFeeGrowthGlobals\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"poolId\",\"type\":\"bytes32\"}],\"outputs\":[{\"name\":\"feeGrowthGlobal0\",\"type\":\"uint256\"},{\"name\":\"feeGrowthGlobal1\",\"type\":\"uint256\"}]},{\"name\":\"getFeeGrowthInside\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"poolId\",\"type\":\"bytes32\"},{\"name\":\"tickLower\",\"type\":\"int24\"},{\"name\":\"tickUpper\",\"type\":\"int24\"}],\"outputs\":[{\"name\":\"feeGrowthInside0X128\",\"type\":\"uint256\"},{\"name\":\"feeGrowthInside1X128\",\"type\":\"uint256\"}]},{\"name\":\"getPositionInfo\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"poolId\",\"type\":\"bytes32\"},{\"name\":\"positionId\",\"type\":\"bytes32\"}],\"outputs\":[{\"name\":\"liquidity\",\"type\":\"uint128\"},{\"name\":\"feeGrowthInside0LastX128\",\"type\":\"uint256\"},{\"name\":\"feeGrowthInside1LastX128\",\"type\":\"uint256\"}]},{\"name\":\"getPositionInfo\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"poolId\",\"type\":\"bytes32\"},{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"tickLower\",\"type\":\"int24\"},{\"name\":\"tickUpper\",\"type\":\"int24\"},{\"name\":\"salt\",\"type\":\"bytes32\"}],\"outputs\":[{\"name\":\"liquidity\",\"type\":\"uint128\"},{\"name\":\"feeGrowthInside0LastX128\",\"type\":\"uint256\"},{\"name\":\"feeGrowthInside1LastX128\",\"type\":\"uint256\"}]},{\"name\":\"getPositionLiquidity\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"poolId\",\"type\":\"bytes32\"},{\"name\":\"positionId\",\"type\":\"bytes32\"}],\"outputs\":[{\"name\":\"liquidity\",\"type\":\"uint128\"}]},{\"name\":\"poolManager\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}]}]}",
|
|
213
245
|
"uniswap-v4/UniswapV4UniversalRouterABI.json": "{\"abi\":[{\"name\":\"execute\",\"type\":\"function\",\"stateMutability\":\"payable\",\"inputs\":[{\"name\":\"commands\",\"type\":\"bytes\"},{\"name\":\"inputs\",\"type\":\"bytes[]\"},{\"name\":\"deadline\",\"type\":\"uint256\"}],\"outputs\":[]},{\"name\":\"execute\",\"type\":\"function\",\"stateMutability\":\"payable\",\"inputs\":[{\"name\":\"commands\",\"type\":\"bytes\"},{\"name\":\"inputs\",\"type\":\"bytes[]\"}],\"outputs\":[]}]}",
|
|
214
246
|
"unitflow-v3/UnitFlowV3FactoryABI.json": "{\"abi\":[{\"name\":\"getPool\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"tokenA\",\"type\":\"address\"},{\"name\":\"tokenB\",\"type\":\"address\"},{\"name\":\"fee\",\"type\":\"uint24\"}],\"outputs\":[{\"name\":\"pool\",\"type\":\"address\"}]},{\"name\":\"feeAmountTickSpacing\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"fee\",\"type\":\"uint24\"}],\"outputs\":[{\"name\":\"\",\"type\":\"int24\"}]}]}",
|
|
247
|
+
"unitflow-v3/UnitFlowV3PoolABI.json": "{\"abi\":[{\"name\":\"slot0\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"name\":\"tick\",\"type\":\"int24\"},{\"name\":\"observationIndex\",\"type\":\"uint16\"},{\"name\":\"observationCardinality\",\"type\":\"uint16\"},{\"name\":\"observationCardinalityNext\",\"type\":\"uint16\"},{\"name\":\"feeProtocol\",\"type\":\"uint8\"},{\"name\":\"unlocked\",\"type\":\"bool\"}]},{\"name\":\"liquidity\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint128\"}]},{\"name\":\"fee\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint24\"}]},{\"name\":\"tickSpacing\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"int24\"}]},{\"name\":\"token0\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}]},{\"name\":\"token1\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}]}]}",
|
|
215
248
|
"unitflow-v3/UnitFlowV3QuoterABI.json": "{\"abi\":[{\"name\":\"quoteExactInputSingle\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"tokenIn\",\"type\":\"address\"},{\"name\":\"tokenOut\",\"type\":\"address\"},{\"name\":\"fee\",\"type\":\"uint24\"},{\"name\":\"amountIn\",\"type\":\"uint256\"},{\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"outputs\":[{\"name\":\"amountOut\",\"type\":\"uint256\"}]}]}",
|
|
216
249
|
"unitflow-v3/UnitFlowV3RouterABI.json": "{\"abi\":[{\"name\":\"exactInputSingle\",\"type\":\"function\",\"stateMutability\":\"payable\",\"inputs\":[{\"name\":\"params\",\"type\":\"tuple\",\"components\":[{\"name\":\"tokenIn\",\"type\":\"address\"},{\"name\":\"tokenOut\",\"type\":\"address\"},{\"name\":\"fee\",\"type\":\"uint24\"},{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"deadline\",\"type\":\"uint256\"},{\"name\":\"amountIn\",\"type\":\"uint256\"},{\"name\":\"amountOutMinimum\",\"type\":\"uint256\"},{\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}]}],\"outputs\":[{\"name\":\"amountOut\",\"type\":\"uint256\"}]},{\"name\":\"factory\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}]}]}",
|
|
250
|
+
"velodrome/VelodromePoolABI.json": "{\"abi\":[{\"name\":\"getReserves\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"_reserve0\",\"type\":\"uint256\"},{\"name\":\"_reserve1\",\"type\":\"uint256\"},{\"name\":\"_blockTimestampLast\",\"type\":\"uint256\"}]},{\"name\":\"getAmountOut\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"amountIn\",\"type\":\"uint256\"},{\"name\":\"tokenIn\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}]},{\"name\":\"stable\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}]},{\"name\":\"token0\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}]},{\"name\":\"token1\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}]},{\"name\":\"swap\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\"}],\"outputs\":[]}]}",
|
|
217
251
|
"velodrome/VelodromePoolFactoryABI.json": "{\"abi\":[{\"name\":\"getPool\",\"type\":\"function\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"tokenA\",\"type\":\"address\"},{\"name\":\"tokenB\",\"type\":\"address\"},{\"name\":\"stable\",\"type\":\"bool\"}],\"outputs\":[{\"name\":\"pool\",\"type\":\"address\"}]}]}",
|
|
218
252
|
"velodrome/VelodromeRouterABI.json": "{\"abi\":[{\"name\":\"swapExactTokensForTokens\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"amountIn\",\"type\":\"uint256\"},{\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"name\":\"routes\",\"type\":\"tuple[]\",\"components\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"stable\",\"type\":\"bool\"},{\"name\":\"factory\",\"type\":\"address\"}]},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"deadline\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"amounts\",\"type\":\"uint256[]\"}]},{\"name\":\"addLiquidity\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"tokenA\",\"type\":\"address\"},{\"name\":\"tokenB\",\"type\":\"address\"},{\"name\":\"stable\",\"type\":\"bool\"},{\"name\":\"amountADesired\",\"type\":\"uint256\"},{\"name\":\"amountBDesired\",\"type\":\"uint256\"},{\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"deadline\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"amountA\",\"type\":\"uint256\"},{\"name\":\"amountB\",\"type\":\"uint256\"},{\"name\":\"liquidity\",\"type\":\"uint256\"}]},{\"name\":\"removeLiquidity\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"tokenA\",\"type\":\"address\"},{\"name\":\"tokenB\",\"type\":\"address\"},{\"name\":\"stable\",\"type\":\"bool\"},{\"name\":\"liquidity\",\"type\":\"uint256\"},{\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"deadline\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"amountA\",\"type\":\"uint256\"},{\"name\":\"amountB\",\"type\":\"uint256\"}]}]}",
|
|
219
253
|
"venus/VBNBABI.json": "{\"abi\":[{\"name\":\"mint\",\"type\":\"function\",\"stateMutability\":\"payable\",\"inputs\":[],\"outputs\":[]},{\"name\":\"redeem\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}]},{\"name\":\"redeemUnderlying\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"redeemAmount\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}]},{\"name\":\"borrow\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"borrowAmount\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}]},{\"name\":\"repayBorrow\",\"type\":\"function\",\"stateMutability\":\"payable\",\"inputs\":[],\"outputs\":[]},{\"name\":\"balanceOfUnderlying\",\"type\":\"function\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}]}]}",
|