@gearbox-protocol/sdk 9.14.1 → 9.15.0

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 (231) hide show
  1. package/dist/cjs/permissionless/bindings/address-provider.js +51 -0
  2. package/dist/cjs/permissionless/bindings/base-contract.js +173 -0
  3. package/dist/cjs/permissionless/bindings/bytecode-repository.js +526 -0
  4. package/dist/cjs/permissionless/bindings/compressors/index.js +24 -0
  5. package/dist/cjs/permissionless/bindings/compressors/token-compressor.js +110 -0
  6. package/dist/cjs/permissionless/bindings/compressors/withdrawal-compressor.js +60 -0
  7. package/dist/cjs/permissionless/bindings/cross-chain-multisig.js +355 -0
  8. package/dist/cjs/permissionless/bindings/factory/abstract-factory.js +52 -0
  9. package/dist/cjs/permissionless/bindings/factory/credit-factory.js +197 -0
  10. package/dist/cjs/permissionless/bindings/factory/pool-factory.js +69 -0
  11. package/dist/cjs/permissionless/bindings/factory/price-oracle-factory.js +47 -0
  12. package/dist/cjs/permissionless/bindings/governance/batches-chain.js +41 -0
  13. package/dist/cjs/permissionless/bindings/governance/governor.js +243 -0
  14. package/dist/cjs/permissionless/bindings/governance/index.js +26 -0
  15. package/dist/cjs/permissionless/bindings/governance/timelock.js +104 -0
  16. package/dist/cjs/permissionless/bindings/governance/types.js +16 -0
  17. package/dist/cjs/permissionless/bindings/index.js +48 -0
  18. package/dist/cjs/permissionless/bindings/instance-manager.js +244 -0
  19. package/dist/cjs/permissionless/bindings/market-configurator-factory.js +75 -0
  20. package/dist/cjs/permissionless/bindings/market-configurator.js +771 -0
  21. package/dist/cjs/permissionless/bindings/price-feed-store.js +395 -0
  22. package/dist/cjs/permissionless/bindings/pricefeeds/balancer-stable.js +63 -0
  23. package/dist/cjs/permissionless/bindings/pricefeeds/balancer-weighted.js +63 -0
  24. package/dist/cjs/permissionless/bindings/pricefeeds/bounded.js +47 -0
  25. package/dist/cjs/permissionless/bindings/pricefeeds/composite.js +43 -0
  26. package/dist/cjs/permissionless/bindings/pricefeeds/constant.js +42 -0
  27. package/dist/cjs/permissionless/bindings/pricefeeds/curve-crypto.js +67 -0
  28. package/dist/cjs/permissionless/bindings/pricefeeds/curve-stable.js +67 -0
  29. package/dist/cjs/permissionless/bindings/pricefeeds/curve-twap.js +70 -0
  30. package/dist/cjs/permissionless/bindings/pricefeeds/curve-usd.js +50 -0
  31. package/dist/cjs/permissionless/bindings/pricefeeds/erc4626.js +72 -0
  32. package/dist/cjs/permissionless/bindings/pricefeeds/external.js +38 -0
  33. package/dist/cjs/permissionless/bindings/pricefeeds/index.js +63 -0
  34. package/dist/cjs/permissionless/bindings/pricefeeds/kodiak.js +50 -0
  35. package/dist/cjs/permissionless/bindings/pricefeeds/mellow-lrt.js +122 -0
  36. package/dist/cjs/permissionless/bindings/pricefeeds/pendle-pt-twap.js +51 -0
  37. package/dist/cjs/permissionless/bindings/pricefeeds/pyth.js +65 -0
  38. package/dist/cjs/permissionless/bindings/pricefeeds/redstone.js +81 -0
  39. package/dist/cjs/permissionless/bindings/pricefeeds/wsteth.js +63 -0
  40. package/dist/cjs/permissionless/bindings/pricefeeds/zero.js +33 -0
  41. package/dist/cjs/permissionless/bindings/router/index.js +22 -0
  42. package/dist/cjs/permissionless/bindings/router/routing-manager.js +58 -0
  43. package/dist/cjs/permissionless/bindings/treasury-splitter.js +60 -0
  44. package/dist/cjs/permissionless/bindings/types.js +16 -0
  45. package/dist/cjs/permissionless/chains/archive-transport.js +274 -0
  46. package/dist/cjs/permissionless/core/auditor.js +16 -0
  47. package/dist/cjs/permissionless/core/bytecode.js +16 -0
  48. package/dist/cjs/permissionless/core/index.js +32 -0
  49. package/dist/cjs/permissionless/core/pricefeed-builder.js +16 -0
  50. package/dist/cjs/permissionless/core/pricefeed.js +16 -0
  51. package/dist/cjs/permissionless/core/proposal.js +16 -0
  52. package/dist/cjs/permissionless/core/raw-tx.js +38 -0
  53. package/dist/cjs/permissionless/deployment/addresses.js +35 -0
  54. package/dist/cjs/permissionless/deployment/mainnet.js +54 -0
  55. package/dist/cjs/permissionless/index.js +32 -0
  56. package/dist/cjs/permissionless/package.json +1 -0
  57. package/dist/cjs/permissionless/plugins/index.js +40 -0
  58. package/dist/cjs/permissionless/plugins/irm/constructor-params-abi.js +81 -0
  59. package/dist/cjs/permissionless/plugins/loss-policies/constructor-params-abi.js +79 -0
  60. package/dist/cjs/permissionless/plugins/rate-keepers/constructor-params-abi.js +89 -0
  61. package/dist/cjs/permissionless/utils/abi-decoder.js +72 -0
  62. package/dist/cjs/permissionless/utils/abi-encoder.js +89 -0
  63. package/dist/cjs/permissionless/utils/block-utils.js +55 -0
  64. package/dist/cjs/permissionless/utils/create2.js +113 -0
  65. package/dist/cjs/permissionless/utils/format.js +97 -0
  66. package/dist/cjs/permissionless/utils/governance/batch.js +114 -0
  67. package/dist/cjs/permissionless/utils/governance/index.js +26 -0
  68. package/dist/cjs/permissionless/utils/governance/timelock-txs.js +44 -0
  69. package/dist/cjs/permissionless/utils/governance/types.js +16 -0
  70. package/dist/cjs/permissionless/utils/index.js +38 -0
  71. package/dist/cjs/permissionless/utils/literals.js +46 -0
  72. package/dist/cjs/permissionless/utils/price-update/get-price-feeds.js +91 -0
  73. package/dist/cjs/permissionless/utils/price-update/get-price-update-tx.js +84 -0
  74. package/dist/cjs/permissionless/utils/price-update/get-prices.js +123 -0
  75. package/dist/cjs/permissionless/utils/price-update/get-updatable-feeds.js +52 -0
  76. package/dist/cjs/permissionless/utils/price-update/index.js +28 -0
  77. package/dist/cjs/permissionless/utils/signature.js +35 -0
  78. package/dist/esm/permissionless/bindings/address-provider.js +27 -0
  79. package/dist/esm/permissionless/bindings/base-contract.js +151 -0
  80. package/dist/esm/permissionless/bindings/bytecode-repository.js +508 -0
  81. package/dist/esm/permissionless/bindings/compressors/index.js +2 -0
  82. package/dist/esm/permissionless/bindings/compressors/token-compressor.js +89 -0
  83. package/dist/esm/permissionless/bindings/compressors/withdrawal-compressor.js +38 -0
  84. package/dist/esm/permissionless/bindings/cross-chain-multisig.js +336 -0
  85. package/dist/esm/permissionless/bindings/factory/abstract-factory.js +28 -0
  86. package/dist/esm/permissionless/bindings/factory/credit-factory.js +177 -0
  87. package/dist/esm/permissionless/bindings/factory/pool-factory.js +45 -0
  88. package/dist/esm/permissionless/bindings/factory/price-oracle-factory.js +23 -0
  89. package/dist/esm/permissionless/bindings/governance/batches-chain.js +17 -0
  90. package/dist/esm/permissionless/bindings/governance/governor.js +224 -0
  91. package/dist/esm/permissionless/bindings/governance/index.js +3 -0
  92. package/dist/esm/permissionless/bindings/governance/timelock.js +80 -0
  93. package/dist/esm/permissionless/bindings/governance/types.js +0 -0
  94. package/dist/esm/permissionless/bindings/index.js +14 -0
  95. package/dist/esm/permissionless/bindings/instance-manager.js +223 -0
  96. package/dist/esm/permissionless/bindings/market-configurator-factory.js +51 -0
  97. package/dist/esm/permissionless/bindings/market-configurator.js +765 -0
  98. package/dist/esm/permissionless/bindings/price-feed-store.js +376 -0
  99. package/dist/esm/permissionless/bindings/pricefeeds/balancer-stable.js +39 -0
  100. package/dist/esm/permissionless/bindings/pricefeeds/balancer-weighted.js +39 -0
  101. package/dist/esm/permissionless/bindings/pricefeeds/bounded.js +23 -0
  102. package/dist/esm/permissionless/bindings/pricefeeds/composite.js +19 -0
  103. package/dist/esm/permissionless/bindings/pricefeeds/constant.js +18 -0
  104. package/dist/esm/permissionless/bindings/pricefeeds/curve-crypto.js +43 -0
  105. package/dist/esm/permissionless/bindings/pricefeeds/curve-stable.js +43 -0
  106. package/dist/esm/permissionless/bindings/pricefeeds/curve-twap.js +46 -0
  107. package/dist/esm/permissionless/bindings/pricefeeds/curve-usd.js +26 -0
  108. package/dist/esm/permissionless/bindings/pricefeeds/erc4626.js +48 -0
  109. package/dist/esm/permissionless/bindings/pricefeeds/external.js +14 -0
  110. package/dist/esm/permissionless/bindings/pricefeeds/index.js +39 -0
  111. package/dist/esm/permissionless/bindings/pricefeeds/kodiak.js +26 -0
  112. package/dist/esm/permissionless/bindings/pricefeeds/mellow-lrt.js +98 -0
  113. package/dist/esm/permissionless/bindings/pricefeeds/pendle-pt-twap.js +27 -0
  114. package/dist/esm/permissionless/bindings/pricefeeds/pyth.js +41 -0
  115. package/dist/esm/permissionless/bindings/pricefeeds/redstone.js +57 -0
  116. package/dist/esm/permissionless/bindings/pricefeeds/wsteth.js +39 -0
  117. package/dist/esm/permissionless/bindings/pricefeeds/zero.js +9 -0
  118. package/dist/esm/permissionless/bindings/router/index.js +1 -0
  119. package/dist/esm/permissionless/bindings/router/routing-manager.js +36 -0
  120. package/dist/esm/permissionless/bindings/treasury-splitter.js +36 -0
  121. package/dist/esm/permissionless/bindings/types.js +0 -0
  122. package/dist/esm/permissionless/chains/archive-transport.js +250 -0
  123. package/dist/esm/permissionless/core/auditor.js +0 -0
  124. package/dist/esm/permissionless/core/bytecode.js +0 -0
  125. package/dist/esm/permissionless/core/index.js +6 -0
  126. package/dist/esm/permissionless/core/pricefeed-builder.js +0 -0
  127. package/dist/esm/permissionless/core/pricefeed.js +0 -0
  128. package/dist/esm/permissionless/core/proposal.js +0 -0
  129. package/dist/esm/permissionless/core/raw-tx.js +14 -0
  130. package/dist/esm/permissionless/deployment/addresses.js +11 -0
  131. package/dist/esm/permissionless/deployment/mainnet.js +27 -0
  132. package/dist/esm/permissionless/index.js +6 -0
  133. package/dist/esm/permissionless/package.json +1 -0
  134. package/dist/esm/permissionless/plugins/index.js +20 -0
  135. package/dist/esm/permissionless/plugins/irm/constructor-params-abi.js +52 -0
  136. package/dist/esm/permissionless/plugins/loss-policies/constructor-params-abi.js +50 -0
  137. package/dist/esm/permissionless/plugins/rate-keepers/constructor-params-abi.js +59 -0
  138. package/dist/esm/permissionless/utils/abi-decoder.js +50 -0
  139. package/dist/esm/permissionless/utils/abi-encoder.js +65 -0
  140. package/dist/esm/permissionless/utils/block-utils.js +31 -0
  141. package/dist/esm/permissionless/utils/create2.js +85 -0
  142. package/dist/esm/permissionless/utils/format.js +67 -0
  143. package/dist/esm/permissionless/utils/governance/batch.js +87 -0
  144. package/dist/esm/permissionless/utils/governance/index.js +3 -0
  145. package/dist/esm/permissionless/utils/governance/timelock-txs.js +20 -0
  146. package/dist/esm/permissionless/utils/governance/types.js +0 -0
  147. package/dist/esm/permissionless/utils/index.js +9 -0
  148. package/dist/esm/permissionless/utils/literals.js +16 -0
  149. package/dist/esm/permissionless/utils/price-update/get-price-feeds.js +65 -0
  150. package/dist/esm/permissionless/utils/price-update/get-price-update-tx.js +65 -0
  151. package/dist/esm/permissionless/utils/price-update/get-prices.js +103 -0
  152. package/dist/esm/permissionless/utils/price-update/get-updatable-feeds.js +31 -0
  153. package/dist/esm/permissionless/utils/price-update/index.js +4 -0
  154. package/dist/esm/permissionless/utils/signature.js +11 -0
  155. package/dist/types/permissionless/bindings/address-provider.d.ts +259 -0
  156. package/dist/types/permissionless/bindings/base-contract.d.ts +23 -0
  157. package/dist/types/permissionless/bindings/bytecode-repository.d.ts +1352 -0
  158. package/dist/types/permissionless/bindings/compressors/index.d.ts +2 -0
  159. package/dist/types/permissionless/bindings/compressors/token-compressor.d.ts +118 -0
  160. package/dist/types/permissionless/bindings/compressors/withdrawal-compressor.d.ts +331 -0
  161. package/dist/types/permissionless/bindings/cross-chain-multisig.d.ts +835 -0
  162. package/dist/types/permissionless/bindings/factory/abstract-factory.d.ts +17 -0
  163. package/dist/types/permissionless/bindings/factory/credit-factory.d.ts +224 -0
  164. package/dist/types/permissionless/bindings/factory/pool-factory.d.ts +86 -0
  165. package/dist/types/permissionless/bindings/factory/price-oracle-factory.d.ts +38 -0
  166. package/dist/types/permissionless/bindings/governance/batches-chain.d.ts +39 -0
  167. package/dist/types/permissionless/bindings/governance/governor.d.ts +615 -0
  168. package/dist/types/permissionless/bindings/governance/index.d.ts +3 -0
  169. package/dist/types/permissionless/bindings/governance/timelock.d.ts +10 -0
  170. package/dist/types/permissionless/bindings/governance/types.d.ts +42 -0
  171. package/dist/types/permissionless/bindings/index.d.ts +14 -0
  172. package/dist/types/permissionless/bindings/instance-manager.d.ts +361 -0
  173. package/dist/types/permissionless/bindings/market-configurator-factory.d.ts +244 -0
  174. package/dist/types/permissionless/bindings/market-configurator.d.ts +1656 -0
  175. package/dist/types/permissionless/bindings/price-feed-store.d.ts +605 -0
  176. package/dist/types/permissionless/bindings/pricefeeds/balancer-stable.d.ts +2 -0
  177. package/dist/types/permissionless/bindings/pricefeeds/balancer-weighted.d.ts +2 -0
  178. package/dist/types/permissionless/bindings/pricefeeds/bounded.d.ts +2 -0
  179. package/dist/types/permissionless/bindings/pricefeeds/composite.d.ts +2 -0
  180. package/dist/types/permissionless/bindings/pricefeeds/constant.d.ts +2 -0
  181. package/dist/types/permissionless/bindings/pricefeeds/curve-crypto.d.ts +2 -0
  182. package/dist/types/permissionless/bindings/pricefeeds/curve-stable.d.ts +2 -0
  183. package/dist/types/permissionless/bindings/pricefeeds/curve-twap.d.ts +2 -0
  184. package/dist/types/permissionless/bindings/pricefeeds/curve-usd.d.ts +2 -0
  185. package/dist/types/permissionless/bindings/pricefeeds/erc4626.d.ts +2 -0
  186. package/dist/types/permissionless/bindings/pricefeeds/external.d.ts +2 -0
  187. package/dist/types/permissionless/bindings/pricefeeds/index.d.ts +2 -0
  188. package/dist/types/permissionless/bindings/pricefeeds/kodiak.d.ts +2 -0
  189. package/dist/types/permissionless/bindings/pricefeeds/mellow-lrt.d.ts +2 -0
  190. package/dist/types/permissionless/bindings/pricefeeds/pendle-pt-twap.d.ts +2 -0
  191. package/dist/types/permissionless/bindings/pricefeeds/pyth.d.ts +2 -0
  192. package/dist/types/permissionless/bindings/pricefeeds/redstone.d.ts +2 -0
  193. package/dist/types/permissionless/bindings/pricefeeds/wsteth.d.ts +2 -0
  194. package/dist/types/permissionless/bindings/pricefeeds/zero.d.ts +2 -0
  195. package/dist/types/permissionless/bindings/router/index.d.ts +1 -0
  196. package/dist/types/permissionless/bindings/router/routing-manager.d.ts +502 -0
  197. package/dist/types/permissionless/bindings/treasury-splitter.d.ts +21 -0
  198. package/dist/types/permissionless/bindings/types.d.ts +65 -0
  199. package/dist/types/permissionless/chains/archive-transport.d.ts +49 -0
  200. package/dist/types/permissionless/core/auditor.d.ts +7 -0
  201. package/dist/types/permissionless/core/bytecode.d.ts +46 -0
  202. package/dist/types/permissionless/core/index.d.ts +6 -0
  203. package/dist/types/permissionless/core/pricefeed-builder.d.ts +59 -0
  204. package/dist/types/permissionless/core/pricefeed.d.ts +10 -0
  205. package/dist/types/permissionless/core/proposal.d.ts +33 -0
  206. package/dist/types/permissionless/core/raw-tx.d.ts +4 -0
  207. package/dist/types/permissionless/deployment/addresses.d.ts +7 -0
  208. package/dist/types/permissionless/deployment/mainnet.d.ts +10 -0
  209. package/dist/types/permissionless/index.d.ts +6 -0
  210. package/dist/types/permissionless/plugins/index.d.ts +3 -0
  211. package/dist/types/permissionless/plugins/irm/constructor-params-abi.d.ts +63 -0
  212. package/dist/types/permissionless/plugins/loss-policies/constructor-params-abi.d.ts +48 -0
  213. package/dist/types/permissionless/plugins/rate-keepers/constructor-params-abi.d.ts +55 -0
  214. package/dist/types/permissionless/utils/abi-decoder.d.ts +13 -0
  215. package/dist/types/permissionless/utils/abi-encoder.d.ts +7 -0
  216. package/dist/types/permissionless/utils/block-utils.d.ts +8 -0
  217. package/dist/types/permissionless/utils/create2.d.ts +17 -0
  218. package/dist/types/permissionless/utils/format.d.ts +7 -0
  219. package/dist/types/permissionless/utils/governance/batch.d.ts +17 -0
  220. package/dist/types/permissionless/utils/governance/index.d.ts +3 -0
  221. package/dist/types/permissionless/utils/governance/timelock-txs.d.ts +2 -0
  222. package/dist/types/permissionless/utils/governance/types.d.ts +16 -0
  223. package/dist/types/permissionless/utils/index.d.ts +9 -0
  224. package/dist/types/permissionless/utils/literals.d.ts +7 -0
  225. package/dist/types/permissionless/utils/price-update/get-price-feeds.d.ts +8 -0
  226. package/dist/types/permissionless/utils/price-update/get-price-update-tx.d.ts +9 -0
  227. package/dist/types/permissionless/utils/price-update/get-prices.d.ts +6 -0
  228. package/dist/types/permissionless/utils/price-update/get-updatable-feeds.d.ts +8 -0
  229. package/dist/types/permissionless/utils/price-update/index.d.ts +4 -0
  230. package/dist/types/permissionless/utils/signature.d.ts +2 -0
  231. package/package.json +11 -1
