@eco-incorp/sauce 0.99.0 → 0.99.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (185) hide show
  1. package/LICENSE.md +29 -0
  2. package/README.md +69 -249
  3. package/actions/dist/to-sauce.d.ts.map +1 -1
  4. package/actions/dist/to-sauce.js +4 -5
  5. package/dev-tools/README.md +11 -170
  6. package/docs/README.md +39 -0
  7. package/docs/api/README.md +71 -0
  8. package/docs/api/compiler.md +234 -0
  9. package/docs/api/coverage.md +117 -0
  10. package/docs/api/routes.md +110 -0
  11. package/docs/concepts/architecture.md +134 -0
  12. package/docs/concepts/saucescript.md +172 -0
  13. package/docs/examples/README.md +34 -0
  14. package/docs/examples/compile-program.ts +20 -0
  15. package/docs/examples/evm-execution.ts +59 -0
  16. package/docs/examples/first-intent.ts +56 -0
  17. package/docs/examples/protocol-approval.ts +33 -0
  18. package/docs/guides/builders-and-actions.md +108 -0
  19. package/docs/guides/compiling.md +264 -0
  20. package/docs/guides/intents.md +158 -0
  21. package/docs/guides/nested-intents.md +79 -0
  22. package/docs/guides/protocols-and-tokens.md +116 -0
  23. package/docs/guides/quick-start.md +64 -0
  24. package/docs/guides/solana.md +196 -0
  25. package/docs/guides/verification.md +253 -0
  26. package/package.json +9 -4
  27. package/sdk/dist/artifacts/V12Deployments.json +82 -0
  28. package/sdk/dist/artifacts/V12RuntimeBytecode.json +1 -1
  29. package/sdk/dist/artifacts/svm/engine-devnet.so +0 -0
  30. package/sdk/dist/artifacts/svm/engine-mainnet.so +0 -0
  31. package/sdk/dist/artifacts/svm/engine-wire-devnet.json +3 -3
  32. package/sdk/dist/artifacts/svm/engine-wire-mainnet.json +3 -3
  33. package/sdk/dist/deployments/index.d.ts +15 -39
  34. package/sdk/dist/deployments/index.d.ts.map +1 -1
  35. package/sdk/dist/deployments/index.js +23 -39
  36. package/sdk/dist/deployments/index.js.map +1 -1
  37. package/sdk/dist/deployments/v12-addresses.d.ts +85 -0
  38. package/sdk/dist/deployments/v12-addresses.d.ts.map +1 -0
  39. package/sdk/dist/deployments/v12-addresses.js +51 -0
  40. package/sdk/dist/deployments/v12-addresses.js.map +1 -0
  41. package/sdk/dist/deployments/v12.generated.d.ts +3 -3
  42. package/sdk/dist/deployments/v12.generated.d.ts.map +1 -1
  43. package/sdk/dist/deployments/v12.generated.js +3 -3
  44. package/sdk/dist/deployments/v12.generated.js.map +1 -1
  45. package/sdk/dist/deposit/index.d.ts +28 -102
  46. package/sdk/dist/deposit/index.d.ts.map +1 -1
  47. package/sdk/dist/deposit/index.js.map +1 -1
  48. package/sdk/dist/deposit/params.d.ts +1 -1
  49. package/sdk/dist/deposit/params.js +2 -2
  50. package/sdk/dist/deposit/params.js.map +1 -1
  51. package/sdk/dist/deposit/source.d.ts +1 -1
  52. package/sdk/dist/deposit/source.d.ts.map +1 -1
  53. package/sdk/dist/deposit/source.js +18 -33
  54. package/sdk/dist/deposit/source.js.map +1 -1
  55. package/sdk/dist/deposit/types.d.ts +5 -4
  56. package/sdk/dist/deposit/types.d.ts.map +1 -1
  57. package/sdk/dist/evm/engine.d.ts +32 -0
  58. package/sdk/dist/evm/engine.d.ts.map +1 -1
  59. package/sdk/dist/evm/engine.js +2 -0
  60. package/sdk/dist/evm/engine.js.map +1 -1
  61. package/sdk/dist/index.d.ts +1 -0
  62. package/sdk/dist/index.d.ts.map +1 -1
  63. package/sdk/dist/index.js +2 -0
  64. package/sdk/dist/index.js.map +1 -1
  65. package/sdk/dist/plugin/index.d.ts +16 -41
  66. package/sdk/dist/plugin/index.d.ts.map +1 -1
  67. package/sdk/dist/plugin/index.js +2 -6
  68. package/sdk/dist/plugin/index.js.map +1 -1
  69. package/sdk/dist/recipes/index.js +2 -2
  70. package/sdk/dist/recipes/settle.sauce.ts +1 -1
  71. package/sdk/dist/routes/index.d.ts +3 -3
  72. package/sdk/dist/routes/index.js +3 -3
  73. package/sdk/dist/routes/intent-dsl.d.ts +23 -10
  74. package/sdk/dist/routes/intent-dsl.d.ts.map +1 -1
  75. package/sdk/dist/routes/intent-dsl.js +19 -2
  76. package/sdk/dist/routes/intent-dsl.js.map +1 -1
  77. package/sdk/dist/routes/nest.d.ts +23 -0
  78. package/sdk/dist/routes/nest.d.ts.map +1 -1
  79. package/sdk/dist/routes/nest.js +2 -4
  80. package/sdk/dist/routes/nest.js.map +1 -1
  81. package/sdk/dist/routes/protocol-rewrite.d.ts +2 -2
  82. package/sdk/dist/routes/protocol-rewrite.d.ts.map +1 -1
  83. package/sdk/dist/routes/protocol-rewrite.js +19 -35
  84. package/sdk/dist/routes/protocol-rewrite.js.map +1 -1
  85. package/sdk/dist/routes/sauce-calls.d.ts +7 -13
  86. package/sdk/dist/routes/sauce-calls.d.ts.map +1 -1
  87. package/sdk/dist/routes/sauce-calls.js +6 -11
  88. package/sdk/dist/routes/sauce-calls.js.map +1 -1
  89. package/sdk/dist/routes/sauce-route.d.ts +24 -53
  90. package/sdk/dist/routes/sauce-route.d.ts.map +1 -1
  91. package/sdk/dist/routes/sauce-route.js +5 -6
  92. package/sdk/dist/routes/sauce-route.js.map +1 -1
  93. package/sdk/dist/routes/source-globals.generated.d.ts +931 -0
  94. package/sdk/dist/routes/source-globals.generated.d.ts.map +1 -0
  95. package/sdk/dist/routes/source-globals.generated.js +7 -0
  96. package/sdk/dist/routes/source-globals.generated.js.map +1 -0
  97. package/sdk/dist/std/token/token.svm.js +19 -14
  98. package/sdk/dist/svm/cpi-probe.d.ts +1 -1
  99. package/sdk/dist/svm/cpi-probe.d.ts.map +1 -1
  100. package/sdk/dist/svm/cpi-probe.js +5 -2
  101. package/sdk/dist/svm/cpi-probe.js.map +1 -1
  102. package/sdk/dist/svm/intent.d.ts +12 -40
  103. package/sdk/dist/svm/intent.d.ts.map +1 -1
  104. package/sdk/dist/svm/intent.js +22 -66
  105. package/sdk/dist/svm/intent.js.map +1 -1
  106. package/sdk/dist/svm/venues/byreal/index.d.ts.map +1 -1
  107. package/sdk/dist/svm/venues/byreal/index.js +4 -1
  108. package/sdk/dist/svm/venues/byreal/index.js.map +1 -1
  109. package/sdk/dist/svm/venues/carrot/index.d.ts.map +1 -1
  110. package/sdk/dist/svm/venues/carrot/index.js +4 -0
  111. package/sdk/dist/svm/venues/carrot/index.js.map +1 -1
  112. package/sdk/dist/svm/venues/cropper/index.d.ts +1 -1
  113. package/sdk/dist/svm/venues/cropper/index.js +1 -1
  114. package/sdk/dist/svm/venues/huma/index.d.ts.map +1 -1
  115. package/sdk/dist/svm/venues/huma/index.js +4 -1
  116. package/sdk/dist/svm/venues/huma/index.js.map +1 -1
  117. package/sdk/dist/svm/venues/index.d.ts +1 -0
  118. package/sdk/dist/svm/venues/index.d.ts.map +1 -1
  119. package/sdk/dist/svm/venues/index.js +1 -0
  120. package/sdk/dist/svm/venues/index.js.map +1 -1
  121. package/sdk/dist/svm/venues/math.d.ts +4 -1
  122. package/sdk/dist/svm/venues/math.d.ts.map +1 -1
  123. package/sdk/dist/svm/venues/math.js +4 -1
  124. package/sdk/dist/svm/venues/math.js.map +1 -1
  125. package/sdk/dist/svm/venues/meteora-damm-v1-stable/index.d.ts.map +1 -1
  126. package/sdk/dist/svm/venues/meteora-damm-v1-stable/index.js +4 -1
  127. package/sdk/dist/svm/venues/meteora-damm-v1-stable/index.js.map +1 -1
  128. package/sdk/dist/svm/venues/meteora-damm-v2/index.d.ts.map +1 -1
  129. package/sdk/dist/svm/venues/meteora-damm-v2/index.js +5 -2
  130. package/sdk/dist/svm/venues/meteora-damm-v2/index.js.map +1 -1
  131. package/sdk/dist/svm/venues/obric-v2/index.d.ts.map +1 -1
  132. package/sdk/dist/svm/venues/obric-v2/index.js +16 -5
  133. package/sdk/dist/svm/venues/obric-v2/index.js.map +1 -1
  134. package/sdk/dist/svm/venues/oracle-exponent.d.ts +82 -0
  135. package/sdk/dist/svm/venues/oracle-exponent.d.ts.map +1 -0
  136. package/sdk/dist/svm/venues/oracle-exponent.js +97 -0
  137. package/sdk/dist/svm/venues/oracle-exponent.js.map +1 -0
  138. package/sdk/dist/svm/venues/orca-legacy-token-swap/index.d.ts.map +1 -1
  139. package/sdk/dist/svm/venues/orca-legacy-token-swap/index.js +4 -1
  140. package/sdk/dist/svm/venues/orca-legacy-token-swap/index.js.map +1 -1
  141. package/sdk/dist/svm/venues/pumpswap/index.d.ts.map +1 -1
  142. package/sdk/dist/svm/venues/pumpswap/index.js +19 -13
  143. package/sdk/dist/svm/venues/pumpswap/index.js.map +1 -1
  144. package/sdk/dist/svm/venues/raydium-amm-v4/index.d.ts.map +1 -1
  145. package/sdk/dist/svm/venues/raydium-amm-v4/index.js +4 -1
  146. package/sdk/dist/svm/venues/raydium-amm-v4/index.js.map +1 -1
  147. package/sdk/dist/svm/venues/raydium-clmm/index.d.ts.map +1 -1
  148. package/sdk/dist/svm/venues/raydium-clmm/index.js +4 -1
  149. package/sdk/dist/svm/venues/raydium-clmm/index.js.map +1 -1
  150. package/sdk/dist/svm/venues/raydium-cp-swap/index.d.ts.map +1 -1
  151. package/sdk/dist/svm/venues/raydium-cp-swap/index.js +4 -1
  152. package/sdk/dist/svm/venues/raydium-cp-swap/index.js.map +1 -1
  153. package/sdk/dist/svm/venues/scorch/index.d.ts.map +1 -1
  154. package/sdk/dist/svm/venues/scorch/index.js +4 -1
  155. package/sdk/dist/svm/venues/scorch/index.js.map +1 -1
  156. package/sdk/dist/svm/venues/stabble-common.d.ts +1 -1
  157. package/sdk/dist/svm/venues/stabble-common.js +1 -1
  158. package/sdk/dist/svm/venues/types.d.ts +4 -1
  159. package/sdk/dist/svm/venues/types.d.ts.map +1 -1
  160. package/sdk/dist/svm/venues/woofi/index.d.ts.map +1 -1
  161. package/sdk/dist/svm/venues/woofi/index.js +4 -0
  162. package/sdk/dist/svm/venues/woofi/index.js.map +1 -1
  163. package/sdk/dist/svm/verify.d.ts +27 -133
  164. package/sdk/dist/svm/verify.d.ts.map +1 -1
  165. package/sdk/dist/svm/verify.js +72 -139
  166. package/sdk/dist/svm/verify.js.map +1 -1
  167. package/sdk/dist/swap/index.d.ts +16 -59
  168. package/sdk/dist/swap/index.d.ts.map +1 -1
  169. package/sdk/dist/swap/index.js +16 -59
  170. package/sdk/dist/swap/index.js.map +1 -1
  171. package/sdk/dist/token/source.d.ts.map +1 -1
  172. package/sdk/dist/token/source.js +4 -1
  173. package/sdk/dist/token/source.js.map +1 -1
  174. package/sdk/dist/verify/decode.d.ts +6 -6
  175. package/sdk/dist/verify/decode.js +7 -7
  176. package/sdk/dist/verify/index.js +2 -2
  177. package/sdk/dist/verify/intent.js +2 -2
  178. package/sdk/dist/verify/vectors.d.ts +1 -1
  179. package/sdk/dist/verify/vectors.d.ts.map +1 -1
  180. package/sdk/dist/verify/vectors.js +2 -2
  181. package/sdk/dist/verify/vectors.js.map +1 -1
  182. package/sdk/dist/verify/wire.d.ts +7 -4
  183. package/sdk/dist/verify/wire.d.ts.map +1 -1
  184. package/sdk/dist/verify/wire.js +7 -4
  185. package/sdk/dist/verify/wire.js.map +1 -1
