@gearbox-protocol/sdk 11.11.3 → 12.0.0-next.1

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