@gearbox-protocol/sdk 11.12.0 → 12.0.0-next.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (439) hide show
  1. package/dist/cjs/dev/create2.js +1 -1
  2. package/dist/cjs/dev/mint/AbstractMinter.js +2 -4
  3. package/dist/cjs/dev/mint/DealMinter.js +0 -3
  4. package/dist/cjs/dev/mint/DirectMinter.js +0 -3
  5. package/dist/cjs/dev/mint/FallbackMinter.js +1 -1
  6. package/dist/cjs/dev/mint/TransferMinter.js +0 -3
  7. package/dist/cjs/permissionless/bindings/address-provider.js +4 -6
  8. package/dist/cjs/permissionless/bindings/bytecode-repository.js +23 -25
  9. package/dist/cjs/permissionless/bindings/compressors/token-compressor.js +4 -4
  10. package/dist/cjs/permissionless/bindings/compressors/withdrawal-compressor.js +11 -17
  11. package/dist/cjs/permissionless/bindings/cross-chain-multisig.js +23 -22
  12. package/dist/cjs/permissionless/bindings/factory/abstract-factory.js +7 -4
  13. package/dist/cjs/permissionless/bindings/governance/batches-chain.js +4 -4
  14. package/dist/cjs/permissionless/bindings/governance/governor.js +30 -49
  15. package/dist/cjs/permissionless/bindings/governance/timelock.js +4 -4
  16. package/dist/cjs/permissionless/bindings/index.js +0 -2
  17. package/dist/cjs/permissionless/bindings/instance-manager.js +58 -77
  18. package/dist/cjs/permissionless/bindings/market-configurator-factory.js +4 -4
  19. package/dist/cjs/permissionless/bindings/market-configurator.js +71 -143
  20. package/dist/cjs/permissionless/bindings/price-feed-store.js +8 -17
  21. package/dist/cjs/permissionless/bindings/router/routing-manager.js +9 -15
  22. package/dist/cjs/permissionless/bindings/treasury-splitter.js +15 -27
  23. package/dist/cjs/permissionless/core/raw-tx.js +2 -2
  24. package/dist/cjs/permissionless/utils/format.js +2 -2
  25. package/dist/cjs/permissionless/utils/governance/timelock-txs.js +2 -2
  26. package/dist/cjs/permissionless/utils/index.js +0 -2
  27. package/dist/cjs/permissionless/utils/price-update/get-price-feeds.js +1 -2
  28. package/dist/cjs/permissionless/utils/price-update/get-price-update-tx.js +1 -2
  29. package/dist/cjs/permissionless/utils/price-update/get-prices.js +1 -2
  30. package/dist/cjs/permissionless/utils/price-update/get-updatable-feeds.js +2 -3
  31. package/dist/cjs/plugins/adapters/contracts/AbstractAdapter.js +2 -2
  32. package/dist/cjs/plugins/adapters/contracts/AccountMigratorAdapterContract.js +2 -2
  33. package/dist/cjs/plugins/adapters/contracts/BalancerV2VaultAdapterContract.js +2 -2
  34. package/dist/cjs/plugins/adapters/contracts/BalancerV3RouterAdapterContract.js +2 -2
  35. package/dist/cjs/plugins/adapters/contracts/BalancerV3WrapperAdapterContract.js +2 -2
  36. package/dist/cjs/plugins/adapters/contracts/CamelotV3AdapterContract.js +2 -2
  37. package/dist/cjs/plugins/adapters/contracts/ConvexV1BaseRewardPoolAdapterContract.js +2 -2
  38. package/dist/cjs/plugins/adapters/contracts/ConvexV1BoosterAdapterContract.js +2 -2
  39. package/dist/cjs/plugins/adapters/contracts/Curve2AssetsAdapterContract.js +2 -2
  40. package/dist/cjs/plugins/adapters/contracts/Curve3AssetsAdapterContract.js +2 -2
  41. package/dist/cjs/plugins/adapters/contracts/Curve4AssetsAdapterContract.js +2 -2
  42. package/dist/cjs/plugins/adapters/contracts/CurveV1AdapterDeposit.js +2 -2
  43. package/dist/cjs/plugins/adapters/contracts/CurveV1AdapterStETHContract.js +2 -2
  44. package/dist/cjs/plugins/adapters/contracts/CurveV1StableNGAdapterContract.js +2 -2
  45. package/dist/cjs/plugins/adapters/contracts/DaiUsdsAdapterContract.js +2 -2
  46. package/dist/cjs/plugins/adapters/contracts/ERC4626AdapterContract.js +2 -2
  47. package/dist/cjs/plugins/adapters/contracts/ERC4626ReferralAdapterContract.js +2 -2
  48. package/dist/cjs/plugins/adapters/contracts/EqualizerRouterAdapterContract.js +2 -2
  49. package/dist/cjs/plugins/adapters/contracts/FluidDexAdapterContract.js +2 -2
  50. package/dist/cjs/plugins/adapters/contracts/InfinifiGatewayAdapterContract.js +2 -2
  51. package/dist/cjs/plugins/adapters/contracts/InfinifiUnwindingGatewayAdapterContract.js +2 -2
  52. package/dist/cjs/plugins/adapters/contracts/InfraredVaultAdapterContract.js +2 -2
  53. package/dist/cjs/plugins/adapters/contracts/KelpLRTDepositPoolAdapterContract.js +2 -2
  54. package/dist/cjs/plugins/adapters/contracts/KelpLRTWithdrawalManagerAdapterContract.js +2 -2
  55. package/dist/cjs/plugins/adapters/contracts/KodiakIslandGatewayAdapterContract.js +2 -2
  56. package/dist/cjs/plugins/adapters/contracts/LidoV1AdapterContract.js +2 -2
  57. package/dist/cjs/plugins/adapters/contracts/MellowClaimerAdapterContract.js +2 -2
  58. package/dist/cjs/plugins/adapters/contracts/MellowDVVAdapterContract.js +2 -2
  59. package/dist/cjs/plugins/adapters/contracts/MellowDepositQueueAdapterContract.js +2 -2
  60. package/dist/cjs/plugins/adapters/contracts/MellowERC4626VaultAdapterContract.js +2 -2
  61. package/dist/cjs/plugins/adapters/contracts/MellowRedeemQueueAdapterContract.js +2 -2
  62. package/dist/cjs/plugins/adapters/contracts/MellowVaultAdapterContract.js +2 -2
  63. package/dist/cjs/plugins/adapters/contracts/MellowWrapperAdapterContract.js +2 -2
  64. package/dist/cjs/plugins/adapters/contracts/MidasIssuanceVaultAdapterContract.js +2 -2
  65. package/dist/cjs/plugins/adapters/contracts/MidasRedemptionVaultAdapterContract.js +2 -2
  66. package/dist/cjs/plugins/adapters/contracts/PendleRouterAdapterContract.js +2 -2
  67. package/dist/cjs/plugins/adapters/contracts/StakingRewardsAdapterContract.js +2 -2
  68. package/dist/cjs/plugins/adapters/contracts/TraderJoeRouterAdapterContract.js +2 -2
  69. package/dist/cjs/plugins/adapters/contracts/UniswapV2AdapterContract.js +5 -5
  70. package/dist/cjs/plugins/adapters/contracts/UniswapV3AdapterContract.js +22 -22
  71. package/dist/cjs/plugins/adapters/contracts/UniswapV4AdapterContract.js +2 -2
  72. package/dist/cjs/plugins/adapters/contracts/UpshiftVaultAdapterContract.js +2 -2
  73. package/dist/cjs/plugins/adapters/contracts/VelodromeV2AdapterContract.js +2 -2
  74. package/dist/cjs/plugins/adapters/contracts/WstETHV1AdapterContract.js +2 -2
  75. package/dist/cjs/plugins/adapters/contracts/YearnV2AdapterContract.js +2 -2
  76. package/dist/cjs/plugins/bots/deserializePartialLiquidationBotParams.js +49 -0
  77. package/dist/cjs/plugins/zappers/ZappersPlugin.js +1 -1
  78. package/dist/cjs/sdk/GearboxSDK.js +8 -110
  79. package/dist/cjs/sdk/accountMigration/AbstractMigrateCreditAccountsService.js +1 -4
  80. package/dist/cjs/sdk/accounts/AbstractCreditAccountsService.js +6 -8
  81. package/dist/cjs/sdk/base/BaseContract.js +195 -80
  82. package/dist/cjs/sdk/base/ChainContractsRegister.js +135 -0
  83. package/dist/cjs/sdk/base/Construct.js +87 -0
  84. package/dist/cjs/sdk/base/SDKConstruct.js +3 -29
  85. package/dist/cjs/sdk/base/TokensMeta.js +4 -4
  86. package/dist/cjs/sdk/base/index.js +4 -2
  87. package/dist/cjs/sdk/core/BotListV3Contract.js +2 -2
  88. package/dist/cjs/sdk/core/GearStakingV3Contract.js +2 -2
  89. package/dist/cjs/sdk/core/address-provider/AbstractAddressProviderContract.js +2 -2
  90. package/dist/cjs/sdk/core/address-provider/AddressProviderV300Contract.js +11 -6
  91. package/dist/cjs/sdk/core/address-provider/AddressProviderV310Contract.js +4 -4
  92. package/dist/cjs/sdk/market/MarketConfiguratorContract.js +5 -5
  93. package/dist/cjs/sdk/market/MarketRegister.js +7 -9
  94. package/dist/cjs/sdk/market/MarketSuite.js +2 -2
  95. package/dist/cjs/sdk/market/credit/CreditConfiguratorV300Contract.js +4 -3
  96. package/dist/cjs/sdk/market/credit/CreditConfiguratorV310Contract.js +4 -3
  97. package/dist/cjs/sdk/market/credit/CreditFacadeV300Contract.js +9 -9
  98. package/dist/cjs/sdk/market/credit/CreditFacadeV310Contract.js +8 -8
  99. package/dist/cjs/sdk/market/credit/CreditManagerV300Contract.js +5 -2
  100. package/dist/cjs/sdk/market/credit/CreditManagerV310Contract.js +5 -2
  101. package/dist/cjs/sdk/market/credit/CreditSuite.js +2 -3
  102. package/dist/cjs/sdk/market/loss-policy/AliasLossPolicyV310Contract.js +3 -1
  103. package/dist/cjs/sdk/market/loss-policy/LossPolicyContract.js +2 -2
  104. package/dist/cjs/sdk/market/loss-policy/createLossPolicy.js +1 -1
  105. package/dist/cjs/sdk/market/oracle/PriceOracleBaseContract.js +8 -26
  106. package/dist/cjs/sdk/market/oracle/createPriceOracle.js +1 -1
  107. package/dist/cjs/sdk/market/pool/GaugeContract.js +2 -2
  108. package/dist/cjs/sdk/market/pool/LinearInterestRateModelContract.js +2 -2
  109. package/dist/cjs/sdk/market/pool/PoolQuotaKeeperV300Contract.js +2 -2
  110. package/dist/cjs/sdk/market/pool/PoolQuotaKeeperV310Contract.js +2 -2
  111. package/dist/cjs/sdk/market/pool/PoolSuite.js +1 -1
  112. package/dist/cjs/sdk/market/pool/PoolV300Contract.js +5 -5
  113. package/dist/cjs/sdk/market/pool/PoolV310Contract.js +5 -5
  114. package/dist/cjs/sdk/market/pool/TumblerContract.js +2 -2
  115. package/dist/cjs/sdk/market/pool/createInterestRateModel.js +11 -15
  116. package/dist/cjs/sdk/market/pricefeeds/AbstractLPPriceFeed.js +2 -22
  117. package/dist/cjs/sdk/market/pricefeeds/AbstractPriceFeed.js +3 -3
  118. package/dist/cjs/sdk/market/pricefeeds/BalancerStablePriceFeed.js +2 -9
  119. package/dist/cjs/sdk/market/pricefeeds/BalancerWeightedPriceFeed.js +2 -9
  120. package/dist/cjs/sdk/market/pricefeeds/BoundedPriceFeed.js +6 -2
  121. package/dist/cjs/sdk/market/pricefeeds/CompositePriceFeed.js +2 -2
  122. package/dist/cjs/sdk/market/pricefeeds/ConstantPriceFeed.js +2 -2
  123. package/dist/cjs/sdk/market/pricefeeds/CurveCryptoPriceFeed.js +2 -9
  124. package/dist/cjs/sdk/market/pricefeeds/CurveStablePriceFeed.js +2 -9
  125. package/dist/cjs/sdk/market/pricefeeds/CurveUSDPriceFeed.js +2 -9
  126. package/dist/cjs/sdk/market/pricefeeds/Erc4626PriceFeed.js +2 -18
  127. package/dist/cjs/sdk/market/pricefeeds/ExternalPriceFeed.js +2 -2
  128. package/dist/cjs/sdk/market/pricefeeds/MellowLRTPriceFeed.js +2 -10
  129. package/dist/cjs/sdk/market/pricefeeds/PendleTWAPPTPriceFeed.js +2 -2
  130. package/dist/cjs/sdk/market/pricefeeds/PriceFeedRef.js +6 -4
  131. package/dist/cjs/sdk/market/pricefeeds/PriceFeedsRegister.js +2 -3
  132. package/dist/cjs/sdk/market/pricefeeds/PythPriceFeed.js +2 -2
  133. package/dist/cjs/sdk/market/pricefeeds/RedstonePriceFeed.js +3 -3
  134. package/dist/cjs/sdk/market/pricefeeds/WstETHPriceFeed.js +2 -9
  135. package/dist/cjs/sdk/market/pricefeeds/YearnPriceFeed.js +2 -9
  136. package/dist/cjs/sdk/market/pricefeeds/ZeroPriceFeed.js +2 -2
  137. package/dist/cjs/sdk/market/pricefeeds/updates/PriceUpdatesCache.js +17 -0
  138. package/dist/cjs/sdk/market/pricefeeds/updates/PythUpdater.js +7 -9
  139. package/dist/cjs/sdk/market/pricefeeds/updates/RedstoneUpdater.js +10 -12
  140. package/dist/cjs/sdk/router/AbstractRouterContract.js +5 -0
  141. package/dist/cjs/sdk/router/RouterV310Contract.js +3 -3
  142. package/dist/cjs/sdk/router/createRouter.js +4 -0
  143. package/dist/cjs/sdk/utils/abi-decode.js +58 -0
  144. package/dist/cjs/sdk/utils/index.js +2 -0
  145. package/dist/esm/dev/create2.js +2 -2
  146. package/dist/esm/dev/mint/AbstractMinter.js +3 -7
  147. package/dist/esm/dev/mint/DealMinter.js +0 -3
  148. package/dist/esm/dev/mint/DirectMinter.js +0 -3
  149. package/dist/esm/dev/mint/FallbackMinter.js +1 -1
  150. package/dist/esm/dev/mint/TransferMinter.js +0 -3
  151. package/dist/esm/permissionless/bindings/address-provider.js +7 -7
  152. package/dist/esm/permissionless/bindings/bytecode-repository.js +22 -24
  153. package/dist/esm/permissionless/bindings/compressors/token-compressor.js +3 -3
  154. package/dist/esm/permissionless/bindings/compressors/withdrawal-compressor.js +10 -16
  155. package/dist/esm/permissionless/bindings/cross-chain-multisig.js +20 -16
  156. package/dist/esm/permissionless/bindings/factory/abstract-factory.js +9 -4
  157. package/dist/esm/permissionless/bindings/governance/batches-chain.js +3 -3
  158. package/dist/esm/permissionless/bindings/governance/governor.js +28 -47
  159. package/dist/esm/permissionless/bindings/governance/timelock.js +3 -3
  160. package/dist/esm/permissionless/bindings/index.js +0 -1
  161. package/dist/esm/permissionless/bindings/instance-manager.js +53 -69
  162. package/dist/esm/permissionless/bindings/market-configurator-factory.js +3 -3
  163. package/dist/esm/permissionless/bindings/market-configurator.js +65 -137
  164. package/dist/esm/permissionless/bindings/price-feed-store.js +8 -14
  165. package/dist/esm/permissionless/bindings/router/routing-manager.js +8 -14
  166. package/dist/esm/permissionless/bindings/treasury-splitter.js +16 -26
  167. package/dist/esm/permissionless/core/raw-tx.js +1 -1
  168. package/dist/esm/permissionless/utils/format.js +1 -1
  169. package/dist/esm/permissionless/utils/governance/timelock-txs.js +1 -1
  170. package/dist/esm/permissionless/utils/index.js +0 -1
  171. package/dist/esm/permissionless/utils/price-update/get-price-feeds.js +4 -2
  172. package/dist/esm/permissionless/utils/price-update/get-price-update-tx.js +1 -1
  173. package/dist/esm/permissionless/utils/price-update/get-prices.js +1 -2
  174. package/dist/esm/permissionless/utils/price-update/get-updatable-feeds.js +1 -1
  175. package/dist/esm/plugins/adapters/contracts/AbstractAdapter.js +2 -2
  176. package/dist/esm/plugins/adapters/contracts/AccountMigratorAdapterContract.js +2 -2
  177. package/dist/esm/plugins/adapters/contracts/BalancerV2VaultAdapterContract.js +2 -2
  178. package/dist/esm/plugins/adapters/contracts/BalancerV3RouterAdapterContract.js +2 -2
  179. package/dist/esm/plugins/adapters/contracts/BalancerV3WrapperAdapterContract.js +2 -2
  180. package/dist/esm/plugins/adapters/contracts/CamelotV3AdapterContract.js +2 -2
  181. package/dist/esm/plugins/adapters/contracts/ConvexV1BaseRewardPoolAdapterContract.js +2 -2
  182. package/dist/esm/plugins/adapters/contracts/ConvexV1BoosterAdapterContract.js +2 -2
  183. package/dist/esm/plugins/adapters/contracts/Curve2AssetsAdapterContract.js +2 -2
  184. package/dist/esm/plugins/adapters/contracts/Curve3AssetsAdapterContract.js +2 -2
  185. package/dist/esm/plugins/adapters/contracts/Curve4AssetsAdapterContract.js +2 -2
  186. package/dist/esm/plugins/adapters/contracts/CurveV1AdapterDeposit.js +2 -2
  187. package/dist/esm/plugins/adapters/contracts/CurveV1AdapterStETHContract.js +2 -2
  188. package/dist/esm/plugins/adapters/contracts/CurveV1StableNGAdapterContract.js +2 -2
  189. package/dist/esm/plugins/adapters/contracts/DaiUsdsAdapterContract.js +2 -2
  190. package/dist/esm/plugins/adapters/contracts/ERC4626AdapterContract.js +2 -2
  191. package/dist/esm/plugins/adapters/contracts/ERC4626ReferralAdapterContract.js +2 -2
  192. package/dist/esm/plugins/adapters/contracts/EqualizerRouterAdapterContract.js +2 -2
  193. package/dist/esm/plugins/adapters/contracts/FluidDexAdapterContract.js +2 -2
  194. package/dist/esm/plugins/adapters/contracts/InfinifiGatewayAdapterContract.js +2 -2
  195. package/dist/esm/plugins/adapters/contracts/InfinifiUnwindingGatewayAdapterContract.js +2 -2
  196. package/dist/esm/plugins/adapters/contracts/InfraredVaultAdapterContract.js +2 -2
  197. package/dist/esm/plugins/adapters/contracts/KelpLRTDepositPoolAdapterContract.js +2 -2
  198. package/dist/esm/plugins/adapters/contracts/KelpLRTWithdrawalManagerAdapterContract.js +2 -2
  199. package/dist/esm/plugins/adapters/contracts/KodiakIslandGatewayAdapterContract.js +2 -2
  200. package/dist/esm/plugins/adapters/contracts/LidoV1AdapterContract.js +2 -2
  201. package/dist/esm/plugins/adapters/contracts/MellowClaimerAdapterContract.js +2 -2
  202. package/dist/esm/plugins/adapters/contracts/MellowDVVAdapterContract.js +2 -2
  203. package/dist/esm/plugins/adapters/contracts/MellowDepositQueueAdapterContract.js +2 -2
  204. package/dist/esm/plugins/adapters/contracts/MellowERC4626VaultAdapterContract.js +2 -2
  205. package/dist/esm/plugins/adapters/contracts/MellowRedeemQueueAdapterContract.js +2 -2
  206. package/dist/esm/plugins/adapters/contracts/MellowVaultAdapterContract.js +2 -2
  207. package/dist/esm/plugins/adapters/contracts/MellowWrapperAdapterContract.js +2 -2
  208. package/dist/esm/plugins/adapters/contracts/MidasIssuanceVaultAdapterContract.js +2 -2
  209. package/dist/esm/plugins/adapters/contracts/MidasRedemptionVaultAdapterContract.js +2 -2
  210. package/dist/esm/plugins/adapters/contracts/PendleRouterAdapterContract.js +2 -2
  211. package/dist/esm/plugins/adapters/contracts/StakingRewardsAdapterContract.js +2 -2
  212. package/dist/esm/plugins/adapters/contracts/TraderJoeRouterAdapterContract.js +2 -2
  213. package/dist/esm/plugins/adapters/contracts/UniswapV2AdapterContract.js +5 -5
  214. package/dist/esm/plugins/adapters/contracts/UniswapV3AdapterContract.js +22 -22
  215. package/dist/esm/plugins/adapters/contracts/UniswapV4AdapterContract.js +2 -2
  216. package/dist/esm/plugins/adapters/contracts/UpshiftVaultAdapterContract.js +2 -2
  217. package/dist/esm/plugins/adapters/contracts/VelodromeV2AdapterContract.js +2 -2
  218. package/dist/esm/plugins/adapters/contracts/WstETHV1AdapterContract.js +2 -2
  219. package/dist/esm/plugins/adapters/contracts/YearnV2AdapterContract.js +2 -2
  220. package/dist/esm/plugins/bots/deserializePartialLiquidationBotParams.js +29 -0
  221. package/dist/esm/plugins/zappers/ZappersPlugin.js +1 -1
  222. package/dist/esm/sdk/GearboxSDK.js +10 -112
  223. package/dist/esm/sdk/accountMigration/AbstractMigrateCreditAccountsService.js +1 -4
  224. package/dist/esm/sdk/accounts/AbstractCreditAccountsService.js +7 -9
  225. package/dist/esm/sdk/base/BaseContract.js +202 -81
  226. package/dist/esm/sdk/base/ChainContractsRegister.js +111 -0
  227. package/dist/esm/sdk/base/Construct.js +63 -0
  228. package/dist/esm/sdk/base/SDKConstruct.js +3 -29
  229. package/dist/esm/sdk/base/TokensMeta.js +4 -4
  230. package/dist/esm/sdk/base/index.js +2 -1
  231. package/dist/esm/sdk/core/BotListV3Contract.js +2 -2
  232. package/dist/esm/sdk/core/GearStakingV3Contract.js +2 -2
  233. package/dist/esm/sdk/core/address-provider/AbstractAddressProviderContract.js +2 -2
  234. package/dist/esm/sdk/core/address-provider/AddressProviderV300Contract.js +11 -6
  235. package/dist/esm/sdk/core/address-provider/AddressProviderV310Contract.js +4 -4
  236. package/dist/esm/sdk/market/MarketConfiguratorContract.js +5 -5
  237. package/dist/esm/sdk/market/MarketRegister.js +8 -10
  238. package/dist/esm/sdk/market/MarketSuite.js +2 -2
  239. package/dist/esm/sdk/market/credit/CreditConfiguratorV300Contract.js +4 -3
  240. package/dist/esm/sdk/market/credit/CreditConfiguratorV310Contract.js +4 -3
  241. package/dist/esm/sdk/market/credit/CreditFacadeV300Contract.js +9 -9
  242. package/dist/esm/sdk/market/credit/CreditFacadeV310Contract.js +8 -8
  243. package/dist/esm/sdk/market/credit/CreditManagerV300Contract.js +5 -2
  244. package/dist/esm/sdk/market/credit/CreditManagerV310Contract.js +5 -2
  245. package/dist/esm/sdk/market/credit/CreditSuite.js +2 -3
  246. package/dist/esm/sdk/market/loss-policy/AliasLossPolicyV310Contract.js +3 -1
  247. package/dist/esm/sdk/market/loss-policy/LossPolicyContract.js +5 -3
  248. package/dist/esm/sdk/market/loss-policy/createLossPolicy.js +1 -1
  249. package/dist/esm/sdk/market/oracle/PriceOracleBaseContract.js +8 -26
  250. package/dist/esm/sdk/market/oracle/createPriceOracle.js +1 -1
  251. package/dist/esm/sdk/market/pool/GaugeContract.js +2 -2
  252. package/dist/esm/sdk/market/pool/LinearInterestRateModelContract.js +2 -2
  253. package/dist/esm/sdk/market/pool/PoolQuotaKeeperV300Contract.js +2 -2
  254. package/dist/esm/sdk/market/pool/PoolQuotaKeeperV310Contract.js +2 -2
  255. package/dist/esm/sdk/market/pool/PoolSuite.js +1 -1
  256. package/dist/esm/sdk/market/pool/PoolV300Contract.js +5 -5
  257. package/dist/esm/sdk/market/pool/PoolV310Contract.js +5 -5
  258. package/dist/esm/sdk/market/pool/TumblerContract.js +2 -2
  259. package/dist/esm/sdk/market/pool/createInterestRateModel.js +11 -15
  260. package/dist/esm/sdk/market/pricefeeds/AbstractLPPriceFeed.js +2 -22
  261. package/dist/esm/sdk/market/pricefeeds/AbstractPriceFeed.js +3 -3
  262. package/dist/esm/sdk/market/pricefeeds/BalancerStablePriceFeed.js +3 -13
  263. package/dist/esm/sdk/market/pricefeeds/BalancerWeightedPriceFeed.js +3 -13
  264. package/dist/esm/sdk/market/pricefeeds/BoundedPriceFeed.js +6 -2
  265. package/dist/esm/sdk/market/pricefeeds/CompositePriceFeed.js +2 -2
  266. package/dist/esm/sdk/market/pricefeeds/ConstantPriceFeed.js +2 -2
  267. package/dist/esm/sdk/market/pricefeeds/CurveCryptoPriceFeed.js +3 -10
  268. package/dist/esm/sdk/market/pricefeeds/CurveStablePriceFeed.js +3 -10
  269. package/dist/esm/sdk/market/pricefeeds/CurveUSDPriceFeed.js +3 -10
  270. package/dist/esm/sdk/market/pricefeeds/Erc4626PriceFeed.js +2 -18
  271. package/dist/esm/sdk/market/pricefeeds/ExternalPriceFeed.js +2 -2
  272. package/dist/esm/sdk/market/pricefeeds/MellowLRTPriceFeed.js +3 -11
  273. package/dist/esm/sdk/market/pricefeeds/PendleTWAPPTPriceFeed.js +2 -2
  274. package/dist/esm/sdk/market/pricefeeds/PriceFeedRef.js +7 -5
  275. package/dist/esm/sdk/market/pricefeeds/PriceFeedsRegister.js +3 -9
  276. package/dist/esm/sdk/market/pricefeeds/PythPriceFeed.js +2 -2
  277. package/dist/esm/sdk/market/pricefeeds/RedstonePriceFeed.js +3 -3
  278. package/dist/esm/sdk/market/pricefeeds/WstETHPriceFeed.js +3 -10
  279. package/dist/esm/sdk/market/pricefeeds/YearnPriceFeed.js +3 -10
  280. package/dist/esm/sdk/market/pricefeeds/ZeroPriceFeed.js +2 -2
  281. package/dist/esm/sdk/market/pricefeeds/updates/PriceUpdatesCache.js +17 -0
  282. package/dist/esm/sdk/market/pricefeeds/updates/PythUpdater.js +8 -10
  283. package/dist/esm/sdk/market/pricefeeds/updates/RedstoneUpdater.js +11 -13
  284. package/dist/esm/sdk/router/AbstractRouterContract.js +5 -0
  285. package/dist/esm/sdk/router/RouterV310Contract.js +3 -3
  286. package/dist/esm/sdk/router/createRouter.js +4 -0
  287. package/dist/esm/sdk/utils/abi-decode.js +37 -0
  288. package/dist/esm/sdk/utils/index.js +1 -0
  289. package/dist/types/dev/create2.d.ts +2 -2
  290. package/dist/types/dev/mint/AbstractMinter.d.ts +3 -4
  291. package/dist/types/dev/mint/DealMinter.d.ts +0 -3
  292. package/dist/types/dev/mint/DirectMinter.d.ts +0 -3
  293. package/dist/types/dev/mint/TransferMinter.d.ts +0 -3
  294. package/dist/types/permissionless/bindings/address-provider.d.ts +4 -255
  295. package/dist/types/permissionless/bindings/bytecode-repository.d.ts +5 -6
  296. package/dist/types/permissionless/bindings/compressors/token-compressor.d.ts +3 -3
  297. package/dist/types/permissionless/bindings/compressors/withdrawal-compressor.d.ts +4 -5
  298. package/dist/types/permissionless/bindings/cross-chain-multisig.d.ts +7 -7
  299. package/dist/types/permissionless/bindings/factory/abstract-factory.d.ts +1 -1
  300. package/dist/types/permissionless/bindings/governance/batches-chain.d.ts +3 -4
  301. package/dist/types/permissionless/bindings/governance/governor.d.ts +6 -7
  302. package/dist/types/permissionless/bindings/governance/timelock.d.ts +3 -3
  303. package/dist/types/permissionless/bindings/governance/types.d.ts +1 -1
  304. package/dist/types/permissionless/bindings/index.d.ts +0 -1
  305. package/dist/types/permissionless/bindings/instance-manager.d.ts +6 -7
  306. package/dist/types/permissionless/bindings/market-configurator-factory.d.ts +4 -4
  307. package/dist/types/permissionless/bindings/market-configurator.d.ts +6 -6
  308. package/dist/types/permissionless/bindings/price-feed-store.d.ts +6 -7
  309. package/dist/types/permissionless/bindings/router/routing-manager.d.ts +4 -5
  310. package/dist/types/permissionless/bindings/treasury-splitter.d.ts +5 -6
  311. package/dist/types/permissionless/core/proposal.d.ts +1 -7
  312. package/dist/types/permissionless/utils/create2.d.ts +1 -1
  313. package/dist/types/permissionless/utils/governance/batch.d.ts +1 -1
  314. package/dist/types/permissionless/utils/index.d.ts +0 -1
  315. package/dist/types/permissionless/utils/price-update/get-price-feeds.d.ts +3 -3
  316. package/dist/types/permissionless/utils/price-update/get-price-update-tx.d.ts +2 -2
  317. package/dist/types/plugins/adapters/contracts/AbstractAdapter.d.ts +2 -2
  318. package/dist/types/plugins/adapters/contracts/AccountMigratorAdapterContract.d.ts +2 -2
  319. package/dist/types/plugins/adapters/contracts/BalancerV2VaultAdapterContract.d.ts +2 -2
  320. package/dist/types/plugins/adapters/contracts/BalancerV3RouterAdapterContract.d.ts +2 -2
  321. package/dist/types/plugins/adapters/contracts/BalancerV3WrapperAdapterContract.d.ts +2 -2
  322. package/dist/types/plugins/adapters/contracts/CamelotV3AdapterContract.d.ts +2 -2
  323. package/dist/types/plugins/adapters/contracts/ConvexV1BaseRewardPoolAdapterContract.d.ts +2 -2
  324. package/dist/types/plugins/adapters/contracts/ConvexV1BoosterAdapterContract.d.ts +2 -2
  325. package/dist/types/plugins/adapters/contracts/Curve2AssetsAdapterContract.d.ts +2 -2
  326. package/dist/types/plugins/adapters/contracts/Curve3AssetsAdapterContract.d.ts +2 -2
  327. package/dist/types/plugins/adapters/contracts/Curve4AssetsAdapterContract.d.ts +2 -2
  328. package/dist/types/plugins/adapters/contracts/CurveV1AdapterDeposit.d.ts +2 -2
  329. package/dist/types/plugins/adapters/contracts/CurveV1AdapterStETHContract.d.ts +2 -2
  330. package/dist/types/plugins/adapters/contracts/CurveV1StableNGAdapterContract.d.ts +2 -2
  331. package/dist/types/plugins/adapters/contracts/DaiUsdsAdapterContract.d.ts +2 -2
  332. package/dist/types/plugins/adapters/contracts/ERC4626AdapterContract.d.ts +2 -2
  333. package/dist/types/plugins/adapters/contracts/ERC4626ReferralAdapterContract.d.ts +2 -2
  334. package/dist/types/plugins/adapters/contracts/EqualizerRouterAdapterContract.d.ts +2 -2
  335. package/dist/types/plugins/adapters/contracts/FluidDexAdapterContract.d.ts +2 -2
  336. package/dist/types/plugins/adapters/contracts/InfinifiGatewayAdapterContract.d.ts +2 -2
  337. package/dist/types/plugins/adapters/contracts/InfinifiUnwindingGatewayAdapterContract.d.ts +2 -2
  338. package/dist/types/plugins/adapters/contracts/InfraredVaultAdapterContract.d.ts +2 -2
  339. package/dist/types/plugins/adapters/contracts/KelpLRTDepositPoolAdapterContract.d.ts +2 -2
  340. package/dist/types/plugins/adapters/contracts/KelpLRTWithdrawalManagerAdapterContract.d.ts +2 -2
  341. package/dist/types/plugins/adapters/contracts/KodiakIslandGatewayAdapterContract.d.ts +2 -2
  342. package/dist/types/plugins/adapters/contracts/LidoV1AdapterContract.d.ts +2 -2
  343. package/dist/types/plugins/adapters/contracts/MellowClaimerAdapterContract.d.ts +2 -2
  344. package/dist/types/plugins/adapters/contracts/MellowDVVAdapterContract.d.ts +2 -2
  345. package/dist/types/plugins/adapters/contracts/MellowDepositQueueAdapterContract.d.ts +2 -2
  346. package/dist/types/plugins/adapters/contracts/MellowERC4626VaultAdapterContract.d.ts +2 -2
  347. package/dist/types/plugins/adapters/contracts/MellowRedeemQueueAdapterContract.d.ts +2 -2
  348. package/dist/types/plugins/adapters/contracts/MellowVaultAdapterContract.d.ts +2 -2
  349. package/dist/types/plugins/adapters/contracts/MellowWrapperAdapterContract.d.ts +2 -2
  350. package/dist/types/plugins/adapters/contracts/MidasIssuanceVaultAdapterContract.d.ts +2 -2
  351. package/dist/types/plugins/adapters/contracts/MidasRedemptionVaultAdapterContract.d.ts +2 -2
  352. package/dist/types/plugins/adapters/contracts/PendleRouterAdapterContract.d.ts +2 -2
  353. package/dist/types/plugins/adapters/contracts/StakingRewardsAdapterContract.d.ts +2 -2
  354. package/dist/types/plugins/adapters/contracts/TraderJoeRouterAdapterContract.d.ts +2 -2
  355. package/dist/types/plugins/adapters/contracts/UniswapV2AdapterContract.d.ts +3 -3
  356. package/dist/types/plugins/adapters/contracts/UniswapV3AdapterContract.d.ts +3 -3
  357. package/dist/types/plugins/adapters/contracts/UniswapV4AdapterContract.d.ts +2 -2
  358. package/dist/types/plugins/adapters/contracts/UpshiftVaultAdapterContract.d.ts +2 -2
  359. package/dist/types/plugins/adapters/contracts/VelodromeV2AdapterContract.d.ts +2 -2
  360. package/dist/types/plugins/adapters/contracts/WstETHV1AdapterContract.d.ts +2 -2
  361. package/dist/types/plugins/adapters/contracts/YearnV2AdapterContract.d.ts +2 -2
  362. package/dist/types/plugins/bots/deserializePartialLiquidationBotParams.d.ts +3 -0
  363. package/dist/types/sdk/GearboxSDK.d.ts +5 -76
  364. package/dist/types/sdk/accountMigration/types.d.ts +1 -2
  365. package/dist/types/sdk/accounts/types.d.ts +4 -3
  366. package/dist/types/sdk/base/BaseContract.d.ts +72 -28
  367. package/dist/types/sdk/base/ChainContractsRegister.d.ts +57 -0
  368. package/dist/types/sdk/base/Construct.d.ts +38 -0
  369. package/dist/types/sdk/base/PlaceholderContract.d.ts +2 -2
  370. package/dist/types/sdk/base/SDKConstruct.d.ts +2 -16
  371. package/dist/types/sdk/base/TokensMeta.d.ts +2 -3
  372. package/dist/types/sdk/base/index.d.ts +2 -1
  373. package/dist/types/sdk/base/types.d.ts +50 -0
  374. package/dist/types/sdk/core/BotListV3Contract.d.ts +1 -1
  375. package/dist/types/sdk/core/GearStakingV3Contract.d.ts +1 -1
  376. package/dist/types/sdk/core/address-provider/AbstractAddressProviderContract.d.ts +3 -4
  377. package/dist/types/sdk/core/address-provider/AddressProviderV300Contract.d.ts +3 -3
  378. package/dist/types/sdk/core/address-provider/AddressProviderV310Contract.d.ts +3 -3
  379. package/dist/types/sdk/market/MarketConfiguratorContract.d.ts +2 -2
  380. package/dist/types/sdk/market/credit/CreditConfiguratorV300Contract.d.ts +3 -3
  381. package/dist/types/sdk/market/credit/CreditConfiguratorV310Contract.d.ts +3 -3
  382. package/dist/types/sdk/market/credit/CreditFacadeV300Contract.d.ts +3 -4
  383. package/dist/types/sdk/market/credit/CreditFacadeV310Contract.d.ts +3 -4
  384. package/dist/types/sdk/market/credit/CreditManagerV300Contract.d.ts +1 -1
  385. package/dist/types/sdk/market/credit/CreditManagerV310Contract.d.ts +1 -1
  386. package/dist/types/sdk/market/credit/CreditSuite.d.ts +1 -1
  387. package/dist/types/sdk/market/credit/types.d.ts +1 -2
  388. package/dist/types/sdk/market/loss-policy/AliasLossPolicyV310Contract.d.ts +1 -0
  389. package/dist/types/sdk/market/loss-policy/LossPolicyContract.d.ts +2 -3
  390. package/dist/types/sdk/market/oracle/PriceOracleBaseContract.d.ts +3 -12
  391. package/dist/types/sdk/market/oracle/types.d.ts +0 -10
  392. package/dist/types/sdk/market/pool/GaugeContract.d.ts +2 -3
  393. package/dist/types/sdk/market/pool/LinearInterestRateModelContract.d.ts +2 -3
  394. package/dist/types/sdk/market/pool/PoolQuotaKeeperV300Contract.d.ts +2 -3
  395. package/dist/types/sdk/market/pool/PoolQuotaKeeperV310Contract.d.ts +2 -3
  396. package/dist/types/sdk/market/pool/PoolV300Contract.d.ts +4 -5
  397. package/dist/types/sdk/market/pool/PoolV310Contract.d.ts +4 -5
  398. package/dist/types/sdk/market/pool/TumblerContract.d.ts +2 -3
  399. package/dist/types/sdk/market/pricefeeds/AbstractLPPriceFeed.d.ts +3 -8
  400. package/dist/types/sdk/market/pricefeeds/AbstractPriceFeed.d.ts +2 -3
  401. package/dist/types/sdk/market/pricefeeds/BalancerStablePriceFeed.d.ts +2 -3
  402. package/dist/types/sdk/market/pricefeeds/BalancerWeightedPriceFeed.d.ts +2 -3
  403. package/dist/types/sdk/market/pricefeeds/BoundedPriceFeed.d.ts +2 -2
  404. package/dist/types/sdk/market/pricefeeds/CompositePriceFeed.d.ts +2 -2
  405. package/dist/types/sdk/market/pricefeeds/ConstantPriceFeed.d.ts +2 -2
  406. package/dist/types/sdk/market/pricefeeds/CurveCryptoPriceFeed.d.ts +2 -3
  407. package/dist/types/sdk/market/pricefeeds/CurveStablePriceFeed.d.ts +2 -3
  408. package/dist/types/sdk/market/pricefeeds/CurveUSDPriceFeed.d.ts +2 -3
  409. package/dist/types/sdk/market/pricefeeds/Erc4626PriceFeed.d.ts +2 -3
  410. package/dist/types/sdk/market/pricefeeds/ExternalPriceFeed.d.ts +2 -2
  411. package/dist/types/sdk/market/pricefeeds/MellowLRTPriceFeed.d.ts +2 -3
  412. package/dist/types/sdk/market/pricefeeds/PendleTWAPPTPriceFeed.d.ts +2 -2
  413. package/dist/types/sdk/market/pricefeeds/PriceFeedRef.d.ts +3 -4
  414. package/dist/types/sdk/market/pricefeeds/PriceFeedsRegister.d.ts +1 -2
  415. package/dist/types/sdk/market/pricefeeds/PythPriceFeed.d.ts +2 -2
  416. package/dist/types/sdk/market/pricefeeds/RedstonePriceFeed.d.ts +2 -2
  417. package/dist/types/sdk/market/pricefeeds/WstETHPriceFeed.d.ts +2 -3
  418. package/dist/types/sdk/market/pricefeeds/YearnPriceFeed.d.ts +2 -3
  419. package/dist/types/sdk/market/pricefeeds/ZeroPriceFeed.d.ts +2 -2
  420. package/dist/types/sdk/market/pricefeeds/types.d.ts +0 -5
  421. package/dist/types/sdk/market/pricefeeds/updates/PriceUpdatesCache.d.ts +8 -1
  422. package/dist/types/sdk/router/AbstractRouterContract.d.ts +4 -1
  423. package/dist/types/sdk/router/types.d.ts +1 -2
  424. package/dist/types/sdk/sdk-legacy/core/creditAccount.d.ts +2 -2
  425. package/dist/types/sdk/utils/abi-decode.d.ts +10 -0
  426. package/dist/types/sdk/utils/index.d.ts +1 -0
  427. package/package.json +1 -1
  428. package/dist/cjs/permissionless/bindings/base-contract.js +0 -173
  429. package/dist/cjs/permissionless/utils/abi-decoder.js +0 -72
  430. package/dist/cjs/sdk/base/AddressLabeller.js +0 -49
  431. package/dist/cjs/sdk/base/IAddressLabeller.js +0 -16
  432. package/dist/esm/permissionless/bindings/base-contract.js +0 -151
  433. package/dist/esm/permissionless/utils/abi-decoder.js +0 -50
  434. package/dist/esm/sdk/base/AddressLabeller.js +0 -25
  435. package/dist/esm/sdk/base/IAddressLabeller.js +0 -0
  436. package/dist/types/permissionless/bindings/base-contract.d.ts +0 -23
  437. package/dist/types/permissionless/utils/abi-decoder.d.ts +0 -13
  438. package/dist/types/sdk/base/AddressLabeller.d.ts +0 -11
  439. package/dist/types/sdk/base/IAddressLabeller.d.ts +0 -9
