@gearbox-protocol/sdk 9.14.0 → 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 (233) 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/cjs/sdk/GearboxSDK.js +5 -1
  79. package/dist/esm/permissionless/bindings/address-provider.js +27 -0
  80. package/dist/esm/permissionless/bindings/base-contract.js +151 -0
  81. package/dist/esm/permissionless/bindings/bytecode-repository.js +508 -0
  82. package/dist/esm/permissionless/bindings/compressors/index.js +2 -0
  83. package/dist/esm/permissionless/bindings/compressors/token-compressor.js +89 -0
  84. package/dist/esm/permissionless/bindings/compressors/withdrawal-compressor.js +38 -0
  85. package/dist/esm/permissionless/bindings/cross-chain-multisig.js +336 -0
  86. package/dist/esm/permissionless/bindings/factory/abstract-factory.js +28 -0
  87. package/dist/esm/permissionless/bindings/factory/credit-factory.js +177 -0
  88. package/dist/esm/permissionless/bindings/factory/pool-factory.js +45 -0
  89. package/dist/esm/permissionless/bindings/factory/price-oracle-factory.js +23 -0
  90. package/dist/esm/permissionless/bindings/governance/batches-chain.js +17 -0
  91. package/dist/esm/permissionless/bindings/governance/governor.js +224 -0
  92. package/dist/esm/permissionless/bindings/governance/index.js +3 -0
  93. package/dist/esm/permissionless/bindings/governance/timelock.js +80 -0
  94. package/dist/esm/permissionless/bindings/governance/types.js +0 -0
  95. package/dist/esm/permissionless/bindings/index.js +14 -0
  96. package/dist/esm/permissionless/bindings/instance-manager.js +223 -0
  97. package/dist/esm/permissionless/bindings/market-configurator-factory.js +51 -0
  98. package/dist/esm/permissionless/bindings/market-configurator.js +765 -0
  99. package/dist/esm/permissionless/bindings/price-feed-store.js +376 -0
  100. package/dist/esm/permissionless/bindings/pricefeeds/balancer-stable.js +39 -0
  101. package/dist/esm/permissionless/bindings/pricefeeds/balancer-weighted.js +39 -0
  102. package/dist/esm/permissionless/bindings/pricefeeds/bounded.js +23 -0
  103. package/dist/esm/permissionless/bindings/pricefeeds/composite.js +19 -0
  104. package/dist/esm/permissionless/bindings/pricefeeds/constant.js +18 -0
  105. package/dist/esm/permissionless/bindings/pricefeeds/curve-crypto.js +43 -0
  106. package/dist/esm/permissionless/bindings/pricefeeds/curve-stable.js +43 -0
  107. package/dist/esm/permissionless/bindings/pricefeeds/curve-twap.js +46 -0
  108. package/dist/esm/permissionless/bindings/pricefeeds/curve-usd.js +26 -0
  109. package/dist/esm/permissionless/bindings/pricefeeds/erc4626.js +48 -0
  110. package/dist/esm/permissionless/bindings/pricefeeds/external.js +14 -0
  111. package/dist/esm/permissionless/bindings/pricefeeds/index.js +39 -0
  112. package/dist/esm/permissionless/bindings/pricefeeds/kodiak.js +26 -0
  113. package/dist/esm/permissionless/bindings/pricefeeds/mellow-lrt.js +98 -0
  114. package/dist/esm/permissionless/bindings/pricefeeds/pendle-pt-twap.js +27 -0
  115. package/dist/esm/permissionless/bindings/pricefeeds/pyth.js +41 -0
  116. package/dist/esm/permissionless/bindings/pricefeeds/redstone.js +57 -0
  117. package/dist/esm/permissionless/bindings/pricefeeds/wsteth.js +39 -0
  118. package/dist/esm/permissionless/bindings/pricefeeds/zero.js +9 -0
  119. package/dist/esm/permissionless/bindings/router/index.js +1 -0
  120. package/dist/esm/permissionless/bindings/router/routing-manager.js +36 -0
  121. package/dist/esm/permissionless/bindings/treasury-splitter.js +36 -0
  122. package/dist/esm/permissionless/bindings/types.js +0 -0
  123. package/dist/esm/permissionless/chains/archive-transport.js +250 -0
  124. package/dist/esm/permissionless/core/auditor.js +0 -0
  125. package/dist/esm/permissionless/core/bytecode.js +0 -0
  126. package/dist/esm/permissionless/core/index.js +6 -0
  127. package/dist/esm/permissionless/core/pricefeed-builder.js +0 -0
  128. package/dist/esm/permissionless/core/pricefeed.js +0 -0
  129. package/dist/esm/permissionless/core/proposal.js +0 -0
  130. package/dist/esm/permissionless/core/raw-tx.js +14 -0
  131. package/dist/esm/permissionless/deployment/addresses.js +11 -0
  132. package/dist/esm/permissionless/deployment/mainnet.js +27 -0
  133. package/dist/esm/permissionless/index.js +6 -0
  134. package/dist/esm/permissionless/package.json +1 -0
  135. package/dist/esm/permissionless/plugins/index.js +20 -0
  136. package/dist/esm/permissionless/plugins/irm/constructor-params-abi.js +52 -0
  137. package/dist/esm/permissionless/plugins/loss-policies/constructor-params-abi.js +50 -0
  138. package/dist/esm/permissionless/plugins/rate-keepers/constructor-params-abi.js +59 -0
  139. package/dist/esm/permissionless/utils/abi-decoder.js +50 -0
  140. package/dist/esm/permissionless/utils/abi-encoder.js +65 -0
  141. package/dist/esm/permissionless/utils/block-utils.js +31 -0
  142. package/dist/esm/permissionless/utils/create2.js +85 -0
  143. package/dist/esm/permissionless/utils/format.js +67 -0
  144. package/dist/esm/permissionless/utils/governance/batch.js +87 -0
  145. package/dist/esm/permissionless/utils/governance/index.js +3 -0
  146. package/dist/esm/permissionless/utils/governance/timelock-txs.js +20 -0
  147. package/dist/esm/permissionless/utils/governance/types.js +0 -0
  148. package/dist/esm/permissionless/utils/index.js +9 -0
  149. package/dist/esm/permissionless/utils/literals.js +16 -0
  150. package/dist/esm/permissionless/utils/price-update/get-price-feeds.js +65 -0
  151. package/dist/esm/permissionless/utils/price-update/get-price-update-tx.js +65 -0
  152. package/dist/esm/permissionless/utils/price-update/get-prices.js +103 -0
  153. package/dist/esm/permissionless/utils/price-update/get-updatable-feeds.js +31 -0
  154. package/dist/esm/permissionless/utils/price-update/index.js +4 -0
  155. package/dist/esm/permissionless/utils/signature.js +11 -0
  156. package/dist/esm/sdk/GearboxSDK.js +5 -1
  157. package/dist/types/permissionless/bindings/address-provider.d.ts +259 -0
  158. package/dist/types/permissionless/bindings/base-contract.d.ts +23 -0
  159. package/dist/types/permissionless/bindings/bytecode-repository.d.ts +1352 -0
  160. package/dist/types/permissionless/bindings/compressors/index.d.ts +2 -0
  161. package/dist/types/permissionless/bindings/compressors/token-compressor.d.ts +118 -0
  162. package/dist/types/permissionless/bindings/compressors/withdrawal-compressor.d.ts +331 -0
  163. package/dist/types/permissionless/bindings/cross-chain-multisig.d.ts +835 -0
  164. package/dist/types/permissionless/bindings/factory/abstract-factory.d.ts +17 -0
  165. package/dist/types/permissionless/bindings/factory/credit-factory.d.ts +224 -0
  166. package/dist/types/permissionless/bindings/factory/pool-factory.d.ts +86 -0
  167. package/dist/types/permissionless/bindings/factory/price-oracle-factory.d.ts +38 -0
  168. package/dist/types/permissionless/bindings/governance/batches-chain.d.ts +39 -0
  169. package/dist/types/permissionless/bindings/governance/governor.d.ts +615 -0
  170. package/dist/types/permissionless/bindings/governance/index.d.ts +3 -0
  171. package/dist/types/permissionless/bindings/governance/timelock.d.ts +10 -0
  172. package/dist/types/permissionless/bindings/governance/types.d.ts +42 -0
  173. package/dist/types/permissionless/bindings/index.d.ts +14 -0
  174. package/dist/types/permissionless/bindings/instance-manager.d.ts +361 -0
  175. package/dist/types/permissionless/bindings/market-configurator-factory.d.ts +244 -0
  176. package/dist/types/permissionless/bindings/market-configurator.d.ts +1656 -0
  177. package/dist/types/permissionless/bindings/price-feed-store.d.ts +605 -0
  178. package/dist/types/permissionless/bindings/pricefeeds/balancer-stable.d.ts +2 -0
  179. package/dist/types/permissionless/bindings/pricefeeds/balancer-weighted.d.ts +2 -0
  180. package/dist/types/permissionless/bindings/pricefeeds/bounded.d.ts +2 -0
  181. package/dist/types/permissionless/bindings/pricefeeds/composite.d.ts +2 -0
  182. package/dist/types/permissionless/bindings/pricefeeds/constant.d.ts +2 -0
  183. package/dist/types/permissionless/bindings/pricefeeds/curve-crypto.d.ts +2 -0
  184. package/dist/types/permissionless/bindings/pricefeeds/curve-stable.d.ts +2 -0
  185. package/dist/types/permissionless/bindings/pricefeeds/curve-twap.d.ts +2 -0
  186. package/dist/types/permissionless/bindings/pricefeeds/curve-usd.d.ts +2 -0
  187. package/dist/types/permissionless/bindings/pricefeeds/erc4626.d.ts +2 -0
  188. package/dist/types/permissionless/bindings/pricefeeds/external.d.ts +2 -0
  189. package/dist/types/permissionless/bindings/pricefeeds/index.d.ts +2 -0
  190. package/dist/types/permissionless/bindings/pricefeeds/kodiak.d.ts +2 -0
  191. package/dist/types/permissionless/bindings/pricefeeds/mellow-lrt.d.ts +2 -0
  192. package/dist/types/permissionless/bindings/pricefeeds/pendle-pt-twap.d.ts +2 -0
  193. package/dist/types/permissionless/bindings/pricefeeds/pyth.d.ts +2 -0
  194. package/dist/types/permissionless/bindings/pricefeeds/redstone.d.ts +2 -0
  195. package/dist/types/permissionless/bindings/pricefeeds/wsteth.d.ts +2 -0
  196. package/dist/types/permissionless/bindings/pricefeeds/zero.d.ts +2 -0
  197. package/dist/types/permissionless/bindings/router/index.d.ts +1 -0
  198. package/dist/types/permissionless/bindings/router/routing-manager.d.ts +502 -0
  199. package/dist/types/permissionless/bindings/treasury-splitter.d.ts +21 -0
  200. package/dist/types/permissionless/bindings/types.d.ts +65 -0
  201. package/dist/types/permissionless/chains/archive-transport.d.ts +49 -0
  202. package/dist/types/permissionless/core/auditor.d.ts +7 -0
  203. package/dist/types/permissionless/core/bytecode.d.ts +46 -0
  204. package/dist/types/permissionless/core/index.d.ts +6 -0
  205. package/dist/types/permissionless/core/pricefeed-builder.d.ts +59 -0
  206. package/dist/types/permissionless/core/pricefeed.d.ts +10 -0
  207. package/dist/types/permissionless/core/proposal.d.ts +33 -0
  208. package/dist/types/permissionless/core/raw-tx.d.ts +4 -0
  209. package/dist/types/permissionless/deployment/addresses.d.ts +7 -0
  210. package/dist/types/permissionless/deployment/mainnet.d.ts +10 -0
  211. package/dist/types/permissionless/index.d.ts +6 -0
  212. package/dist/types/permissionless/plugins/index.d.ts +3 -0
  213. package/dist/types/permissionless/plugins/irm/constructor-params-abi.d.ts +63 -0
  214. package/dist/types/permissionless/plugins/loss-policies/constructor-params-abi.d.ts +48 -0
  215. package/dist/types/permissionless/plugins/rate-keepers/constructor-params-abi.d.ts +55 -0
  216. package/dist/types/permissionless/utils/abi-decoder.d.ts +13 -0
  217. package/dist/types/permissionless/utils/abi-encoder.d.ts +7 -0
  218. package/dist/types/permissionless/utils/block-utils.d.ts +8 -0
  219. package/dist/types/permissionless/utils/create2.d.ts +17 -0
  220. package/dist/types/permissionless/utils/format.d.ts +7 -0
  221. package/dist/types/permissionless/utils/governance/batch.d.ts +17 -0
  222. package/dist/types/permissionless/utils/governance/index.d.ts +3 -0
  223. package/dist/types/permissionless/utils/governance/timelock-txs.d.ts +2 -0
  224. package/dist/types/permissionless/utils/governance/types.d.ts +16 -0
  225. package/dist/types/permissionless/utils/index.d.ts +9 -0
  226. package/dist/types/permissionless/utils/literals.d.ts +7 -0
  227. package/dist/types/permissionless/utils/price-update/get-price-feeds.d.ts +8 -0
  228. package/dist/types/permissionless/utils/price-update/get-price-update-tx.d.ts +9 -0
  229. package/dist/types/permissionless/utils/price-update/get-prices.d.ts +6 -0
  230. package/dist/types/permissionless/utils/price-update/get-updatable-feeds.d.ts +8 -0
  231. package/dist/types/permissionless/utils/price-update/index.d.ts +4 -0
  232. package/dist/types/permissionless/utils/signature.d.ts +2 -0
  233. package/package.json +11 -1
