@gearbox-protocol/sdk 11.8.9 → 11.9.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 (446) 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 +21 -8
  77. package/dist/cjs/plugins/bots/PartialLiquidationBotBaseContract.js +17 -22
  78. package/dist/cjs/plugins/bots/PartialLiquidationBotV300Contract.js +4 -20
  79. package/dist/cjs/plugins/bots/deserializePartialLiquidationBotParams.js +49 -0
  80. package/dist/cjs/plugins/delayed-withdrawal/DelayedWithdrawalPlugin.js +3 -78
  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/PythUpdater.js +6 -8
  142. package/dist/cjs/sdk/market/pricefeeds/updates/RedstoneUpdater.js +9 -11
  143. package/dist/cjs/sdk/router/AbstractRouterContract.js +5 -0
  144. package/dist/cjs/sdk/router/RouterV310Contract.js +3 -3
  145. package/dist/cjs/sdk/router/createRouter.js +4 -0
  146. package/dist/cjs/sdk/utils/abi-decode.js +58 -0
  147. package/dist/cjs/sdk/utils/index.js +2 -0
  148. package/dist/esm/dev/create2.js +2 -2
  149. package/dist/esm/dev/mint/AbstractMinter.js +3 -7
  150. package/dist/esm/dev/mint/DealMinter.js +0 -3
  151. package/dist/esm/dev/mint/DirectMinter.js +0 -3
  152. package/dist/esm/dev/mint/FallbackMinter.js +1 -1
  153. package/dist/esm/dev/mint/TransferMinter.js +0 -3
  154. package/dist/esm/permissionless/bindings/address-provider.js +7 -7
  155. package/dist/esm/permissionless/bindings/bytecode-repository.js +22 -24
  156. package/dist/esm/permissionless/bindings/compressors/token-compressor.js +3 -3
  157. package/dist/esm/permissionless/bindings/compressors/withdrawal-compressor.js +10 -16
  158. package/dist/esm/permissionless/bindings/cross-chain-multisig.js +20 -16
  159. package/dist/esm/permissionless/bindings/factory/abstract-factory.js +9 -4
  160. package/dist/esm/permissionless/bindings/governance/batches-chain.js +3 -3
  161. package/dist/esm/permissionless/bindings/governance/governor.js +28 -47
  162. package/dist/esm/permissionless/bindings/governance/timelock.js +3 -3
  163. package/dist/esm/permissionless/bindings/index.js +0 -1
  164. package/dist/esm/permissionless/bindings/instance-manager.js +53 -69
  165. package/dist/esm/permissionless/bindings/market-configurator-factory.js +3 -3
  166. package/dist/esm/permissionless/bindings/market-configurator.js +65 -137
  167. package/dist/esm/permissionless/bindings/price-feed-store.js +8 -14
  168. package/dist/esm/permissionless/bindings/router/routing-manager.js +8 -14
  169. package/dist/esm/permissionless/bindings/treasury-splitter.js +15 -22
  170. package/dist/esm/permissionless/core/raw-tx.js +1 -1
  171. package/dist/esm/permissionless/utils/format.js +1 -1
  172. package/dist/esm/permissionless/utils/governance/timelock-txs.js +1 -1
  173. package/dist/esm/permissionless/utils/index.js +0 -1
  174. package/dist/esm/permissionless/utils/price-update/get-price-feeds.js +4 -2
  175. package/dist/esm/permissionless/utils/price-update/get-price-update-tx.js +1 -1
  176. package/dist/esm/permissionless/utils/price-update/get-prices.js +1 -2
  177. package/dist/esm/permissionless/utils/price-update/get-updatable-feeds.js +1 -1
  178. package/dist/esm/plugins/adapters/contracts/AbstractAdapter.js +2 -2
  179. package/dist/esm/plugins/adapters/contracts/AccountMigratorAdapterContract.js +2 -2
  180. package/dist/esm/plugins/adapters/contracts/BalancerV2VaultAdapterContract.js +2 -2
  181. package/dist/esm/plugins/adapters/contracts/BalancerV3RouterAdapterContract.js +2 -2
  182. package/dist/esm/plugins/adapters/contracts/BalancerV3WrapperAdapterContract.js +2 -2
  183. package/dist/esm/plugins/adapters/contracts/CamelotV3AdapterContract.js +2 -2
  184. package/dist/esm/plugins/adapters/contracts/ConvexV1BaseRewardPoolAdapterContract.js +2 -2
  185. package/dist/esm/plugins/adapters/contracts/ConvexV1BoosterAdapterContract.js +2 -2
  186. package/dist/esm/plugins/adapters/contracts/Curve2AssetsAdapterContract.js +2 -2
  187. package/dist/esm/plugins/adapters/contracts/Curve3AssetsAdapterContract.js +2 -2
  188. package/dist/esm/plugins/adapters/contracts/Curve4AssetsAdapterContract.js +2 -2
  189. package/dist/esm/plugins/adapters/contracts/CurveV1AdapterDeposit.js +2 -2
  190. package/dist/esm/plugins/adapters/contracts/CurveV1AdapterStETHContract.js +2 -2
  191. package/dist/esm/plugins/adapters/contracts/CurveV1StableNGAdapterContract.js +2 -2
  192. package/dist/esm/plugins/adapters/contracts/DaiUsdsAdapterContract.js +2 -2
  193. package/dist/esm/plugins/adapters/contracts/ERC4626AdapterContract.js +2 -2
  194. package/dist/esm/plugins/adapters/contracts/ERC4626ReferralAdapterContract.js +2 -2
  195. package/dist/esm/plugins/adapters/contracts/EqualizerRouterAdapterContract.js +2 -2
  196. package/dist/esm/plugins/adapters/contracts/FluidDexAdapterContract.js +2 -2
  197. package/dist/esm/plugins/adapters/contracts/InfinifiGatewayAdapterContract.js +2 -2
  198. package/dist/esm/plugins/adapters/contracts/InfinifiUnwindingGatewayAdapterContract.js +2 -2
  199. package/dist/esm/plugins/adapters/contracts/InfraredVaultAdapterContract.js +2 -2
  200. package/dist/esm/plugins/adapters/contracts/KelpLRTDepositPoolAdapterContract.js +2 -2
  201. package/dist/esm/plugins/adapters/contracts/KelpLRTWithdrawalManagerAdapterContract.js +2 -2
  202. package/dist/esm/plugins/adapters/contracts/KodiakIslandGatewayAdapterContract.js +2 -2
  203. package/dist/esm/plugins/adapters/contracts/LidoV1AdapterContract.js +2 -2
  204. package/dist/esm/plugins/adapters/contracts/MellowClaimerAdapterContract.js +2 -2
  205. package/dist/esm/plugins/adapters/contracts/MellowDVVAdapterContract.js +2 -2
  206. package/dist/esm/plugins/adapters/contracts/MellowDepositQueueAdapterContract.js +2 -2
  207. package/dist/esm/plugins/adapters/contracts/MellowERC4626VaultAdapterContract.js +2 -2
  208. package/dist/esm/plugins/adapters/contracts/MellowRedeemQueueAdapterContract.js +2 -2
  209. package/dist/esm/plugins/adapters/contracts/MellowVaultAdapterContract.js +2 -2
  210. package/dist/esm/plugins/adapters/contracts/MellowWrapperAdapterContract.js +2 -2
  211. package/dist/esm/plugins/adapters/contracts/MidasIssuanceVaultAdapterContract.js +2 -2
  212. package/dist/esm/plugins/adapters/contracts/MidasRedemptionVaultAdapterContract.js +2 -2
  213. package/dist/esm/plugins/adapters/contracts/PendleRouterAdapterContract.js +2 -2
  214. package/dist/esm/plugins/adapters/contracts/StakingRewardsAdapterContract.js +2 -2
  215. package/dist/esm/plugins/adapters/contracts/TraderJoeRouterAdapterContract.js +2 -2
  216. package/dist/esm/plugins/adapters/contracts/UniswapV2AdapterContract.js +5 -5
  217. package/dist/esm/plugins/adapters/contracts/UniswapV3AdapterContract.js +22 -22
  218. package/dist/esm/plugins/adapters/contracts/UniswapV4AdapterContract.js +2 -2
  219. package/dist/esm/plugins/adapters/contracts/UpshiftVaultAdapterContract.js +2 -2
  220. package/dist/esm/plugins/adapters/contracts/VelodromeV2AdapterContract.js +2 -2
  221. package/dist/esm/plugins/adapters/contracts/WstETHV1AdapterContract.js +2 -2
  222. package/dist/esm/plugins/adapters/contracts/YearnV2AdapterContract.js +2 -2
  223. package/dist/esm/plugins/bots/BotsPlugin.js +11 -8
  224. package/dist/esm/plugins/bots/PartialLiquidationBotBaseContract.js +7 -22
  225. package/dist/esm/plugins/bots/PartialLiquidationBotV300Contract.js +4 -20
  226. package/dist/esm/plugins/bots/deserializePartialLiquidationBotParams.js +29 -0
  227. package/dist/esm/plugins/delayed-withdrawal/DelayedWithdrawalPlugin.js +3 -78
  228. package/dist/esm/plugins/zappers/ZappersPlugin.js +1 -1
  229. package/dist/esm/sdk/GearboxSDK.js +10 -112
  230. package/dist/esm/sdk/accountMigration/AbstractMigrateCreditAccountsService.js +1 -4
  231. package/dist/esm/sdk/accounts/AbstractCreditAccountsService.js +7 -9
  232. package/dist/esm/sdk/base/BaseContract.js +202 -81
  233. package/dist/esm/sdk/base/ChainContractsRegister.js +111 -0
  234. package/dist/esm/sdk/base/Construct.js +63 -0
  235. package/dist/esm/sdk/base/SDKConstruct.js +3 -29
  236. package/dist/esm/sdk/base/TokensMeta.js +4 -4
  237. package/dist/esm/sdk/base/index.js +2 -1
  238. package/dist/esm/sdk/core/BotListV3Contract.js +2 -2
  239. package/dist/esm/sdk/core/GearStakingV3Contract.js +2 -2
  240. package/dist/esm/sdk/core/address-provider/AbstractAddressProviderContract.js +2 -2
  241. package/dist/esm/sdk/core/address-provider/AddressProviderV300Contract.js +11 -6
  242. package/dist/esm/sdk/core/address-provider/AddressProviderV310Contract.js +4 -4
  243. package/dist/esm/sdk/market/MarketConfiguratorContract.js +5 -5
  244. package/dist/esm/sdk/market/MarketRegister.js +8 -10
  245. package/dist/esm/sdk/market/MarketSuite.js +2 -2
  246. package/dist/esm/sdk/market/credit/CreditConfiguratorV300Contract.js +4 -3
  247. package/dist/esm/sdk/market/credit/CreditConfiguratorV310Contract.js +4 -3
  248. package/dist/esm/sdk/market/credit/CreditFacadeV300Contract.js +9 -9
  249. package/dist/esm/sdk/market/credit/CreditFacadeV310Contract.js +8 -8
  250. package/dist/esm/sdk/market/credit/CreditManagerV300Contract.js +5 -2
  251. package/dist/esm/sdk/market/credit/CreditManagerV310Contract.js +5 -2
  252. package/dist/esm/sdk/market/credit/CreditSuite.js +2 -3
  253. package/dist/esm/sdk/market/loss-policy/AliasLossPolicyV310Contract.js +3 -1
  254. package/dist/esm/sdk/market/loss-policy/LossPolicyContract.js +5 -3
  255. package/dist/esm/sdk/market/loss-policy/createLossPolicy.js +1 -1
  256. package/dist/esm/sdk/market/oracle/PriceOracleBaseContract.js +8 -26
  257. package/dist/esm/sdk/market/oracle/createPriceOracle.js +1 -1
  258. package/dist/esm/sdk/market/pool/GaugeContract.js +2 -2
  259. package/dist/esm/sdk/market/pool/LinearInterestRateModelContract.js +2 -2
  260. package/dist/esm/sdk/market/pool/PoolQuotaKeeperV300Contract.js +2 -2
  261. package/dist/esm/sdk/market/pool/PoolQuotaKeeperV310Contract.js +2 -2
  262. package/dist/esm/sdk/market/pool/PoolSuite.js +1 -1
  263. package/dist/esm/sdk/market/pool/PoolV300Contract.js +5 -5
  264. package/dist/esm/sdk/market/pool/PoolV310Contract.js +5 -5
  265. package/dist/esm/sdk/market/pool/TumblerContract.js +2 -2
  266. package/dist/esm/sdk/market/pool/createInterestRateModel.js +11 -15
  267. package/dist/esm/sdk/market/pricefeeds/AbstractLPPriceFeed.js +2 -22
  268. package/dist/esm/sdk/market/pricefeeds/AbstractPriceFeed.js +3 -3
  269. package/dist/esm/sdk/market/pricefeeds/BalancerStablePriceFeed.js +3 -13
  270. package/dist/esm/sdk/market/pricefeeds/BalancerWeightedPriceFeed.js +3 -13
  271. package/dist/esm/sdk/market/pricefeeds/BoundedPriceFeed.js +6 -2
  272. package/dist/esm/sdk/market/pricefeeds/CompositePriceFeed.js +2 -2
  273. package/dist/esm/sdk/market/pricefeeds/ConstantPriceFeed.js +2 -2
  274. package/dist/esm/sdk/market/pricefeeds/CurveCryptoPriceFeed.js +3 -10
  275. package/dist/esm/sdk/market/pricefeeds/CurveStablePriceFeed.js +3 -10
  276. package/dist/esm/sdk/market/pricefeeds/CurveUSDPriceFeed.js +3 -10
  277. package/dist/esm/sdk/market/pricefeeds/Erc4626PriceFeed.js +2 -18
  278. package/dist/esm/sdk/market/pricefeeds/ExternalPriceFeed.js +2 -2
  279. package/dist/esm/sdk/market/pricefeeds/MellowLRTPriceFeed.js +3 -11
  280. package/dist/esm/sdk/market/pricefeeds/PendleTWAPPTPriceFeed.js +2 -2
  281. package/dist/esm/sdk/market/pricefeeds/PriceFeedRef.js +7 -5
  282. package/dist/esm/sdk/market/pricefeeds/PriceFeedsRegister.js +3 -9
  283. package/dist/esm/sdk/market/pricefeeds/PythPriceFeed.js +2 -2
  284. package/dist/esm/sdk/market/pricefeeds/RedstonePriceFeed.js +3 -3
  285. package/dist/esm/sdk/market/pricefeeds/WstETHPriceFeed.js +3 -10
  286. package/dist/esm/sdk/market/pricefeeds/YearnPriceFeed.js +3 -10
  287. package/dist/esm/sdk/market/pricefeeds/ZeroPriceFeed.js +2 -2
  288. package/dist/esm/sdk/market/pricefeeds/updates/PythUpdater.js +7 -9
  289. package/dist/esm/sdk/market/pricefeeds/updates/RedstoneUpdater.js +10 -12
  290. package/dist/esm/sdk/router/AbstractRouterContract.js +5 -0
  291. package/dist/esm/sdk/router/RouterV310Contract.js +3 -3
  292. package/dist/esm/sdk/router/createRouter.js +4 -0
  293. package/dist/esm/sdk/utils/abi-decode.js +37 -0
  294. package/dist/esm/sdk/utils/index.js +1 -0
  295. package/dist/types/dev/create2.d.ts +2 -2
  296. package/dist/types/dev/mint/AbstractMinter.d.ts +3 -4
  297. package/dist/types/dev/mint/DealMinter.d.ts +0 -3
  298. package/dist/types/dev/mint/DirectMinter.d.ts +0 -3
  299. package/dist/types/dev/mint/TransferMinter.d.ts +0 -3
  300. package/dist/types/permissionless/bindings/address-provider.d.ts +4 -255
  301. package/dist/types/permissionless/bindings/bytecode-repository.d.ts +5 -6
  302. package/dist/types/permissionless/bindings/compressors/token-compressor.d.ts +3 -3
  303. package/dist/types/permissionless/bindings/compressors/withdrawal-compressor.d.ts +4 -5
  304. package/dist/types/permissionless/bindings/cross-chain-multisig.d.ts +7 -7
  305. package/dist/types/permissionless/bindings/factory/abstract-factory.d.ts +1 -1
  306. package/dist/types/permissionless/bindings/governance/batches-chain.d.ts +3 -4
  307. package/dist/types/permissionless/bindings/governance/governor.d.ts +6 -7
  308. package/dist/types/permissionless/bindings/governance/timelock.d.ts +3 -3
  309. package/dist/types/permissionless/bindings/governance/types.d.ts +1 -1
  310. package/dist/types/permissionless/bindings/index.d.ts +0 -1
  311. package/dist/types/permissionless/bindings/instance-manager.d.ts +6 -7
  312. package/dist/types/permissionless/bindings/market-configurator-factory.d.ts +4 -4
  313. package/dist/types/permissionless/bindings/market-configurator.d.ts +6 -6
  314. package/dist/types/permissionless/bindings/price-feed-store.d.ts +6 -7
  315. package/dist/types/permissionless/bindings/router/routing-manager.d.ts +4 -5
  316. package/dist/types/permissionless/bindings/treasury-splitter.d.ts +5 -6
  317. package/dist/types/permissionless/core/proposal.d.ts +1 -7
  318. package/dist/types/permissionless/utils/create2.d.ts +1 -1
  319. package/dist/types/permissionless/utils/governance/batch.d.ts +1 -1
  320. package/dist/types/permissionless/utils/index.d.ts +0 -1
  321. package/dist/types/permissionless/utils/price-update/get-price-feeds.d.ts +3 -3
  322. package/dist/types/permissionless/utils/price-update/get-price-update-tx.d.ts +2 -2
  323. package/dist/types/plugins/adapters/contracts/AbstractAdapter.d.ts +2 -2
  324. package/dist/types/plugins/adapters/contracts/AccountMigratorAdapterContract.d.ts +2 -2
  325. package/dist/types/plugins/adapters/contracts/BalancerV2VaultAdapterContract.d.ts +2 -2
  326. package/dist/types/plugins/adapters/contracts/BalancerV3RouterAdapterContract.d.ts +2 -2
  327. package/dist/types/plugins/adapters/contracts/BalancerV3WrapperAdapterContract.d.ts +2 -2
  328. package/dist/types/plugins/adapters/contracts/CamelotV3AdapterContract.d.ts +2 -2
  329. package/dist/types/plugins/adapters/contracts/ConvexV1BaseRewardPoolAdapterContract.d.ts +2 -2
  330. package/dist/types/plugins/adapters/contracts/ConvexV1BoosterAdapterContract.d.ts +2 -2
  331. package/dist/types/plugins/adapters/contracts/Curve2AssetsAdapterContract.d.ts +2 -2
  332. package/dist/types/plugins/adapters/contracts/Curve3AssetsAdapterContract.d.ts +2 -2
  333. package/dist/types/plugins/adapters/contracts/Curve4AssetsAdapterContract.d.ts +2 -2
  334. package/dist/types/plugins/adapters/contracts/CurveV1AdapterDeposit.d.ts +2 -2
  335. package/dist/types/plugins/adapters/contracts/CurveV1AdapterStETHContract.d.ts +2 -2
  336. package/dist/types/plugins/adapters/contracts/CurveV1StableNGAdapterContract.d.ts +2 -2
  337. package/dist/types/plugins/adapters/contracts/DaiUsdsAdapterContract.d.ts +2 -2
  338. package/dist/types/plugins/adapters/contracts/ERC4626AdapterContract.d.ts +2 -2
  339. package/dist/types/plugins/adapters/contracts/ERC4626ReferralAdapterContract.d.ts +2 -2
  340. package/dist/types/plugins/adapters/contracts/EqualizerRouterAdapterContract.d.ts +2 -2
  341. package/dist/types/plugins/adapters/contracts/FluidDexAdapterContract.d.ts +2 -2
  342. package/dist/types/plugins/adapters/contracts/InfinifiGatewayAdapterContract.d.ts +2 -2
  343. package/dist/types/plugins/adapters/contracts/InfinifiUnwindingGatewayAdapterContract.d.ts +2 -2
  344. package/dist/types/plugins/adapters/contracts/InfraredVaultAdapterContract.d.ts +2 -2
  345. package/dist/types/plugins/adapters/contracts/KelpLRTDepositPoolAdapterContract.d.ts +2 -2
  346. package/dist/types/plugins/adapters/contracts/KelpLRTWithdrawalManagerAdapterContract.d.ts +2 -2
  347. package/dist/types/plugins/adapters/contracts/KodiakIslandGatewayAdapterContract.d.ts +2 -2
  348. package/dist/types/plugins/adapters/contracts/LidoV1AdapterContract.d.ts +2 -2
  349. package/dist/types/plugins/adapters/contracts/MellowClaimerAdapterContract.d.ts +2 -2
  350. package/dist/types/plugins/adapters/contracts/MellowDVVAdapterContract.d.ts +2 -2
  351. package/dist/types/plugins/adapters/contracts/MellowDepositQueueAdapterContract.d.ts +2 -2
  352. package/dist/types/plugins/adapters/contracts/MellowERC4626VaultAdapterContract.d.ts +2 -2
  353. package/dist/types/plugins/adapters/contracts/MellowRedeemQueueAdapterContract.d.ts +2 -2
  354. package/dist/types/plugins/adapters/contracts/MellowVaultAdapterContract.d.ts +2 -2
  355. package/dist/types/plugins/adapters/contracts/MellowWrapperAdapterContract.d.ts +2 -2
  356. package/dist/types/plugins/adapters/contracts/MidasIssuanceVaultAdapterContract.d.ts +2 -2
  357. package/dist/types/plugins/adapters/contracts/MidasRedemptionVaultAdapterContract.d.ts +2 -2
  358. package/dist/types/plugins/adapters/contracts/PendleRouterAdapterContract.d.ts +2 -2
  359. package/dist/types/plugins/adapters/contracts/StakingRewardsAdapterContract.d.ts +2 -2
  360. package/dist/types/plugins/adapters/contracts/TraderJoeRouterAdapterContract.d.ts +2 -2
  361. package/dist/types/plugins/adapters/contracts/UniswapV2AdapterContract.d.ts +3 -3
  362. package/dist/types/plugins/adapters/contracts/UniswapV3AdapterContract.d.ts +3 -3
  363. package/dist/types/plugins/adapters/contracts/UniswapV4AdapterContract.d.ts +2 -2
  364. package/dist/types/plugins/adapters/contracts/UpshiftVaultAdapterContract.d.ts +2 -2
  365. package/dist/types/plugins/adapters/contracts/VelodromeV2AdapterContract.d.ts +2 -2
  366. package/dist/types/plugins/adapters/contracts/WstETHV1AdapterContract.d.ts +2 -2
  367. package/dist/types/plugins/adapters/contracts/YearnV2AdapterContract.d.ts +2 -2
  368. package/dist/types/plugins/bots/PartialLiquidationBotV300Contract.d.ts +2 -8
  369. package/dist/types/plugins/bots/deserializePartialLiquidationBotParams.d.ts +3 -0
  370. package/dist/types/plugins/delayed-withdrawal/types.d.ts +0 -1
  371. package/dist/types/sdk/GearboxSDK.d.ts +5 -76
  372. package/dist/types/sdk/accountMigration/types.d.ts +1 -2
  373. package/dist/types/sdk/accounts/types.d.ts +4 -3
  374. package/dist/types/sdk/base/BaseContract.d.ts +72 -28
  375. package/dist/types/sdk/base/ChainContractsRegister.d.ts +57 -0
  376. package/dist/types/sdk/base/Construct.d.ts +38 -0
  377. package/dist/types/sdk/base/PlaceholderContract.d.ts +2 -2
  378. package/dist/types/sdk/base/SDKConstruct.d.ts +2 -16
  379. package/dist/types/sdk/base/TokensMeta.d.ts +2 -3
  380. package/dist/types/sdk/base/index.d.ts +2 -1
  381. package/dist/types/sdk/base/types.d.ts +50 -0
  382. package/dist/types/sdk/core/BotListV3Contract.d.ts +1 -1
  383. package/dist/types/sdk/core/GearStakingV3Contract.d.ts +1 -1
  384. package/dist/types/sdk/core/address-provider/AbstractAddressProviderContract.d.ts +3 -4
  385. package/dist/types/sdk/core/address-provider/AddressProviderV300Contract.d.ts +3 -3
  386. package/dist/types/sdk/core/address-provider/AddressProviderV310Contract.d.ts +3 -3
  387. package/dist/types/sdk/market/MarketConfiguratorContract.d.ts +2 -2
  388. package/dist/types/sdk/market/credit/CreditConfiguratorV300Contract.d.ts +3 -3
  389. package/dist/types/sdk/market/credit/CreditConfiguratorV310Contract.d.ts +3 -3
  390. package/dist/types/sdk/market/credit/CreditFacadeV300Contract.d.ts +3 -4
  391. package/dist/types/sdk/market/credit/CreditFacadeV310Contract.d.ts +3 -4
  392. package/dist/types/sdk/market/credit/CreditManagerV300Contract.d.ts +1 -1
  393. package/dist/types/sdk/market/credit/CreditManagerV310Contract.d.ts +1 -1
  394. package/dist/types/sdk/market/credit/CreditSuite.d.ts +1 -1
  395. package/dist/types/sdk/market/credit/types.d.ts +1 -2
  396. package/dist/types/sdk/market/loss-policy/AliasLossPolicyV310Contract.d.ts +1 -0
  397. package/dist/types/sdk/market/loss-policy/LossPolicyContract.d.ts +2 -3
  398. package/dist/types/sdk/market/oracle/PriceOracleBaseContract.d.ts +3 -12
  399. package/dist/types/sdk/market/oracle/types.d.ts +0 -10
  400. package/dist/types/sdk/market/pool/GaugeContract.d.ts +2 -3
  401. package/dist/types/sdk/market/pool/LinearInterestRateModelContract.d.ts +2 -3
  402. package/dist/types/sdk/market/pool/PoolQuotaKeeperV300Contract.d.ts +2 -3
  403. package/dist/types/sdk/market/pool/PoolQuotaKeeperV310Contract.d.ts +2 -3
  404. package/dist/types/sdk/market/pool/PoolV300Contract.d.ts +4 -5
  405. package/dist/types/sdk/market/pool/PoolV310Contract.d.ts +4 -5
  406. package/dist/types/sdk/market/pool/TumblerContract.d.ts +2 -3
  407. package/dist/types/sdk/market/pricefeeds/AbstractLPPriceFeed.d.ts +3 -8
  408. package/dist/types/sdk/market/pricefeeds/AbstractPriceFeed.d.ts +2 -3
  409. package/dist/types/sdk/market/pricefeeds/BalancerStablePriceFeed.d.ts +2 -3
  410. package/dist/types/sdk/market/pricefeeds/BalancerWeightedPriceFeed.d.ts +2 -3
  411. package/dist/types/sdk/market/pricefeeds/BoundedPriceFeed.d.ts +2 -2
  412. package/dist/types/sdk/market/pricefeeds/CompositePriceFeed.d.ts +2 -2
  413. package/dist/types/sdk/market/pricefeeds/ConstantPriceFeed.d.ts +2 -2
  414. package/dist/types/sdk/market/pricefeeds/CurveCryptoPriceFeed.d.ts +2 -3
  415. package/dist/types/sdk/market/pricefeeds/CurveStablePriceFeed.d.ts +2 -3
  416. package/dist/types/sdk/market/pricefeeds/CurveUSDPriceFeed.d.ts +2 -3
  417. package/dist/types/sdk/market/pricefeeds/Erc4626PriceFeed.d.ts +2 -3
  418. package/dist/types/sdk/market/pricefeeds/ExternalPriceFeed.d.ts +2 -2
  419. package/dist/types/sdk/market/pricefeeds/MellowLRTPriceFeed.d.ts +2 -3
  420. package/dist/types/sdk/market/pricefeeds/PendleTWAPPTPriceFeed.d.ts +2 -2
  421. package/dist/types/sdk/market/pricefeeds/PriceFeedRef.d.ts +3 -4
  422. package/dist/types/sdk/market/pricefeeds/PriceFeedsRegister.d.ts +1 -2
  423. package/dist/types/sdk/market/pricefeeds/PythPriceFeed.d.ts +2 -2
  424. package/dist/types/sdk/market/pricefeeds/RedstonePriceFeed.d.ts +2 -2
  425. package/dist/types/sdk/market/pricefeeds/WstETHPriceFeed.d.ts +2 -3
  426. package/dist/types/sdk/market/pricefeeds/YearnPriceFeed.d.ts +2 -3
  427. package/dist/types/sdk/market/pricefeeds/ZeroPriceFeed.d.ts +2 -2
  428. package/dist/types/sdk/market/pricefeeds/types.d.ts +0 -5
  429. package/dist/types/sdk/router/AbstractRouterContract.d.ts +4 -1
  430. package/dist/types/sdk/router/types.d.ts +1 -2
  431. package/dist/types/sdk/sdk-legacy/core/creditAccount.d.ts +2 -2
  432. package/dist/types/sdk/utils/abi-decode.d.ts +10 -0
  433. package/dist/types/sdk/utils/index.d.ts +1 -0
  434. package/package.json +1 -1
  435. package/dist/cjs/permissionless/bindings/base-contract.js +0 -173
  436. package/dist/cjs/permissionless/utils/abi-decoder.js +0 -72
  437. package/dist/cjs/sdk/base/AddressLabeller.js +0 -49
  438. package/dist/cjs/sdk/base/IAddressLabeller.js +0 -16
  439. package/dist/esm/permissionless/bindings/base-contract.js +0 -151
  440. package/dist/esm/permissionless/utils/abi-decoder.js +0 -50
  441. package/dist/esm/sdk/base/AddressLabeller.js +0 -25
  442. package/dist/esm/sdk/base/IAddressLabeller.js +0 -0
  443. package/dist/types/permissionless/bindings/base-contract.d.ts +0 -23
  444. package/dist/types/permissionless/utils/abi-decoder.d.ts +0 -13
  445. package/dist/types/sdk/base/AddressLabeller.d.ts +0 -11
  446. package/dist/types/sdk/base/IAddressLabeller.d.ts +0 -9