@@ -0,0 +1,51 @@
1
+ /**
2
+ * The deterministic addresses of the pinned Sauce v12 releases.
3
+ *
4
+ * `sync-engine-artifacts` assembles these from the `addresses.json` each of the four v12 releases
5
+ * publishes and writes `artifacts/V12Deployments.json` next to this module — `dist/artifacts` in an
6
+ * installed package, `src/artifacts` in a from-source tree — which `files: ["sdk/dist"]` carries into
7
+ * the tarball. It is read at runtime (like `svm/engine-artifacts.ts` reads the `.so`), not imported,
8
+ * so a clean `tsc` never depends on a file the sync produces.
9
+ *
10
+ * These are the deterministic addresses — CREATE3 on EVM, a fixed/derived keypair on SVM — so they are
11
+ * `chainIndependent` / `clusterIndependent`: one address set, the same everywhere it is deployed. They
12
+ * are ADDRESSES, not liveness. The legacy chain roster does not attest that these release versions
13
+ * are deployed; check code/programs on the target chain before use. These supersede the legacy
14
+ * ADDRESSES — `v12.generated.ts` records the pre-`cook` stack, and its Kitchen/Router are not these.
15
+ */
16
+ import { existsSync, readFileSync } from "node:fs";
17
+ import { dirname, resolve } from "node:path";
18
+ import { fileURLToPath } from "node:url";
19
+ const ARTIFACT = resolve(dirname(fileURLToPath(import.meta.url)), "..", "artifacts", "V12Deployments.json");
20
+ let cached;
21
+ /**
22
+ * The assembled release-address record. Read lazily and memoized, so importing this module never
23
+ * throws — only calling it without a synced artifact does, with a remedy in the message.
24
+ */
25
+ export function v12DeployedAddresses() {
26
+ if (cached !== undefined)
27
+ return cached;
28
+ if (!existsSync(ARTIFACT)) {
29
+ throw new Error(`V12Deployments.json not found at ${ARTIFACT}. It ships in the published package; from a source ` +
30
+ `checkout run \`pnpm --filter './sdk' sync-engine-artifacts\`.`);
31
+ }
32
+ cached = JSON.parse(readFileSync(ARTIFACT, "utf8"));
33
+ return cached;
34
+ }
35
+ /** Legacy EVM Kitchen version. Engine versions are in `v12DeployedAddresses().releases`. */
36
+ export const v12DeployedVersion = () => v12DeployedAddresses().version;
37
+ /** The current EVM engine (interpreter runtime) address. */
38
+ export const v12EngineAddress = () => v12DeployedAddresses().evm.contracts.engine.address;
39
+ /** The current EVM Router address. */
40
+ export const v12RouterAddress = () => v12DeployedAddresses().evm.contracts.router.address;
41
+ /** The current EVM Kitchen (UUPS proxy) address — mints Pots and gates every cook. */
42
+ export const v12KitchenAddress = () => v12DeployedAddresses().evm.contracts.kitchen.address;
43
+ /** The current EVM Kitchen implementation address (behind the proxy). */
44
+ export const v12KitchenImplementationAddress = () => v12DeployedAddresses().evm.contracts.kitchenImplementation.address;
45
+ /** How a Pot address is derived from `(owner, salt)` under the current Kitchen. */
46
+ export const v12PotDerivation = () => v12DeployedAddresses().evm.pot;
47
+ /** The current SVM engine program id — pass as `programId` to `createSauceSvmClient`. */
48
+ export const v12SvmEngineProgramId = () => v12DeployedAddresses().svm.programs.engine.programId;
49
+ /** The current SVM Kitchen program id every cook is gated to. */
50
+ export const v12SvmKitchenProgramId = () => v12DeployedAddresses().svm.programs.kitchen.programId;
51
+ //# sourceMappingURL=v12-addresses.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v12-addresses.js","sourceRoot":"","sources":["../../src/deployments/v12-addresses.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAqEzC,MAAM,QAAQ,GAAG,OAAO,CACtB,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EACvC,IAAI,EACJ,WAAW,EACX,qBAAqB,CACtB,CAAC;AAEF,IAAI,MAAwC,CAAC;AAE7C;;;GAGG;AACH,MAAM,UAAU,oBAAoB;IAClC,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IACxC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CACb,oCAAoC,QAAQ,qDAAqD;YAC/F,+DAA+D,CAClE,CAAC;IACJ,CAAC;IACD,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAyB,CAAC;IAC5E,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,4FAA4F;AAC5F,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAW,EAAE,CAAC,oBAAoB,EAAE,CAAC,OAAO,CAAC;AAE/E,4DAA4D;AAC5D,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAW,EAAE,CAAC,oBAAoB,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC;AAElG,sCAAsC;AACtC,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAW,EAAE,CAAC,oBAAoB,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC;AAElG,sFAAsF;AACtF,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAW,EAAE,CAAC,oBAAoB,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC;AAEpG,yEAAyE;AACzE,MAAM,CAAC,MAAM,+BAA+B,GAAG,GAAW,EAAE,CAC1D,oBAAoB,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,qBAAqB,CAAC,OAAO,CAAC;AAErE,mFAAmF;AACnF,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAqB,EAAE,CAAC,oBAAoB,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;AAEvF,yFAAyF;AACzF,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAW,EAAE,CAChD,oBAAoB,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC;AAEvD,iEAAiE;AACjE,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAW,EAAE,CACjD,oBAAoB,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC"}
@@ -2,13 +2,13 @@
2
2
  export declare const V12_SALT: "0x0000000000000000000000000000000000000000000000000000000000000001";