@@ -0,0 +1,224 @@
1
+ import {
2
+ encodeAbiParameters,
3
+ formatEther,
4
+ keccak256,
5
+ toBytes
6
+ } from "viem";
7
+ import { formatAbiItem } from "viem/utils";
8
+ import { governorAbi } from "../../../abi/governance/governor.js";
9
+ import { json_stringify } from "../../../sdk/utils/index.js";
10
+ import { formatTimestamp } from "../../utils";
11
+ import { BaseContract } from "../base-contract";
12
+ import { MarketConfiguratorContract } from "../market-configurator";
13
+ import { TreasurySplitterContract } from "../treasury-splitter";
14
+ import { BatchesChainContract } from "./batches-chain";
15
+ const abi = governorAbi;
16
+ class GovernorContract extends BaseContract {
17
+ batchesChainContract;
18
+ constructor(address, client) {
19
+ super(abi, address, client, "Governor");
20
+ this.batchesChainContract = new BatchesChainContract(
21
+ "0x59b2fd348e4Ade84ffEfDaf5fcdDa7276c8C5041",
22
+ client
23
+ );
24
+ }
25
+ getTxHash(tx) {
26
+ if (tx.contractMethod.name !== "queueTransaction") {
27
+ throw new Error(
28
+ `Transaction is not a queueTransaction, method provided: ${tx.contractMethod.name}`
29
+ );
30
+ }
31
+ const { target, value, signature, data, eta } = tx.contractInputsValues;
32
+ return keccak256(
33
+ encodeAbiParameters(
34
+ [
35
+ { type: "address", name: "target" },
36
+ { type: "uint", name: "value" },
37
+ { type: "string", name: "signature" },
38
+ { type: "bytes", name: "data" },
39
+ { type: "uint", name: "eta" }
40
+ ],
41
+ [target, value, signature, data, eta]
42
+ )
43
+ );
44
+ }
45
+ async owner() {
46
+ const owner = await this.client.readContract({
47
+ address: this.address,
48
+ abi: governorAbi,
49
+ functionName: "owner"
50
+ });
51
+ return owner;
52
+ }
53
+ createQueueTx(args) {
54
+ const { tx, eta } = args;
55
+ const signature = formatAbiItem({
56
+ type: "function",
57
+ stateMutability: tx.contractMethod.payable ? "payable" : "nonpayable",
58
+ outputs: [],
59
+ ...tx.contractMethod
60
+ });
61
+ return this.createRawTx({
62
+ functionName: "queueTransaction",
63
+ args: [
64
+ tx.to,
65
+ 0n,
66
+ signature,
67
+ "0x" + tx.callData.slice(10),
68
+ BigInt(eta)
69
+ ],
70
+ description: `QueueTransaction(${tx.description})`
71
+ });
72
+ }
73
+ createGovernorBatch(args) {
74
+ const { txs, eta, prevHash } = args;
75
+ const transactions = [];
76
+ const queueTxs = txs.map((tx) => this.createQueueTx({ tx, eta }));
77
+ transactions.push(
78
+ this.createRawTx({
79
+ functionName: "startBatch",
80
+ args: [BigInt(eta)],
81
+ description: `StartBatch(${eta})`
82
+ })
83
+ );
84
+ if (prevHash !== void 0) {
85
+ transactions.push(
86
+ this.createQueueTx({
87
+ tx: this.batchesChainContract.createBatchOrderingTx(prevHash),
88
+ eta
89
+ })
90
+ );
91
+ }
92
+ transactions.push(...queueTxs);
93
+ return transactions;
94
+ }
95
+ createGovernorBatches(args) {
96
+ const { batches, eta } = args;
97
+ const queueBatches = [];
98
+ let prevHash;
99
+ for (const txs of batches) {
100
+ queueBatches.push(this.createGovernorBatch({ txs, eta, prevHash }));
101
+ prevHash = this.getTxHash(this.createQueueTx({ tx: txs[0], eta }));
102
+ }
103
+ return queueBatches;
104
+ }
105
+ createExecuteBatchTx(args) {
106
+ const executionBatch = args.txs.filter((tx) => tx.contractMethod.name === "queueTransaction").map((tx) => ({
107
+ ...tx.contractInputsValues,
108
+ value: BigInt(tx.contractInputsValues.value),
109
+ eta: BigInt(tx.contractInputsValues.eta)
110
+ }));
111
+ return this.createRawTx({
112
+ functionName: "executeBatch",
113
+ args: [executionBatch],
114
+ description: `ExecuteBatch(${executionBatch.map(
115
+ (tx) => `{
116
+ target: ${tx.target},
117
+ value: ${tx.value.toString()},
118
+ signature: ${tx.signature},
119
+ data: ${tx.data.length > 40 ? `${tx.data.slice(0, 40)}...` : tx.data},
120
+ },`
121
+ ).join("\n")})`
122
+ });
123
+ }
124
+ decodeFunctionData(target, calldata) {
125
+ switch (target.toLowerCase()) {
126
+ case this.address.toLowerCase(): {
127
+ return this.parseFunctionData(calldata);
128
+ }
129
+ case this.batchesChainContract.address.toLowerCase(): {
130
+ return this.batchesChainContract.parseFunctionData(calldata);
131
+ }
132
+ default: {
133
+ try {
134
+ let parsedData;
135
+ const marketConfigurator = new MarketConfiguratorContract(
136
+ target,
137
+ this.client
138
+ );
139
+ parsedData = marketConfigurator.parseFunctionData(calldata);
140
+ if (!parsedData.functionName.startsWith("Unknown function")) {
141
+ return parsedData;
142
+ }
143
+ const treasurySplitter = new TreasurySplitterContract(
144
+ target,
145
+ this.client
146
+ );
147
+ parsedData = treasurySplitter.parseFunctionData(calldata);
148
+ if (!parsedData.functionName.startsWith("Unknown function")) {
149
+ return parsedData;
150
+ }
151
+ } catch {
152
+ return void 0;
153
+ }
154
+ }
155
+ }
156
+ }
157
+ parseFunctionParams(params) {
158
+ const { functionName, args } = params;
159
+ switch (functionName) {
160
+ case "startBatch": {
161
+ const [eta] = args;
162
+ return {
163
+ chainId: 0,
164
+ target: this.address,
165
+ label: this.name,
166
+ functionName,
167
+ args: {
168
+ eta: formatTimestamp(Number(eta))
169
+ }
170
+ };
171
+ }
172
+ case "queueTransaction": {
173
+ const [target, value, signature, data, eta] = args;
174
+ const calldata = keccak256(toBytes(signature)).slice(0, 10) + data.slice(2);
175
+ return {
176
+ chainId: 0,
177
+ target: this.address,
178
+ label: this.name,
179
+ functionName,
180
+ args: {
181
+ target,
182
+ value: formatEther(value),
183
+ signature,
184
+ data: json_stringify(
185
+ this.decodeFunctionData(target, calldata)?.args ?? calldata
186
+ ),
187
+ eta: formatTimestamp(Number(eta))
188
+ }
189
+ };
190
+ }
191
+ case "executeBatch": {
192
+ const [txs] = args;
193
+ return {
194
+ chainId: 0,
195
+ target: this.address,
196
+ label: this.name,
197
+ functionName,
198
+ args: {
199
+ txs: json_stringify(
200
+ txs.map((tx) => {
201
+ const { target, value, signature, data, eta } = tx;
202
+ const calldata = keccak256(toBytes(signature)).slice(0, 10) + data.slice(2);
203
+ return {
204
+ target,
205
+ value: formatEther(value),
206
+ signature,
207
+ data: json_stringify(
208
+ this.decodeFunctionData(target, calldata)?.args ?? calldata
209
+ ),
210
+ eta: formatTimestamp(Number(eta))
211
+ };
212
+ })
213
+ )
214
+ }
215
+ };
216
+ }
217
+ default:
218
+ return void 0;
219
+ }
220
+ }
221
+ }
222
+ export {
223
+ GovernorContract
224
+ };
@@ -0,0 +1,3 @@
1
+ export * from "./governor";
2
+ export * from "./timelock";
3
+ export * from "./types";
@@ -0,0 +1,80 @@
1
+ import { iTimeLockAbi } from "../../../abi/governance/iTimeLock.js";
2
+ import { BaseContract } from "../base-contract";
3
+ class TimeLockContract extends BaseContract {
4
+ constructor(address, client) {
5
+ super(iTimeLockAbi, address, client, "TimeLock");
6
+ }
7
+ async admin() {
8
+ const admin = await this.client.readContract({
9
+ address: this.address,
10
+ abi: iTimeLockAbi,
11
+ functionName: "admin"
12
+ });
13
+ return admin;
14
+ }
15
+ async getGracePeriod() {
16
+ return this.contract.read.GRACE_PERIOD();
17
+ }
18
+ async getQueuedAndExecutedTransactions(fromBlock, toBlock) {
19
+ const [executedEvents, queuedEvents, cancelledEvents] = await Promise.all([
20
+ this.getEvents("ExecuteTransaction", fromBlock, toBlock),
21
+ this.getEvents("QueueTransaction", fromBlock, toBlock),
22
+ this.getEvents("CancelTransaction", fromBlock, toBlock)
23
+ ]);
24
+ const toBlockTimestamp = await this.client.getBlock({ blockNumber: toBlock }).then((block) => block.timestamp);
25
+ const gracePeriod = await this.getGracePeriod();
26
+ const processedTxHashes = /* @__PURE__ */ new Set([
27
+ ...executedEvents.map((event) => event.args.txHash),
28
+ ...cancelledEvents.map((event) => event.args.txHash)
29
+ ]);
30
+ const queuedTxHashes = new Set(
31
+ queuedEvents.map((event) => event.args.txHash)
32
+ );
33
+ const remainingQueuedEvents = queuedEvents.filter((event) => {
34
+ const cancelledOrExecuted = processedTxHashes.has(event.args.txHash);
35
+ const expired = event.args.eta ? toBlockTimestamp > event.args.eta + gracePeriod : true;
36
+ return !cancelledOrExecuted && !expired;
37
+ });
38
+ const orphanedCanceledEvents = cancelledEvents.filter(
39
+ (event) => !queuedTxHashes.has(event.args.txHash)
40
+ );
41
+ return {
42
+ executed: executedEvents.map((event) => ({
43
+ txHash: event.args.txHash,
44
+ txParams: {
45
+ target: event.args.target,
46
+ value: event.args.value,
47
+ data: event.args.data,
48
+ signature: event.args.signature,
49
+ eta: event.args.eta
50
+ },
51
+ blockNumber: event.blockNumber
52
+ })),
53
+ queued: remainingQueuedEvents.map((event) => ({
54
+ txHash: event.args.txHash,
55
+ txParams: {
56
+ target: event.args.target,
57
+ value: event.args.value,
58
+ data: event.args.data,
59
+ signature: event.args.signature,
60
+ eta: event.args.eta
61
+ },
62
+ blockNumber: event.blockNumber
63
+ })),
64
+ canceled: orphanedCanceledEvents.map((event) => ({
65
+ txHash: event.args.txHash,
66
+ txParams: {
67
+ target: event.args.target,
68
+ value: event.args.value,
69
+ data: event.args.data,
70
+ signature: event.args.signature,
71
+ eta: event.args.eta
72
+ },
73
+ blockNumber: event.blockNumber
74
+ }))
75
+ };
76
+ }
77
+ }
78
+ export {
79
+ TimeLockContract
80
+ };
@@ -0,0 +1,14 @@
1
+ export * from "./address-provider";
2
+ export * from "./base-contract";
3
+ export * from "./bytecode-repository";
4
+ export * from "./compressors";
5
+ export * from "./cross-chain-multisig";
6
+ export * from "./governance";
7
+ export * from "./instance-manager";
8
+ export * from "./market-configurator";
9
+ export * from "./market-configurator-factory";
10
+ export * from "./price-feed-store";
11
+ export * from "./pricefeeds";
12
+ export * from "./router";
13
+ export * from "./treasury-splitter";
14
+ export * from "./types";
@@ -0,0 +1,223 @@
1
+ import {
2
+ hexToString,
3
+ stringToHex
4
+ } from "viem";
5
+ import { instanceManagerAbi } from "../../abi/310/instanceManager.js";
6
+ import { camelotV3WorkerAbi } from "../../abi/router/camelotV3Worker.js";
7
+ import { erc4626WorkerAbi } from "../../abi/router/erc4626Worker.js";
8
+ import { gearboxRouterAbi } from "../../abi/router/gearboxRouter.js";
9
+ import { pendleRouterWorkerAbi } from "../../abi/router/pendleRouterWorker.js";
10
+ import { uniswapV3WorkerAbi } from "../../abi/router/uniswapV3Worker.js";
11
+ import { json_stringify } from "../../sdk/utils/index.js";
12
+ import { Addresses } from "../deployment/addresses";
13
+ import { BaseContract } from "./base-contract";
14
+ import { WithdrawalCompressorContract } from "./compressors";
15
+ import { PriceFeedStoreContract } from "./price-feed-store";
16
+ import { RoutingManagerContract } from "./router";
17
+ const abi = instanceManagerAbi;
18
+ class InstanceManagerContract extends BaseContract {
19
+ constructor(address, client) {
20
+ super(abi, address, client, "InstanceManager");
21
+ }
22
+ // TODO:
23
+ decodeFunctionData(target, calldata) {
24
+ switch (target.toLowerCase()) {
25
+ case this.address.toLowerCase(): {
26
+ return this.parseFunctionData(calldata);
27
+ }
28
+ case Addresses.PRICE_FEED_STORE.toLowerCase(): {
29
+ const priceFeedStore = new PriceFeedStoreContract(target, this.client);
30
+ return priceFeedStore.parseFunctionData(calldata);
31
+ }
32
+ default: {
33
+ try {
34
+ let parsedData;
35
+ const router = new BaseContract(
36
+ gearboxRouterAbi,
37
+ target,
38
+ this.client,
39
+ "GearboxRouter"
40
+ );
41
+ parsedData = router.parseFunctionData(calldata);
42
+ if (!parsedData.functionName.startsWith("Unknown function")) {
43
+ return parsedData;
44
+ }
45
+ const routingManager = new RoutingManagerContract(
46
+ target,
47
+ this.client
48
+ );
49
+ parsedData = routingManager.parseFunctionData(calldata);
50
+ if (!parsedData.functionName.startsWith("Unknown function")) {
51
+ return parsedData;
52
+ }
53
+ const camelotV3Worker = new BaseContract(
54
+ camelotV3WorkerAbi,
55
+ target,
56
+ this.client,
57
+ "CamelotV3Worker"
58
+ );
59
+ parsedData = camelotV3Worker.parseFunctionData(calldata);
60
+ if (!parsedData.functionName.startsWith("Unknown function")) {
61
+ return parsedData;
62
+ }
63
+ const erc4626Worker = new BaseContract(
64
+ erc4626WorkerAbi,
65
+ target,
66
+ this.client,
67
+ "ERC4626Worker"
68
+ );
69
+ parsedData = erc4626Worker.parseFunctionData(calldata);
70
+ if (!parsedData.functionName.startsWith("Unknown function")) {
71
+ return parsedData;
72
+ }
73
+ const pendleRouterWorker = new BaseContract(
74
+ pendleRouterWorkerAbi,
75
+ target,
76
+ this.client,
77
+ "PendleRouterWorker"
78
+ );
79
+ parsedData = pendleRouterWorker.parseFunctionData(calldata);
80
+ if (!parsedData.functionName.startsWith("Unknown function")) {
81
+ return parsedData;
82
+ }
83
+ const uniswapV3Worker = new BaseContract(
84
+ uniswapV3WorkerAbi,
85
+ target,
86
+ this.client,
87
+ "UniswapV3Worker"
88
+ );
89
+ parsedData = uniswapV3Worker.parseFunctionData(calldata);
90
+ if (!parsedData.functionName.startsWith("Unknown function")) {
91
+ return parsedData;
92
+ }
93
+ const withdrawalCompressor = new WithdrawalCompressorContract(
94
+ target,
95
+ this.client
96
+ );
97
+ parsedData = withdrawalCompressor.parseFunctionData(calldata);
98
+ if (!parsedData.functionName.startsWith("Unknown function")) {
99
+ return parsedData;
100
+ }
101
+ } catch {
102
+ return void 0;
103
+ }
104
+ }
105
+ }
106
+ }
107
+ // TODO:
108
+ parseFunctionParams(params) {
109
+ switch (params.functionName) {
110
+ case "configureGlobal": {
111
+ const [target, data] = params.args;
112
+ const nestedCall = BaseContract.parse(target, data);
113
+ return {
114
+ ...nestedCall,
115
+ label: `${nestedCall.label} via instanceManager`,
116
+ target: this.address
117
+ };
118
+ }
119
+ case "configureLocal": {
120
+ const [target, data] = params.args;
121
+ const decoded = this.decodeFunctionData(target, data);
122
+ return {
123
+ chainId: 0,
124
+ target: this.address,
125
+ label: this.name,
126
+ functionName: params.functionName,
127
+ args: decoded ? {
128
+ target,
129
+ functionName: decoded.functionName,
130
+ args: json_stringify(decoded.args)
131
+ } : {
132
+ target,
133
+ data
134
+ }
135
+ };
136
+ }
137
+ case "activate": {
138
+ const [instanceOwner, treasury, weth, gear] = params.args;
139
+ return this.wrapParseCall(params, {
140
+ instanceOwner,
141
+ treasury,
142
+ weth,
143
+ gear
144
+ });
145
+ }
146
+ case "deploySystemContract": {
147
+ const [contractType, version, saveVersion] = params.args;
148
+ return this.wrapParseCall(params, {
149
+ contractType: hexToString(contractType, { size: 32 }),
150
+ version: version.toString(),
151
+ saveVersion: saveVersion ? "true" : "false"
152
+ });
153
+ }
154
+ case "setGlobalAddress": {
155
+ const [key, address, saveVersion] = params.args;
156
+ return this.wrapParseCall(params, {
157
+ key,
158
+ address,
159
+ saveVersion: saveVersion ? "true" : "false"
160
+ });
161
+ }
162
+ default:
163
+ return void 0;
164
+ }
165
+ }
166
+ async isActivated() {
167
+ const result = await this.contract.read.isActivated();
168
+ return result;
169
+ }
170
+ async getOwner() {
171
+ const result = await this.contract.read.owner();
172
+ return result;
173
+ }
174
+ wrapConfigureGlobal(rawTx) {
175
+ return this.createRawTx({
176
+ functionName: "configureGlobal",
177
+ args: [rawTx.to, rawTx.callData],
178
+ description: rawTx.description ? `InstanceManager.configureGlobal(${rawTx.description})` : void 0
179
+ });
180
+ }
181
+ wrapConfigureLocal(rawTx) {
182
+ return this.createRawTx({
183
+ functionName: "configureLocal",
184
+ args: [rawTx.to, rawTx.callData],
185
+ description: rawTx.description ? `InstanceManager.configureLocal(${rawTx.description})` : void 0
186
+ });
187
+ }
188
+ setLocalAddress(args) {
189
+ const { key, address, saveVersion } = args;
190
+ return this.createRawTx({
191
+ functionName: "setLocalAddress",
192
+ args: [stringToHex(key, { size: 32 }), address, saveVersion],
193
+ description: `InstanceManager.setLocalAddress(key: ${key}, addr: ${address}, saveVersion: ${saveVersion})`
194
+ });
195
+ }
196
+ setGlobalAddress(args) {
197
+ const { key, address, saveVersion } = args;
198
+ return this.createRawTx({
199
+ functionName: "setGlobalAddress",
200
+ args: [stringToHex(key, { size: 32 }), address, saveVersion],
201
+ description: `InstanceManager.setGlobalAddress(key: ${key}, addr: ${address}, saveVersion: ${saveVersion})`
202
+ });
203
+ }
204
+ deploySystemContractTx(args) {
205
+ const { name, version, saveVersion } = args;
206
+ return this.createRawTx({
207
+ functionName: "deploySystemContract",
208
+ args: [stringToHex(name, { size: 32 }), version, saveVersion],
209
+ description: `InstanceManager.deploySystemContract(${name})`
210
+ });
211
+ }
212
+ activateTx(args) {
213
+ const { instanceOwner, treasury, weth, gear } = args;
214
+ return this.createRawTx({
215
+ functionName: "activate",
216
+ args: [instanceOwner, treasury, weth, gear],
217
+ description: `InstanceManager.activate(instanceOwner: ${instanceOwner}, treasury: ${treasury}, weth: ${weth}, gear: ${gear})`
218
+ });
219
+ }
220
+ }
221
+ export {
222
+ InstanceManagerContract
223
+ };
@@ -0,0 +1,51 @@
1
+ import { iMarketConfiguratorFactoryAbi } from "../../abi/310/iMarketConfiguratorFactory.js";
2
+ import { BaseContract } from "./base-contract";
3
+ const abi = iMarketConfiguratorFactoryAbi;
4
+ class MarketConfiguratorFactoryContract extends BaseContract {
5
+ constructor(address, client) {
6
+ super(abi, address, client, "MarketConfiguratorFactory");
7
+ }
8
+ createMarketConfiguratorTx(args) {
9
+ return this.createRawTx({
10
+ functionName: "createMarketConfigurator",
11
+ args: [
12
+ args.emergencyAdmin,
13
+ args.adminFeeTreasury,
14
+ args.curatorName,
15
+ args.deployGovernor
16
+ ]
17
+ });
18
+ }
19
+ async getMarketConfigurators() {
20
+ return [...await this.contract.read.getMarketConfigurators()];
21
+ }
22
+ async getShutdownMarketConfigurators() {
23
+ return [...await this.contract.read.getShutdownMarketConfigurators()];
24
+ }
25
+ async syncMarketConfigurators(fromBlock, toBlock) {
26
+ const createEvents = await this.getEvents(
27
+ "CreateMarketConfigurator",
28
+ fromBlock,
29
+ toBlock
30
+ );
31
+ const shutdownEvents = await this.getEvents(
32
+ "ShutdownMarketConfigurator",
33
+ fromBlock,
34
+ toBlock
35
+ );
36
+ return {
37
+ newMarketConfigurators: (createEvents || []).map((event) => ({
38
+ address: event.args.marketConfigurator,
39
+ name: event.args.name,
40
+ atBlock: Number(event.blockNumber)
41
+ })).filter((marketConfigurator) => marketConfigurator.address !== void 0),
42
+ shutdownMarketConfigurators: (shutdownEvents || []).map((event) => ({
43
+ address: event.args.marketConfigurator,
44
+ atBlock: Number(event.blockNumber)
45
+ })).filter((marketConfigurator) => marketConfigurator.address !== void 0)
46
+ };
47
+ }
48
+ }
49
+ export {
50
+ MarketConfiguratorFactoryContract
51
+ };