@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,91 @@
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 get_price_feeds_exports = {};
20
+ __export(get_price_feeds_exports, {
21
+ getCallTouchedPriceFeeds: () => getCallTouchedPriceFeeds,
22
+ getCallsTouchedPriceFeeds: () => getCallsTouchedPriceFeeds,
23
+ getCallsTouchedUpdatablePriceFeeds: () => getCallsTouchedUpdatablePriceFeeds
24
+ });
25
+ module.exports = __toCommonJS(get_price_feeds_exports);
26
+ var import_constants = require("../../../sdk/constants/index.js");
27
+ var import_sdk = require("../../../sdk/index.js");
28
+ var import_bindings = require("../../bindings");
29
+ var import_addresses = require("../../deployment/addresses");
30
+ var import_format = require("../format");
31
+ var import_get_updatable_feeds = require("./get-updatable-feeds");
32
+ function getCallTouchedPriceFeeds(parsedCall) {
33
+ const priceFeeds = [];
34
+ const deepParsedArgs = (0, import_format.deepJsonParse)(parsedCall.args);
35
+ function searchForPriceFeeds(obj) {
36
+ if (obj === null || obj === void 0) {
37
+ return;
38
+ }
39
+ if (Array.isArray(obj)) {
40
+ obj.forEach((item) => {
41
+ searchForPriceFeeds(item);
42
+ });
43
+ return;
44
+ }
45
+ if (typeof obj === "object") {
46
+ for (const [key, value] of Object.entries(obj)) {
47
+ if (key === "priceFeed" || key === "underlyingPriceFeed") {
48
+ priceFeeds.push(value);
49
+ }
50
+ searchForPriceFeeds(value);
51
+ }
52
+ }
53
+ }
54
+ searchForPriceFeeds(deepParsedArgs);
55
+ return priceFeeds;
56
+ }
57
+ function getCallsTouchedPriceFeeds(parsedCalls) {
58
+ return parsedCalls.flatMap((call) => getCallTouchedPriceFeeds(call));
59
+ }
60
+ async function getCallsTouchedUpdatablePriceFeeds({
61
+ parsedCalls,
62
+ client
63
+ }) {
64
+ const addressProvider = new import_bindings.AddressProviderContract(
65
+ import_addresses.Addresses.ADDRESS_PROVIDER,
66
+ client
67
+ );
68
+ const pfCompressor = await addressProvider.getAddressOrRevert(
69
+ import_constants.AP_PRICE_FEED_COMPRESSOR,
70
+ 310n
71
+ );
72
+ const sdk = await import_sdk.GearboxSDK.attach({
73
+ rpcURLs: [client.transport.url],
74
+ marketConfigurators: []
75
+ });
76
+ const touchedFeeds = parsedCalls.flatMap(
77
+ (call) => getCallTouchedPriceFeeds(call)
78
+ );
79
+ return (await (0, import_get_updatable_feeds.getUpdatablePriceFeeds)({
80
+ sdk,
81
+ client,
82
+ pfCompressor,
83
+ priceFeeds: touchedFeeds
84
+ })).map((feed) => feed.address);
85
+ }
86
+ // Annotate the CommonJS export names for ESM import in node:
87
+ 0 && (module.exports = {
88
+ getCallTouchedPriceFeeds,
89
+ getCallsTouchedPriceFeeds,
90
+ getCallsTouchedUpdatablePriceFeeds
91
+ });
@@ -0,0 +1,84 @@
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 get_price_update_tx_exports = {};
20
+ __export(get_price_update_tx_exports, {
21
+ getPriceUpdateTx: () => getPriceUpdateTx,
22
+ getUpdateCalldata: () => getUpdateCalldata
23
+ });
24
+ module.exports = __toCommonJS(get_price_update_tx_exports);
25
+ var import_viem = require("viem");
26
+ var import_sdk = require("../../../sdk/index.js");
27
+ var import_utils = require("../../../sdk/utils/index.js");
28
+ var import_bindings = require("../../bindings");
29
+ var import_addresses = require("../../deployment/addresses");
30
+ function getUpdateCalldata(tx) {
31
+ const data = (0, import_viem.decodeFunctionData)({
32
+ abi: (0, import_viem.parseAbi)(["function updatePrice(bytes calldata data) external"]),
33
+ data: tx.raw.callData
34
+ });
35
+ return {
36
+ priceFeed: tx.raw.to,
37
+ data: data.args[0]
38
+ };
39
+ }
40
+ async function getPriceUpdateTx({
41
+ client,
42
+ priceFeeds,
43
+ useMulticall3 = false
44
+ }) {
45
+ const pfStore = new import_bindings.PriceFeedStoreContract(
46
+ import_addresses.Addresses.PRICE_FEED_STORE,
47
+ client
48
+ );
49
+ const sdk = await import_sdk.GearboxSDK.attach({
50
+ rpcURLs: [client.transport.url],
51
+ marketConfigurators: []
52
+ });
53
+ const updateTxs = await sdk.priceFeeds.generateExternalPriceFeedsUpdateTxs(priceFeeds);
54
+ if (useMulticall3) {
55
+ const multicallCalls = updateTxs.txs.map((tx) => ({
56
+ target: tx.raw.to,
57
+ allowFailure: false,
58
+ callData: tx.raw.callData
59
+ }));
60
+ if (multicallCalls.length === 0) {
61
+ return void 0;
62
+ }
63
+ const multicall3Address = client.chain?.contracts?.multicall3?.address;
64
+ if (!multicall3Address) {
65
+ throw new Error("Multicall3 address not found");
66
+ }
67
+ const multicallTx = (0, import_utils.createRawTx)(multicall3Address, {
68
+ abi: import_viem.multicall3Abi,
69
+ functionName: "aggregate3",
70
+ args: [multicallCalls]
71
+ });
72
+ return multicallTx;
73
+ }
74
+ const priceUpdates = updateTxs.txs.map((tx) => getUpdateCalldata(tx));
75
+ if (priceUpdates.length === 0) {
76
+ return void 0;
77
+ }
78
+ return pfStore.updatePrices(priceUpdates);
79
+ }
80
+ // Annotate the CommonJS export names for ESM import in node:
81
+ 0 && (module.exports = {
82
+ getPriceUpdateTx,
83
+ getUpdateCalldata
84
+ });
@@ -0,0 +1,123 @@
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 get_prices_exports = {};
20
+ __export(get_prices_exports, {
21
+ getPrices: () => getPrices
22
+ });
23
+ module.exports = __toCommonJS(get_prices_exports);
24
+ var import_viem = require("viem");
25
+ var import_sdk = require("../../../sdk/index.js");
26
+ var import_viem2 = require("../../../sdk/utils/viem/index.js");
27
+ const latestRoundDataAbi = [
28
+ {
29
+ inputs: [],
30
+ name: "latestRoundData",
31
+ outputs: [
32
+ { name: "roundId", type: "uint80" },
33
+ { name: "answer", type: "int256" },
34
+ { name: "startedAt", type: "uint256" },
35
+ { name: "updatedAt", type: "uint256" },
36
+ { name: "answeredInRound", type: "uint80" }
37
+ ],
38
+ stateMutability: "view",
39
+ type: "function"
40
+ }
41
+ ];
42
+ function getLatestRoundDataCall(priceFeed) {
43
+ return {
44
+ address: priceFeed,
45
+ abi: latestRoundDataAbi,
46
+ functionName: "latestRoundData",
47
+ args: []
48
+ };
49
+ }
50
+ async function getPricesChunk({
51
+ client,
52
+ priceFeeds,
53
+ sdk
54
+ }) {
55
+ const updateCall = priceFeeds.map(
56
+ (priceFeed) => getLatestRoundDataCall(priceFeed)
57
+ );
58
+ const updateTxs = await sdk.priceFeeds.generateExternalPriceFeedsUpdateTxs(priceFeeds);
59
+ const multicallCalls = updateTxs.txs.map((tx) => ({
60
+ target: tx.raw.to,
61
+ allowFailure: true,
62
+ callData: tx.raw.callData
63
+ }));
64
+ const multicall3Address = client.chain?.contracts?.multicall3?.address;
65
+ if (!multicall3Address) {
66
+ throw new Error("Multicall3 address not found");
67
+ }
68
+ const multicallResult = await (0, import_viem2.simulateMulticall)(client, {
69
+ contracts: [
70
+ {
71
+ address: multicall3Address,
72
+ // @ts-expect-error
73
+ abi: import_viem.multicall3Abi,
74
+ // @ts-expect-error
75
+ functionName: "aggregate3",
76
+ args: [multicallCalls]
77
+ },
78
+ ...updateCall
79
+ ],
80
+ allowFailure: true
81
+ });
82
+ const prices = multicallResult.results.slice(1).map((result) => {
83
+ if (result.status === "failure") {
84
+ return null;
85
+ }
86
+ return result.result[1];
87
+ });
88
+ const priceEntries = priceFeeds.map(
89
+ (priceFeed, index) => [
90
+ priceFeed,
91
+ prices[index] ?? null
92
+ ]
93
+ );
94
+ return Object.fromEntries(priceEntries);
95
+ }
96
+ async function getPrices({
97
+ client,
98
+ priceFeeds,
99
+ chunkSize = 10
100
+ }) {
101
+ const sdk = await import_sdk.GearboxSDK.attach({
102
+ rpcURLs: [client.transport.url],
103
+ marketConfigurators: [],
104
+ redstone: {
105
+ ignoreMissingFeeds: true
106
+ }
107
+ });
108
+ const chunks = [];
109
+ for (let i = 0; i < priceFeeds.length; i += chunkSize) {
110
+ chunks.push(priceFeeds.slice(i, i + chunkSize));
111
+ }
112
+ const results = await Promise.all(
113
+ chunks.map((chunk) => getPricesChunk({ client, priceFeeds: chunk, sdk }))
114
+ );
115
+ return results.reduce(
116
+ (acc, result) => ({ ...acc, ...result }),
117
+ {}
118
+ );
119
+ }
120
+ // Annotate the CommonJS export names for ESM import in node:
121
+ 0 && (module.exports = {
122
+ getPrices
123
+ });
@@ -0,0 +1,52 @@
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 get_updatable_feeds_exports = {};
20
+ __export(get_updatable_feeds_exports, {
21
+ getUpdatablePriceFeeds: () => getUpdatablePriceFeeds
22
+ });
23
+ module.exports = __toCommonJS(get_updatable_feeds_exports);
24
+ var import_viem = require("viem");
25
+ var import_priceFeedCompressor = require("../../../abi/compressors/priceFeedCompressor.js");
26
+ var import_sdk = require("../../../sdk/index.js");
27
+ var import_utils = require("../../../sdk/utils/index.js");
28
+ async function getUpdatablePriceFeeds(args) {
29
+ const { sdk, client, pfCompressor, priceFeeds } = args;
30
+ const priceFeedCompressor = (0, import_viem.getContract)({
31
+ address: pfCompressor,
32
+ abi: import_priceFeedCompressor.priceFeedCompressorAbi,
33
+ client
34
+ });
35
+ const updatablePriceFeeds = (await priceFeedCompressor.read.loadPriceFeedTree([
36
+ priceFeeds
37
+ ])).filter(
38
+ (data) => ["PRICE_FEED::PYTH", "PRICE_FEED::REDSTONE"].includes(
39
+ (0, import_utils.bytes32ToString)(data.baseParams.contractType)
40
+ )
41
+ ).map((data) => {
42
+ if ((0, import_utils.bytes32ToString)(data.baseParams.contractType) === "PRICE_FEED::PYTH") {
43
+ return new import_sdk.PythPriceFeed(sdk, data);
44
+ }
45
+ return new import_sdk.RedstonePriceFeedContract(sdk, data);
46
+ });
47
+ return updatablePriceFeeds;
48
+ }
49
+ // Annotate the CommonJS export names for ESM import in node:
50
+ 0 && (module.exports = {
51
+ getUpdatablePriceFeeds
52
+ });
@@ -0,0 +1,28 @@
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 price_update_exports = {};
17
+ module.exports = __toCommonJS(price_update_exports);
18
+ __reExport(price_update_exports, require("./get-price-feeds"), module.exports);
19
+ __reExport(price_update_exports, require("./get-price-update-tx"), module.exports);
20
+ __reExport(price_update_exports, require("./get-prices"), module.exports);
21
+ __reExport(price_update_exports, require("./get-updatable-feeds"), module.exports);
22
+ // Annotate the CommonJS export names for ESM import in node:
23
+ 0 && (module.exports = {
24
+ ...require("./get-price-feeds"),
25
+ ...require("./get-price-update-tx"),
26
+ ...require("./get-prices"),
27
+ ...require("./get-updatable-feeds")
28
+ });
@@ -0,0 +1,35 @@
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 signature_exports = {};
20
+ __export(signature_exports, {
21
+ normalizeSignature: () => normalizeSignature
22
+ });
23
+ module.exports = __toCommonJS(signature_exports);
24
+ function normalizeSignature(signature) {
25
+ const sig = signature.startsWith("0x") ? signature.slice(2) : signature;
26
+ let v = parseInt(sig.slice(128, 130), 16);
27
+ if (v === 0 || v === 1) {
28
+ v += 27;
29
+ }
30
+ return `0x${sig.slice(0, 128)}${v.toString(16)}`;
31
+ }
32
+ // Annotate the CommonJS export names for ESM import in node:
33
+ 0 && (module.exports = {
34
+ normalizeSignature
35
+ });
@@ -458,7 +458,11 @@ class GearboxSDK {
458
458
  this.#currentBlock = blockNumber;
459
459
  this.#timestamp = timestamp;
460
460
  await this.marketRegister.syncState(ignoreUpdateablePrices);
461
- await this.#hooks.triggerHooks("syncState", { blockNumber, timestamp });
461
+ await this.#hooks.triggerHooks("syncState", {
462
+ blockNumber,
463
+ timestamp,
464
+ ignoreUpdateablePrices
465
+ });
462
466
  const pluginsList = import_utils.TypedObjectUtils.entries(this.plugins);