3
3
  /** Which tool in the engine repo produced the underlying record. */
4
4
  export declare const V12_GENERATED_BY: "dev-tools/scripts/deploy-v12.ts";
5
- /** Chain-invariant EVM addresses (identical on every chain — see the note above). */
5
+ /** @deprecated Legacy EVM addresses. Use v12EngineAddress/v12RouterAddress/v12KitchenAddress. */
6
6
  export declare const V12_EVM_CONTRACTS: {
7
7
  readonly router: "0x20BbEc03eE401B26938880cd23Aac00Cf927F06a";
8
8
  readonly v12Runtime: "0x3dfE79fBB6C62D00986F476c3F86E7D19E0cabeD";
9
9
  readonly v12Kitchen: "0xd57b452634c653D80A85160fea895BB07Ac41D8F";
10
10
  };
11
- /** Per-chain deploy outcome. `live` is the only field callers should gate on. */
11
+ /** Historical per-chain deploy outcome; does not establish current release liveness. */
12
12
  export declare const V12_EVM_CHAINS: {
13
13
  readonly 1: {
14
14
  readonly name: "ethereum";
@@ -77,7 +77,7 @@ export declare const V12_EVM_CHAINS: {
77
77
  readonly status: "live";
78
78
  };
79
79
  };
80
- /** The SVM engine program (non-upgradeable when `upgradeable` is false). */
80
+ /** @deprecated Historical SVM deployment. Use v12SvmEngineProgramId for the pinned release. */
81
81
  export declare const V12_SVM: {
82
82
  readonly programId: "CuHCniNMWLSkZWBQKon9tudGujZeXJRUwG2PCLDq4ipJ";
83
83
  readonly upgradeable: false;
@@ -1 +1 @@
1
- {"version":3,"file":"v12.generated.d.ts","sourceRoot":"","sources":["../../src/deployments/v12.generated.ts"],"names":[],"mappings":"AAeA,gDAAgD;AAChD,eAAO,MAAM,QAAQ,EAAG,oEAA6E,CAAC;AAEtG,oEAAoE;AACpE,eAAO,MAAM,gBAAgB,EAAG,iCAA0C,CAAC;AAE3E,qFAAqF;AACrF,eAAO,MAAM,iBAAiB;;;;CAIpB,CAAC;AAEX,iFAAiF;AACjF,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAcjB,CAAC;AAEX,4EAA4E;AAC5E,eAAO,MAAM,OAAO;;;;;;;;;;;;;CAOV,CAAC"}
1
+ {"version":3,"file":"v12.generated.d.ts","sourceRoot":"","sources":["../../src/deployments/v12.generated.ts"],"names":[],"mappings":"AAeA,gDAAgD;AAChD,eAAO,MAAM,QAAQ,EAAG,oEAA6E,CAAC;AAEtG,oEAAoE;AACpE,eAAO,MAAM,gBAAgB,EAAG,iCAA0C,CAAC;AAE3E,iGAAiG;AACjG,eAAO,MAAM,iBAAiB;;;;CAIpB,CAAC;AAEX,wFAAwF;AACxF,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAcjB,CAAC;AAEX,+FAA+F;AAC/F,eAAO,MAAM,OAAO;;;;;;;;;;;;;CAOV,CAAC"}
@@ -16,13 +16,13 @@
16
16
  export const V12_SALT = '0x0000000000000000000000000000000000000000000000000000000000000001';
17
17
  /** Which tool in the engine repo produced the underlying record. */
18
18
  export const V12_GENERATED_BY = 'dev-tools/scripts/deploy-v12.ts';
19
- /** Chain-invariant EVM addresses (identical on every chain — see the note above). */
19
+ /** @deprecated Legacy EVM addresses. Use v12EngineAddress/v12RouterAddress/v12KitchenAddress. */
20
20
  export const V12_EVM_CONTRACTS = {
21
21
  router: '0x20BbEc03eE401B26938880cd23Aac00Cf927F06a',
22
22
  v12Runtime: '0x3dfE79fBB6C62D00986F476c3F86E7D19E0cabeD',
23
23
  v12Kitchen: '0xd57b452634c653D80A85160fea895BB07Ac41D8F',
24
24
  };
25
- /** Per-chain deploy outcome. `live` is the only field callers should gate on. */
25
+ /** Historical per-chain deploy outcome; does not establish current release liveness. */
26
26
  export const V12_EVM_CHAINS = {
27
27
  1: { name: 'ethereum', live: true, status: 'live' },
28
28
  10: { name: 'optimism', live: true, status: 'live' },
@@ -38,7 +38,7 @@ export const V12_EVM_CHAINS = {
38
38
  42220: { name: 'celo', live: true, status: 'live' },
39
39
  57073: { name: 'ink', live: true, status: 'live' },
40
40
  };
41
- /** The SVM engine program (non-upgradeable when `upgradeable` is false). */
41
+ /** @deprecated Historical SVM deployment. Use v12SvmEngineProgramId for the pinned release. */
42
42
  export const V12_SVM = {
43
43
  programId: 'CuHCniNMWLSkZWBQKon9tudGujZeXJRUwG2PCLDq4ipJ',
44
44
  upgradeable: false,
@@ -1 +1 @@
1
- {"version":3,"file":"v12.generated.js","sourceRoot":"","sources":["../../src/deployments/v12.generated.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D,EAAE;AACF,sGAAsG;AACtG,oGAAoG;AACpG,oGAAoG;AACpG,mGAAmG;AACnG,wFAAwF;AACxF,EAAE;AACF,kGAAkG;AAClG,+FAA+F;AAC/F,kGAAkG;AAClG,oGAAoG;AACpG,gGAAgG;AAChG,6EAA6E;AAE7E,gDAAgD;AAChD,MAAM,CAAC,MAAM,QAAQ,GAAG,oEAA6E,CAAC;AAEtG,oEAAoE;AACpE,MAAM,CAAC,MAAM,gBAAgB,GAAG,iCAA0C,CAAC;AAE3E,qFAAqF;AACrF,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,MAAM,EAAE,4CAA4C;IACpD,UAAU,EAAE,4CAA4C;IACxD,UAAU,EAAE,4CAA4C;CAChD,CAAC;AAEX,iFAAiF;AACjF,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,CAAC,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE;IACnD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE;IACpD,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE;IAC/C,GAAG,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE;IACrD,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE;IACpD,GAAG,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE;IAClD,GAAG,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE;IAClD,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,0MAA0M,EAAE;IACzQ,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE;IAClD,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE;IACpD,KAAK,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE;IACvD,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE;IACnD,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE;CAC1C,CAAC;AAEX,4EAA4E;AAC5E,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,SAAS,EAAE,8CAA8C;IACzD,WAAW,EAAE,KAAK;IAClB,QAAQ,EAAE;QACR,QAAQ,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,kBAAkB,EAAE;QAC3D,cAAc,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,kBAAkB,EAAE;KACxE;CACO,CAAC"}
1
+ {"version":3,"file":"v12.generated.js","sourceRoot":"","sources":["../../src/deployments/v12.generated.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D,EAAE;AACF,sGAAsG;AACtG,oGAAoG;AACpG,oGAAoG;AACpG,mGAAmG;AACnG,wFAAwF;AACxF,EAAE;AACF,kGAAkG;AAClG,+FAA+F;AAC/F,kGAAkG;AAClG,oGAAoG;AACpG,gGAAgG;AAChG,6EAA6E;AAE7E,gDAAgD;AAChD,MAAM,CAAC,MAAM,QAAQ,GAAG,oEAA6E,CAAC;AAEtG,oEAAoE;AACpE,MAAM,CAAC,MAAM,gBAAgB,GAAG,iCAA0C,CAAC;AAE3E,iGAAiG;AACjG,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,MAAM,EAAE,4CAA4C;IACpD,UAAU,EAAE,4CAA4C;IACxD,UAAU,EAAE,4CAA4C;CAChD,CAAC;AAEX,wFAAwF;AACxF,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,CAAC,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE;IACnD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE;IACpD,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE;IAC/C,GAAG,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE;IACrD,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE;IACpD,GAAG,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE;IAClD,GAAG,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE;IAClD,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,0MAA0M,EAAE;IACzQ,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE;IAClD,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE;IACpD,KAAK,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE;IACvD,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE;IACnD,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE;CAC1C,CAAC;AAEX,+FAA+F;AAC/F,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,SAAS,EAAE,8CAA8C;IACzD,WAAW,EAAE,KAAK;IAClB,QAAQ,EAAE;QACR,QAAQ,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,kBAAkB,EAAE;QAC3D,cAAc,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,kBAAkB,EAAE;KACxE;CACO,CAAC"}
@@ -1,106 +1,32 @@
1
1
  /**
2
- * `@eco-incorp/sauce`'s `deposit` module — E4.2, the universal deposit/stake/wrap adapter.
3
- *
4
- * There is no engine Router adapter for deposit/stake/wrap — the Router is swap+quote only. So a
5
- * deposit lowers to a DIRECT protocol call in SauceScript: `token.approve(spender, amount);
6
- * IProtocol.at(addr).method(...)` — the `swapAndSupply` recipe's own shape. E4.2 is therefore a
7
- * PER-PROTOCOL call-template registry (`sdk/src/deposit/templates.ts`), not a dispatch into one
8
- * entry point like `swap`.
9
- *
10
- * Two layers, both pure/sync, no compiler import (mirrors `sdk/src/swap/index.ts`'s posture):
11
- *
12
- * 1. {@link toDeposit} — the whole normalization/defaulting/guard decision, as a plain
13
- * `NormalizedDeposit` object (bigint scalars, the resolved `DepositTemplate` attached).
14
- * 2. {@link depositCallStatement} / {@link depositSource} — pure string templating over that
15
- * object, producing SauceScript source. `depositSource` returns a complete
16
- * `function main() { ... }` program; `depositCallStatement` returns one statement block
17
- * (approve + protocol call) for splicing into a larger program.
18
- *
19
- * ## Composing with E4.1 (swap)
20
- *
21
- * {@link swapThenDepositSource} is the seam: a swap-then-deposit program is ONE `main()` with the
22
- * swap statement(s) followed by the deposit statement(s) — because `V12Pot.cook` takes exactly one
23
- * program, exactly like `swap`'s own multi-leg story.
24
- *
25
- * ```ts
26
- * import { routes, deposit } from "@eco-incorp/sauce";
27
- *
28
- * // routes.compileSauceRoute, not the compiler directly: a generated `main` falls off the end and
29
- * // has no return type of its own, so a raw compile rejects it with "`main` does not return on
30
- * // every path". compileSauceRoute annotates it before compiling.
31
- * const { compiled } = routes.compileSauceRoute(
32
- * "base",
33
- * deposit.depositSource({ protocol: "aave-v3", action: "supply", target: aavePool,
34
- * token: tokenIn, amount: 500n, extra: { referralCode: 0n } }),
35
- * { pot },
36
- * { baseDirs: deposit.DEPOSIT_BASE_DIRS },
37
- * );
38
- * // compiled.bytecode[0] -- 132 bytes for this spec
39
- * ```
40
- *
41
- * ## Starter templates (eleven; see `templates.ts` for the full registry)
42
- *
43
- * - `aave-v3:supply` / `aave-v3:withdraw`, `spark:supply` / `spark:withdraw` — Aave-v3-shaped
44
- * `Pool.supply/withdraw`; Spark is a verified Aave-v3 fork with the identical selector, kept as
45
- * its own template entry for address-registry/documentation clarity.
46
- * - `compound-v3:supply` — Comet's `supplyTo(dst, asset, amount)`, used unconditionally (rather
47
- * than the plain 2-arg `supply`) so a beneficiary is always representable.
48
- * - `euler-v2:deposit`, `erc4626:deposit` — ERC-4626-shaped `deposit(assets, receiver)`; `erc4626`
49
- * is the universal catch-all for any 4626 vault reachable without its own template.
50
- * - `lido:wrap` (wstETH, ERC20-funded), `lido:stake` (stETH `submit`, native-value — must be a raw
51
- * call, see below), and `weth:wrap` / `weth:unwrap` (WETH9, also raw — see `skippedProtocols`).
52
- *
53
- * ## Native vs ERC20 — why this is the one place E4.2 differs from E4.1's shape
54
- *
55
- * A TYPED ABI binding can never attach ETH: the compiler's non-view external-call path hardcodes
56
- * `value = 0` (`compiler/src/processor/expression.ts`'s `processContractCall`), and there is no
57
- * `.value()`/`{value:}` syntax anywhere in SauceScript. The only way to attach value is the raw
58
- * builtin `evm.call(target, value, calldata)`. So every
59
- * `funding: "native-value"` template (`weth:wrap`, `lido:stake`) emits a raw call instead of a
60
- * typed one — `WETH.deposit(){value}` becomes
61
- * `evm.call(<weth>, <amount>, hex`d0e30db0`)`. `weth:unwrap` is
62
- * ALSO a raw call (no vendored ABI exists for WETH at all — see below) but attaches no value; its
63
- * amount rides as an `abi.encode`d calldata word instead.
64
- *
65
- * ## `skippedProtocols` — what was left out, and why
66
- *
67
- * - **WETH has NO vendored SDK ABI anywhere** (there is no `weth`/`wrapped-native` protocol slug
68
- * among the SDK's ~130 entries, and `sdk/src/artifacts/` — `.gitignore`d, engine artifacts only —
69
- * could not host a hand-added one even if invented). Both WETH templates therefore use the raw
70
- * `evm.call` path with WETH9's two well-known selectors as SDK constants, forced anyway for
71
- * `wrap` (native value) and costing nothing for `unwrap`. The selectors are pinned in
72
- * `sdk/test/deposit.test.ts` against `toFunctionSelector`, so they cannot silently rot.
73
- * - **`morpho-blue`'s `supply`** really does exist in the vendored ABI and does compile, but is
74
- * deliberately NOT registered: its argument list mixes a static 5-field `marketParams` tuple with
75
- * a dynamic `bytes data` field — a shape nothing in this repo has executed on-chain, against the
76
- * backdrop of a recorded, still-open v12 all-dynamic `abi.encode` head/tail framing bug — and
77
- * `supply` is assets-XOR-shares and market-keyed, which needs its own spec surface, not the flat
78
- * `{token, amount, beneficiary}` shape this module is scoped to.
79
- * - **Also considered, left out:** `euler-v2` `EVCABI.enableCollateral/enableController` (position
80
- * management, not a deposit); `aave-v2`'s `LendingPoolABI.deposit` (a 5-line alias of the
81
- * registered `aave-v3:supply`, omitted to keep the starter set to current protocols);
82
- * `compound-v3`'s `withdraw`/`withdrawTo` (present, deferred so the withdraw direction lands with
83
- * one shape — Aave/Spark — first); most vault-shaped protocols not registered here are already
84
- * reachable through `erc4626:deposit`.
85
- *
86
- * ## Approvals
87
- *
88
- * `depositCallStatement` prepends `IERC20.at(token).approve(target, amount)` immediately before the
89
- * protocol call whenever `funding === "erc20-approve"` — the ONE place this decision is made, so no
90
- * template can emit its own approve or forget one. The spender is always the template's own
91
- * `target`. `approvalPolicy` (default `"exact"`) may be `"none"` (skip — the token is already
92
- * approved) or `"max"` (approve `2n**256n - 1n`; NOT the default, since a cook's approval outlives
93
- * the cook — a lingering unlimited allowance is a real residual-risk change, not a gas
94
- * micro-optimization). No allowance CHECK is ever emitted (a read-then-branch inside a single
95
- * atomic cook is pure gas).
96
- *
97
- * ## Packaging note
98
- *
99
- * `DEPOSIT_BASE_DIRS`'s protocol-registry entry depends on the root `package.json` `files` list
100
- * shipping `sdk/src/protocols` verbatim in the published package — true today, but nothing in this
101
- * module enforces it going forward.
102
- *
103
- * See `docs/plans/2026-08-08-universal-interfaces-epic.md` for the wider epic this is E4.2 of.
2
+ * EVM deposit, withdrawal, staking, and wrapping builders for `@eco-incorp/sauce`.
3
+ *
4
+ * `toDeposit` normalizes a specification against the templates in `templates.ts`.
5
+ * `depositSource` emits a complete program; `depositCallStatement` emits a block for composition.
6
+ * These helpers construct source synchronously and do not compile or send transactions.
7
+ *
8
+ * Programs call the protocol directly. ERC-20-funded templates prepend an approval to the target;
9
+ * native-funded templates attach value with `evm.call(target, value, calldata)`. The executing Pot
10
+ * must hold the assets. WETH wrapping and unwrapping use their raw selectors.
11
+ *
12
+ * Compile generated source with `routes.compileSauceRoute`, supplying both `pot` and `engine`
13
+ * and `baseDirs: [...deposit.DEPOSIT_BASE_DIRS]`. The route compiler supplies a `void` annotation
14
+ * for a falling-through entry. `swapThenDepositSource` combines swaps and deposits in one program;
15
+ * compile that form with `deposit.COMPOSED_BASE_DIRS`.
16
+ *
17
+ * Query `listDepositTemplates()` for supported protocol/action pairs. Templates include Aave and
18
+ * Spark supply/withdrawal, Compound V3 supply, Euler/ERC-4626 deposits, Lido operations, and WETH
19
+ * wrapping/unwrapping. The registry does not cover every operation in the protocol catalog.
20
+ *
21
+ * The default approval policy is `exact`; `none` skips the approval and `max` grants the maximum
22
+ * allowance. Approvals persist after the cook. The default beneficiary is `ctx.self()` when the
23
+ * template supports a beneficiary. Runtime `balance` reads native ETH for native-funded templates,
24
+ * WETH at `target` for unwrapping, or the supplied `token` otherwise. `delta` measures that same
25
+ * balance against the pre-swap snapshot provided by `swapThenDepositSource`.
26
+ * For Aave/Spark withdrawals, use fixed amounts or `amount: "max"`: the runtime balance is the
27
+ * underlying token held by the Pot, not its supplied position.
28
+ *
29
+ * See `docs/guides/builders-and-actions.md` for public usage and funding requirements.
104
30
  */
105
31
  export type { Address, AddressInput, AmountInput, Hex, ApprovalPolicy, BeneficiarySupport, DepositSpec, DepositSourceSpec, DepositTemplate, ExtraFieldSpec, Funding, NormalizedDeposit, SkippedProtocolNote, } from "./types.js";
106
32
  export { DEPOSIT_TEMPLATES, depositTemplateFor, listDepositTemplates } from "./templates.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/deposit/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuGG;AACH,YAAY,EACV,OAAO,EACP,YAAY,EACZ,WAAW,EACX,GAAG,EACH,cAAc,EACd,kBAAkB,EAClB,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,OAAO,EACP,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC7F,YAAY,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,aAAa,EACb,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/deposit/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,YAAY,EACV,OAAO,EACP,YAAY,EACZ,WAAW,EACX,GAAG,EACH,cAAc,EACd,kBAAkB,EAClB,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,OAAO,EACP,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC7F,YAAY,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,aAAa,EACb,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/deposit/index.ts"],"names":[],"mappings":"AAwHA,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAG7F,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,aAAa,EACb,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/deposit/index.ts"],"names":[],"mappings":"AA8CA,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAG7F,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,aAAa,EACb,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,aAAa,CAAC"}
@@ -10,7 +10,7 @@ import type { DepositSpec, NormalizedDeposit } from "./types.js";
10
10
  * checks `allowsMaxAmount`).
11
11
  *
12
12
  * Throws (never emits a program that would misbehave on-chain) for: an unknown `protocol:action`;
13
- * `token` supplied to a native-value template; `token` omitted from an erc20-approve/none template;
13
+ * `token` supplied to a raw-call template or omitted from a typed-ABI template;
14
14
  * `beneficiary` supplied to a `beneficiary: "unsupported"` template; `amount: "max"` on a template
15
15
  * with `allowsMaxAmount: false`; an unrecognized `extra` field name; an `amount` given as a `number`
16
16
  * that is not a safe integer (past 2^53-1 pass a bigint or a string, since the double has already
@@ -27,7 +27,7 @@ function toBigIntStrict(value, label) {
27
27
  * checks `allowsMaxAmount`).
28
28
  *
29
29
  * Throws (never emits a program that would misbehave on-chain) for: an unknown `protocol:action`;
30
- * `token` supplied to a native-value template; `token` omitted from an erc20-approve/none template;
30
+ * `token` supplied to a raw-call template or omitted from a typed-ABI template;
31
31
  * `beneficiary` supplied to a `beneficiary: "unsupported"` template; `amount: "max"` on a template
32
32
  * with `allowsMaxAmount: false`; an unrecognized `extra` field name; an `amount` given as a `number`
33
33
  * that is not a safe integer (past 2^53-1 pass a bigint or a string, since the double has already
@@ -43,7 +43,7 @@ export function toDeposit(spec) {
43
43
  // aave-v3:withdraw still names an `asset` argument).
44
44
  if (template.binding === null) {
45
45
  if (spec.token !== undefined) {
46
- throw new Error(`toDeposit: ${spec.protocol}:${spec.action} is a native-value template — there is no ERC20 leg, so "token" must be omitted`);
46
+ throw new Error(`toDeposit: ${spec.protocol}:${spec.action} has no separate asset parameter, so "token" must be omitted; use "target" for the called contract`);
47
47
  }
48
48
  }
49
49
  else if (spec.token === undefined) {
@@ -1 +1 @@
1
- {"version":3,"file":"params.js","sourceRoot":"","sources":["../../src/deposit/params.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"params.js","sourceRoot":"","sources":["../../src/deposit/params.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAGpD,SAAS,eAAe,CAAC,KAAmB,EAAE,MAAc;IAC1D,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,SAAS,cAAc,CAAC,KAAkB,EAAE,KAAa;IACvD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAClE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,SAAS,CACvB,IAA2F;IAE3F,MAAM,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAEhE,wFAAwF;IACxF,yFAAyF;IACzF,4FAA4F;IAC5F,sFAAsF;IACtF,qDAAqD;IACrD,IAAI,QAAQ,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QAC9B,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CACb,cAAc,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,oGAAoG,CAC/I,CAAC;QACJ,CAAC;IACH,CAAC;SAAM,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CACb,cAAc,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,iEAAiE,CAC5G,CAAC;IACJ,CAAC;IAED,IAAI,QAAQ,CAAC,WAAW,KAAK,aAAa,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QAC7E,MAAM,IAAI,KAAK,CACb,cAAc,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,gHAAgH,CAC3J,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GACV,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK;QAC3E,CAAC,CAAC,IAAI,CAAC,MAAM;QACb,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAE5C,IAAI,MAAM,KAAK,KAAK,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CACb,cAAc,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,kGAAkG,CAC7I,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;IACpC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3C,IAAI,CAAC,CAAC,IAAI,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC;YACzE,MAAM,IAAI,KAAK,CACb,cAAc,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,wBAAwB,IAAI,aAAa,KAAK,EAAE,CAC3F,CAAC;QACJ,CAAC;IACH,CAAC;IACD,MAAM,KAAK,GAA2B,EAAE,CAAC;IACzC,KAAK,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAChE,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC;YACT,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC;IAC3F,CAAC;IAED,MAAM,cAAc,GAAmB,IAAI,CAAC,cAAc,IAAI,OAAO,CAAC;IAEtE,OAAO;QACL,QAAQ;QACR,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC;QAC9C,KAAK,EAAE,QAAQ,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,KAAqB,EAAE,OAAO,CAAC;QAC9F,MAAM;QACN,WAAW,EACT,QAAQ,CAAC,WAAW,KAAK,aAAa;YACpC,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,IAAI,CAAC,WAAW,KAAK,SAAS;gBAC9B,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC;gBAClD,CAAC,CAAC,MAAM;QACd,cAAc;QACd,KAAK;KACN,CAAC;AACJ,CAAC"}
@@ -28,7 +28,7 @@ export declare const COMPOSED_BASE_DIRS: readonly string[];
28
28
  */
29
29
  export declare function depositCallStatement(spec: DepositSourceSpec, varSuffix?: string): string;
30
30
  /** The import lines a `depositSource(specs)` program needs: each resolved template's own
31
- * `imports`, plus `IERC20` iff any spec needs an approve or a `"balance"` ERC20 read. De-duped by
31
+ * `imports`, plus `IERC20` iff any spec needs an approval or an ERC20 balance/delta read. De-duped by
32
32
  * exact line, in first-seen order (`IERC20` first, matching `swap`'s own ordering convention). */
33
33
  export declare function depositImportLines(specs: DepositSourceSpec | readonly DepositSourceSpec[]): readonly string[];
34
34
  export interface DepositSourceOptions {
@@ -1 +1 @@
1
- {"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../../src/deposit/source.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGvD,OAAO,KAAK,EAAe,iBAAiB,EAAqB,MAAM,YAAY,CAAC;AAIpF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EAG9C,CAAC;AAEF;qBACqB;AACrB,eAAO,MAAM,kBAAkB,EAAE,SAAS,MAAM,EAE/C,CAAC;AAqDF;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,iBAAiB,EAAE,SAAS,SAAK,GAAG,MAAM,CASpF;AAED;;mGAEmG;AACnG,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,iBAAiB,GAAG,SAAS,iBAAiB,EAAE,GACtD,SAAS,MAAM,EAAE,CAqBnB;AAED,MAAM,WAAW,oBAAoB;IACnC,4BAA4B;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iGAAiG;IACjG,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7B;AASD;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,iBAAiB,GAAG,SAAS,iBAAiB,EAAE,EACtD,IAAI,GAAE,oBAAyB,GAC9B,MAAM,CASR;AAED,MAAM,WAAW,sBAAsB;IACrC,4BAA4B;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iGAAiG;IACjG,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,cAAc,GAAG,SAAS,cAAc,EAAE,EACjD,QAAQ,EAAE,iBAAiB,GAAG,SAAS,iBAAiB,EAAE,EAC1D,IAAI,GAAE,sBAA2B,GAChC,MAAM,CA0ER"}
1
+ {"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../../src/deposit/source.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGvD,OAAO,KAAK,EAAe,iBAAiB,EAAqB,MAAM,YAAY,CAAC;AAKpF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EAG9C,CAAC;AAEF;qBACqB;AACrB,eAAO,MAAM,kBAAkB,EAAE,SAAS,MAAM,EAE/C,CAAC;AA4DF;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,iBAAiB,EAAE,SAAS,SAAK,GAAG,MAAM,CASpF;AAED;;mGAEmG;AACnG,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,iBAAiB,GAAG,SAAS,iBAAiB,EAAE,GACtD,SAAS,MAAM,EAAE,CAqBnB;AAED,MAAM,WAAW,oBAAoB;IACnC,4BAA4B;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iGAAiG;IACjG,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7B;AASD;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,iBAAiB,GAAG,SAAS,iBAAiB,EAAE,EACtD,IAAI,GAAE,oBAAyB,GAC9B,MAAM,CASR;AAED,MAAM,WAAW,sBAAsB;IACrC,4BAA4B;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iGAAiG;IACjG,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,cAAc,GAAG,SAAS,cAAc,EAAE,EACjD,QAAQ,EAAE,iBAAiB,GAAG,SAAS,iBAAiB,EAAE,EAC1D,IAAI,GAAE,sBAA2B,GAChC,MAAM,CAwDR"}
@@ -10,6 +10,7 @@ import { SWAP_BASE_DIRS, swapCallStatement, swapImportLines } from "../swap/sour
10
10
  import { formatBigint } from "./format.js";
11
11
  import { toDeposit } from "./params.js";
12
12
  const __dirname = dirname(fileURLToPath(import.meta.url));
13
+ const MAX_UINT256 = (1n << 256n) - 1n;
13
14
  /**
14
15
  * `baseDirs` for compiling a `depositSource`/`depositCallStatement` program. Two entries, because
15
16
  * (unlike `swap`, whose only import is the engine-vendored `ISauceRouter`) a deposit template's
@@ -38,9 +39,14 @@ const IERC20_IMPORT = `import { IERC20 } from "./artifacts/IERC20.json";`;
38
39
  function needsIerc20Import(d) {
39
40
  if (d.template.funding === "erc20-approve" && d.approvalPolicy !== "none")
40
41
  return true;
41
- if (d.template.binding !== null && d.amount === "balance")
42
- return true;
43
- return false;
42
+ return d.template.funding !== "native-value" && (d.amount === "balance" || d.amount === "delta");
43
+ }
44
+ function balanceExpression(deposit) {
45
+ if (deposit.template.funding === "native-value")
46
+ return "ctx.selfBalance()";
47
+ // WETH unwrap reads the target token itself; typed templates name their asset separately.
48
+ const token = deposit.token ?? deposit.target;
49
+ return `IERC20.at(${formatBigint(token)}).balanceOf(ctx.self())`;
44
50
  }
45
51
  /** The approve line(s) for a normalized deposit whose amount has already resolved to `amountExpr`
46
52
  * (a literal or a bound identifier) — the ONE place `funding`/`approvalPolicy` is consulted, so no
@@ -50,7 +56,7 @@ function approveLines(d, amountExpr) {
50
56
  return [];
51
57
  if (d.token === null)
52
58
  throw new Error("deposit: unreachable — erc20-approve template without a token");
53
- const approveAmount = d.approvalPolicy === "max" ? "(2n ** 256n - 1n)" : amountExpr;
59
+ const approveAmount = d.approvalPolicy === "max" ? formatBigint(MAX_UINT256) : amountExpr;
54
60
  return [
55
61
  `IERC20.at(${formatBigint(d.token)}).approve(${formatBigint(d.target)}, ${approveAmount});`,
56
62
  ];
@@ -64,17 +70,15 @@ function resolveAmountExpr(d, varSuffix) {
64
70
  throw new Error(`depositCallStatement: amount "delta" is only meaningful inside swapThenDepositSource (it needs a pre-swap balance snapshot) — ${d.template.protocol}:${d.template.action}`);
65
71
  }
66
72
  if (d.amount === "max") {
67
- return { pre: [], amountExpr: "(2n ** 256n - 1n)" };
73
+ return { pre: [], amountExpr: formatBigint(MAX_UINT256) };
68
74
  }
69
75
  if (d.amount === "balance") {
70
- if (d.template.binding === null) {
71
- return { pre: [], amountExpr: "ctx.selfBalance()" };
76
+ if (d.template.funding === "native-value") {
77
+ return { pre: [], amountExpr: balanceExpression(d) };
72
78
  }
73
- if (d.token === null)
74
- throw new Error("deposit: unreachable — erc20 template without a token");
75
79
  const varName = `depositAmt${varSuffix}`;
76
80
  return {
77
- pre: [`const ${varName} = IERC20.at(${formatBigint(d.token)}).balanceOf(ctx.self());`],
81
+ pre: [`const ${varName} = ${balanceExpression(d)};`],
78
82
  amountExpr: varName,
79
83
  };
80
84
  }
@@ -98,7 +102,7 @@ export function depositCallStatement(spec, varSuffix = "") {
98
102
  return lines.join("\n");
99
103
  }
100
104
  /** The import lines a `depositSource(specs)` program needs: each resolved template's own
101
- * `imports`, plus `IERC20` iff any spec needs an approve or a `"balance"` ERC20 read. De-duped by
105
+ * `imports`, plus `IERC20` iff any spec needs an approval or an ERC20 balance/delta read. De-duped by
102
106
  * exact line, in first-seen order (`IERC20` first, matching `swap`'s own ordering convention). */
103
107
  export function depositImportLines(specs) {
104
108
  const list = Array.isArray(specs) ? specs : [specs];
@@ -180,17 +184,6 @@ export function swapThenDepositSource(swaps, deposits, opts = {}) {
180
184
  importLines.push(line);
181
185
  }
182
186
  }
183
- // A "delta" deposit needs a balance read even if depositImportLines (which never sees "delta"
184
- // amounts as needing one — it only special-cases "balance") didn't already add it.
185
- const needsIerc20ForDelta = depositList.some((d) => {
186
- if (d.amount !== "delta")
187
- return false;
188
- const normalized = toDeposit({ ...d, amount: 0n });
189
- return normalized.template.binding !== null;
190
- });
191
- if (needsIerc20ForDelta && !seen.has(IERC20_IMPORT)) {
192
- importLines.unshift(IERC20_IMPORT);
193
- }
194
187
  const swapBlock = swapList.map(swapCallStatement).join("\n");
195
188
  const preLines = [];
196
189
  const postLines = [];
@@ -200,17 +193,9 @@ export function swapThenDepositSource(swaps, deposits, opts = {}) {
200
193
  return;
201
194
  const normalized = toDeposit({ ...d, amount: 0n });
202
195
  const varBase = `deposit${i}`;
203
- if (normalized.template.binding === null) {
204
- preLines.push(`const ${varBase}Pre = ctx.selfBalance();`);
205
- postLines.push(`const ${varBase}Post = ctx.selfBalance();`);
206
- }
207
- else {
208
- if (normalized.token === null)
209
- throw new Error("deposit: unreachable — erc20 template without a token");
210
- const tokenLit = formatBigint(normalized.token);
211
- preLines.push(`const ${varBase}Pre = IERC20.at(${tokenLit}).balanceOf(ctx.self());`);
212
- postLines.push(`const ${varBase}Post = IERC20.at(${tokenLit}).balanceOf(ctx.self());`);
213
- }
196
+ const balance = balanceExpression(normalized);
197
+ preLines.push(`const ${varBase}Pre = ${balance};`);
198
+ postLines.push(`const ${varBase}Post = ${balance};`);
214
199
  postLines.push(`const ${varBase}Amt = ${varBase}Post - ${varBase}Pre;`);
215
200
  deltaAmountExprs.set(i, `${varBase}Amt`);
216
201
  });
@@ -1 +1 @@
1
- {"version":3,"file":"source.js","sourceRoot":"","sources":["../../src/deposit/source.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"source.js","sourceRoot":"","sources":["../../src/deposit/source.ts"],"names":[],"mappings":"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"}
@@ -34,8 +34,8 @@ export interface ExtraFieldSpec {
34
34
  * The chain-agnostic deposit SPEC a caller builds — the input to {@link toDeposit} /
35
35
  * `depositCallStatement` / `depositSource`.
36
36
  *
37
- * `token` is required for an `"erc20-approve"`/`"none"` template (the asset being approved/
38
- * supplied/withdrawn) and must be omitted for a `"native-value"` template (there is no ERC20 leg).
37
+ * `token` names the asset for a typed-ABI template. Omit it for WETH wrap/unwrap and Lido stake;
38
+ * WETH unwrap uses `target` as its token address, while wrap and stake use native ETH.
39
39
  * `beneficiary` defaults to `ctx.self()` and must be omitted on a `beneficiary: "unsupported"`
40
40
  * template (every such protocol credits `msg.sender` unconditionally — accepting one would silently
41
41
  * send the position to the wrong account).
@@ -48,7 +48,7 @@ export interface DepositSpec {
48
48
  action: string;
49
49
  /** The contract this deposit calls into (the Aave Pool, the Comet, the vault, WETH9, stETH, …). */
50
50
  target: AddressInput;
51
- /** Required for an ERC20-funded template; must be omitted for a native-value one. */
51
+ /** Required for typed-ABI templates; omit for WETH wrap/unwrap and Lido stake. */
52
52
  token?: AddressInput;
53
53
  amount: AmountInput;
54
54
  /** Defaults to `ctx.self()`. Must be omitted on a `beneficiary: "unsupported"` template. */
@@ -63,7 +63,8 @@ export interface DepositSpec {
63
63
  * {@link DepositSpec}:
64
64
  *
65
65
  * - `amount: "balance"` — emit a RUNTIME balance read instead of a baked-in literal (`IERC20.
66
- * balanceOf(ctx.self())` for an ERC20 template, `ctx.selfBalance()` for a native one) — the shape
66
+ * balanceOf(ctx.self())` on `token` or the WETH unwrap `target`, `ctx.selfBalance()` for a
67
+ * native-funded template) — the shape
67
68
  * a swap-then-deposit program needs when the deposit amount is an earlier leg's (unknown at
68
69
  * compile time) output.
69
70
  * - `amount: "delta"` — only meaningful inside `swapThenDepositSource` (it needs a pre-swap balance
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/deposit/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/deposit/types.ts"],"names":[],"mappings":"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"}
@@ -39,6 +39,14 @@ export declare const v12PotAbi: readonly [{
39
39
  readonly outputs: readonly [{
40
40
  readonly type: "address";
41
41
  }];
42
+ }, {
43
+ readonly name: "kitchen";
44
+ readonly type: "function";
45
+ readonly stateMutability: "view";
46
+ readonly inputs: readonly [];
47
+ readonly outputs: readonly [{
48
+ readonly type: "address";
49
+ }];
42
50
  }, {
43
51
  readonly name: "router";
44
52
  readonly type: "function";
@@ -78,6 +86,14 @@ export declare const v12KitchenAbi: readonly [{
78
86
  readonly outputs: readonly [{
79
87
  readonly type: "address";
80
88
  }];
89
+ }, {
90
+ readonly name: "executionFee";
91
+ readonly type: "function";
92
+ readonly stateMutability: "view";
93
+ readonly inputs: readonly [];
94
+ readonly outputs: readonly [{
95
+ readonly type: "uint256";
96
+ }];
81
97
  }, {
82
98
  readonly name: "router";
83
99
  readonly type: "function";
@@ -119,6 +135,14 @@ export declare const v12Pot: {
119
135
  readonly outputs: readonly [{
120
136
  readonly type: "address";
121
137
  }];
138
+ }, {
139
+ readonly name: "kitchen";
140
+ readonly type: "function";
141
+ readonly stateMutability: "view";
142
+ readonly inputs: readonly [];
143
+ readonly outputs: readonly [{
144
+ readonly type: "address";
145
+ }];
122
146
  }, {
123
147
  readonly name: "router";
124
148
  readonly type: "function";
@@ -168,6 +192,14 @@ export declare const v12Kitchen: {
168
192
  readonly outputs: readonly [{
169
193
  readonly type: "address";
170
194
  }];
195
+ }, {
196
+ readonly name: "executionFee";
197
+ readonly type: "function";
198
+ readonly stateMutability: "view";
199
+ readonly inputs: readonly [];
200
+ readonly outputs: readonly [{
201
+ readonly type: "uint256";
202
+ }];
171
203
  }, {
172
204
  readonly name: "router";
173
205
  readonly type: "function";
@@ -1 +1 @@
1
- {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/evm/engine.ts"],"names":[],"mappings":"AAaA,OAAO,EAAgC,KAAK,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,CAAC;AAE5E;;;;;;;;;GASG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAKpB,CAAC;AAEH,kGAAkG;AAClG,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAIxB,CAAC;AAEH,4FAA4F;AAC5F,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEjB;;;;;;OAMG;kCACkB,OAAO,WAAW,GAAG,KAAG,GAAG;CAExC,CAAC;AAEX,2EAA2E;AAC3E,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAErB,iGAAiG;sCACxE,OAAO,QAAQ,GAAG,KAAG,GAAG;IAEjD,yFAAyF;uCAC/D,OAAO,QAAQ,GAAG,KAAG,GAAG;CAE1C,CAAC"}
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/evm/engine.ts"],"names":[],"mappings":"AAaA,OAAO,EAAgC,KAAK,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,CAAC;AAE5E;;;;;;;;;GASG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMpB,CAAC;AAEH,kGAAkG;AAClG,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAKxB,CAAC;AAEH,4FAA4F;AAC5F,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEjB;;;;;;OAMG;kCACkB,OAAO,WAAW,GAAG,KAAG,GAAG;CAExC,CAAC;AAEX,2EAA2E;AAC3E,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAErB,iGAAiG;sCACxE,OAAO,QAAQ,GAAG,KAAG,GAAG;IAEjD,yFAAyF;uCAC/D,OAAO,QAAQ,GAAG,KAAG,GAAG;CAE1C,CAAC"}