@@ -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
@@ -31,8 +29,7 @@ class AbstractMigrateCreditAccountsService extends SDKConstruct {
31
29
  super(sdk);
32
30
  this.#version = version;
33
31
  this.#service = createCreditAccountService(this.sdk, version);
34
- this.#logger = childLogger("MigrateCreditAccountsService", sdk.logger);
35
- this.#logger?.debug(
32
+ this.logger?.debug(
36
33
  `Created MigrateCreditAccountsService with version: ${this.#version}`
37
34
  );
38
35
  }
@@ -25,7 +25,7 @@ import {
25
25
  } from "../constants/index.js";
26
26
  import { assetsMap } from "../router/index.js";
27
27
  import { BigIntMath } from "../sdk-legacy/index.js";
28
- import { AddressMap, childLogger } from "../utils/index.js";
28
+ import { AddressMap } from "../utils/index.js";
29
29
  import { simulateWithPriceUpdates } from "../utils/viem/index.js";
30
30
  function getWithdrawalCompressorAddress(chainId) {
31
31
  const compressor = chainId === 1 ? "0xfB79b6713fe214B8748ED7b0db1f93E4f1aC9d29" : void 0;
@@ -34,7 +34,6 @@ function getWithdrawalCompressorAddress(chainId) {
34
34
  class AbstractCreditAccountService extends SDKConstruct {
35
35
  #compressor;
36
36
  #batchSize;
37
- #logger;
38
37
  constructor(sdk, options) {
39
38
  super(sdk);
40
39
  [this.#compressor] = sdk.addressProvider.mustGetLatest(
@@ -42,8 +41,7 @@ class AbstractCreditAccountService extends SDKConstruct {
42
41
  VERSION_RANGE_310
43
42
  );
44
43
  this.#batchSize = options?.batchSize;
45
- this.#logger = childLogger("CreditAccountsService", sdk.logger);
46
- this.#logger?.debug(
44
+ this.logger?.debug(
47
45
  `credit account compressor address: ${this.#compressor}`
48
46
  );
49
47
  }
@@ -145,7 +143,7 @@ class AbstractCreditAccountService extends SDKConstruct {
145
143
  offset = newOffset;
146
144
  } while (offset !== 0n);
147
145
  }
148
- this.#logger?.debug(
146
+ this.logger?.debug(
149
147
  `loaded ${allCAs.length} credit accounts (${allCAs.length - revertingOffset} reverting)`
150
148
  );
151
149
  return allCAs.sort((a, b) => Number(a.healthFactor - b.healthFactor));
@@ -280,7 +278,7 @@ class AbstractCreditAccountService extends SDKConstruct {
280
278
  lossPolicyData = await market.lossPolicy.getLiquidationData(
281
279
  account.creditAccount
282
280
  );
283
- this.#logger?.debug({ lossPolicyData }, "loss policy data");
281
+ this.logger?.debug({ lossPolicyData }, "loss policy data");
284
282
  }
285
283
  const tx = cm.creditFacade.liquidateCreditAccount(
286
284
  account.creditAccount,
@@ -838,7 +836,7 @@ class AbstractCreditAccountService extends SDKConstruct {
838
836
  gas: this.sdk.gasLimit
839
837
  });
840
838
  }
841
- this.#logger?.debug(
839
+ this.logger?.debug(
842
840
  {
843
841
  accounts: resp[0]?.length ?? 0,
844
842
  nextOffset: Number(resp[1])
@@ -918,7 +916,7 @@ class AbstractCreditAccountService extends SDKConstruct {
918
916
  });
919
917
  const tStr = Array.from(tokens).map((t) => this.labelAddress(t)).join(", ");
920
918
  const remark = ignoreReservePrices ? " main" : "";
921
- this.#logger?.debug(
919
+ this.logger?.debug(
922
920
  { account: creditAccount?.creditAccount, manager: cm.name },
923
921
  `generating price feed updates for ${tStr} from ${priceFeeds.length}${remark} price feeds`
924
922
  );
@@ -934,7 +932,7 @@ class AbstractCreditAccountService extends SDKConstruct {
934
932
  const market = this.sdk.marketRegister.findByCreditManager(creditManager);
935
933
  const cm = this.sdk.marketRegister.findCreditManager(creditManager);
936
934
  const update = await this.getUpdateForAccount(options);
937
- this.#logger?.debug(
935
+ this.logger?.debug(
938
936
  { account: creditAccount?.creditAccount, manager: cm.name },
939
937
  `getting on demand price updates from ${update.txs.length} txs`
940
938
  );
@@ -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
  };
@@ -0,0 +1,111 @@
1
+ import { NOT_DEPLOYED } from "../constants/addresses.js";
2
+ import { AddressMap } from "../utils/AddressMap.js";
3
+ import { TokensMeta } from "./TokensMeta.js";
4
+ class ChainContractsRegister {
5
+ static #chains = /* @__PURE__ */ new Map();
6
+ static for(client, logger) {
7
+ const chainId = client.chain.id;
8
+ let result = ChainContractsRegister.#chains.get(chainId);
9
+ if (!result) {
10
+ result = new ChainContractsRegister(client, logger);
11
+ ChainContractsRegister.#chains.set(chainId, result);
12
+ }
13
+ return result;
14
+ }
15
+ contracts = new AddressMap(
16
+ [],
17
+ "contracts"
18
+ );
19
+ labels = new AddressMap([], "labels");
20
+ client;
21
+ /**
22
+ * Token metadata such as symbol and decimals
23
+ */
24
+ tokensMeta;
25
+ logger;
26
+ constructor(client, logger) {
27
+ this.client = client;
28
+ this.tokensMeta = new TokensMeta(client);
29
+ this.logger = logger;
30
+ }
31
+ getContract(address) {
32
+ return this.contracts.get(address);
33
+ }
34
+ mustGetContract(address) {
35
+ const contract = this.contracts.mustGet(address);
36
+ if (!contract) {
37
+ throw new Error(`contract ${address} not found on chain ${this.chainId}`);
38
+ }
39
+ return contract;
40
+ }
41
+ setContract(address, contract) {
42
+ this.contracts.upsert(address, contract);
43
+ }
44
+ setAddressLabel(address, label) {
45
+ if (address === NOT_DEPLOYED) {
46
+ return;
47
+ }
48
+ if (typeof label === "string") {
49
+ this.labels.upsert(address, label);
50
+ } else {
51
+ this.labels.upsert(address, label(this.labels.get(address)));
52
+ }
53
+ }
54
+ labelAddress(address) {
55
+ const label = this.labels.get(address);
56
+ return label ? `${address} [${label}]` : address;
57
+ }
58
+ get chain() {
59
+ return this.client.chain;
60
+ }
61
+ get chainId() {
62
+ return this.client.chain.id;
63
+ }
64
+ /**
65
+ * Converts contract call into some human-friendly string
66
+ * This method is safe and should not throw
67
+ * @param address
68
+ * @param calldata
69
+ * @returns
70
+ */
71
+ stringifyFunctionData(address, calldata) {
72
+ const contract = this.contracts.get(address);
73
+ return contract ? contract.stringifyFunctionData(calldata) : `unknown: ${address}.${calldata.slice(0, 10)}`;
74
+ }
75
+ /**
76
+ * Converts multicalls into some human-friendly strings
77
+ * This method is safe and should not throw
78
+ * @param address
79
+ * @param calldata
80
+ * @returns
81
+ */
82
+ stringifyMultiCall(calls) {
83
+ return calls.map(
84
+ (call) => this.stringifyFunctionData(call.target, call.callData)
85
+ );
86
+ }
87
+ /**
88
+ * Return args, function, type and address name from contract call
89
+ * @param address
90
+ * @param calldata
91
+ * @returns
92
+ */
93
+ parseFunctionData(address, calldata) {
94
+ const contract = this.mustGetContract(address);
95
+ return contract.parseFunctionData(calldata);
96
+ }
97
+ /**
98
+ * Converts multicalls into call info
99
+ * @param address
100
+ * @param calldata
101
+ * @returns
102
+ */
103
+ parseMultiCall(calls) {
104
+ return calls.map(
105
+ (call) => this.parseFunctionData(call.target, call.callData)
106
+ );
107
+ }
108
+ }
109
+ export {
110
+ ChainContractsRegister
111
+ };
@@ -0,0 +1,63 @@
1
+ import { childLogger } from "../utils/index.js";
2
+ import { ChainContractsRegister } from "./ChainContractsRegister.js";
3
+ class Construct {
4
+ logger;
5
+ client;
6
+ register;
7
+ /**
8
+ * Indicates that contract state needs to be updated
9
+ */
10
+ #dirty = false;
11
+ constructor({ client, logger }) {
12
+ this.client = client;
13
+ this.register = ChainContractsRegister.for(client, logger);
14
+ this.logger = childLogger(
15
+ this.constructor.name,
16
+ this.register.logger ?? logger
17
+ );
18
+ }
19
+ get chain() {
20
+ return this.client.chain;
21
+ }
22
+ get chainId() {
23
+ return this.client.chain.id;
24
+ }
25
+ get networkType() {
26
+ if ("network" in this.chain) {
27
+ return this.chain.network;
28
+ }
29
+ throw new Error(`chain ${this.chain.id} is not a Gearbox SDK chain`);
30
+ }
31
+ /**
32
+ * Indicates that contract state diverged from onchain state and needs to be updated
33
+ */
34
+ get dirty() {
35
+ return this.#dirty;
36
+ }
37
+ set dirty(value) {
38
+ this.#dirty = value;
39
+ }
40
+ /**
41
+ * Syntax sugar for rgister.tokensMeta
42
+ */
43
+ get tokensMeta() {
44
+ return this.register.tokensMeta;
45
+ }
46
+ /**
47
+ * Syntax suggar for getting contract labels
48
+ * @param address
49
+ * @returns
50
+ */
51
+ labelAddress(address) {
52
+ return this.register.labelAddress(address);
53
+ }
54
+ /**
55
+ * Returns list of addresses that should be watched for events to sync state
56
+ */
57
+ get watchAddresses() {
58
+ return /* @__PURE__ */ new Set();
59
+ }
60
+ }
61
+ export {
62
+ Construct
63
+ };
@@ -1,36 +1,10 @@
1
- class SDKConstruct {
1
+ import { Construct } from "./Construct.js";
2
+ class SDKConstruct extends Construct {
2
3
  sdk;
3
- /**
4
- * Indicates that contract state needs to be updated
5
- */
6
- #dirty = false;
7
4
  constructor(sdk) {
5
+ super(sdk);
8
6
  this.sdk = sdk;
9
7
  }
10
- get networkType() {
11
- return this.sdk.networkType;
12
- }
13
- get client() {
14
- return this.sdk.client;
15
- }
16
- /**
17
- * Indicates that contract state needs to be updated
18
- */
19
- get dirty() {
20
- return this.#dirty;
21
- }
22
- set dirty(value) {
23
- this.#dirty = value;
24
- }
25
- labelAddress(address) {
26
- return this.sdk.labelAddress(address);
27
- }
28
- /**
29
- * Returns list of addresses that should be watched for events to sync state
30
- */
31
- get watchAddresses() {
32
- return /* @__PURE__ */ new Set();
33
- }
34
8
  }
35
9
  export {
36
10
  SDKConstruct
@@ -2,11 +2,11 @@ import { iVersionAbi } from "../../abi/iVersion.js";
2
2
  import { bytes32ToString } from "../index.js";
3
3
  import { AddressMap, AddressSet, formatBN } from "../utils/index.js";
4
4
  class TokensMeta extends AddressMap {
5
- #sdk;
5
+ #client;
6
6
  #phantomTokensLoaded;
7
- constructor(sdk) {
7
+ constructor(client) {
8
8
  super(void 0, "tokensMeta");
9
- this.#sdk = sdk;
9
+ this.#client = client;
10
10
  }
11
11
  symbol(token) {
12
12
  return this.mustGet(token).symbol;
@@ -61,7 +61,7 @@ class TokensMeta extends AddressMap {
61
61
  async loadPhantomTokens() {
62
62
  this.#phantomTokensLoaded = new AddressSet();
63
63
  const tokens = this.keys();
64
- const resp = await this.#sdk.client.multicall({
64
+ const resp = await this.#client.multicall({
65
65
  contracts: tokens.map(
66
66
  (t) => ({
67
67
  address: t,
@@ -1,5 +1,6 @@
1
- export * from "./AddressLabeller.js";
2
1
  export * from "./BaseContract.js";
2
+ export * from "./ChainContractsRegister.js";
3
+ export * from "./Construct.js";
3
4
  export * from "./PlaceholderContract.js";
4
5
  export * from "./SDKConstruct.js";
5
6
  export * from "./TokensMeta.js";