@gearbox-protocol/sdk 9.14.1 → 9.15.1

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 (258) hide show
  1. package/dist/cjs/abi/package.json +1 -0
  2. package/dist/cjs/dev/mint/factory.js +1 -1
  3. package/dist/cjs/permissionless/bindings/address-provider.js +51 -0
  4. package/dist/cjs/permissionless/bindings/base-contract.js +173 -0
  5. package/dist/cjs/permissionless/bindings/bytecode-repository.js +526 -0
  6. package/dist/cjs/permissionless/bindings/compressors/index.js +24 -0
  7. package/dist/cjs/permissionless/bindings/compressors/token-compressor.js +110 -0
  8. package/dist/cjs/permissionless/bindings/compressors/withdrawal-compressor.js +60 -0
  9. package/dist/cjs/permissionless/bindings/cross-chain-multisig.js +355 -0
  10. package/dist/cjs/permissionless/bindings/factory/abstract-factory.js +52 -0
  11. package/dist/cjs/permissionless/bindings/factory/credit-factory.js +197 -0
  12. package/dist/cjs/permissionless/bindings/factory/pool-factory.js +69 -0
  13. package/dist/cjs/permissionless/bindings/factory/price-oracle-factory.js +47 -0
  14. package/dist/cjs/permissionless/bindings/governance/batches-chain.js +41 -0
  15. package/dist/cjs/permissionless/bindings/governance/governor.js +243 -0
  16. package/dist/cjs/permissionless/bindings/governance/index.js +26 -0
  17. package/dist/cjs/permissionless/bindings/governance/timelock.js +104 -0
  18. package/dist/cjs/permissionless/bindings/governance/types.js +16 -0
  19. package/dist/cjs/permissionless/bindings/index.js +48 -0
  20. package/dist/cjs/permissionless/bindings/instance-manager.js +244 -0
  21. package/dist/cjs/permissionless/bindings/market-configurator-factory.js +75 -0
  22. package/dist/cjs/permissionless/bindings/market-configurator.js +771 -0
  23. package/dist/cjs/permissionless/bindings/price-feed-store.js +395 -0
  24. package/dist/cjs/permissionless/bindings/pricefeeds/balancer-stable.js +63 -0
  25. package/dist/cjs/permissionless/bindings/pricefeeds/balancer-weighted.js +63 -0
  26. package/dist/cjs/permissionless/bindings/pricefeeds/bounded.js +47 -0
  27. package/dist/cjs/permissionless/bindings/pricefeeds/composite.js +43 -0
  28. package/dist/cjs/permissionless/bindings/pricefeeds/constant.js +42 -0
  29. package/dist/cjs/permissionless/bindings/pricefeeds/curve-crypto.js +67 -0
  30. package/dist/cjs/permissionless/bindings/pricefeeds/curve-stable.js +67 -0
  31. package/dist/cjs/permissionless/bindings/pricefeeds/curve-twap.js +70 -0
  32. package/dist/cjs/permissionless/bindings/pricefeeds/curve-usd.js +50 -0
  33. package/dist/cjs/permissionless/bindings/pricefeeds/erc4626.js +72 -0
  34. package/dist/cjs/permissionless/bindings/pricefeeds/external.js +38 -0
  35. package/dist/cjs/permissionless/bindings/pricefeeds/index.js +63 -0
  36. package/dist/cjs/permissionless/bindings/pricefeeds/kodiak.js +50 -0
  37. package/dist/cjs/permissionless/bindings/pricefeeds/mellow-lrt.js +122 -0
  38. package/dist/cjs/permissionless/bindings/pricefeeds/pendle-pt-twap.js +51 -0
  39. package/dist/cjs/permissionless/bindings/pricefeeds/pyth.js +65 -0
  40. package/dist/cjs/permissionless/bindings/pricefeeds/redstone.js +81 -0
  41. package/dist/cjs/permissionless/bindings/pricefeeds/wsteth.js +63 -0
  42. package/dist/cjs/permissionless/bindings/pricefeeds/zero.js +33 -0
  43. package/dist/cjs/permissionless/bindings/router/index.js +22 -0
  44. package/dist/cjs/permissionless/bindings/router/routing-manager.js +58 -0
  45. package/dist/cjs/permissionless/bindings/treasury-splitter.js +60 -0
  46. package/dist/cjs/permissionless/bindings/types.js +16 -0
  47. package/dist/cjs/permissionless/chains/archive-transport.js +274 -0
  48. package/dist/cjs/permissionless/core/auditor.js +16 -0
  49. package/dist/cjs/permissionless/core/bytecode.js +16 -0
  50. package/dist/cjs/permissionless/core/index.js +32 -0
  51. package/dist/cjs/permissionless/core/pricefeed-builder.js +16 -0
  52. package/dist/cjs/permissionless/core/pricefeed.js +16 -0
  53. package/dist/cjs/permissionless/core/proposal.js +16 -0
  54. package/dist/cjs/permissionless/core/raw-tx.js +38 -0
  55. package/dist/cjs/permissionless/deployment/addresses.js +35 -0
  56. package/dist/cjs/permissionless/deployment/mainnet.js +54 -0
  57. package/dist/cjs/permissionless/index.js +32 -0
  58. package/dist/cjs/permissionless/package.json +1 -0
  59. package/dist/cjs/permissionless/plugins/index.js +40 -0
  60. package/dist/cjs/permissionless/plugins/irm/constructor-params-abi.js +81 -0
  61. package/dist/cjs/permissionless/plugins/loss-policies/constructor-params-abi.js +79 -0
  62. package/dist/cjs/permissionless/plugins/rate-keepers/constructor-params-abi.js +89 -0
  63. package/dist/cjs/permissionless/utils/abi-decoder.js +72 -0
  64. package/dist/cjs/permissionless/utils/abi-encoder.js +89 -0
  65. package/dist/cjs/permissionless/utils/block-utils.js +55 -0
  66. package/dist/cjs/permissionless/utils/create2.js +113 -0
  67. package/dist/cjs/permissionless/utils/format.js +97 -0
  68. package/dist/cjs/permissionless/utils/governance/batch.js +114 -0
  69. package/dist/cjs/permissionless/utils/governance/index.js +26 -0
  70. package/dist/cjs/permissionless/utils/governance/timelock-txs.js +44 -0
  71. package/dist/cjs/permissionless/utils/governance/types.js +16 -0
  72. package/dist/cjs/permissionless/utils/index.js +38 -0
  73. package/dist/cjs/permissionless/utils/literals.js +46 -0
  74. package/dist/cjs/permissionless/utils/price-update/get-price-feeds.js +91 -0
  75. package/dist/cjs/permissionless/utils/price-update/get-price-update-tx.js +84 -0
  76. package/dist/cjs/permissionless/utils/price-update/get-prices.js +123 -0
  77. package/dist/cjs/permissionless/utils/price-update/get-updatable-feeds.js +52 -0
  78. package/dist/cjs/permissionless/utils/price-update/index.js +28 -0
  79. package/dist/cjs/permissionless/utils/signature.js +35 -0
  80. package/dist/cjs/plugins/adapters/AdaptersPlugin.js +1 -1
  81. package/dist/cjs/plugins/adapters/abi/actionAbi.js +1 -1
  82. package/dist/cjs/plugins/adapters/abi/conctructorAbi.js +2 -2
  83. package/dist/cjs/plugins/adapters/abi/utils.js +6 -6
  84. package/dist/cjs/plugins/adapters/index.js +4 -4
  85. package/dist/cjs/sdk/sdk-gov-legacy/tokens/curveLP.js +1 -1
  86. package/dist/cjs/sdk/sdk-legacy/tokens/tokenData.js +1 -1
  87. package/dist/esm/abi/package.json +1 -0
  88. package/dist/esm/dev/mint/factory.js +1 -1
  89. package/dist/esm/permissionless/bindings/address-provider.js +27 -0
  90. package/dist/esm/permissionless/bindings/base-contract.js +151 -0
  91. package/dist/esm/permissionless/bindings/bytecode-repository.js +508 -0
  92. package/dist/esm/permissionless/bindings/compressors/index.js +2 -0
  93. package/dist/esm/permissionless/bindings/compressors/token-compressor.js +89 -0
  94. package/dist/esm/permissionless/bindings/compressors/withdrawal-compressor.js +38 -0
  95. package/dist/esm/permissionless/bindings/cross-chain-multisig.js +336 -0
  96. package/dist/esm/permissionless/bindings/factory/abstract-factory.js +28 -0
  97. package/dist/esm/permissionless/bindings/factory/credit-factory.js +177 -0
  98. package/dist/esm/permissionless/bindings/factory/pool-factory.js +45 -0
  99. package/dist/esm/permissionless/bindings/factory/price-oracle-factory.js +23 -0
  100. package/dist/esm/permissionless/bindings/governance/batches-chain.js +17 -0
  101. package/dist/esm/permissionless/bindings/governance/governor.js +224 -0
  102. package/dist/esm/permissionless/bindings/governance/index.js +3 -0
  103. package/dist/esm/permissionless/bindings/governance/timelock.js +80 -0
  104. package/dist/esm/permissionless/bindings/governance/types.js +0 -0
  105. package/dist/esm/permissionless/bindings/index.js +14 -0
  106. package/dist/esm/permissionless/bindings/instance-manager.js +223 -0
  107. package/dist/esm/permissionless/bindings/market-configurator-factory.js +51 -0
  108. package/dist/esm/permissionless/bindings/market-configurator.js +765 -0
  109. package/dist/esm/permissionless/bindings/price-feed-store.js +376 -0
  110. package/dist/esm/permissionless/bindings/pricefeeds/balancer-stable.js +39 -0
  111. package/dist/esm/permissionless/bindings/pricefeeds/balancer-weighted.js +39 -0
  112. package/dist/esm/permissionless/bindings/pricefeeds/bounded.js +23 -0
  113. package/dist/esm/permissionless/bindings/pricefeeds/composite.js +19 -0
  114. package/dist/esm/permissionless/bindings/pricefeeds/constant.js +18 -0
  115. package/dist/esm/permissionless/bindings/pricefeeds/curve-crypto.js +43 -0
  116. package/dist/esm/permissionless/bindings/pricefeeds/curve-stable.js +43 -0
  117. package/dist/esm/permissionless/bindings/pricefeeds/curve-twap.js +46 -0
  118. package/dist/esm/permissionless/bindings/pricefeeds/curve-usd.js +26 -0
  119. package/dist/esm/permissionless/bindings/pricefeeds/erc4626.js +48 -0
  120. package/dist/esm/permissionless/bindings/pricefeeds/external.js +14 -0
  121. package/dist/esm/permissionless/bindings/pricefeeds/index.js +39 -0
  122. package/dist/esm/permissionless/bindings/pricefeeds/kodiak.js +26 -0
  123. package/dist/esm/permissionless/bindings/pricefeeds/mellow-lrt.js +98 -0
  124. package/dist/esm/permissionless/bindings/pricefeeds/pendle-pt-twap.js +27 -0
  125. package/dist/esm/permissionless/bindings/pricefeeds/pyth.js +41 -0
  126. package/dist/esm/permissionless/bindings/pricefeeds/redstone.js +57 -0
  127. package/dist/esm/permissionless/bindings/pricefeeds/wsteth.js +39 -0
  128. package/dist/esm/permissionless/bindings/pricefeeds/zero.js +9 -0
  129. package/dist/esm/permissionless/bindings/router/index.js +1 -0
  130. package/dist/esm/permissionless/bindings/router/routing-manager.js +36 -0
  131. package/dist/esm/permissionless/bindings/treasury-splitter.js +36 -0
  132. package/dist/esm/permissionless/bindings/types.js +0 -0
  133. package/dist/esm/permissionless/chains/archive-transport.js +250 -0
  134. package/dist/esm/permissionless/core/auditor.js +0 -0
  135. package/dist/esm/permissionless/core/bytecode.js +0 -0
  136. package/dist/esm/permissionless/core/index.js +6 -0
  137. package/dist/esm/permissionless/core/pricefeed-builder.js +0 -0
  138. package/dist/esm/permissionless/core/pricefeed.js +0 -0
  139. package/dist/esm/permissionless/core/proposal.js +0 -0
  140. package/dist/esm/permissionless/core/raw-tx.js +14 -0
  141. package/dist/esm/permissionless/deployment/addresses.js +11 -0
  142. package/dist/esm/permissionless/deployment/mainnet.js +27 -0
  143. package/dist/esm/permissionless/index.js +6 -0
  144. package/dist/esm/permissionless/package.json +1 -0
  145. package/dist/esm/permissionless/plugins/index.js +20 -0
  146. package/dist/esm/permissionless/plugins/irm/constructor-params-abi.js +52 -0
  147. package/dist/esm/permissionless/plugins/loss-policies/constructor-params-abi.js +50 -0
  148. package/dist/esm/permissionless/plugins/rate-keepers/constructor-params-abi.js +59 -0
  149. package/dist/esm/permissionless/utils/abi-decoder.js +50 -0
  150. package/dist/esm/permissionless/utils/abi-encoder.js +65 -0
  151. package/dist/esm/permissionless/utils/block-utils.js +31 -0
  152. package/dist/esm/permissionless/utils/create2.js +85 -0
  153. package/dist/esm/permissionless/utils/format.js +67 -0
  154. package/dist/esm/permissionless/utils/governance/batch.js +87 -0
  155. package/dist/esm/permissionless/utils/governance/index.js +3 -0
  156. package/dist/esm/permissionless/utils/governance/timelock-txs.js +20 -0
  157. package/dist/esm/permissionless/utils/governance/types.js +0 -0
  158. package/dist/esm/permissionless/utils/index.js +9 -0
  159. package/dist/esm/permissionless/utils/literals.js +16 -0
  160. package/dist/esm/permissionless/utils/price-update/get-price-feeds.js +65 -0
  161. package/dist/esm/permissionless/utils/price-update/get-price-update-tx.js +67 -0
  162. package/dist/esm/permissionless/utils/price-update/get-prices.js +99 -0
  163. package/dist/esm/permissionless/utils/price-update/get-updatable-feeds.js +31 -0
  164. package/dist/esm/permissionless/utils/price-update/index.js +4 -0
  165. package/dist/esm/permissionless/utils/signature.js +11 -0
  166. package/dist/esm/plugins/adapters/AdaptersPlugin.js +1 -1
  167. package/dist/esm/plugins/adapters/abi/actionAbi.js +1 -1
  168. package/dist/esm/plugins/adapters/abi/conctructorAbi.js +2 -2
  169. package/dist/esm/plugins/adapters/abi/utils.js +2 -2
  170. package/dist/esm/plugins/adapters/index.js +2 -2
  171. package/dist/esm/sdk/sdk-gov-legacy/tokens/curveLP.js +1 -1
  172. package/dist/esm/sdk/sdk-legacy/tokens/tokenData.js +1 -1
  173. package/dist/types/dev/mint/factory.d.ts +2 -2
  174. package/dist/types/permissionless/bindings/address-provider.d.ts +259 -0
  175. package/dist/types/permissionless/bindings/base-contract.d.ts +23 -0
  176. package/dist/types/permissionless/bindings/bytecode-repository.d.ts +1352 -0
  177. package/dist/types/permissionless/bindings/compressors/index.d.ts +2 -0
  178. package/dist/types/permissionless/bindings/compressors/token-compressor.d.ts +118 -0
  179. package/dist/types/permissionless/bindings/compressors/withdrawal-compressor.d.ts +331 -0
  180. package/dist/types/permissionless/bindings/cross-chain-multisig.d.ts +835 -0
  181. package/dist/types/permissionless/bindings/factory/abstract-factory.d.ts +17 -0
  182. package/dist/types/permissionless/bindings/factory/credit-factory.d.ts +224 -0
  183. package/dist/types/permissionless/bindings/factory/pool-factory.d.ts +86 -0
  184. package/dist/types/permissionless/bindings/factory/price-oracle-factory.d.ts +38 -0
  185. package/dist/types/permissionless/bindings/governance/batches-chain.d.ts +39 -0
  186. package/dist/types/permissionless/bindings/governance/governor.d.ts +615 -0
  187. package/dist/types/permissionless/bindings/governance/index.d.ts +3 -0
  188. package/dist/types/permissionless/bindings/governance/timelock.d.ts +10 -0
  189. package/dist/types/permissionless/bindings/governance/types.d.ts +42 -0
  190. package/dist/types/permissionless/bindings/index.d.ts +14 -0
  191. package/dist/types/permissionless/bindings/instance-manager.d.ts +361 -0
  192. package/dist/types/permissionless/bindings/market-configurator-factory.d.ts +244 -0
  193. package/dist/types/permissionless/bindings/market-configurator.d.ts +1656 -0
  194. package/dist/types/permissionless/bindings/price-feed-store.d.ts +605 -0
  195. package/dist/types/permissionless/bindings/pricefeeds/balancer-stable.d.ts +2 -0
  196. package/dist/types/permissionless/bindings/pricefeeds/balancer-weighted.d.ts +2 -0
  197. package/dist/types/permissionless/bindings/pricefeeds/bounded.d.ts +2 -0
  198. package/dist/types/permissionless/bindings/pricefeeds/composite.d.ts +2 -0
  199. package/dist/types/permissionless/bindings/pricefeeds/constant.d.ts +2 -0
  200. package/dist/types/permissionless/bindings/pricefeeds/curve-crypto.d.ts +2 -0
  201. package/dist/types/permissionless/bindings/pricefeeds/curve-stable.d.ts +2 -0
  202. package/dist/types/permissionless/bindings/pricefeeds/curve-twap.d.ts +2 -0
  203. package/dist/types/permissionless/bindings/pricefeeds/curve-usd.d.ts +2 -0
  204. package/dist/types/permissionless/bindings/pricefeeds/erc4626.d.ts +2 -0
  205. package/dist/types/permissionless/bindings/pricefeeds/external.d.ts +2 -0
  206. package/dist/types/permissionless/bindings/pricefeeds/index.d.ts +2 -0
  207. package/dist/types/permissionless/bindings/pricefeeds/kodiak.d.ts +2 -0
  208. package/dist/types/permissionless/bindings/pricefeeds/mellow-lrt.d.ts +2 -0
  209. package/dist/types/permissionless/bindings/pricefeeds/pendle-pt-twap.d.ts +2 -0
  210. package/dist/types/permissionless/bindings/pricefeeds/pyth.d.ts +2 -0
  211. package/dist/types/permissionless/bindings/pricefeeds/redstone.d.ts +2 -0
  212. package/dist/types/permissionless/bindings/pricefeeds/wsteth.d.ts +2 -0
  213. package/dist/types/permissionless/bindings/pricefeeds/zero.d.ts +2 -0
  214. package/dist/types/permissionless/bindings/router/index.d.ts +1 -0
  215. package/dist/types/permissionless/bindings/router/routing-manager.d.ts +502 -0
  216. package/dist/types/permissionless/bindings/treasury-splitter.d.ts +21 -0
  217. package/dist/types/permissionless/bindings/types.d.ts +65 -0
  218. package/dist/types/permissionless/chains/archive-transport.d.ts +49 -0
  219. package/dist/types/permissionless/core/auditor.d.ts +7 -0
  220. package/dist/types/permissionless/core/bytecode.d.ts +46 -0
  221. package/dist/types/permissionless/core/index.d.ts +6 -0
  222. package/dist/types/permissionless/core/pricefeed-builder.d.ts +59 -0
  223. package/dist/types/permissionless/core/pricefeed.d.ts +10 -0
  224. package/dist/types/permissionless/core/proposal.d.ts +33 -0
  225. package/dist/types/permissionless/core/raw-tx.d.ts +4 -0
  226. package/dist/types/permissionless/deployment/addresses.d.ts +7 -0
  227. package/dist/types/permissionless/deployment/mainnet.d.ts +10 -0
  228. package/dist/types/permissionless/index.d.ts +6 -0
  229. package/dist/types/permissionless/plugins/index.d.ts +3 -0
  230. package/dist/types/permissionless/plugins/irm/constructor-params-abi.d.ts +63 -0
  231. package/dist/types/permissionless/plugins/loss-policies/constructor-params-abi.d.ts +48 -0
  232. package/dist/types/permissionless/plugins/rate-keepers/constructor-params-abi.d.ts +55 -0
  233. package/dist/types/permissionless/utils/abi-decoder.d.ts +13 -0
  234. package/dist/types/permissionless/utils/abi-encoder.d.ts +7 -0
  235. package/dist/types/permissionless/utils/block-utils.d.ts +8 -0
  236. package/dist/types/permissionless/utils/create2.d.ts +17 -0
  237. package/dist/types/permissionless/utils/format.d.ts +7 -0
  238. package/dist/types/permissionless/utils/governance/batch.d.ts +17 -0
  239. package/dist/types/permissionless/utils/governance/index.d.ts +3 -0
  240. package/dist/types/permissionless/utils/governance/timelock-txs.d.ts +2 -0
  241. package/dist/types/permissionless/utils/governance/types.d.ts +16 -0
  242. package/dist/types/permissionless/utils/index.d.ts +9 -0
  243. package/dist/types/permissionless/utils/literals.d.ts +7 -0
  244. package/dist/types/permissionless/utils/price-update/get-price-feeds.d.ts +8 -0
  245. package/dist/types/permissionless/utils/price-update/get-price-update-tx.d.ts +9 -0
  246. package/dist/types/permissionless/utils/price-update/get-prices.d.ts +6 -0
  247. package/dist/types/permissionless/utils/price-update/get-updatable-feeds.d.ts +8 -0
  248. package/dist/types/permissionless/utils/price-update/index.d.ts +4 -0
  249. package/dist/types/permissionless/utils/signature.d.ts +2 -0
  250. package/dist/types/plugins/adapters/abi/actionAbi.d.ts +1 -1
  251. package/dist/types/plugins/adapters/abi/conctructorAbi.d.ts +1 -1
  252. package/dist/types/plugins/adapters/abi/utils.d.ts +1 -1
  253. package/dist/types/plugins/adapters/index.d.ts +2 -2
  254. package/dist/types/plugins/zappers/extraZappers.d.ts +2 -2
  255. package/dist/types/sdk/accounts/AbstractCreditAccountsService.d.ts +1 -2
  256. package/dist/types/sdk/market/oracle/PriceOracleBaseContract.d.ts +1 -2
  257. package/dist/types/sdk/market/oracle/PriceOracleV300Contract.d.ts +1 -1
  258. package/package.json +6 -6
