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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (439) hide show
  1. package/dist/cjs/dev/create2.js +1 -1
  2. package/dist/cjs/dev/mint/AbstractMinter.js +2 -4
  3. package/dist/cjs/dev/mint/DealMinter.js +0 -3
  4. package/dist/cjs/dev/mint/DirectMinter.js +0 -3
  5. package/dist/cjs/dev/mint/FallbackMinter.js +1 -1
  6. package/dist/cjs/dev/mint/TransferMinter.js +0 -3
  7. package/dist/cjs/permissionless/bindings/address-provider.js +4 -6
  8. package/dist/cjs/permissionless/bindings/bytecode-repository.js +23 -25
  9. package/dist/cjs/permissionless/bindings/compressors/token-compressor.js +4 -4
  10. package/dist/cjs/permissionless/bindings/compressors/withdrawal-compressor.js +11 -17
  11. package/dist/cjs/permissionless/bindings/cross-chain-multisig.js +23 -22
  12. package/dist/cjs/permissionless/bindings/factory/abstract-factory.js +7 -4
  13. package/dist/cjs/permissionless/bindings/governance/batches-chain.js +4 -4
  14. package/dist/cjs/permissionless/bindings/governance/governor.js +30 -49
  15. package/dist/cjs/permissionless/bindings/governance/timelock.js +4 -4
  16. package/dist/cjs/permissionless/bindings/index.js +0 -2
  17. package/dist/cjs/permissionless/bindings/instance-manager.js +58 -77
  18. package/dist/cjs/permissionless/bindings/market-configurator-factory.js +4 -4
  19. package/dist/cjs/permissionless/bindings/market-configurator.js +71 -143
  20. package/dist/cjs/permissionless/bindings/price-feed-store.js +8 -17
  21. package/dist/cjs/permissionless/bindings/router/routing-manager.js +9 -15
  22. package/dist/cjs/permissionless/bindings/treasury-splitter.js +15 -27
  23. package/dist/cjs/permissionless/core/raw-tx.js +2 -2
  24. package/dist/cjs/permissionless/utils/format.js +2 -2
  25. package/dist/cjs/permissionless/utils/governance/timelock-txs.js +2 -2
  26. package/dist/cjs/permissionless/utils/index.js +0 -2
  27. package/dist/cjs/permissionless/utils/price-update/get-price-feeds.js +1 -2
  28. package/dist/cjs/permissionless/utils/price-update/get-price-update-tx.js +1 -2
  29. package/dist/cjs/permissionless/utils/price-update/get-prices.js +1 -2
  30. package/dist/cjs/permissionless/utils/price-update/get-updatable-feeds.js +2 -3
  31. package/dist/cjs/plugins/adapters/contracts/AbstractAdapter.js +2 -2
  32. package/dist/cjs/plugins/adapters/contracts/AccountMigratorAdapterContract.js +2 -2
  33. package/dist/cjs/plugins/adapters/contracts/BalancerV2VaultAdapterContract.js +2 -2
  34. package/dist/cjs/plugins/adapters/contracts/BalancerV3RouterAdapterContract.js +2 -2
  35. package/dist/cjs/plugins/adapters/contracts/BalancerV3WrapperAdapterContract.js +2 -2
  36. package/dist/cjs/plugins/adapters/contracts/CamelotV3AdapterContract.js +2 -2
  37. package/dist/cjs/plugins/adapters/contracts/ConvexV1BaseRewardPoolAdapterContract.js +2 -2
  38. package/dist/cjs/plugins/adapters/contracts/ConvexV1BoosterAdapterContract.js +2 -2
  39. package/dist/cjs/plugins/adapters/contracts/Curve2AssetsAdapterContract.js +2 -2
  40. package/dist/cjs/plugins/adapters/contracts/Curve3AssetsAdapterContract.js +2 -2
  41. package/dist/cjs/plugins/adapters/contracts/Curve4AssetsAdapterContract.js +2 -2
  42. package/dist/cjs/plugins/adapters/contracts/CurveV1AdapterDeposit.js +2 -2
  43. package/dist/cjs/plugins/adapters/contracts/CurveV1AdapterStETHContract.js +2 -2
  44. package/dist/cjs/plugins/adapters/contracts/CurveV1StableNGAdapterContract.js +2 -2
  45. package/dist/cjs/plugins/adapters/contracts/DaiUsdsAdapterContract.js +2 -2
  46. package/dist/cjs/plugins/adapters/contracts/ERC4626AdapterContract.js +2 -2
  47. package/dist/cjs/plugins/adapters/contracts/ERC4626ReferralAdapterContract.js +2 -2
  48. package/dist/cjs/plugins/adapters/contracts/EqualizerRouterAdapterContract.js +2 -2
  49. package/dist/cjs/plugins/adapters/contracts/FluidDexAdapterContract.js +2 -2
  50. package/dist/cjs/plugins/adapters/contracts/InfinifiGatewayAdapterContract.js +2 -2
  51. package/dist/cjs/plugins/adapters/contracts/InfinifiUnwindingGatewayAdapterContract.js +2 -2
  52. package/dist/cjs/plugins/adapters/contracts/InfraredVaultAdapterContract.js +2 -2
  53. package/dist/cjs/plugins/adapters/contracts/KelpLRTDepositPoolAdapterContract.js +2 -2
  54. package/dist/cjs/plugins/adapters/contracts/KelpLRTWithdrawalManagerAdapterContract.js +2 -2
  55. package/dist/cjs/plugins/adapters/contracts/KodiakIslandGatewayAdapterContract.js +2 -2
  56. package/dist/cjs/plugins/adapters/contracts/LidoV1AdapterContract.js +2 -2
  57. package/dist/cjs/plugins/adapters/contracts/MellowClaimerAdapterContract.js +2 -2
  58. package/dist/cjs/plugins/adapters/contracts/MellowDVVAdapterContract.js +2 -2
  59. package/dist/cjs/plugins/adapters/contracts/MellowDepositQueueAdapterContract.js +2 -2
  60. package/dist/cjs/plugins/adapters/contracts/MellowERC4626VaultAdapterContract.js +2 -2
  61. package/dist/cjs/plugins/adapters/contracts/MellowRedeemQueueAdapterContract.js +2 -2
  62. package/dist/cjs/plugins/adapters/contracts/MellowVaultAdapterContract.js +2 -2
  63. package/dist/cjs/plugins/adapters/contracts/MellowWrapperAdapterContract.js +2 -2
  64. package/dist/cjs/plugins/adapters/contracts/MidasIssuanceVaultAdapterContract.js +2 -2
  65. package/dist/cjs/plugins/adapters/contracts/MidasRedemptionVaultAdapterContract.js +2 -2
  66. package/dist/cjs/plugins/adapters/contracts/PendleRouterAdapterContract.js +2 -2
  67. package/dist/cjs/plugins/adapters/contracts/StakingRewardsAdapterContract.js +2 -2
  68. package/dist/cjs/plugins/adapters/contracts/TraderJoeRouterAdapterContract.js +2 -2
  69. package/dist/cjs/plugins/adapters/contracts/UniswapV2AdapterContract.js +5 -5
  70. package/dist/cjs/plugins/adapters/contracts/UniswapV3AdapterContract.js +22 -22
  71. package/dist/cjs/plugins/adapters/contracts/UniswapV4AdapterContract.js +2 -2
  72. package/dist/cjs/plugins/adapters/contracts/UpshiftVaultAdapterContract.js +2 -2
  73. package/dist/cjs/plugins/adapters/contracts/VelodromeV2AdapterContract.js +2 -2
  74. package/dist/cjs/plugins/adapters/contracts/WstETHV1AdapterContract.js +2 -2
  75. package/dist/cjs/plugins/adapters/contracts/YearnV2AdapterContract.js +2 -2
  76. package/dist/cjs/plugins/bots/deserializePartialLiquidationBotParams.js +49 -0
  77. package/dist/cjs/plugins/zappers/ZappersPlugin.js +1 -1
  78. package/dist/cjs/sdk/GearboxSDK.js +8 -110
  79. package/dist/cjs/sdk/accountMigration/AbstractMigrateCreditAccountsService.js +1 -4
  80. package/dist/cjs/sdk/accounts/AbstractCreditAccountsService.js +6 -8
  81. package/dist/cjs/sdk/base/BaseContract.js +195 -80
  82. package/dist/cjs/sdk/base/ChainContractsRegister.js +135 -0
  83. package/dist/cjs/sdk/base/Construct.js +87 -0
  84. package/dist/cjs/sdk/base/SDKConstruct.js +3 -29
  85. package/dist/cjs/sdk/base/TokensMeta.js +4 -4
  86. package/dist/cjs/sdk/base/index.js +4 -2
  87. package/dist/cjs/sdk/core/BotListV3Contract.js +2 -2
  88. package/dist/cjs/sdk/core/GearStakingV3Contract.js +2 -2
  89. package/dist/cjs/sdk/core/address-provider/AbstractAddressProviderContract.js +2 -2
  90. package/dist/cjs/sdk/core/address-provider/AddressProviderV300Contract.js +11 -6
  91. package/dist/cjs/sdk/core/address-provider/AddressProviderV310Contract.js +4 -4
  92. package/dist/cjs/sdk/market/MarketConfiguratorContract.js +5 -5
  93. package/dist/cjs/sdk/market/MarketRegister.js +7 -9
  94. package/dist/cjs/sdk/market/MarketSuite.js +2 -2
  95. package/dist/cjs/sdk/market/credit/CreditConfiguratorV300Contract.js +4 -3
  96. package/dist/cjs/sdk/market/credit/CreditConfiguratorV310Contract.js +4 -3
  97. package/dist/cjs/sdk/market/credit/CreditFacadeV300Contract.js +9 -9
  98. package/dist/cjs/sdk/market/credit/CreditFacadeV310Contract.js +8 -8
  99. package/dist/cjs/sdk/market/credit/CreditManagerV300Contract.js +5 -2
  100. package/dist/cjs/sdk/market/credit/CreditManagerV310Contract.js +5 -2
  101. package/dist/cjs/sdk/market/credit/CreditSuite.js +2 -3
  102. package/dist/cjs/sdk/market/loss-policy/AliasLossPolicyV310Contract.js +3 -1
  103. package/dist/cjs/sdk/market/loss-policy/LossPolicyContract.js +2 -2
  104. package/dist/cjs/sdk/market/loss-policy/createLossPolicy.js +1 -1
  105. package/dist/cjs/sdk/market/oracle/PriceOracleBaseContract.js +8 -26
  106. package/dist/cjs/sdk/market/oracle/createPriceOracle.js +1 -1
  107. package/dist/cjs/sdk/market/pool/GaugeContract.js +2 -2
  108. package/dist/cjs/sdk/market/pool/LinearInterestRateModelContract.js +2 -2
  109. package/dist/cjs/sdk/market/pool/PoolQuotaKeeperV300Contract.js +2 -2
  110. package/dist/cjs/sdk/market/pool/PoolQuotaKeeperV310Contract.js +2 -2
  111. package/dist/cjs/sdk/market/pool/PoolSuite.js +1 -1
  112. package/dist/cjs/sdk/market/pool/PoolV300Contract.js +5 -5
  113. package/dist/cjs/sdk/market/pool/PoolV310Contract.js +5 -5
  114. package/dist/cjs/sdk/market/pool/TumblerContract.js +2 -2
  115. package/dist/cjs/sdk/market/pool/createInterestRateModel.js +11 -15
  116. package/dist/cjs/sdk/market/pricefeeds/AbstractLPPriceFeed.js +2 -22
  117. package/dist/cjs/sdk/market/pricefeeds/AbstractPriceFeed.js +3 -3
  118. package/dist/cjs/sdk/market/pricefeeds/BalancerStablePriceFeed.js +2 -9
  119. package/dist/cjs/sdk/market/pricefeeds/BalancerWeightedPriceFeed.js +2 -9
  120. package/dist/cjs/sdk/market/pricefeeds/BoundedPriceFeed.js +6 -2
  121. package/dist/cjs/sdk/market/pricefeeds/CompositePriceFeed.js +2 -2
  122. package/dist/cjs/sdk/market/pricefeeds/ConstantPriceFeed.js +2 -2
  123. package/dist/cjs/sdk/market/pricefeeds/CurveCryptoPriceFeed.js +2 -9
  124. package/dist/cjs/sdk/market/pricefeeds/CurveStablePriceFeed.js +2 -9
  125. package/dist/cjs/sdk/market/pricefeeds/CurveUSDPriceFeed.js +2 -9
  126. package/dist/cjs/sdk/market/pricefeeds/Erc4626PriceFeed.js +2 -18
  127. package/dist/cjs/sdk/market/pricefeeds/ExternalPriceFeed.js +2 -2
  128. package/dist/cjs/sdk/market/pricefeeds/MellowLRTPriceFeed.js +2 -10
  129. package/dist/cjs/sdk/market/pricefeeds/PendleTWAPPTPriceFeed.js +2 -2
  130. package/dist/cjs/sdk/market/pricefeeds/PriceFeedRef.js +6 -4
  131. package/dist/cjs/sdk/market/pricefeeds/PriceFeedsRegister.js +2 -3
  132. package/dist/cjs/sdk/market/pricefeeds/PythPriceFeed.js +2 -2
  133. package/dist/cjs/sdk/market/pricefeeds/RedstonePriceFeed.js +3 -3
  134. package/dist/cjs/sdk/market/pricefeeds/WstETHPriceFeed.js +2 -9
  135. package/dist/cjs/sdk/market/pricefeeds/YearnPriceFeed.js +2 -9
  136. package/dist/cjs/sdk/market/pricefeeds/ZeroPriceFeed.js +2 -2
  137. package/dist/cjs/sdk/market/pricefeeds/updates/PriceUpdatesCache.js +17 -0
  138. package/dist/cjs/sdk/market/pricefeeds/updates/PythUpdater.js +7 -9
  139. package/dist/cjs/sdk/market/pricefeeds/updates/RedstoneUpdater.js +10 -12
  140. package/dist/cjs/sdk/router/AbstractRouterContract.js +5 -0
  141. package/dist/cjs/sdk/router/RouterV310Contract.js +3 -3
  142. package/dist/cjs/sdk/router/createRouter.js +4 -0
  143. package/dist/cjs/sdk/utils/abi-decode.js +58 -0
  144. package/dist/cjs/sdk/utils/index.js +2 -0
  145. package/dist/esm/dev/create2.js +2 -2
  146. package/dist/esm/dev/mint/AbstractMinter.js +3 -7
  147. package/dist/esm/dev/mint/DealMinter.js +0 -3
  148. package/dist/esm/dev/mint/DirectMinter.js +0 -3
  149. package/dist/esm/dev/mint/FallbackMinter.js +1 -1
  150. package/dist/esm/dev/mint/TransferMinter.js +0 -3
  151. package/dist/esm/permissionless/bindings/address-provider.js +7 -7
  152. package/dist/esm/permissionless/bindings/bytecode-repository.js +22 -24
  153. package/dist/esm/permissionless/bindings/compressors/token-compressor.js +3 -3
  154. package/dist/esm/permissionless/bindings/compressors/withdrawal-compressor.js +10 -16
  155. package/dist/esm/permissionless/bindings/cross-chain-multisig.js +20 -16
  156. package/dist/esm/permissionless/bindings/factory/abstract-factory.js +9 -4
  157. package/dist/esm/permissionless/bindings/governance/batches-chain.js +3 -3
  158. package/dist/esm/permissionless/bindings/governance/governor.js +28 -47
  159. package/dist/esm/permissionless/bindings/governance/timelock.js +3 -3
  160. package/dist/esm/permissionless/bindings/index.js +0 -1
  161. package/dist/esm/permissionless/bindings/instance-manager.js +53 -69
  162. package/dist/esm/permissionless/bindings/market-configurator-factory.js +3 -3
  163. package/dist/esm/permissionless/bindings/market-configurator.js +65 -137
  164. package/dist/esm/permissionless/bindings/price-feed-store.js +8 -14
  165. package/dist/esm/permissionless/bindings/router/routing-manager.js +8 -14
  166. package/dist/esm/permissionless/bindings/treasury-splitter.js +16 -26
  167. package/dist/esm/permissionless/core/raw-tx.js +1 -1
  168. package/dist/esm/permissionless/utils/format.js +1 -1
  169. package/dist/esm/permissionless/utils/governance/timelock-txs.js +1 -1
  170. package/dist/esm/permissionless/utils/index.js +0 -1
  171. package/dist/esm/permissionless/utils/price-update/get-price-feeds.js +4 -2
  172. package/dist/esm/permissionless/utils/price-update/get-price-update-tx.js +1 -1
  173. package/dist/esm/permissionless/utils/price-update/get-prices.js +1 -2
  174. package/dist/esm/permissionless/utils/price-update/get-updatable-feeds.js +1 -1
  175. package/dist/esm/plugins/adapters/contracts/AbstractAdapter.js +2 -2
  176. package/dist/esm/plugins/adapters/contracts/AccountMigratorAdapterContract.js +2 -2
  177. package/dist/esm/plugins/adapters/contracts/BalancerV2VaultAdapterContract.js +2 -2
  178. package/dist/esm/plugins/adapters/contracts/BalancerV3RouterAdapterContract.js +2 -2
  179. package/dist/esm/plugins/adapters/contracts/BalancerV3WrapperAdapterContract.js +2 -2
  180. package/dist/esm/plugins/adapters/contracts/CamelotV3AdapterContract.js +2 -2
  181. package/dist/esm/plugins/adapters/contracts/ConvexV1BaseRewardPoolAdapterContract.js +2 -2
  182. package/dist/esm/plugins/adapters/contracts/ConvexV1BoosterAdapterContract.js +2 -2
  183. package/dist/esm/plugins/adapters/contracts/Curve2AssetsAdapterContract.js +2 -2
  184. package/dist/esm/plugins/adapters/contracts/Curve3AssetsAdapterContract.js +2 -2
  185. package/dist/esm/plugins/adapters/contracts/Curve4AssetsAdapterContract.js +2 -2
  186. package/dist/esm/plugins/adapters/contracts/CurveV1AdapterDeposit.js +2 -2
  187. package/dist/esm/plugins/adapters/contracts/CurveV1AdapterStETHContract.js +2 -2
  188. package/dist/esm/plugins/adapters/contracts/CurveV1StableNGAdapterContract.js +2 -2
  189. package/dist/esm/plugins/adapters/contracts/DaiUsdsAdapterContract.js +2 -2
  190. package/dist/esm/plugins/adapters/contracts/ERC4626AdapterContract.js +2 -2
  191. package/dist/esm/plugins/adapters/contracts/ERC4626ReferralAdapterContract.js +2 -2
  192. package/dist/esm/plugins/adapters/contracts/EqualizerRouterAdapterContract.js +2 -2
  193. package/dist/esm/plugins/adapters/contracts/FluidDexAdapterContract.js +2 -2
  194. package/dist/esm/plugins/adapters/contracts/InfinifiGatewayAdapterContract.js +2 -2
  195. package/dist/esm/plugins/adapters/contracts/InfinifiUnwindingGatewayAdapterContract.js +2 -2
  196. package/dist/esm/plugins/adapters/contracts/InfraredVaultAdapterContract.js +2 -2
  197. package/dist/esm/plugins/adapters/contracts/KelpLRTDepositPoolAdapterContract.js +2 -2
  198. package/dist/esm/plugins/adapters/contracts/KelpLRTWithdrawalManagerAdapterContract.js +2 -2
  199. package/dist/esm/plugins/adapters/contracts/KodiakIslandGatewayAdapterContract.js +2 -2
  200. package/dist/esm/plugins/adapters/contracts/LidoV1AdapterContract.js +2 -2
  201. package/dist/esm/plugins/adapters/contracts/MellowClaimerAdapterContract.js +2 -2
  202. package/dist/esm/plugins/adapters/contracts/MellowDVVAdapterContract.js +2 -2
  203. package/dist/esm/plugins/adapters/contracts/MellowDepositQueueAdapterContract.js +2 -2
  204. package/dist/esm/plugins/adapters/contracts/MellowERC4626VaultAdapterContract.js +2 -2
  205. package/dist/esm/plugins/adapters/contracts/MellowRedeemQueueAdapterContract.js +2 -2
  206. package/dist/esm/plugins/adapters/contracts/MellowVaultAdapterContract.js +2 -2
  207. package/dist/esm/plugins/adapters/contracts/MellowWrapperAdapterContract.js +2 -2
  208. package/dist/esm/plugins/adapters/contracts/MidasIssuanceVaultAdapterContract.js +2 -2
  209. package/dist/esm/plugins/adapters/contracts/MidasRedemptionVaultAdapterContract.js +2 -2
  210. package/dist/esm/plugins/adapters/contracts/PendleRouterAdapterContract.js +2 -2
  211. package/dist/esm/plugins/adapters/contracts/StakingRewardsAdapterContract.js +2 -2
  212. package/dist/esm/plugins/adapters/contracts/TraderJoeRouterAdapterContract.js +2 -2
  213. package/dist/esm/plugins/adapters/contracts/UniswapV2AdapterContract.js +5 -5
  214. package/dist/esm/plugins/adapters/contracts/UniswapV3AdapterContract.js +22 -22
  215. package/dist/esm/plugins/adapters/contracts/UniswapV4AdapterContract.js +2 -2
  216. package/dist/esm/plugins/adapters/contracts/UpshiftVaultAdapterContract.js +2 -2
  217. package/dist/esm/plugins/adapters/contracts/VelodromeV2AdapterContract.js +2 -2
  218. package/dist/esm/plugins/adapters/contracts/WstETHV1AdapterContract.js +2 -2
  219. package/dist/esm/plugins/adapters/contracts/YearnV2AdapterContract.js +2 -2
  220. package/dist/esm/plugins/bots/deserializePartialLiquidationBotParams.js +29 -0
  221. package/dist/esm/plugins/zappers/ZappersPlugin.js +1 -1
  222. package/dist/esm/sdk/GearboxSDK.js +10 -112
  223. package/dist/esm/sdk/accountMigration/AbstractMigrateCreditAccountsService.js +1 -4
  224. package/dist/esm/sdk/accounts/AbstractCreditAccountsService.js +7 -9
  225. package/dist/esm/sdk/base/BaseContract.js +202 -81
  226. package/dist/esm/sdk/base/ChainContractsRegister.js +111 -0
  227. package/dist/esm/sdk/base/Construct.js +63 -0
  228. package/dist/esm/sdk/base/SDKConstruct.js +3 -29
  229. package/dist/esm/sdk/base/TokensMeta.js +4 -4
  230. package/dist/esm/sdk/base/index.js +2 -1
  231. package/dist/esm/sdk/core/BotListV3Contract.js +2 -2
  232. package/dist/esm/sdk/core/GearStakingV3Contract.js +2 -2
  233. package/dist/esm/sdk/core/address-provider/AbstractAddressProviderContract.js +2 -2
  234. package/dist/esm/sdk/core/address-provider/AddressProviderV300Contract.js +11 -6
  235. package/dist/esm/sdk/core/address-provider/AddressProviderV310Contract.js +4 -4
  236. package/dist/esm/sdk/market/MarketConfiguratorContract.js +5 -5
  237. package/dist/esm/sdk/market/MarketRegister.js +8 -10
  238. package/dist/esm/sdk/market/MarketSuite.js +2 -2
  239. package/dist/esm/sdk/market/credit/CreditConfiguratorV300Contract.js +4 -3
  240. package/dist/esm/sdk/market/credit/CreditConfiguratorV310Contract.js +4 -3
  241. package/dist/esm/sdk/market/credit/CreditFacadeV300Contract.js +9 -9
  242. package/dist/esm/sdk/market/credit/CreditFacadeV310Contract.js +8 -8
  243. package/dist/esm/sdk/market/credit/CreditManagerV300Contract.js +5 -2
  244. package/dist/esm/sdk/market/credit/CreditManagerV310Contract.js +5 -2
  245. package/dist/esm/sdk/market/credit/CreditSuite.js +2 -3
  246. package/dist/esm/sdk/market/loss-policy/AliasLossPolicyV310Contract.js +3 -1
  247. package/dist/esm/sdk/market/loss-policy/LossPolicyContract.js +5 -3
  248. package/dist/esm/sdk/market/loss-policy/createLossPolicy.js +1 -1
  249. package/dist/esm/sdk/market/oracle/PriceOracleBaseContract.js +8 -26
  250. package/dist/esm/sdk/market/oracle/createPriceOracle.js +1 -1
  251. package/dist/esm/sdk/market/pool/GaugeContract.js +2 -2
  252. package/dist/esm/sdk/market/pool/LinearInterestRateModelContract.js +2 -2
  253. package/dist/esm/sdk/market/pool/PoolQuotaKeeperV300Contract.js +2 -2
  254. package/dist/esm/sdk/market/pool/PoolQuotaKeeperV310Contract.js +2 -2
  255. package/dist/esm/sdk/market/pool/PoolSuite.js +1 -1
  256. package/dist/esm/sdk/market/pool/PoolV300Contract.js +5 -5
  257. package/dist/esm/sdk/market/pool/PoolV310Contract.js +5 -5
  258. package/dist/esm/sdk/market/pool/TumblerContract.js +2 -2
  259. package/dist/esm/sdk/market/pool/createInterestRateModel.js +11 -15
  260. package/dist/esm/sdk/market/pricefeeds/AbstractLPPriceFeed.js +2 -22
  261. package/dist/esm/sdk/market/pricefeeds/AbstractPriceFeed.js +3 -3
  262. package/dist/esm/sdk/market/pricefeeds/BalancerStablePriceFeed.js +3 -13
  263. package/dist/esm/sdk/market/pricefeeds/BalancerWeightedPriceFeed.js +3 -13
  264. package/dist/esm/sdk/market/pricefeeds/BoundedPriceFeed.js +6 -2
  265. package/dist/esm/sdk/market/pricefeeds/CompositePriceFeed.js +2 -2
  266. package/dist/esm/sdk/market/pricefeeds/ConstantPriceFeed.js +2 -2
  267. package/dist/esm/sdk/market/pricefeeds/CurveCryptoPriceFeed.js +3 -10
  268. package/dist/esm/sdk/market/pricefeeds/CurveStablePriceFeed.js +3 -10
  269. package/dist/esm/sdk/market/pricefeeds/CurveUSDPriceFeed.js +3 -10
  270. package/dist/esm/sdk/market/pricefeeds/Erc4626PriceFeed.js +2 -18
  271. package/dist/esm/sdk/market/pricefeeds/ExternalPriceFeed.js +2 -2
  272. package/dist/esm/sdk/market/pricefeeds/MellowLRTPriceFeed.js +3 -11
  273. package/dist/esm/sdk/market/pricefeeds/PendleTWAPPTPriceFeed.js +2 -2
  274. package/dist/esm/sdk/market/pricefeeds/PriceFeedRef.js +7 -5
  275. package/dist/esm/sdk/market/pricefeeds/PriceFeedsRegister.js +3 -9
  276. package/dist/esm/sdk/market/pricefeeds/PythPriceFeed.js +2 -2
  277. package/dist/esm/sdk/market/pricefeeds/RedstonePriceFeed.js +3 -3
  278. package/dist/esm/sdk/market/pricefeeds/WstETHPriceFeed.js +3 -10
  279. package/dist/esm/sdk/market/pricefeeds/YearnPriceFeed.js +3 -10
  280. package/dist/esm/sdk/market/pricefeeds/ZeroPriceFeed.js +2 -2
  281. package/dist/esm/sdk/market/pricefeeds/updates/PriceUpdatesCache.js +17 -0
  282. package/dist/esm/sdk/market/pricefeeds/updates/PythUpdater.js +8 -10
  283. package/dist/esm/sdk/market/pricefeeds/updates/RedstoneUpdater.js +11 -13
  284. package/dist/esm/sdk/router/AbstractRouterContract.js +5 -0
  285. package/dist/esm/sdk/router/RouterV310Contract.js +3 -3
  286. package/dist/esm/sdk/router/createRouter.js +4 -0
  287. package/dist/esm/sdk/utils/abi-decode.js +37 -0
  288. package/dist/esm/sdk/utils/index.js +1 -0
  289. package/dist/types/dev/create2.d.ts +2 -2
  290. package/dist/types/dev/mint/AbstractMinter.d.ts +3 -4
  291. package/dist/types/dev/mint/DealMinter.d.ts +0 -3
  292. package/dist/types/dev/mint/DirectMinter.d.ts +0 -3
  293. package/dist/types/dev/mint/TransferMinter.d.ts +0 -3
  294. package/dist/types/permissionless/bindings/address-provider.d.ts +4 -255
  295. package/dist/types/permissionless/bindings/bytecode-repository.d.ts +5 -6
  296. package/dist/types/permissionless/bindings/compressors/token-compressor.d.ts +3 -3
  297. package/dist/types/permissionless/bindings/compressors/withdrawal-compressor.d.ts +4 -5
  298. package/dist/types/permissionless/bindings/cross-chain-multisig.d.ts +7 -7
  299. package/dist/types/permissionless/bindings/factory/abstract-factory.d.ts +1 -1
  300. package/dist/types/permissionless/bindings/governance/batches-chain.d.ts +3 -4
  301. package/dist/types/permissionless/bindings/governance/governor.d.ts +6 -7
  302. package/dist/types/permissionless/bindings/governance/timelock.d.ts +3 -3
  303. package/dist/types/permissionless/bindings/governance/types.d.ts +1 -1
  304. package/dist/types/permissionless/bindings/index.d.ts +0 -1
  305. package/dist/types/permissionless/bindings/instance-manager.d.ts +6 -7
  306. package/dist/types/permissionless/bindings/market-configurator-factory.d.ts +4 -4
  307. package/dist/types/permissionless/bindings/market-configurator.d.ts +6 -6
  308. package/dist/types/permissionless/bindings/price-feed-store.d.ts +6 -7
  309. package/dist/types/permissionless/bindings/router/routing-manager.d.ts +4 -5
  310. package/dist/types/permissionless/bindings/treasury-splitter.d.ts +5 -6
  311. package/dist/types/permissionless/core/proposal.d.ts +1 -7
  312. package/dist/types/permissionless/utils/create2.d.ts +1 -1
  313. package/dist/types/permissionless/utils/governance/batch.d.ts +1 -1
  314. package/dist/types/permissionless/utils/index.d.ts +0 -1
  315. package/dist/types/permissionless/utils/price-update/get-price-feeds.d.ts +3 -3
  316. package/dist/types/permissionless/utils/price-update/get-price-update-tx.d.ts +2 -2
  317. package/dist/types/plugins/adapters/contracts/AbstractAdapter.d.ts +2 -2
  318. package/dist/types/plugins/adapters/contracts/AccountMigratorAdapterContract.d.ts +2 -2
  319. package/dist/types/plugins/adapters/contracts/BalancerV2VaultAdapterContract.d.ts +2 -2
  320. package/dist/types/plugins/adapters/contracts/BalancerV3RouterAdapterContract.d.ts +2 -2
  321. package/dist/types/plugins/adapters/contracts/BalancerV3WrapperAdapterContract.d.ts +2 -2
  322. package/dist/types/plugins/adapters/contracts/CamelotV3AdapterContract.d.ts +2 -2
  323. package/dist/types/plugins/adapters/contracts/ConvexV1BaseRewardPoolAdapterContract.d.ts +2 -2
  324. package/dist/types/plugins/adapters/contracts/ConvexV1BoosterAdapterContract.d.ts +2 -2
  325. package/dist/types/plugins/adapters/contracts/Curve2AssetsAdapterContract.d.ts +2 -2
  326. package/dist/types/plugins/adapters/contracts/Curve3AssetsAdapterContract.d.ts +2 -2
  327. package/dist/types/plugins/adapters/contracts/Curve4AssetsAdapterContract.d.ts +2 -2
  328. package/dist/types/plugins/adapters/contracts/CurveV1AdapterDeposit.d.ts +2 -2
  329. package/dist/types/plugins/adapters/contracts/CurveV1AdapterStETHContract.d.ts +2 -2
  330. package/dist/types/plugins/adapters/contracts/CurveV1StableNGAdapterContract.d.ts +2 -2
  331. package/dist/types/plugins/adapters/contracts/DaiUsdsAdapterContract.d.ts +2 -2
  332. package/dist/types/plugins/adapters/contracts/ERC4626AdapterContract.d.ts +2 -2
  333. package/dist/types/plugins/adapters/contracts/ERC4626ReferralAdapterContract.d.ts +2 -2
  334. package/dist/types/plugins/adapters/contracts/EqualizerRouterAdapterContract.d.ts +2 -2
  335. package/dist/types/plugins/adapters/contracts/FluidDexAdapterContract.d.ts +2 -2
  336. package/dist/types/plugins/adapters/contracts/InfinifiGatewayAdapterContract.d.ts +2 -2
  337. package/dist/types/plugins/adapters/contracts/InfinifiUnwindingGatewayAdapterContract.d.ts +2 -2
  338. package/dist/types/plugins/adapters/contracts/InfraredVaultAdapterContract.d.ts +2 -2
  339. package/dist/types/plugins/adapters/contracts/KelpLRTDepositPoolAdapterContract.d.ts +2 -2
  340. package/dist/types/plugins/adapters/contracts/KelpLRTWithdrawalManagerAdapterContract.d.ts +2 -2
  341. package/dist/types/plugins/adapters/contracts/KodiakIslandGatewayAdapterContract.d.ts +2 -2
  342. package/dist/types/plugins/adapters/contracts/LidoV1AdapterContract.d.ts +2 -2
  343. package/dist/types/plugins/adapters/contracts/MellowClaimerAdapterContract.d.ts +2 -2
  344. package/dist/types/plugins/adapters/contracts/MellowDVVAdapterContract.d.ts +2 -2
  345. package/dist/types/plugins/adapters/contracts/MellowDepositQueueAdapterContract.d.ts +2 -2
  346. package/dist/types/plugins/adapters/contracts/MellowERC4626VaultAdapterContract.d.ts +2 -2
  347. package/dist/types/plugins/adapters/contracts/MellowRedeemQueueAdapterContract.d.ts +2 -2
  348. package/dist/types/plugins/adapters/contracts/MellowVaultAdapterContract.d.ts +2 -2
  349. package/dist/types/plugins/adapters/contracts/MellowWrapperAdapterContract.d.ts +2 -2
  350. package/dist/types/plugins/adapters/contracts/MidasIssuanceVaultAdapterContract.d.ts +2 -2
  351. package/dist/types/plugins/adapters/contracts/MidasRedemptionVaultAdapterContract.d.ts +2 -2
  352. package/dist/types/plugins/adapters/contracts/PendleRouterAdapterContract.d.ts +2 -2
  353. package/dist/types/plugins/adapters/contracts/StakingRewardsAdapterContract.d.ts +2 -2
  354. package/dist/types/plugins/adapters/contracts/TraderJoeRouterAdapterContract.d.ts +2 -2
  355. package/dist/types/plugins/adapters/contracts/UniswapV2AdapterContract.d.ts +3 -3
  356. package/dist/types/plugins/adapters/contracts/UniswapV3AdapterContract.d.ts +3 -3
  357. package/dist/types/plugins/adapters/contracts/UniswapV4AdapterContract.d.ts +2 -2
  358. package/dist/types/plugins/adapters/contracts/UpshiftVaultAdapterContract.d.ts +2 -2
  359. package/dist/types/plugins/adapters/contracts/VelodromeV2AdapterContract.d.ts +2 -2
  360. package/dist/types/plugins/adapters/contracts/WstETHV1AdapterContract.d.ts +2 -2
  361. package/dist/types/plugins/adapters/contracts/YearnV2AdapterContract.d.ts +2 -2
  362. package/dist/types/plugins/bots/deserializePartialLiquidationBotParams.d.ts +3 -0
  363. package/dist/types/sdk/GearboxSDK.d.ts +5 -76
  364. package/dist/types/sdk/accountMigration/types.d.ts +1 -2
  365. package/dist/types/sdk/accounts/types.d.ts +4 -3
  366. package/dist/types/sdk/base/BaseContract.d.ts +72 -28
  367. package/dist/types/sdk/base/ChainContractsRegister.d.ts +57 -0
  368. package/dist/types/sdk/base/Construct.d.ts +38 -0
  369. package/dist/types/sdk/base/PlaceholderContract.d.ts +2 -2
  370. package/dist/types/sdk/base/SDKConstruct.d.ts +2 -16
  371. package/dist/types/sdk/base/TokensMeta.d.ts +2 -3
  372. package/dist/types/sdk/base/index.d.ts +2 -1
  373. package/dist/types/sdk/base/types.d.ts +50 -0
  374. package/dist/types/sdk/core/BotListV3Contract.d.ts +1 -1
  375. package/dist/types/sdk/core/GearStakingV3Contract.d.ts +1 -1
  376. package/dist/types/sdk/core/address-provider/AbstractAddressProviderContract.d.ts +3 -4
  377. package/dist/types/sdk/core/address-provider/AddressProviderV300Contract.d.ts +3 -3
  378. package/dist/types/sdk/core/address-provider/AddressProviderV310Contract.d.ts +3 -3
  379. package/dist/types/sdk/market/MarketConfiguratorContract.d.ts +2 -2
  380. package/dist/types/sdk/market/credit/CreditConfiguratorV300Contract.d.ts +3 -3
  381. package/dist/types/sdk/market/credit/CreditConfiguratorV310Contract.d.ts +3 -3
  382. package/dist/types/sdk/market/credit/CreditFacadeV300Contract.d.ts +3 -4
  383. package/dist/types/sdk/market/credit/CreditFacadeV310Contract.d.ts +3 -4
  384. package/dist/types/sdk/market/credit/CreditManagerV300Contract.d.ts +1 -1
  385. package/dist/types/sdk/market/credit/CreditManagerV310Contract.d.ts +1 -1
  386. package/dist/types/sdk/market/credit/CreditSuite.d.ts +1 -1
  387. package/dist/types/sdk/market/credit/types.d.ts +1 -2
  388. package/dist/types/sdk/market/loss-policy/AliasLossPolicyV310Contract.d.ts +1 -0
  389. package/dist/types/sdk/market/loss-policy/LossPolicyContract.d.ts +2 -3
  390. package/dist/types/sdk/market/oracle/PriceOracleBaseContract.d.ts +3 -12
  391. package/dist/types/sdk/market/oracle/types.d.ts +0 -10
  392. package/dist/types/sdk/market/pool/GaugeContract.d.ts +2 -3
  393. package/dist/types/sdk/market/pool/LinearInterestRateModelContract.d.ts +2 -3
  394. package/dist/types/sdk/market/pool/PoolQuotaKeeperV300Contract.d.ts +2 -3
  395. package/dist/types/sdk/market/pool/PoolQuotaKeeperV310Contract.d.ts +2 -3
  396. package/dist/types/sdk/market/pool/PoolV300Contract.d.ts +4 -5
  397. package/dist/types/sdk/market/pool/PoolV310Contract.d.ts +4 -5
  398. package/dist/types/sdk/market/pool/TumblerContract.d.ts +2 -3
  399. package/dist/types/sdk/market/pricefeeds/AbstractLPPriceFeed.d.ts +3 -8
  400. package/dist/types/sdk/market/pricefeeds/AbstractPriceFeed.d.ts +2 -3
  401. package/dist/types/sdk/market/pricefeeds/BalancerStablePriceFeed.d.ts +2 -3
  402. package/dist/types/sdk/market/pricefeeds/BalancerWeightedPriceFeed.d.ts +2 -3
  403. package/dist/types/sdk/market/pricefeeds/BoundedPriceFeed.d.ts +2 -2
  404. package/dist/types/sdk/market/pricefeeds/CompositePriceFeed.d.ts +2 -2
  405. package/dist/types/sdk/market/pricefeeds/ConstantPriceFeed.d.ts +2 -2
  406. package/dist/types/sdk/market/pricefeeds/CurveCryptoPriceFeed.d.ts +2 -3
  407. package/dist/types/sdk/market/pricefeeds/CurveStablePriceFeed.d.ts +2 -3
  408. package/dist/types/sdk/market/pricefeeds/CurveUSDPriceFeed.d.ts +2 -3
  409. package/dist/types/sdk/market/pricefeeds/Erc4626PriceFeed.d.ts +2 -3
  410. package/dist/types/sdk/market/pricefeeds/ExternalPriceFeed.d.ts +2 -2
  411. package/dist/types/sdk/market/pricefeeds/MellowLRTPriceFeed.d.ts +2 -3
  412. package/dist/types/sdk/market/pricefeeds/PendleTWAPPTPriceFeed.d.ts +2 -2
  413. package/dist/types/sdk/market/pricefeeds/PriceFeedRef.d.ts +3 -4
  414. package/dist/types/sdk/market/pricefeeds/PriceFeedsRegister.d.ts +1 -2
  415. package/dist/types/sdk/market/pricefeeds/PythPriceFeed.d.ts +2 -2
  416. package/dist/types/sdk/market/pricefeeds/RedstonePriceFeed.d.ts +2 -2
  417. package/dist/types/sdk/market/pricefeeds/WstETHPriceFeed.d.ts +2 -3
  418. package/dist/types/sdk/market/pricefeeds/YearnPriceFeed.d.ts +2 -3
  419. package/dist/types/sdk/market/pricefeeds/ZeroPriceFeed.d.ts +2 -2
  420. package/dist/types/sdk/market/pricefeeds/types.d.ts +0 -5
  421. package/dist/types/sdk/market/pricefeeds/updates/PriceUpdatesCache.d.ts +8 -1
  422. package/dist/types/sdk/router/AbstractRouterContract.d.ts +4 -1
  423. package/dist/types/sdk/router/types.d.ts +1 -2
  424. package/dist/types/sdk/sdk-legacy/core/creditAccount.d.ts +2 -2
  425. package/dist/types/sdk/utils/abi-decode.d.ts +10 -0
  426. package/dist/types/sdk/utils/index.d.ts +1 -0
  427. package/package.json +1 -1
  428. package/dist/cjs/permissionless/bindings/base-contract.js +0 -173
  429. package/dist/cjs/permissionless/utils/abi-decoder.js +0 -72
  430. package/dist/cjs/sdk/base/AddressLabeller.js +0 -49
  431. package/dist/cjs/sdk/base/IAddressLabeller.js +0 -16
  432. package/dist/esm/permissionless/bindings/base-contract.js +0 -151
  433. package/dist/esm/permissionless/utils/abi-decoder.js +0 -50
  434. package/dist/esm/sdk/base/AddressLabeller.js +0 -25
  435. package/dist/esm/sdk/base/IAddressLabeller.js +0 -0
  436. package/dist/types/permissionless/bindings/base-contract.d.ts +0 -23
  437. package/dist/types/permissionless/utils/abi-decoder.d.ts +0 -13
  438. package/dist/types/sdk/base/AddressLabeller.d.ts +0 -11
  439. package/dist/types/sdk/base/IAddressLabeller.d.ts +0 -9