@@ -0,0 +1,526 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var bytecode_repository_exports = {};
20
+ __export(bytecode_repository_exports, {
21
+ BytecodeRepositoryContract: () => BytecodeRepositoryContract
22
+ });
23
+ module.exports = __toCommonJS(bytecode_repository_exports);
24
+ var import_viem = require("viem");
25
+ var import_iBytecodeRepository = require("../../abi/310/iBytecodeRepository.js");
26
+ var import_utils = require("../utils");
27
+ var import_literals = require("../utils/literals");
28
+ var import_base_contract = require("./base-contract");
29
+ const abi = import_iBytecodeRepository.iBytecodeRepositoryAbi;
30
+ class BytecodeRepositoryContract extends import_base_contract.BaseContract {
31
+ constructor(address, client) {
32
+ super(abi, address, client, "BytecodeRepository");
33
+ }
34
+ async getBytecodeByHash(hash) {
35
+ return await this.contract.read.getBytecode([hash]);
36
+ }
37
+ async getAuditReports(hash) {
38
+ return await this.contract.read.getAuditReports([hash]);
39
+ }
40
+ async getPublicDomains() {
41
+ return await this.contract.read.getPublicDomains();
42
+ }
43
+ async isBytecodeUploaded(hash) {
44
+ return await this.contract.read.isBytecodeUploaded([hash]);
45
+ }
46
+ async isBytecodeAudited(hash) {
47
+ return await this.contract.read.isBytecodeAudited([hash]);
48
+ }
49
+ async getLatestVersion(type_) {
50
+ return await this.contract.read.getLatestVersion([
51
+ (0, import_viem.stringToHex)(type_, { size: 32 })
52
+ ]);
53
+ }
54
+ async isPublicDomain(domain) {
55
+ return await this.contract.read.isPublicDomain([
56
+ (0, import_viem.stringToHex)(domain, { size: 32 })
57
+ ]);
58
+ }
59
+ // // Write functions
60
+ // async uploadBytecode(bytecode: Bytecode) {
61
+ // return await this.contract.write.uploadBytecode([bytecode]);
62
+ // }
63
+ async getUploadBytecodeEvents(fromBlock, toBlock, chunkSize) {
64
+ const events = await this.getEvents(
65
+ "UploadBytecode",
66
+ fromBlock,
67
+ toBlock,
68
+ void 0,
69
+ chunkSize
70
+ );
71
+ return events.map((e) => ({
72
+ bytecodeHash: e.args.bytecodeHash,
73
+ author: e.args.author,
74
+ version: Number(e.args.version),
75
+ contractType: e.args.contractType,
76
+ source: e.args.source,
77
+ initCode: "0x",
78
+ size: 0,
79
+ transactionHash: e.transactionHash,
80
+ blockNumber: Number(e.blockNumber)
81
+ }));
82
+ }
83
+ async getAddAuditorEvents(fromBlock, toBlock) {
84
+ const events = await this.getEvents("AddAuditor", fromBlock, toBlock);
85
+ const result = [];
86
+ for (const e of events) {
87
+ result.push({
88
+ address: e.args.auditor,
89
+ name: e.args.name,
90
+ removed: false,
91
+ removedAt: null,
92
+ addedAt: Number(e.blockNumber)
93
+ });
94
+ }
95
+ return result;
96
+ }
97
+ async getDeployContractEvents(fromBlock, toBlock) {
98
+ const events = await this.getEvents("DeployContract", fromBlock, toBlock);
99
+ const result = [];
100
+ for (const e of events) {
101
+ result.push({
102
+ address: e.args.contractAddress,
103
+ chainId: 1,
104
+ // BigInt(this.client.chain!.id!),
105
+ txHash: e.transactionHash,
106
+ blockNumber: Number(e.blockNumber),
107
+ bytecodeHash: e.args.bytecodeHash
108
+ });
109
+ }
110
+ return result;
111
+ }
112
+ async getAuditBytecodeEvents(fromBlock, toBlock) {
113
+ try {
114
+ const events = await this.getEvents("AuditBytecode", fromBlock, toBlock);
115
+ const result = [];
116
+ for (const e of events) {
117
+ result.push({
118
+ bytecodeHash: e.args.bytecodeHash,
119
+ auditor: e.args.auditor,
120
+ reportUrl: e.args.reportUrl,
121
+ signature: e.args.signature,
122
+ transactionHash: e.transactionHash,
123
+ blockNumber: Number(e.blockNumber)
124
+ });
125
+ }
126
+ return result;
127
+ } catch (e) {
128
+ if (e instanceof Error && e.message.includes("query exceeds max block")) {
129
+ const middle = (fromBlock + toBlock) / 2n;
130
+ return [
131
+ ...await this.getAuditBytecodeEvents(fromBlock, middle),
132
+ ...await this.getAuditBytecodeEvents(middle + 1n, toBlock)
133
+ ];
134
+ }
135
+ throw e;
136
+ }
137
+ }
138
+ async getAllowPublicContractEvents(fromBlock, toBlock) {
139
+ const code = await this.client.getCode({ address: this.address });
140
+ if (code === void 0 || code === "0x") {
141
+ return [];
142
+ }
143
+ const publicDomains = await this.contract.read.getPublicDomains();
144
+ const publicDomainsString = publicDomains.map(
145
+ (domain) => (0, import_viem.hexToString)(domain, { size: 32 })
146
+ );
147
+ const events = await this.getAllowContractEvents(fromBlock, toBlock);
148
+ return events.filter((e) => {
149
+ const contractTypeString = (0, import_viem.hexToString)(e.contractType, { size: 32 });
150
+ return publicDomainsString.includes(
151
+ this.extractDomain(contractTypeString)
152
+ );
153
+ });
154
+ }
155
+ async getAllowContractEvents(fromBlock, toBlock) {
156
+ try {
157
+ const events = await this.getEvents("AllowContract", fromBlock, toBlock);
158
+ const result = [];
159
+ for (const e of events) {
160
+ result.push({
161
+ bytecodeHash: e.args.bytecodeHash,
162
+ contractType: e.args.contractType,
163
+ version: e.args.version,
164
+ transactionHash: e.transactionHash,
165
+ blockNumber: Number(e.blockNumber)
166
+ });
167
+ }
168
+ return result;
169
+ } catch (e) {
170
+ if (e instanceof Error && e.message.includes("query exceeds max block")) {
171
+ const middle = (fromBlock + toBlock) / 2n;
172
+ return [
173
+ ...await this.getAllowContractEvents(fromBlock, middle),
174
+ ...await this.getAllowContractEvents(middle + 1n, toBlock)
175
+ ];
176
+ }
177
+ throw e;
178
+ }
179
+ }
180
+ async getUploadUpdates(fromBlock, toBlock) {
181
+ const events = await this.getUploadBytecodeEvents(fromBlock, toBlock);
182
+ const initCodes = await Promise.all(
183
+ events.map((event) => this.getBytecodeByHash(event.bytecodeHash))
184
+ );
185
+ events.forEach((event, index) => {
186
+ event.initCode = initCodes[index].initCode;
187
+ event.size = initCodes[index].initCode.length;
188
+ });
189
+ return events;
190
+ }
191
+ parseFunctionParams(params) {
192
+ switch (params.functionName) {
193
+ case "allowSystemContract": {
194
+ const [bytecodeHash] = params.args;
195
+ return this.wrapParseCall(params, {
196
+ bytecodeHash
197
+ });
198
+ }
199
+ case "addAuditor": {
200
+ const [auditor, name] = params.args;
201
+ return this.wrapParseCall(params, {
202
+ auditor,
203
+ name
204
+ });
205
+ }
206
+ case "removeAuditor": {
207
+ const [auditor] = params.args;
208
+ return this.wrapParseCall(params, {
209
+ auditor
210
+ });
211
+ }
212
+ case "addPublicDomain": {
213
+ const [domain] = params.args;
214
+ return this.wrapParseCall(params, {
215
+ domain: (0, import_viem.hexToString)(domain, { size: 32 })
216
+ });
217
+ }
218
+ case "removePublicContractType": {
219
+ const [contractType] = params.args;
220
+ return this.wrapParseCall(params, {
221
+ contractType: (0, import_viem.hexToString)(contractType, { size: 32 })
222
+ });
223
+ }
224
+ case "forbidInitCode": {
225
+ const [bytecodeHash] = params.args;
226
+ return this.wrapParseCall(params, {
227
+ bytecodeHash
228
+ });
229
+ }
230
+ case "setTokenSpecificPostfix": {
231
+ const [token, postfix] = params.args;
232
+ return this.wrapParseCall(params, {
233
+ token,
234
+ postfix: (0, import_viem.hexToString)(postfix, { size: 32 })
235
+ });
236
+ }
237
+ case "uploadBytecode": {
238
+ const [uploadData] = params.args;
239
+ return this.wrapParseCall(params, {
240
+ contractType: (0, import_viem.hexToString)(uploadData.contractType, { size: 32 }),
241
+ version: uploadData.version.toString(),
242
+ initCode: uploadData.initCode,
243
+ author: uploadData.author,
244
+ source: uploadData.source,
245
+ authorSignature: uploadData.authorSignature
246
+ });
247
+ }
248
+ case "submitAuditReport": {
249
+ const [bytecodeHash, { auditor, reportUrl, signature }] = params.args;
250
+ return this.wrapParseCall(params, {
251
+ bytecodeHash,
252
+ auditor,
253
+ reportUrl,
254
+ signature
255
+ });
256
+ }
257
+ // TODO: add all functions here!
258
+ // case "deployContract": {
259
+ // const [contractType, version, encodedParams, salt, owner] = params.args;
260
+ // return this.wrapParseCall(params, {
261
+ // contractType: hexToString(contractType, { size: 32 }),
262
+ // version: version.toString(),
263
+ // encodedParams,
264
+ // salt,
265
+ // owner,
266
+ // });
267
+ // }
268
+ // case "setContractTypeVersion": {
269
+ // const [contractType, version] = params.args;
270
+ // return this.wrapParseCall(params, {
271
+ // contractType: hexToString(contractType, { size: 32 }),
272
+ // version: version.toString(),
273
+ // });
274
+ // }
275
+ default:
276
+ return void 0;
277
+ }
278
+ }
279
+ async signBytecodeHash(bytecodeHash, auditor, reportUrl, signature, sponsor) {
280
+ return await this.contract.write.submitAuditReport(
281
+ [bytecodeHash, { auditor, reportUrl, signature }],
282
+ {
283
+ account: sponsor.account,
284
+ chain: sponsor.chain
285
+ }
286
+ );
287
+ }
288
+ signBytecodeHashTx(bytecodeHash, auditor, reportUrl, signature) {
289
+ const normalizedSignature = (0, import_utils.normalizeSignature)(signature);
290
+ return this.createRawTx({
291
+ functionName: "submitAuditReport",
292
+ args: [
293
+ bytecodeHash,
294
+ { auditor, reportUrl, signature: normalizedSignature }
295
+ ]
296
+ });
297
+ }
298
+ async recoverAuditorSignature(bytecodeHash, auditor, reportUrl, signature) {
299
+ const digest = this.computeEIP712AuditorDigest(
300
+ bytecodeHash,
301
+ auditor,
302
+ reportUrl
303
+ );
304
+ return await (0, import_viem.recoverTypedDataAddress)({
305
+ ...digest,
306
+ signature
307
+ });
308
+ }
309
+ async recoverAuthorSignature(contractType, version, initCode, author, source, signature) {
310
+ const digest = this.computeEIP712AuthorDigest({
311
+ contractType: (0, import_viem.stringToHex)(contractType, { size: 32 }),
312
+ version: BigInt(version),
313
+ initCode,
314
+ author,
315
+ source
316
+ });
317
+ return await (0, import_viem.recoverTypedDataAddress)({
318
+ ...digest,
319
+ signature
320
+ });
321
+ }
322
+ // computeEIP712AuditorDigest(bytecodeHash: Hex, reportUrl: string) {
323
+ // return {
324
+ // domain: this.getEIP712Domain(),
325
+ // types: {
326
+ // SignBytecodeHash: [
327
+ // { name: "bytecodeHash", type: "bytes32" },
328
+ // { name: "reportUrl", type: "string" },
329
+ // ],
330
+ // },
331
+ // primaryType: "SignBytecodeHash",
332
+ // message: {
333
+ // bytecodeHash,
334
+ // reportUrl,
335
+ // },
336
+ // } as const;
337
+ // }
338
+ computeEIP712AuditorDigest(bytecodeHash, auditor, reportUrl) {
339
+ return {
340
+ domain: this.getEIP712Domain(),
341
+ types: {
342
+ AuditReport: [
343
+ { name: "bytecodeHash", type: "bytes32" },
344
+ { name: "auditor", type: "address" },
345
+ { name: "reportUrl", type: "string" }
346
+ ]
347
+ },
348
+ primaryType: "AuditReport",
349
+ message: {
350
+ bytecodeHash,
351
+ auditor,
352
+ reportUrl
353
+ }
354
+ };
355
+ }
356
+ computeEIP712AuthorDigest(args) {
357
+ return {
358
+ domain: this.getEIP712Domain(),
359
+ ...BytecodeRepositoryContract.getBytecodeHashTypes(),
360
+ message: args
361
+ };
362
+ }
363
+ getEIP712Domain() {
364
+ return {
365
+ name: import_literals.BYTECODE_REPOSITORY,
366
+ version: "310",
367
+ chainId: 1,
368
+ verifyingContract: this.address
369
+ };
370
+ }
371
+ computeBytecodeHash(args) {
372
+ return (0, import_viem.hashStruct)({
373
+ data: args,
374
+ ...BytecodeRepositoryContract.getBytecodeHashTypes()
375
+ });
376
+ }
377
+ static getBytecodeHashTypes() {
378
+ return {
379
+ primaryType: "Bytecode",
380
+ types: {
381
+ Bytecode: [
382
+ { name: "contractType", type: "bytes32" },
383
+ { name: "version", type: "uint256" },
384
+ { name: "initCode", type: "bytes" },
385
+ { name: "author", type: "address" },
386
+ { name: "source", type: "string" }
387
+ ]
388
+ }
389
+ };
390
+ }
391
+ async computeBytecodeHashContract(args) {
392
+ return await this.contract.read.computeBytecodeHash([
393
+ { ...args, authorSignature: "0x" }
394
+ ]);
395
+ }
396
+ async getAuditors() {
397
+ return [...await this.contract.read.getAuditors()];
398
+ }
399
+ isAuditor(auditor) {
400
+ return this.contract.read.isAuditor([auditor]);
401
+ }
402
+ extractDeployDataEvent(logs) {
403
+ const events = (0, import_viem.parseEventLogs)({
404
+ logs: logs.filter(
405
+ (log) => log.address.toLowerCase() === this.address.toLowerCase()
406
+ ),
407
+ abi
408
+ });
409
+ const deployEvents = events.filter(
410
+ (event) => event.eventName === "DeployContract"
411
+ );
412
+ if (deployEvents.length !== 1) {
413
+ throw new Error("Invalid deploy event");
414
+ }
415
+ return {
416
+ address: deployEvents[0].args.contractAddress,
417
+ bytecodeHash: deployEvents[0].args.bytecodeHash,
418
+ contractType: deployEvents[0].args.contractType,
419
+ version: Number(deployEvents[0].args.version)
420
+ };
421
+ }
422
+ async computeAddress(args) {
423
+ return await this.contract.read.computeAddress([
424
+ (0, import_viem.stringToHex)(args.contractType, { size: 32 }),
425
+ BigInt(args.version),
426
+ args.encodedParams,
427
+ args.salt,
428
+ args.owner
429
+ ]);
430
+ }
431
+ async isAlreadyDeployedAddress(args) {
432
+ const address = await this.computeAddress(args);
433
+ const code = await this.client.getCode({ address });
434
+ return [code !== void 0, address];
435
+ }
436
+ async isAlreadyDeployed(args) {
437
+ return (await this.isAlreadyDeployedAddress(args))[0];
438
+ }
439
+ async uploadBytecode(uploadByteCode, sponsor) {
440
+ const normalizedSignature = (0, import_utils.normalizeSignature)(
441
+ uploadByteCode.authorSignature
442
+ );
443
+ return await this.contract.write.uploadBytecode(
444
+ [{ ...uploadByteCode, authorSignature: normalizedSignature }],
445
+ {
446
+ account: sponsor.account,
447
+ chain: sponsor.chain
448
+ // gas: 35_000_000n,
449
+ }
450
+ );
451
+ }
452
+ addAuditorTx(args) {
453
+ const { name, address } = args;
454
+ return this.createRawTx({
455
+ functionName: "addAuditor",
456
+ args: [address, name],
457
+ description: `BytecodeRepository.addAuditor(${name})`
458
+ });
459
+ }
460
+ addPublicDomainTx(args) {
461
+ const { domain } = args;
462
+ const domainHex = (0, import_viem.stringToHex)(domain, { size: 32 });
463
+ return this.createRawTx({
464
+ functionName: "addPublicDomain",
465
+ args: [domainHex],
466
+ description: `BytecodeRepository.addPublicDomain(${domain})`
467
+ });
468
+ }
469
+ allowPublicContractTx(args) {
470
+ const { bytecodeHash } = args;
471
+ return this.createRawTx({
472
+ functionName: "allowPublicContract",
473
+ args: [bytecodeHash],
474
+ description: `BytecodeRepository.allowPublicContract(${bytecodeHash})`
475
+ });
476
+ }
477
+ allowSystemContractTx(args) {
478
+ const { bytecodeHash } = args;
479
+ return this.createRawTx({
480
+ functionName: "allowSystemContract",
481
+ args: [bytecodeHash],
482
+ description: `BytecodeRepository.allowSystemContract(${bytecodeHash})`
483
+ });
484
+ }
485
+ setTokenSpecificPostfixTx(args) {
486
+ const { token, postfix } = args;
487
+ const postfixHex = (0, import_viem.stringToHex)(postfix, { size: 32 });
488
+ return this.createRawTx({
489
+ functionName: "setTokenSpecificPostfix",
490
+ args: [token, postfixHex],
491
+ description: `BytecodeRepository.setTokenSpecificPostfix(${token}, ${postfix})`
492
+ });
493
+ }
494
+ uploadBytecodeRawTx(uploadByteCode) {
495
+ return this.createRawTx({
496
+ functionName: "uploadBytecode",
497
+ args: [uploadByteCode]
498
+ });
499
+ }
500
+ extractDomain(contractType) {
501
+ const separatorIndex = contractType.indexOf("::");
502
+ if (separatorIndex === -1) return contractType;
503
+ return contractType.slice(0, separatorIndex);
504
+ }
505
+ async allowPublicContract(bytecodeHash, sponsor) {
506
+ return await this.contract.write.allowPublicContract([bytecodeHash], {
507
+ account: sponsor.account,
508
+ chain: sponsor.chain
509
+ });
510
+ }
511
+ deployTx(args) {
512
+ return this.createRawTx({
513
+ functionName: "deploy",
514
+ args: [
515
+ (0, import_viem.stringToHex)(args.contractType, { size: 32 }),
516
+ args.version,
517
+ args.encodedParams,
518
+ args.salt
519
+ ]
520
+ });
521
+ }
522
+ }
523
+ // Annotate the CommonJS export names for ESM import in node:
524
+ 0 && (module.exports = {
525
+ BytecodeRepositoryContract
526
+ });
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __copyProps = (to, from, except, desc) => {
7
+ if (from && typeof from === "object" || typeof from === "function") {
8
+ for (let key of __getOwnPropNames(from))
9
+ if (!__hasOwnProp.call(to, key) && key !== except)
10
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
+ }
12
+ return to;
13
+ };
14
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
15
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
16
+ var compressors_exports = {};
17
+ module.exports = __toCommonJS(compressors_exports);
18
+ __reExport(compressors_exports, require("./token-compressor"), module.exports);
19
+ __reExport(compressors_exports, require("./withdrawal-compressor"), module.exports);
20
+ // Annotate the CommonJS export names for ESM import in node:
21
+ 0 && (module.exports = {
22
+ ...require("./token-compressor"),
23
+ ...require("./withdrawal-compressor")
24
+ });
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var token_compressor_exports = {};
20
+ __export(token_compressor_exports, {
21
+ TokenCompressorContract: () => TokenCompressorContract
22
+ });
23
+ module.exports = __toCommonJS(token_compressor_exports);
24
+ var import_viem = require("viem");
25
+ var import_tokenCompressor = require("../../../abi/compressors/tokenCompressor.js");
26
+ var import_base_contract = require("../base-contract");
27
+ const abi = import_tokenCompressor.tokenCompressorAbi;
28
+ class TokenCompressorContract extends import_base_contract.BaseContract {
29
+ constructor(address, client) {
30
+ super(abi, address, client, "TokenCompressor");
31
+ }
32
+ async getTokenInfo(token) {
33
+ const result = await this.contract.read.getTokenInfo([token]);
34
+ return result;
35
+ }
36
+ // @dev workaround for mellow withdrawal phantom token symbol
37
+ async getMellowWithdrawalPhantomTokenInfo(tokens) {
38
+ const abi2 = (0, import_viem.parseAbi)([
39
+ "function multiVault() public view returns (address)"
40
+ ]);
41
+ const contracts = tokens.map((token) => ({
42
+ address: token,
43
+ abi: abi2,
44
+ functionName: "multiVault",
45
+ args: []
46
+ }));
47
+ const results = await this.client.multicall({
48
+ contracts
49
+ });
50
+ const multivaultToToken = /* @__PURE__ */ new Map();
51
+ const multivaults = [];
52
+ for (let i = 0; i < results.length; i++) {
53
+ if (results[i].status === "success") {
54
+ const token = tokens[i];
55
+ const multivault = results[i].result;
56
+ multivaultToToken.set(multivault, token);
57
+ multivaults.push(multivault);
58
+ }
59
+ }
60
+ const resultsSymbols = await this.client.multicall({
61
+ contracts: multivaults.map((multiVault) => ({
62
+ address: multiVault,
63
+ abi: import_viem.erc20Abi,
64
+ functionName: "symbol",
65
+ args: []
66
+ })),
67
+ allowFailure: true
68
+ });
69
+ const tokenToSymbol = /* @__PURE__ */ new Map();
70
+ for (let i = 0; i < resultsSymbols.length; i++) {
71
+ if (resultsSymbols[i].status === "success") {
72
+ const multivault = multivaults[i];
73
+ const token = multivaultToToken.get(multivault);
74
+ if (token) {
75
+ tokenToSymbol.set(token, resultsSymbols[i].result);
76
+ }
77
+ }
78
+ }
79
+ return Object.fromEntries(tokenToSymbol);
80
+ }
81
+ async getTokensInfo(tokens) {
82
+ const mellowPTInfo = await this.getMellowWithdrawalPhantomTokenInfo(tokens);
83
+ const results = await this.client.multicall({
84
+ contracts: tokens.map((token) => ({
85
+ address: this.address,
86
+ abi,
87
+ functionName: "getTokenInfo",
88
+ args: [token]
89
+ }))
90
+ });
91
+ const tokenInfos = results.map((result, index) => {
92
+ if (result.status === "failure") {
93
+ throw new Error(`Failed to get token info: ${result.error}`);
94
+ }
95
+ const token = tokens[index];
96
+ const multivaultSymbol = mellowPTInfo[token];
97
+ const tokenInfo = result.result;
98
+ const postfix = multivaultSymbol ? `[${multivaultSymbol}]` : "";
99
+ return {
100
+ ...tokenInfo,
101
+ symbol: `${tokenInfo.symbol} ${postfix}`
102
+ };
103
+ });
104
+ return tokenInfos;
105
+ }
106
+ }
107
+ // Annotate the CommonJS export names for ESM import in node:
108
+ 0 && (module.exports = {
109
+ TokenCompressorContract
110
+ });