@@ -0,0 +1,250 @@
1
+ import { http } from "viem";
2
+ class ArchiveTransport {
3
+ config;
4
+ primaryTransport;
5
+ archiveTransport;
6
+ cachedTransport;
7
+ constructor(config) {
8
+ this.config = {
9
+ retryCount: 3,
10
+ retryDelay: 150,
11
+ timeout: 1e4,
12
+ enableLogging: false,
13
+ ...config
14
+ };
15
+ this.primaryTransport = http(this.config.primaryRpcUrl, {
16
+ retryCount: this.config.retryCount,
17
+ retryDelay: this.config.retryDelay,
18
+ timeout: this.config.timeout
19
+ });
20
+ this.archiveTransport = http(this.config.archiveRpcUrl, {
21
+ retryCount: this.config.retryCount,
22
+ retryDelay: this.config.retryDelay,
23
+ timeout: this.config.timeout
24
+ });
25
+ }
26
+ /**
27
+ * Get the configured transport instance
28
+ */
29
+ getTransport() {
30
+ if (this.cachedTransport) {
31
+ return this.cachedTransport;
32
+ }
33
+ const transport = ({
34
+ chain,
35
+ retryCount: transportRetryCount,
36
+ timeout: transportTimeout
37
+ }) => {
38
+ const primaryClient = this.primaryTransport({
39
+ chain,
40
+ retryCount: transportRetryCount,
41
+ timeout: transportTimeout
42
+ });
43
+ const archiveClient = this.archiveTransport({
44
+ chain,
45
+ retryCount: transportRetryCount,
46
+ timeout: transportTimeout
47
+ });
48
+ return {
49
+ config: {
50
+ key: "archive-class",
51
+ name: "Archive Transport Class",
52
+ request: primaryClient.config.request,
53
+ retryCount: transportRetryCount ?? this.config.retryCount,
54
+ retryDelay: this.config.retryDelay,
55
+ timeout: transportTimeout ?? this.config.timeout,
56
+ type: "archive"
57
+ },
58
+ request: async (args) => {
59
+ const { method, params } = args;
60
+ if (method !== "eth_getLogs") {
61
+ return await primaryClient.request({ method, params });
62
+ }
63
+ try {
64
+ return await this.handleGetLogsRequest(
65
+ method,
66
+ params,
67
+ primaryClient,
68
+ archiveClient
69
+ );
70
+ } catch (error) {
71
+ this.log(
72
+ "Archive transport error, falling back to primary RPC:",
73
+ error
74
+ );
75
+ return await primaryClient.request({ method, params });
76
+ }
77
+ },
78
+ value: primaryClient.value
79
+ };
80
+ };
81
+ this.cachedTransport = transport;
82
+ return this.cachedTransport;
83
+ }
84
+ /**
85
+ * Handle eth_getLogs requests with intelligent routing
86
+ */
87
+ async handleGetLogsRequest(method, params, primaryClient, archiveClient) {
88
+ const latestBlockHex = await primaryClient.request({
89
+ method: "eth_blockNumber",
90
+ params: []
91
+ });
92
+ const latestBlock = parseInt(latestBlockHex, 16);
93
+ const thresholdBlock = latestBlock - this.config.blockThreshold;
94
+ const logsParams = params;
95
+ const filter = logsParams[0] || {};
96
+ const { fromBlock, toBlock } = this.parseBlockNumbers(filter, latestBlock);
97
+ const allRecent = fromBlock >= thresholdBlock;
98
+ const allHistorical = toBlock < thresholdBlock;
99
+ const spansBoth = fromBlock < thresholdBlock && toBlock >= thresholdBlock;
100
+ if (allRecent) {
101
+ this.log(`Primary RPC: blocks [${fromBlock}-${toBlock}]`);
102
+ return await primaryClient.request({
103
+ method,
104
+ params
105
+ });
106
+ } else if (allHistorical) {
107
+ this.log(`Archive RPC: blocks [${fromBlock}-${toBlock}]`);
108
+ return await archiveClient.request({ method, params });
109
+ } else if (spansBoth) {
110
+ return await this.handleSplitRequest(
111
+ method,
112
+ filter,
113
+ fromBlock,
114
+ toBlock,
115
+ thresholdBlock,
116
+ primaryClient,
117
+ archiveClient
118
+ );
119
+ } else {
120
+ return await primaryClient.request({
121
+ method,
122
+ params
123
+ });
124
+ }
125
+ }
126
+ /**
127
+ * Handle split requests that span both historical and recent blocks
128
+ */
129
+ async handleSplitRequest(method, filter, fromBlock, toBlock, thresholdBlock, primaryClient, archiveClient) {
130
+ this.log(
131
+ `Splitting request: historical [${fromBlock}-${thresholdBlock - 1}] + recent [${thresholdBlock}-${toBlock}]`
132
+ );
133
+ const historicalFilter = {
134
+ ...filter,
135
+ fromBlock: `0x${fromBlock.toString(16)}`,
136
+ toBlock: `0x${(thresholdBlock - 1).toString(16)}`
137
+ };
138
+ const recentFilter = {
139
+ ...filter,
140
+ fromBlock: `0x${thresholdBlock.toString(16)}`,
141
+ toBlock: `0x${toBlock.toString(16)}`
142
+ };
143
+ try {
144
+ const [historicalResult, recentResult] = await Promise.all([
145
+ archiveClient.request({ method, params: [historicalFilter] }),
146
+ primaryClient.request({ method, params: [recentFilter] })
147
+ ]);
148
+ const historicalLogs = historicalResult;
149
+ const recentLogs = recentResult;
150
+ const mergedLogs = [...historicalLogs, ...recentLogs];
151
+ mergedLogs.sort((a, b) => {
152
+ const blockA = parseInt(a.blockNumber, 16);
153
+ const blockB = parseInt(b.blockNumber, 16);
154
+ if (blockA !== blockB) {
155
+ return blockA - blockB;
156
+ }
157
+ const logIndexA = parseInt(a.logIndex || "0x0", 16);
158
+ const logIndexB = parseInt(b.logIndex || "0x0", 16);
159
+ return logIndexA - logIndexB;
160
+ });
161
+ this.log(
162
+ `Merged ${historicalLogs.length} historical + ${recentLogs.length} recent = ${mergedLogs.length} total logs`
163
+ );
164
+ return mergedLogs;
165
+ } catch (error) {
166
+ this.log("Split request failed, falling back to archive RPC:", error);
167
+ return await archiveClient.request({
168
+ method,
169
+ params: [filter]
170
+ });
171
+ }
172
+ }
173
+ /**
174
+ * Parse block numbers from filter parameters
175
+ */
176
+ parseBlockNumbers(filter, latestBlock) {
177
+ let fromBlock;
178
+ let toBlock;
179
+ if (filter.fromBlock !== void 0) {
180
+ if (filter.fromBlock === "latest" || filter.fromBlock === "pending") {
181
+ fromBlock = latestBlock;
182
+ } else if (filter.fromBlock === "earliest") {
183
+ fromBlock = 0;
184
+ } else if (typeof filter.fromBlock === "string") {
185
+ fromBlock = parseInt(filter.fromBlock, 16);
186
+ } else {
187
+ fromBlock = filter.fromBlock;
188
+ }
189
+ }
190
+ if (filter.toBlock !== void 0) {
191
+ if (filter.toBlock === "latest" || filter.toBlock === "pending") {
192
+ toBlock = latestBlock;
193
+ } else if (filter.toBlock === "earliest") {
194
+ toBlock = 0;
195
+ } else if (typeof filter.toBlock === "string") {
196
+ toBlock = parseInt(filter.toBlock, 16);
197
+ } else {
198
+ toBlock = filter.toBlock;
199
+ }
200
+ }
201
+ return {
202
+ fromBlock: fromBlock ?? 0,
203
+ toBlock: toBlock ?? latestBlock
204
+ };
205
+ }
206
+ /**
207
+ * Log messages if logging is enabled
208
+ */
209
+ log(message, ...args) {
210
+ if (this.config.enableLogging) {
211
+ console.log(`[ArchiveTransport] ${message}`, ...args);
212
+ }
213
+ }
214
+ /**
215
+ * Get current configuration
216
+ */
217
+ getConfig() {
218
+ return { ...this.config };
219
+ }
220
+ /**
221
+ * Update configuration (will invalidate cached transport)
222
+ */
223
+ updateConfig(updates) {
224
+ this.config = { ...this.config, ...updates };
225
+ this.cachedTransport = void 0;
226
+ if (updates.primaryRpcUrl) {
227
+ this.primaryTransport = http(this.config.primaryRpcUrl, {
228
+ retryCount: this.config.retryCount,
229
+ retryDelay: this.config.retryDelay,
230
+ timeout: this.config.timeout
231
+ });
232
+ }
233
+ if (updates.archiveRpcUrl) {
234
+ this.archiveTransport = http(this.config.archiveRpcUrl, {
235
+ retryCount: this.config.retryCount,
236
+ retryDelay: this.config.retryDelay,
237
+ timeout: this.config.timeout
238
+ });
239
+ }
240
+ }
241
+ /**
242
+ * Enable or disable logging
243
+ */
244
+ setLogging(enabled) {
245
+ this.config.enableLogging = enabled;
246
+ }
247
+ }
248
+ export {
249
+ ArchiveTransport
250
+ };
File without changes
File without changes
@@ -0,0 +1,6 @@
1
+ export * from "./auditor.js";
2
+ export * from "./bytecode.js";
3
+ export * from "./pricefeed.js";
4
+ export * from "./pricefeed-builder.js";
5
+ export * from "./proposal.js";
6
+ export * from "./raw-tx.js";
File without changes
File without changes
@@ -0,0 +1,14 @@
1
+ import { createRawTx } from "../../sdk/utils/index.js";
2
+ function createCallData(_abi, parameters) {
3
+ const tx = createRawTx(
4
+ "0x0000000000000000000000000000000000000000",
5
+ {
6
+ abi: _abi,
7
+ ...parameters
8
+ }
9
+ );
10
+ return tx.callData;
11
+ }
12
+ export {
13
+ createCallData
14
+ };
@@ -0,0 +1,11 @@
1
+ var Addresses = /* @__PURE__ */ ((Addresses2) => {
2
+ Addresses2["ADDRESS_PROVIDER"] = "0xF7f0a609BfAb9a0A98786951ef10e5FE26cC1E38";
3
+ Addresses2["ZERO_PRICE_FEED"] = "0x5dC92eC92cd5423EF95aEbe8Ac96619BCc9ffC88";
4
+ Addresses2["PRICE_FEED_STORE"] = "0x74A868AC479EE145029bB80827BB77F7B7c441cB";
5
+ Addresses2["IO_PROXY"] = "0xBcD875f0D62B9AA22481c81975F9AE1753Fc559A";
6
+ Addresses2["INSTANCE_MANAGER"] = "0x77777777144339Bdc3aCceE992D8d4D31734CB2e";
7
+ return Addresses2;
8
+ })(Addresses || {});
9
+ export {
10
+ Addresses
11
+ };
@@ -0,0 +1,27 @@
1
+ const MAINNET_CCM_CONSTRUCTOR_PARAMS = {
2
+ signers: [
3
+ "0xFd660518dC1b52d9F67FAcd42bbBA962B06b8E54",
4
+ "0x8cC8c75013D561Ad81D7d08591836Fc78585aE34",
5
+ "0xb9b7Db94D57fe25907620eAae42b9780176CceeA",
6
+ "0x66a3c94814dc3a37C9d61f1a977ea3730c621426",
7
+ "0x869ad60cDeF31Ae01959288Ff77D51bcB9F09E41",
8
+ "0xA0BaCE512E2904ccFDD24AB56feea6621ce14613",
9
+ "0x0Cec743b8CE4Ef8802cAc0e5df18a180ed8402A7",
10
+ "0x198c4D019BefE68415351E2C0F9b05585cfAAa5b",
11
+ "0x225C529a6a84AE9E45F97B6692E387791c3Ee8E8",
12
+ "0xb195a8CF4898E6DDc92e435cb118E9842456A45A",
13
+ "0xf33Ea4EE285B5DAC9a6163d8939699d59a7199BA",
14
+ "0xb647055A9915bF9c8021a684E175A353525b9890"
15
+ ],
16
+ threshold: 6,
17
+ dao: "0xA7D5DDc1b8557914F158076b228AA91eF613f1D5"
18
+ };
19
+ const MAINNET_DEPLOYMENT_CCM_SALT = "0x5e732654dc26892d02b6ae236f4a14577a726514abee949c570d011bcbcbcaac";
20
+ const MAINNET_DEPLOYMENT_IM_SALT = "0x528da0da2d7789d36e2cbb0bd2bebf3f7d136e9c6c4e036fd56f7fd71ec5eb87";
21
+ const MAINNET_DEPLOYMENT_BLOCK = 22358827;
22
+ export {
23
+ MAINNET_CCM_CONSTRUCTOR_PARAMS,
24
+ MAINNET_DEPLOYMENT_BLOCK,
25
+ MAINNET_DEPLOYMENT_CCM_SALT,
26
+ MAINNET_DEPLOYMENT_IM_SALT
27
+ };
@@ -0,0 +1,6 @@
1
+ export * from "./bindings/index.js";
2
+ export * from "./chains/archive-transport.js";
3
+ export * from "./core/index.js";
4
+ export * from "./deployment/addresses.js";
5
+ export * from "./deployment/mainnet.js";
6
+ export * from "./utils/index.js";
@@ -0,0 +1 @@
1
+ {"type": "module","sideEffects":false}
@@ -0,0 +1,20 @@
1
+ import {
2
+ getIrmDeployParamsAbi,
3
+ parseIrmDeployParams
4
+ } from "./irm/constructor-params-abi.js";
5
+ import {
6
+ getLossPolicyDeployParamsAbi,
7
+ parseLossPolicyDeployParams
8
+ } from "./loss-policies/constructor-params-abi.js";
9
+ import {
10
+ getRateKeeperDeployParamsAbi,
11
+ parseRateKeeperDeployParams
12
+ } from "./rate-keepers/constructor-params-abi.js";
13
+ export {
14
+ getIrmDeployParamsAbi,
15
+ getLossPolicyDeployParamsAbi,
16
+ getRateKeeperDeployParamsAbi,
17
+ parseIrmDeployParams,
18
+ parseLossPolicyDeployParams,
19
+ parseRateKeeperDeployParams
20
+ };
@@ -0,0 +1,52 @@
1
+ import { decodeAbiParameters } from "viem";
2
+ const LINEAR_IRM_ABI = [
3
+ { type: "uint256", name: "U_1" },
4
+ { type: "uint256", name: "U_2" },
5
+ { type: "uint256", name: "R_base" },
6
+ { type: "uint256", name: "R_slope1" },
7
+ { type: "uint256", name: "R_slope2" },
8
+ { type: "uint256", name: "R_slope3" },
9
+ { type: "bool", name: "isBorrowingMoreU2Forbidden" }
10
+ ];
11
+ const irmDeployParamsAbiMapping = {
12
+ // Linear IRM - [U_1, U_2, R_base, R_slope1, R_slope2, R_slope3, isBorrowingMoreU2Forbidden]
13
+ LINEAR: {
14
+ "310": LINEAR_IRM_ABI
15
+ }
16
+ };
17
+ function getIrmDeployParamsAbi(irmType, version = 310) {
18
+ const versionedMapping = irmDeployParamsAbiMapping[irmType];
19
+ return versionedMapping?.[version.toString()] ?? null;
20
+ }
21
+ function parseIrmDeployParams(irmPostfix, version, data) {
22
+ const cleanIrmPostfix = irmPostfix.replace(/\0/g, "").trim();
23
+ if (!hasIrmDeployParamsAbi(cleanIrmPostfix)) return null;
24
+ const irmType = cleanIrmPostfix;
25
+ const abi = getIrmDeployParamsAbi(irmType, version);
26
+ if (!abi) return null;
27
+ try {
28
+ const decoded = decodeAbiParameters(abi, data);
29
+ const result = {};
30
+ abi.forEach((param, index) => {
31
+ result[param.name] = String(decoded[index]);
32
+ });
33
+ return result;
34
+ } catch (error) {
35
+ console.error(`Failed to parse IRM deploy params for ${irmType}:`, error);
36
+ return null;
37
+ }
38
+ }
39
+ function hasIrmDeployParamsAbi(irmType) {
40
+ return irmType in irmDeployParamsAbiMapping;
41
+ }
42
+ function getSupportedIrmTypes() {
43
+ return Object.keys(irmDeployParamsAbiMapping);
44
+ }
45
+ export {
46
+ LINEAR_IRM_ABI,
47
+ getIrmDeployParamsAbi,
48
+ getSupportedIrmTypes,
49
+ hasIrmDeployParamsAbi,
50
+ irmDeployParamsAbiMapping,
51
+ parseIrmDeployParams
52
+ };
@@ -0,0 +1,50 @@
1
+ import { decodeAbiParameters } from "viem";
2
+ const ALIAS_LOSS_POLICY_ABI = [
3
+ { type: "address", name: "pool" },
4
+ { type: "address", name: "addressProvider" }
5
+ ];
6
+ const lossPolicyDeployParamsAbiMapping = {
7
+ // Alias Loss Policy - [pool, addressProvider]
8
+ ALIASED: {
9
+ "310": ALIAS_LOSS_POLICY_ABI
10
+ }
11
+ };
12
+ function getLossPolicyDeployParamsAbi(lossPolicyType, version = 310) {
13
+ const versionedMapping = lossPolicyDeployParamsAbiMapping[lossPolicyType];
14
+ return versionedMapping?.[version.toString()] ?? null;
15
+ }
16
+ function parseLossPolicyDeployParams(lossPolicyPostfix, version, data) {
17
+ const cleanLossPolicyPostfix = lossPolicyPostfix.replace(/\0/g, "").trim();
18
+ if (!hasLossPolicyDeployParamsAbi(cleanLossPolicyPostfix)) return null;
19
+ const lossPolicyType = cleanLossPolicyPostfix;
20
+ const abi = getLossPolicyDeployParamsAbi(lossPolicyType, version);
21
+ if (!abi) return null;
22
+ try {
23
+ const decoded = decodeAbiParameters(abi, data);
24
+ const result = {};
25
+ abi.forEach((param, index) => {
26
+ result[param.name] = String(decoded[index]);
27
+ });
28
+ return result;
29
+ } catch (error) {
30
+ console.error(
31
+ `Failed to parse loss policy deploy params for ${lossPolicyType}:`,
32
+ error
33
+ );
34
+ return null;
35
+ }
36
+ }
37
+ function hasLossPolicyDeployParamsAbi(lossPolicyType) {
38
+ return lossPolicyType in lossPolicyDeployParamsAbiMapping;
39
+ }
40
+ function getSupportedLossPolicyTypes() {
41
+ return Object.keys(lossPolicyDeployParamsAbiMapping);
42
+ }
43
+ export {
44
+ ALIAS_LOSS_POLICY_ABI,
45
+ getLossPolicyDeployParamsAbi,
46
+ getSupportedLossPolicyTypes,
47
+ hasLossPolicyDeployParamsAbi,
48
+ lossPolicyDeployParamsAbiMapping,
49
+ parseLossPolicyDeployParams
50
+ };
@@ -0,0 +1,59 @@
1
+ import { decodeAbiParameters } from "viem";
2
+ const TUMBLER_RATE_KEEPER_ABI = [
3
+ { type: "address", name: "pool" },
4
+ { type: "uint256", name: "epochSeconds" }
5
+ ];
6
+ const GAUGE_RATE_KEEPER_ABI = [
7
+ { type: "address", name: "pool" },
8
+ { type: "address", name: "gearStakingAddress" }
9
+ ];
10
+ const rateKeeperDeployParamsAbiMapping = {
11
+ // Tumbler Rate Keeper - [pool, epochSeconds]
12
+ TUMBLER: {
13
+ "310": TUMBLER_RATE_KEEPER_ABI
14
+ },
15
+ // Gauge Rate Keeper - [pool, gearStakingAddress]
16
+ GAUGE: {
17
+ "310": GAUGE_RATE_KEEPER_ABI
18
+ }
19
+ };
20
+ function getRateKeeperDeployParamsAbi(rateKeeperType, version = 310) {
21
+ const versionedMapping = rateKeeperDeployParamsAbiMapping[rateKeeperType];
22
+ return versionedMapping?.[version.toString()] ?? null;
23
+ }
24
+ function parseRateKeeperDeployParams(rateKeeperPostfix, version, data) {
25
+ const cleanRateKeeperPostfix = rateKeeperPostfix.replace(/\0/g, "").trim();
26
+ if (!hasRateKeeperDeployParamsAbi(cleanRateKeeperPostfix)) return null;
27
+ const rateKeeperType = cleanRateKeeperPostfix;
28
+ const abi = getRateKeeperDeployParamsAbi(rateKeeperType, version);
29
+ if (!abi) return null;
30
+ try {
31
+ const decoded = decodeAbiParameters(abi, data);
32
+ const result = {};
33
+ abi.forEach((param, index) => {
34
+ result[param.name] = String(decoded[index]);
35
+ });
36
+ return result;
37
+ } catch (error) {
38
+ console.error(
39
+ `Failed to parse rate keeper deploy params for ${rateKeeperType}:`,
40
+ error
41
+ );
42
+ return null;
43
+ }
44
+ }
45
+ function hasRateKeeperDeployParamsAbi(rateKeeperType) {
46
+ return rateKeeperType in rateKeeperDeployParamsAbiMapping;
47
+ }
48
+ function getSupportedRateKeeperTypes() {
49
+ return Object.keys(rateKeeperDeployParamsAbiMapping);
50
+ }
51
+ export {
52
+ GAUGE_RATE_KEEPER_ABI,
53
+ TUMBLER_RATE_KEEPER_ABI,
54
+ getRateKeeperDeployParamsAbi,
55
+ getSupportedRateKeeperTypes,
56
+ hasRateKeeperDeployParamsAbi,
57
+ parseRateKeeperDeployParams,
58
+ rateKeeperDeployParamsAbiMapping
59
+ };
@@ -0,0 +1,50 @@
1
+ import {
2
+ decodeFunctionData
3
+ } from "viem";
4
+ import { json_stringify } from "../../sdk/utils/index.js";
5
+ function decodeFunctionWithNamedArgs(abi, calldata) {
6
+ try {
7
+ const decoded = decodeFunctionData({
8
+ abi,
9
+ data: calldata
10
+ });
11
+ const abiItem = abi.find(
12
+ (item) => item?.name === decoded.functionName && item?.type === "function"
13
+ );
14
+ if (!abiItem) {
15
+ return {
16
+ functionName: decoded.functionName,
17
+ args: {},
18
+ originalDecoded: decoded
19
+ };
20
+ }
21
+ const namedArgs = {};
22
+ if (Array.isArray(decoded.args)) {
23
+ decoded.args.forEach((value, i) => {
24
+ const input = abiItem.inputs?.[i];
25
+ if (input?.name) {
26
+ namedArgs[input.name] = input.type.startsWith("tuple") ? json_stringify(value) : String(value);
27
+ }
28
+ });
29
+ } else {
30
+ Object.entries(decoded.args || {}).forEach(([key, value]) => {
31
+ const index = parseInt(key, 10);
32
+ if (!Number.isNaN(index) && abiItem.inputs?.[index]?.name) {
33
+ namedArgs[abiItem.inputs[index].name] = String(value);
34
+ } else {
35
+ namedArgs[key] = String(value);
36
+ }
37
+ });
38
+ }
39
+ return {
40
+ functionName: decoded.functionName,
41
+ args: namedArgs,
42
+ originalDecoded: decoded
43
+ };
44
+ } catch {
45
+ return null;
46
+ }
47
+ }
48
+ export {
49
+ decodeFunctionWithNamedArgs
50
+ };
@@ -0,0 +1,65 @@
1
+ import { encodeAbiParameters } from "viem";
2
+ function encodeFunctionParams(params) {
3
+ const types = [];
4
+ const values = [];
5
+ for (const { type, value } of params) {
6
+ switch (type) {
7
+ case "address":
8
+ types.push({ type });
9
+ values.push(value);
10
+ break;
11
+ case "bytes32":
12
+ types.push({ type });
13
+ values.push(value);
14
+ break;
15
+ case "string":
16
+ types.push({ type });
17
+ values.push(value);
18
+ break;
19
+ case "uint256":
20
+ case "int256":
21
+ case "uint32":
22
+ types.push({ type });
23
+ values.push(BigInt(value));
24
+ break;
25
+ case "uint8":
26
+ types.push({ type });
27
+ values.push(Number(value));
28
+ break;
29
+ case "bool":
30
+ types.push({ type });
31
+ values.push(value);
32
+ break;
33
+ case "address[]":
34
+ types.push({ type });
35
+ values.push(value);
36
+ break;
37
+ case "bytes32[]":
38
+ types.push({ type });
39
+ values.push(value);
40
+ break;
41
+ case "string[]":
42
+ types.push({ type });
43
+ values.push(value);
44
+ break;
45
+ case "uint256[]":
46
+ case "int256[]":
47
+ case "uint32[]":
48
+ types.push({ type });
49
+ values.push(value.map((v) => BigInt(v)));
50
+ break;
51
+ case "uint8[]":
52
+ types.push({ type });
53
+ values.push(value.map((v) => Number(v)));
54
+ break;
55
+ case "bool[]":
56
+ types.push({ type });
57
+ values.push(value);
58
+ break;
59
+ }
60
+ }
61
+ return encodeAbiParameters(types, values);
62
+ }
63
+ export {
64
+ encodeFunctionParams
65
+ };
@@ -0,0 +1,31 @@
1
+ async function getBlockNumberByTimestamp(client, targetTimestamp) {
2
+ const latestBlock = await client.getBlock({ blockTag: "latest" });
3
+ const latestBlockNumber = Number(latestBlock.number);
4
+ const latestTimestamp = Number(latestBlock.timestamp);
5
+ if (targetTimestamp >= latestTimestamp) {
6
+ return latestBlockNumber;
7
+ }
8
+ let left = 0;
9
+ let right = latestBlockNumber;
10
+ let closestBlock = latestBlockNumber;
11
+ while (left <= right) {
12
+ const mid = Math.floor((left + right) / 2);
13
+ const block = await client.getBlock({
14
+ blockNumber: BigInt(mid)
15
+ });
16
+ const blockTimestamp = Number(block.timestamp);
17
+ if (blockTimestamp === targetTimestamp) {
18
+ return mid;
19
+ }
20
+ if (blockTimestamp < targetTimestamp) {
21
+ left = mid + 1;
22
+ } else {
23
+ right = mid - 1;
24
+ closestBlock = mid;
25
+ }
26
+ }
27
+ return closestBlock;
28
+ }
29
+ export {
30
+ getBlockNumberByTimestamp
31
+ };