@@ -5,7 +5,7 @@ import {
5
5
  http,
6
6
  parseEventLogs
7
7
  } from "viem";
8
- import { AddressLabeller, TokensMeta } from "./base/index.js";
8
+ import { ChainContractsRegister } from "./base/index.js";
9
9
  import { detectNetwork, getChain } from "./chain/index.js";
10
10
  import {
11
11
  ADDRESS_PROVIDER_V310,
@@ -30,7 +30,7 @@ import {
30
30
  PluginStateVersionError
31
31
  } from "./plugins/index.js";
32
32
  import { createRouter } from "./router/index.js";
33
- import { AddressMap, TypedObjectUtils, toAddress } from "./utils/index.js";
33
+ import { TypedObjectUtils, toAddress } from "./utils/index.js";
34
34
  import { Hooks } from "./utils/internal/index.js";
35
35
  import { getLogsSafe } from "./utils/viem/index.js";
36
36
  const ERR_NOT_ATTACHED = new Error("Gearbox SDK not attached");
@@ -69,10 +69,9 @@ async function attachClient(options, network) {
69
69
  }
70
70
  return createClient(options, { networkType, chainId });
71
71
  }
72
- class GearboxSDK {
72
+ class GearboxSDK extends ChainContractsRegister {
73
73
  #hooks = new Hooks();
74
74
  plugins;
75
- #client;
76
75
  // Block which was use for data query
77
76
  #currentBlock;
78
77
  #timestamp;
@@ -83,29 +82,11 @@ class GearboxSDK {
83
82
  // Collection of markets
84
83
  #marketRegister;
85
84
  #priceFeeds;
86
- logger;
87
85
  gasLimit;
88
- addressLabels = new AddressLabeller();
89
- /**
90
- * Interest rate models can be reused across chain (and SDK operates on chain level)
91
- * TODO: use whatever interface is necessary for InterestRateModels
92
- */
93
- interestRateModels = new AddressMap();
94
86
  /**
95
87
  * Will throw an error if contract type is not supported, otherwise will try to use generic contract first, if possible
96
88
  */
97
89
  strictContractTypes;
98
- /**
99
- * All contracts known to sdk
100
- */
101
- contracts = new AddressMap(
102
- void 0,
103
- "contracts"
104
- );
105
- /**
106
- * Token metadata such as symbol and decimals
107
- */
108
- tokensMeta;
109
90
  addHook = this.#hooks.addHook.bind(this.#hooks);
110
91
  removeHook = this.#hooks.removeHook.bind(this.#hooks);
111
92
  static async attach(options) {
@@ -158,17 +139,16 @@ class GearboxSDK {
158
139
  }).#hydrate(rest, state);
159
140
  }
160
141
  constructor(options) {
161
- this.logger = options.logger;
142
+ super(options.client, options.logger);
162
143
  this.strictContractTypes = options.strictContractTypes ?? false;
163
144
  this.plugins = options.plugins ?? {};
164
- this.#client = options.client;
165
145
  for (const plugin of Object.values(this.plugins)) {
166
146
  plugin.sdk = this;
167
147
  }
168
148
  if (options.gasLimit !== null) {
169
149
  this.gasLimit = options.gasLimit || 550000000n;
170
150
  }
171
- this.tokensMeta = new TokensMeta(this);
151
+ Object.assign(this, ChainContractsRegister.for(this.client, this.logger));
172
152
  }
173
153
  async #attach(opts) {
174
154
  const {
@@ -324,74 +304,9 @@ class GearboxSDK {
324
304
  timestamp: state.timestamp
325
305
  });
326
306
  }
327
- get client() {
328
- return this.#client;
329
- }
330
- /**
331
- * Replaces client inflight
332
- * You're responsible for all inconsistencies between new and old client
333
- * @param options
334
- */
335
- replaceClient(options, network) {
336
- this.#client = createClient(options, network);
337
- }
338
307
  get networkType() {
339
308
  return this.client.chain.network;
340
309
  }
341
- get chain() {
342
- return this.client.chain;
343
- }
344
- get chainId() {
345
- return this.client.chain.id;
346
- }
347
- /**
348
- * Converts contract call into some human-friendly string
349
- * This method is safe and should not throw
350
- * @param address
351
- * @param calldata
352
- * @returns
353
- */
354
- parseFunctionData(address, calldata) {
355
- const contract = this.contracts.get(address);
356
- return contract ? contract.parseFunctionData(calldata) : `unknown: ${address}.${calldata.slice(0, 10)}`;
357
- }
358
- /**
359
- * Converts multicalls into some human-friendly strings
360
- * This method is safe and should not throw
361
- * @param address
362
- * @param calldata
363
- * @returns
364
- */
365
- parseMultiCall(calls) {
366
- return calls.map(
367
- (call) => this.parseFunctionData(call.target, call.callData)
368
- );
369
- }
370
- /**
371
- * Return args, function, type and address name from contract call
372
- * @param address
373
- * @param calldata
374
- * @returns
375
- */
376
- parseFunctionDataToObject(address, calldata) {
377
- const contract = this.contracts.get(address);
378
- return contract ? {
379
- ...contract.parseFunctionDataToObject(calldata),
380
- address,
381
- type: contract.contractType
382
- } : null;
383
- }
384
- /**
385
- * Converts multicalls into call info
386
- * @param address
387
- * @param calldata
388
- * @returns
389
- */
390
- parseMultiCallToObject(calls) {
391
- return calls.map(
392
- (call) => this.parseFunctionDataToObject(call.target, call.callData)
393
- );
394
- }
395
310
  stateHuman(raw = true) {
396
311
  return {
397
312
  block: Number(this.currentBlock),
@@ -483,7 +398,7 @@ class GearboxSDK {
483
398
  address: watchAddresses
484
399
  });
485
400
  for (const log of logs) {
486
- const contract = this.contracts.get(log.address);
401
+ const contract = this.getContract(log.address);
487
402
  if (contract) {
488
403
  const event = parseEventLogs({
489
404
  abi: contract.abi,
@@ -572,17 +487,11 @@ class GearboxSDK {
572
487
  }
573
488
  get botListContract() {
574
489
  const addr = this.addressProvider.getAddress(AP_BOT_LIST, NO_VERSION);
575
- if (!this.contracts.has(addr)) {
576
- return new BotListContract(this, addr);
577
- }
578
- return this.contracts.get(addr);
490
+ return this.getContract(addr) ?? new BotListContract(this, addr);
579
491
  }
580
492
  get gearStakingContract() {
581
493
  const addr = this.addressProvider.getAddress(AP_GEAR_STAKING, NO_VERSION);
582
- if (!this.contracts.has(addr)) {
583
- return new GearStakingContract(this, addr);
584
- }
585
- return this.contracts.get(addr);
494
+ return this.getContract(addr) ?? new GearStakingContract(this, addr);
586
495
  }
587
496
  get marketRegister() {
588
497
  if (this.#marketRegister === void 0) {
@@ -609,7 +518,7 @@ class GearboxSDK {
609
518
  );
610
519
  facadeAddr = cm.creditFacade.address;
611
520
  }
612
- const facadeV = this.contracts.mustGet(facadeAddr).version;
521
+ const facadeV = this.mustGetContract(facadeAddr).version;
613
522
  routerRange = isV310(facadeV) ? VERSION_RANGE_310 : VERSION_RANGE_300;
614
523
  }
615
524
  const routerEntry = this.addressProvider.getLatest(AP_ROUTER, routerRange);
@@ -617,18 +526,7 @@ class GearboxSDK {
617
526
  throw new Error(`router not found in version range ${routerRange}`);
618
527
  }
619
528
  const [routerAddr, routerV] = routerEntry;
620
- if (!this.contracts.has(routerAddr)) {
621
- return createRouter(this, routerAddr, routerV);
622
- }
623
- return this.contracts.get(routerAddr);
624
- }
625
- /**
626
- * Helper to get human-friendly label for address
627
- * @param address
628
- * @returns
629
- */
630
- labelAddress(address) {
631
- return this.addressLabels.get(address);
529
+ return createRouter(this, routerAddr, routerV);
632
530
  }
633
531
  }
634
532
  export {
@@ -7,9 +7,7 @@ import { createCreditAccountService } from "../accounts/createCreditAccountServi
7
7
  import { SDKConstruct } from "../base/index.js";
8
8
  import { chains as CHAINS } from "../chain/chains.js";
9
9
  import { isV310 } from "../constants/versions.js";
10
- import { childLogger } from "../utils/index.js";
11
10
  class AbstractMigrateCreditAccountsService extends SDKConstruct {
12
- #logger;
13
11
  #version;
14
12
  #service;
15
13
  // TODO: HARDCODED
@@ -27,8 +25,7 @@ class AbstractMigrateCreditAccountsService extends SDKConstruct {
27
25
  super(sdk);
28
26
  this.#version = version;
29
27
  this.#service = createCreditAccountService(this.sdk, version);
30
- this.#logger = childLogger("MigrateCreditAccountsService", sdk.logger);
31
- this.#logger?.debug(
28
+ this.logger?.debug(
32
29
  `Created MigrateCreditAccountsService with version: ${this.#version}`
33
30
  );
34
31
  }
@@ -24,7 +24,7 @@ import {
24
24
  } from "../constants/index.js";
25
25
  import { assetsMap } from "../router/index.js";
26
26
  import { BigIntMath } from "../sdk-legacy/index.js";
27
- import { AddressMap, childLogger } from "../utils/index.js";
27
+ import { AddressMap } from "../utils/index.js";
28
28
  import { simulateWithPriceUpdates } from "../utils/viem/index.js";
29
29
  function getWithdrawalCompressorAddress(chainId) {
30
30
  const compressor = chainId === 1 ? "0xfB79b6713fe214B8748ED7b0db1f93E4f1aC9d29" : void 0;
@@ -33,7 +33,6 @@ function getWithdrawalCompressorAddress(chainId) {
33
33
  class AbstractCreditAccountService extends SDKConstruct {
34
34
  #compressor;
35
35
  #batchSize;
36
- #logger;
37
36
  constructor(sdk, options) {
38
37
  super(sdk);
39
38
  [this.#compressor] = sdk.addressProvider.mustGetLatest(
@@ -41,8 +40,7 @@ class AbstractCreditAccountService extends SDKConstruct {
41
40
  VERSION_RANGE_310
42
41
  );
43
42
  this.#batchSize = options?.batchSize;
44
- this.#logger = childLogger("CreditAccountsService", sdk.logger);
45
- this.#logger?.debug(
43
+ this.logger?.debug(
46
44
  `credit account compressor address: ${this.#compressor}`
47
45
  );
48
46
  }
@@ -144,7 +142,7 @@ class AbstractCreditAccountService extends SDKConstruct {
144
142
  offset = newOffset;
145
143
  } while (offset !== 0n);
146
144
  }
147
- this.#logger?.debug(
145
+ this.logger?.debug(
148
146
  `loaded ${allCAs.length} credit accounts (${allCAs.length - revertingOffset} reverting)`
149
147
  );
150
148
  return allCAs.sort((a, b) => Number(a.healthFactor - b.healthFactor));
@@ -278,7 +276,7 @@ class AbstractCreditAccountService extends SDKConstruct {
278
276
  lossPolicyData = await market.lossPolicy.getLiquidationData(
279
277
  account.creditAccount
280
278
  );
281
- this.#logger?.debug({ lossPolicyData }, "loss policy data");
279
+ this.logger?.debug({ lossPolicyData }, "loss policy data");
282
280
  }
283
281
  const tx = cm.creditFacade.liquidateCreditAccount(
284
282
  account.creditAccount,
@@ -836,7 +834,7 @@ class AbstractCreditAccountService extends SDKConstruct {
836
834
  gas: this.sdk.gasLimit
837
835
  });
838
836
  }
839
- this.#logger?.debug(
837
+ this.logger?.debug(
840
838
  {
841
839
  accounts: resp[0]?.length ?? 0,
842
840
  nextOffset: Number(resp[1])
@@ -916,7 +914,7 @@ class AbstractCreditAccountService extends SDKConstruct {
916
914
  });
917
915
  const tStr = Array.from(tokens).map((t) => this.labelAddress(t)).join(", ");
918
916
  const remark = ignoreReservePrices ? " main" : "";
919
- this.#logger?.debug(
917
+ this.logger?.debug(
920
918
  { account: creditAccount?.creditAccount, manager: cm.name },
921
919
  `generating price feed updates for ${tStr} from ${priceFeeds.length}${remark} price feeds`
922
920
  );
@@ -932,7 +930,7 @@ class AbstractCreditAccountService extends SDKConstruct {
932
930
  const market = this.sdk.marketRegister.findByCreditManager(creditManager);
933
931
  const cm = this.sdk.marketRegister.findCreditManager(creditManager);
934
932
  const update = await this.getUpdateForAccount(options);
935
- this.#logger?.debug(
933
+ this.logger?.debug(
936
934
  { account: creditAccount?.creditAccount, manager: cm.name },
937
935
  `getting on demand price updates from ${update.txs.length} txs`
938
936
  );
@@ -1,65 +1,66 @@
1
- import { decodeFunctionData, getAddress, getContract, isHex } from "viem";
1
+ import {
2
+ BaseError,
3
+ decodeFunctionData,
4
+ getAbiItem,
5
+ getAddress,
6
+ getContract,
7
+ isHex
8
+ } from "viem";
2
9
  import { errorAbis } from "../../abi/errors.js";
3
- import { iVersionAbi } from "../../abi/iVersion.js";
4
- import { ADDRESS_0X0 } from "../constants/index.js";
5
10
  import {
6
11
  bytes32ToString,
7
- childLogger,
8
12
  createRawTx,
13
+ functionArgsToMap,
9
14
  json_stringify
10
15
  } from "../utils/index.js";
11
- import { SDKConstruct } from "./SDKConstruct.js";
12
- class BaseContract extends SDKConstruct {
16
+ import { Construct } from "./Construct.js";
17
+ class ContractParseError extends BaseError {
18
+ address;
19
+ callData;
20
+ selector;
21
+ constructor(cause, options) {
22
+ const { address, callData, contractName } = options;
23
+ const selector = callData.slice(0, 10);
24
+ super(
25
+ `failed to parse function data for ${contractName ?? "unknown contract"} at ${address} with selector ${selector}`,
26
+ {
27
+ cause
28
+ }
29
+ );
30
+ this.callData = callData;
31
+ this.selector = selector;
32
+ this.address = address;
33
+ }
34
+ }
35
+ class BaseContract extends Construct {
13
36
  contract;
14
37
  abi;
15
- logger;
16
38
  contractType;
17
39
  version;
18
- #name;
19
- #address;
20
- constructor(sdk, args) {
21
- super(sdk);
40
+ address;
41
+ name;
42
+ constructor({ client, logger }, args) {
43
+ super({ client, logger });
22
44
  this.abi = args.abi;
23
- this.#address = getAddress(args.addr);
45
+ this.address = getAddress(args.addr);
24
46
  this.contract = getContract({
25
47
  address: this.address,
26
48
  // add exceptions for better error decoding
27
49
  abi: [...this.abi, ...errorAbis],
28
- client: {
29
- public: sdk.client
30
- }
50
+ client
31
51
  });
32
52
  this.version = Number(args.version || 0);
33
53
  this.contractType = args.contractType ?? "";
34
54
  if (isHex(this.contractType)) {
35
55
  this.contractType = bytes32ToString(this.contractType);
36
56
  }
37
- this.name = this.#name = args.name || this.contractType || this.#address;
38
- this.logger = childLogger(this.name, sdk.logger);
39
- sdk.contracts.upsert(this.address, this);
40
- }
41
- get address() {
42
- return this.#address;
43
- }
44
- set address(address) {
45
- if (this.#address !== ADDRESS_0X0) {
46
- throw new Error(`Address can't be changed, currently: ${this.#address}`);
47
- }
48
- this.#address = getAddress(address);
49
- this.sdk.addressLabels.set(address, this.#name);
50
- }
51
- get name() {
52
- return this.#name;
53
- }
54
- set name(name) {
55
- this.#name = name;
56
- if (this.#address !== ADDRESS_0X0) {
57
- this.sdk.addressLabels.set(this.#address, name);
58
- }
57
+ this.name = args.name || this.contractType || this.address || this.constructor.name;
58
+ this.register.setContract(this.address, this);
59
+ this.register.setAddressLabel(this.address, this.name);
59
60
  }
60
61
  stateHuman(_ = true) {
61
62
  return {
62
- address: this.sdk.labelAddress(this.address),
63
+ address: this.labelAddress(this.address),
63
64
  version: this.version,
64
65
  contractType: this.contractType
65
66
  };
@@ -71,14 +72,68 @@ class BaseContract extends SDKConstruct {
71
72
  processLog(_log) {
72
73
  }
73
74
  /**
74
- * Converts contract calldata to some human-friendly string
75
- * This is safe function which should not throw
75
+ * Return parsed args and function name from calldata belonging to this contract
76
+ * Target of the call is always this contract, but args can be parsed into calls to other contracts (de-facto recursive ParsedCall)
76
77
  * @param calldata
77
78
  * @returns
78
79
  */
79
80
  parseFunctionData(calldata) {
80
81
  try {
81
82
  return this.mustParseFunctionData(calldata);
83
+ } catch (e) {
84
+ this.logger?.warn(e);
85
+ return {
86
+ chainId: this.chainId,
87
+ target: this.address,
88
+ contractType: this.contractType,
89
+ label: this.name,
90
+ functionName: `Unknown function: ${calldata}`,
91
+ args: {}
92
+ };
93
+ }
94
+ }
95
+ /**
96
+ * Same as {@link parseFunctionData}, but throws {@link ContractParseError} if error occurs
97
+ * @param callData
98
+ * @returns
99
+ */
100
+ mustParseFunctionData(callData) {
101
+ try {
102
+ const decoded = decodeFunctionData({
103
+ abi: this.abi,
104
+ data: callData
105
+ });
106
+ return this.wrapParseCall(
107
+ decoded.functionName,
108
+ this.parseFunctionParams(decoded)
109
+ );
110
+ } catch (e) {
111
+ throw new ContractParseError(e, {
112
+ address: this.address,
113
+ callData,
114
+ contractName: this.name
115
+ });
116
+ }
117
+ }
118
+ /**
119
+ * Parses viem-decoded contract function arguments to a map of named arguments
120
+ * This default implementation uses abi-based parsing, you can override it,
121
+ * but use this super implementation as fallback
122
+ * @param params
123
+ * @returns
124
+ */
125
+ parseFunctionParams(params) {
126
+ return functionArgsToMap(this.abi, params.functionName, params.args);
127
+ }
128
+ /**
129
+ * Converts contract calldata to some human-friendly string
130
+ * This is safe function which should not throw
131
+ * @param calldata
132
+ * @returns
133
+ */
134
+ stringifyFunctionData(calldata) {
135
+ try {
136
+ return this.mustStringifyFunctionData(calldata);
82
137
  } catch (e) {
83
138
  const selector = calldata.slice(0, 10);
84
139
  this.logger?.warn(
@@ -87,59 +142,64 @@ class BaseContract extends SDKConstruct {
87
142
  return `unknown: ${this.labelAddress(this.address)}.${selector}`;
88
143
  }
89
144
  }
90
- mustParseFunctionData(calldata) {
145
+ /**
146
+ * Same as {@link stingifyFunctionData}, but throws if error occurs
147
+ * @param calldata
148
+ * @returns
149
+ */
150
+ mustStringifyFunctionData(calldata) {
91
151
  const decoded = decodeFunctionData({
92
152
  abi: this.abi,
93
153
  data: calldata
94
154
  });
95
- const abiItem = this.abi.find(
96
- (abiItem2) => abiItem2?.name === decoded.functionName && abiItem2?.type === "function"
97
- );
98
- if (!abiItem) {
155
+ const abiItem = getAbiItem({
156
+ abi: this.abi,
157
+ name: decoded.functionName,
158
+ args: decoded.args
159
+ });
160
+ if (!abiItem || abiItem.type !== "function") {
99
161
  return `Unknown function: ${decoded.functionName}`;
100
162
  }
101
- let paramsHuman;
102
- const humanParams = this.parseFunctionParams(decoded);
103
- if (humanParams) {
104
- paramsHuman = humanParams.map((value, i) => {
105
- return `${abiItem.inputs[i].name}: ${value}`;
106
- });
107
- } else if (Array.isArray(decoded.args)) {
108
- paramsHuman = decoded.args.map((value, i) => {
109
- return `${abiItem.inputs[i].name}: ${abiItem.inputs[i].type === "address" ? this.labelAddress(value) : abiItem.inputs[i].type.startsWith("tuple") ? json_stringify(value) : value}`;
110
- });
111
- } else {
112
- paramsHuman = Object.entries(decoded.args || {}).map(
113
- ([key, value]) => `${key}: ${value}`
114
- );
115
- }
116
- return `${this.name}.${decoded.functionName}({${paramsHuman.join(", ")}})`;
163
+ const params = this.stringifyFunctionParams(decoded).map(
164
+ (v, i) => `${abiItem.inputs[i].name}: ${v}`
165
+ );
166
+ return `${this.name}.${decoded.functionName}({${params.join(", ")}})`;
117
167
  }
118
168
  /**
119
- * Return args and function name from calldata
120
- * @param calldata
169
+ * Pretty-prints values of function arguments (do not include parameter names)
170
+ * Can be overriden in classes, but use this super implementation as fallback
171
+ *
172
+ * @param decoded - Function arguments decoded by viem
121
173
  * @returns
122
174
  */
123
- parseFunctionDataToObject(calldata) {
124
- const decoded = decodeFunctionData({
175
+ stringifyFunctionParams(decoded) {
176
+ const abiItem = getAbiItem({
125
177
  abi: this.abi,
126
- data: calldata
178
+ name: decoded.functionName,
179
+ args: decoded.args
127
180
  });
128
- return decoded;
129
- }
130
- parseFunctionParams(_params) {
131
- return void 0;
181
+ if (Array.isArray(decoded.args)) {
182
+ return decoded.args.map((v, i) => {
183
+ return abiItem.inputs[i].type === "address" ? this.labelAddress(v) : abiItem.inputs[i].type.startsWith("tuple") ? json_stringify(v) : `${v}`;
184
+ });
185
+ }
186
+ return Object.entries(decoded.args || {}).map((v) => `${v}`);
132
187
  }
133
- async getVersion() {
134
- this.version = Number(
135
- await this.sdk.client.readContract({
136
- abi: iVersionAbi,
137
- functionName: "version",
138
- address: this.address
139
- })
140
- );
141
- return this.version;
188
+ wrapParseCall(functionName, args) {
189
+ return {
190
+ chainId: this.chainId,
191
+ target: this.address,
192
+ contractType: this.contractType,
193
+ label: this.register.labelAddress(this.address),
194
+ functionName,
195
+ args
196
+ };
142
197
  }
198
+ /**
199
+ * Creates a raw transaction for a function in this contract
200
+ * @param parameters
201
+ * @returns
202
+ */
143
203
  createRawTx(parameters) {
144
204
  const { description: argsDescription } = parameters;
145
205
  const tx = createRawTx(
@@ -150,10 +210,71 @@ class BaseContract extends SDKConstruct {
150
210
  },
151
211
  argsDescription
152
212
  );
153
- tx.description = argsDescription || this.parseFunctionData(tx.callData);
213
+ tx.description = argsDescription || this.stringifyFunctionData(tx.callData);
154
214
  return tx;
155
215
  }
216
+ /**
217
+ * Get events in safe manner, by bisecting block range if needed
218
+ *
219
+ * @deprecated TODO: this should be moved to viem transport
220
+ *
221
+ * @param eventName
222
+ * @param fromBlock
223
+ * @param toBlock
224
+ * @param args
225
+ * @param chunkSize
226
+ * @returns
227
+ */
228
+ async getEvents(eventName, fromBlock, toBlock, args, chunkSize) {
229
+ if (chunkSize) {
230
+ const chunkSizeBigint = BigInt(chunkSize);
231
+ const getEventPromises = [];
232
+ for (let i = fromBlock; i < toBlock; i += chunkSizeBigint) {
233
+ getEventPromises.push(
234
+ this.client.getContractEvents({
235
+ address: this.address,
236
+ fromBlock: i,
237
+ toBlock: i + chunkSizeBigint,
238
+ abi: this.abi,
239
+ eventName,
240
+ args
241
+ })
242
+ );
243
+ }
244
+ const events = (await Promise.all(getEventPromises)).flat();
245
+ return events;
246
+ }
247
+ try {
248
+ const events = await this.client.getContractEvents({
249
+ address: this.address,
250
+ fromBlock,
251
+ toBlock,
252
+ abi: this.abi,
253
+ eventName,
254
+ args
255
+ });
256
+ return events;
257
+ } catch (e) {
258
+ const blockRangeErrors = [
259
+ "query exceeds max block",
260
+ "range is too large",
261
+ "eth_getLogs is limited to",
262
+ "Unable to perform request",
263
+ "Block range limit exceeded"
264
+ ];
265
+ if (e instanceof Error && blockRangeErrors.some((errorText) => e.message.includes(errorText))) {
266
+ const middle = (fromBlock + toBlock) / 2n;
267
+ const [firstHalfEvents, secondHalfEvents] = await Promise.all([
268
+ this.getEvents(eventName, fromBlock, middle, args),
269
+ this.getEvents(eventName, middle + 1n, toBlock, args)
270
+ ]);
271
+ return [...firstHalfEvents, ...secondHalfEvents];
272
+ }
273
+ throw e;
274
+ }
275
+ }
156
276
  }
157
277
  export {
158
- BaseContract
278
+ BaseContract,
279
+ ContractParseError
159
280
  };