@@ -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
  });
@@ -0,0 +1,135 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var ChainContractsRegister_exports = {};
20
+ __export(ChainContractsRegister_exports, {
21
+ ChainContractsRegister: () => ChainContractsRegister
22
+ });
23
+ module.exports = __toCommonJS(ChainContractsRegister_exports);
24
+ var import_addresses = require("../constants/addresses.js");
25
+ var import_AddressMap = require("../utils/AddressMap.js");
26
+ var import_TokensMeta = require("./TokensMeta.js");
27
+ class ChainContractsRegister {
28
+ static #chains = /* @__PURE__ */ new Map();
29
+ static for(client, logger) {
30
+ const chainId = client.chain.id;
31
+ let result = ChainContractsRegister.#chains.get(chainId);
32
+ if (!result) {
33
+ result = new ChainContractsRegister(client, logger);
34
+ ChainContractsRegister.#chains.set(chainId, result);
35
+ }
36
+ return result;
37
+ }
38
+ contracts = new import_AddressMap.AddressMap(
39
+ [],
40
+ "contracts"
41
+ );
42
+ labels = new import_AddressMap.AddressMap([], "labels");
43
+ client;
44
+ /**
45
+ * Token metadata such as symbol and decimals
46
+ */
47
+ tokensMeta;
48
+ logger;
49
+ constructor(client, logger) {
50
+ this.client = client;
51
+ this.tokensMeta = new import_TokensMeta.TokensMeta(client);
52
+ this.logger = logger;
53
+ }
54
+ getContract(address) {
55
+ return this.contracts.get(address);
56
+ }
57
+ mustGetContract(address) {
58
+ const contract = this.contracts.mustGet(address);
59
+ if (!contract) {
60
+ throw new Error(`contract ${address} not found on chain ${this.chainId}`);
61
+ }
62
+ return contract;
63
+ }
64
+ setContract(address, contract) {
65
+ this.contracts.upsert(address, contract);
66
+ }
67
+ setAddressLabel(address, label) {
68
+ if (address === import_addresses.NOT_DEPLOYED) {
69
+ return;
70
+ }
71
+ if (typeof label === "string") {
72
+ this.labels.upsert(address, label);
73
+ } else {
74
+ this.labels.upsert(address, label(this.labels.get(address)));
75
+ }
76
+ }
77
+ labelAddress(address) {
78
+ const label = this.labels.get(address);
79
+ return label ? `${address} [${label}]` : address;
80
+ }
81
+ get chain() {
82
+ return this.client.chain;
83
+ }
84
+ get chainId() {
85
+ return this.client.chain.id;
86
+ }
87
+ /**
88
+ * Converts contract call into some human-friendly string
89
+ * This method is safe and should not throw
90
+ * @param address
91
+ * @param calldata
92
+ * @returns
93
+ */
94
+ stringifyFunctionData(address, calldata) {
95
+ const contract = this.contracts.get(address);
96
+ return contract ? contract.stringifyFunctionData(calldata) : `unknown: ${address}.${calldata.slice(0, 10)}`;
97
+ }
98
+ /**
99
+ * Converts multicalls into some human-friendly strings
100
+ * This method is safe and should not throw
101
+ * @param address
102
+ * @param calldata
103
+ * @returns
104
+ */
105
+ stringifyMultiCall(calls) {
106
+ return calls.map(
107
+ (call) => this.stringifyFunctionData(call.target, call.callData)
108
+ );
109
+ }
110
+ /**
111
+ * Return args, function, type and address name from contract call
112
+ * @param address
113
+ * @param calldata
114
+ * @returns
115
+ */
116
+ parseFunctionData(address, calldata) {
117
+ const contract = this.mustGetContract(address);
118
+ return contract.parseFunctionData(calldata);
119
+ }
120
+ /**
121
+ * Converts multicalls into call info
122
+ * @param address
123
+ * @param calldata
124
+ * @returns
125
+ */
126
+ parseMultiCall(calls) {
127
+ return calls.map(
128
+ (call) => this.parseFunctionData(call.target, call.callData)
129
+ );
130
+ }
131
+ }
132
+ // Annotate the CommonJS export names for ESM import in node:
133
+ 0 && (module.exports = {
134
+ ChainContractsRegister
135
+ });
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var Construct_exports = {};
20
+ __export(Construct_exports, {
21
+ Construct: () => Construct
22
+ });
23
+ module.exports = __toCommonJS(Construct_exports);
24
+ var import_utils = require("../utils/index.js");
25
+ var import_ChainContractsRegister = require("./ChainContractsRegister.js");
26
+ class Construct {
27
+ logger;
28
+ client;
29
+ register;
30
+ /**
31
+ * Indicates that contract state needs to be updated
32
+ */
33
+ #dirty = false;
34
+ constructor({ client, logger }) {
35
+ this.client = client;
36
+ this.register = import_ChainContractsRegister.ChainContractsRegister.for(client, logger);
37
+ this.logger = (0, import_utils.childLogger)(
38
+ this.constructor.name,
39
+ this.register.logger ?? logger
40
+ );
41
+ }
42
+ get chain() {
43
+ return this.client.chain;
44
+ }
45
+ get chainId() {
46
+ return this.client.chain.id;
47
+ }
48
+ get networkType() {
49
+ if ("network" in this.chain) {
50
+ return this.chain.network;
51
+ }
52
+ throw new Error(`chain ${this.chain.id} is not a Gearbox SDK chain`);
53
+ }
54
+ /**
55
+ * Indicates that contract state diverged from onchain state and needs to be updated
56
+ */
57
+ get dirty() {
58
+ return this.#dirty;
59
+ }
60
+ set dirty(value) {
61
+ this.#dirty = value;
62
+ }
63
+ /**
64
+ * Syntax sugar for rgister.tokensMeta
65
+ */
66
+ get tokensMeta() {
67
+ return this.register.tokensMeta;
68
+ }
69
+ /**
70
+ * Syntax suggar for getting contract labels
71
+ * @param address
72
+ * @returns
73
+ */
74
+ labelAddress(address) {
75
+ return this.register.labelAddress(address);
76
+ }
77
+ /**
78
+ * Returns list of addresses that should be watched for events to sync state
79
+ */
80
+ get watchAddresses() {
81
+ return /* @__PURE__ */ new Set();
82
+ }
83
+ }
84
+ // Annotate the CommonJS export names for ESM import in node:
85
+ 0 && (module.exports = {
86
+ Construct
87
+ });
@@ -21,39 +21,13 @@ __export(SDKConstruct_exports, {
21
21
  SDKConstruct: () => SDKConstruct
22
22
  });