463
467
  const pluginResponse = await Promise.allSettled(
464
468
  pluginsList.map(([name, plugin]) => {
@@ -0,0 +1,27 @@
1
+ import { stringToHex } from "viem";
2
+ import { iAddressProviderV310Abi } from "../../abi/310/generated.js";
3
+ import { BaseContract } from "./base-contract";
4
+ const abi = iAddressProviderV310Abi;
5
+ class AddressProviderContract extends BaseContract {
6
+ constructor(address, client) {
7
+ super(abi, address, client, "AddressProvider");
8
+ }
9
+ async getAddressOrRevert(key, version = 0n) {
10
+ return await this.contract.read.getAddressOrRevert([
11
+ stringToHex(key, { size: 32 }),
12
+ version
13
+ ]);
14
+ }
15
+ async getLatestVersionAddress(key) {
16
+ const version = await this.getLatestVersion(key);
17
+ return await this.getAddressOrRevert(key, version);
18
+ }
19
+ async getLatestVersion(key) {
20
+ return await this.contract.read.getLatestVersion([
21
+ stringToHex(key, { size: 32 })
22
+ ]);
23
+ }
24
+ }
25
+ export {
26
+ AddressProviderContract
27
+ };
@@ -0,0 +1,151 @@
1
+ import {
2
+ getContract
3
+ } from "viem";
4
+ import { createRawTx } from "../../sdk/utils/index.js";
5
+ import { decodeFunctionWithNamedArgs } from "../utils/abi-decoder";
6
+ class BaseContract {
7
+ abi;
8
+ address;
9
+ name;
10
+ static register = {};
11
+ contract;
12
+ client;
13
+ constructor(abi, address, client, name) {
14
+ this.abi = abi;
15
+ this.client = client;
16
+ this.address = address.toLowerCase();
17
+ this.name = name;
18
+ this.contract = getContract({
19
+ address,
20
+ abi,
21
+ client
22
+ });
23
+ BaseContract.register[this.address] = this;
24
+ }
25
+ static parseCall(call) {
26
+ const parsedCall = BaseContract.parse(call.target, call.callData);
27
+ return {
28
+ ...parsedCall,
29
+ chainId: call.chainId
30
+ };
31
+ }
32
+ static parse(address, calldata) {
33
+ const contract = BaseContract.register[address.toLowerCase()];
34
+ if (contract) {
35
+ return contract.parseFunctionData(calldata);
36
+ } else {
37
+ return {
38
+ chainId: 0,
39
+ target: address,
40
+ label: "Unknown contract",
41
+ functionName: `Unknown function: ${calldata}`,
42
+ args: {}
43
+ };
44
+ }
45
+ }
46
+ parseFunctionData(calldata) {
47
+ const decodedWithNames = decodeFunctionWithNamedArgs(this.abi, calldata);
48
+ if (!decodedWithNames) {
49
+ return {
50
+ chainId: 0,
51
+ target: this.address,
52
+ label: this.name,
53
+ functionName: `Unknown function: ${calldata}`,
54
+ args: {}
55
+ };
56
+ }
57
+ const specParsed = this.parseFunctionParams(
58
+ decodedWithNames.originalDecoded
59
+ );
60
+ if (specParsed) {
61
+ return specParsed;
62
+ }
63
+ return this.wrapParseCall(
64
+ decodedWithNames.originalDecoded,
65
+ decodedWithNames.args
66
+ );
67
+ }
68
+ wrapParseCall(params, parsedParams) {
69
+ return {
70
+ chainId: 0,
71
+ target: this.address,
72
+ label: this.name,
73
+ functionName: params.functionName,
74
+ args: parsedParams
75
+ };
76
+ }
77
+ parseFunctionParams(params) {
78
+ return void 0;
79
+ }
80
+ createRawTx(parameters) {
81
+ const { description: argsDescription } = parameters;
82
+ const tx = createRawTx(
83
+ this.address,
84
+ {
85
+ abi: this.abi,
86
+ ...parameters
87
+ },
88
+ argsDescription
89
+ );
90
+ tx.description = parameters.description || argsDescription || this.stringifyParsedCall(this.parseFunctionData(tx.callData));
91
+ return tx;
92
+ }
93
+ stringifyParsedCall(parsedCall) {
94
+ const argsStr = Object.entries(parsedCall.args).map(([key, value]) => `${key}: ${value}`).join(", ");
95
+ return `${parsedCall.label}.${parsedCall.functionName}(${argsStr})`;
96
+ }
97
+ async getEvents(eventName, fromBlock, toBlock, args, chunkSize) {
98
+ if (chunkSize) {
99
+ const chunkSizeBigint = BigInt(chunkSize);
100
+ const getEventPromises = [];
101
+ for (let i = fromBlock; i < toBlock; i += chunkSizeBigint) {
102
+ getEventPromises.push(
103
+ this.client.getContractEvents({
104
+ address: this.address,
105
+ fromBlock: i,
106
+ toBlock: i + chunkSizeBigint,
107
+ abi: this.abi,
108
+ eventName,
109
+ args
110
+ })
111
+ );
112
+ }
113
+ const events = (await Promise.all(getEventPromises)).flat();
114
+ return events;
115
+ }
116
+ try {
117
+ const events = await this.client.getContractEvents({
118
+ address: this.address,
119
+ fromBlock,
120
+ toBlock,
121
+ abi: this.abi,
122
+ eventName,
123
+ args
124
+ });
125
+ return events;
126
+ } catch (e) {
127
+ const blockRangeErrors = [
128
+ "query exceeds max block",
129
+ "range is too large",
130
+ "eth_getLogs is limited to",
131
+ "Unable to perform request",
132
+ "Block range limit exceeded"
133
+ ];
134
+ if (e instanceof Error && blockRangeErrors.some((errorText) => e.message.includes(errorText))) {
135
+ const middle = (fromBlock + toBlock) / 2n;
136
+ const [firstHalfEvents, secondHalfEvents] = await Promise.all([
137
+ this.getEvents(eventName, fromBlock, middle, args),
138
+ this.getEvents(eventName, middle + 1n, toBlock, args)
139
+ ]);
140
+ return [...firstHalfEvents, ...secondHalfEvents];
141
+ }
142
+ throw e;
143
+ }
144
+ }
145
+ getContract() {
146
+ return this.contract;
147
+ }
148
+ }
149
+ export {
150
+ BaseContract
151
+ };