23
23
  module.exports = __toCommonJS(SDKConstruct_exports);
24
- class SDKConstruct {
24
+ var import_Construct = require("./Construct.js");
25
+ class SDKConstruct extends import_Construct.Construct {
25
26
  sdk;
26
- /**
27
- * Indicates that contract state needs to be updated
28
- */
29
- #dirty = false;
30
27
  constructor(sdk) {
28
+ super(sdk);
31
29
  this.sdk = sdk;
32
30
  }
33
- get networkType() {
34
- return this.sdk.networkType;
35
- }
36
- get client() {
37
- return this.sdk.client;
38
- }
39
- /**
40
- * Indicates that contract state needs to be updated
41
- */
42
- get dirty() {
43
- return this.#dirty;
44
- }
45
- set dirty(value) {
46
- this.#dirty = value;
47
- }
48
- labelAddress(address) {
49
- return this.sdk.labelAddress(address);
50
- }
51
- /**
52
- * Returns list of addresses that should be watched for events to sync state
53
- */
54
- get watchAddresses() {
55
- return /* @__PURE__ */ new Set();
56
- }
57
31
  }
58
32
  // Annotate the CommonJS export names for ESM import in node:
59
33
  0 && (module.exports = {
@@ -25,11 +25,11 @@ var import_iVersion = require("../../abi/iVersion.js");
25
25
  var import__ = require("../index.js");
26
26
  var import_utils = require("../utils/index.js");
27
27
  class TokensMeta extends import_utils.AddressMap {
28
- #sdk;
28
+ #client;
29
29
  #phantomTokensLoaded;
30
- constructor(sdk) {
30
+ constructor(client) {
31
31
  super(void 0, "tokensMeta");
32
- this.#sdk = sdk;
32
+ this.#client = client;
33
33
  }
34
34
  symbol(token) {
35
35
  return this.mustGet(token).symbol;
@@ -84,7 +84,7 @@ class TokensMeta extends import_utils.AddressMap {
84
84
  async loadPhantomTokens() {
85
85
  this.#phantomTokensLoaded = new import_utils.AddressSet();
86
86
  const tokens = this.keys();
87
- const resp = await this.#sdk.client.multicall({
87
+ const resp = await this.#client.multicall({
88
88
  contracts: tokens.map(
89
89
  (t) => ({
90
90
  address: t,
@@ -15,16 +15,18 @@ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "defau
15
15
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
16
16
  var base_exports = {};
17
17
  module.exports = __toCommonJS(base_exports);
18
- __reExport(base_exports, require("./AddressLabeller.js"), module.exports);
19
18
  __reExport(base_exports, require("./BaseContract.js"), module.exports);
19
+ __reExport(base_exports, require("./ChainContractsRegister.js"), module.exports);
20
+ __reExport(base_exports, require("./Construct.js"), module.exports);
20
21
  __reExport(base_exports, require("./PlaceholderContract.js"), module.exports);
21
22
  __reExport(base_exports, require("./SDKConstruct.js"), module.exports);
22
23
  __reExport(base_exports, require("./TokensMeta.js"), module.exports);
23
24
  __reExport(base_exports, require("./types.js"), module.exports);
24
25
  // Annotate the CommonJS export names for ESM import in node:
25
26
  0 && (module.exports = {
26
- ...require("./AddressLabeller.js"),
27
27
  ...require("./BaseContract.js"),
28
+ ...require("./ChainContractsRegister.js"),
29
+ ...require("./Construct.js"),
28
30
  ...require("./PlaceholderContract.js"),
29
31
  ...require("./SDKConstruct.js"),
30
32
  ...require("./TokensMeta.js"),
@@ -32,7 +32,7 @@ class BotListContract extends import_base.BaseContract {
32
32
  super(sdk, { addr: address, name: "BotListV3", abi });
33
33
  this.#currentBlock = sdk.chain.firstBlock ?? 0n;
34
34
  }
35
- parseFunctionParams(params) {
35
+ stringifyFunctionParams(params) {
36
36
  switch (params.functionName) {
37
37
  case "setCreditManagerApprovedStatus": {
38
38
  const [creditManager, status] = params.args;
@@ -47,7 +47,7 @@ class BotListContract extends import_base.BaseContract {
47
47
  ];
48
48
  }
49
49
  default:
50
- return void 0;
50
+ return super.stringifyFunctionParams(params);
51
51
  }
52
52
  }
53
53
  async syncState(toBlock) {