@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.
- package/dist/cjs/dev/create2.js +1 -1
- package/dist/cjs/dev/mint/AbstractMinter.js +2 -4
- package/dist/cjs/dev/mint/DealMinter.js +0 -3
- package/dist/cjs/dev/mint/DirectMinter.js +0 -3
- package/dist/cjs/dev/mint/FallbackMinter.js +1 -1
- package/dist/cjs/dev/mint/TransferMinter.js +0 -3
- package/dist/cjs/permissionless/bindings/address-provider.js +4 -6
- package/dist/cjs/permissionless/bindings/bytecode-repository.js +23 -25
- package/dist/cjs/permissionless/bindings/compressors/token-compressor.js +4 -4
- package/dist/cjs/permissionless/bindings/compressors/withdrawal-compressor.js +11 -17
- package/dist/cjs/permissionless/bindings/cross-chain-multisig.js +23 -22
- package/dist/cjs/permissionless/bindings/factory/abstract-factory.js +7 -4
- package/dist/cjs/permissionless/bindings/governance/batches-chain.js +4 -4
- package/dist/cjs/permissionless/bindings/governance/governor.js +30 -49
- package/dist/cjs/permissionless/bindings/governance/timelock.js +4 -4
- package/dist/cjs/permissionless/bindings/index.js +0 -2
- package/dist/cjs/permissionless/bindings/instance-manager.js +58 -77
- package/dist/cjs/permissionless/bindings/market-configurator-factory.js +4 -4
- package/dist/cjs/permissionless/bindings/market-configurator.js +71 -143
- package/dist/cjs/permissionless/bindings/price-feed-store.js +8 -17
- package/dist/cjs/permissionless/bindings/router/routing-manager.js +9 -15
- package/dist/cjs/permissionless/bindings/treasury-splitter.js +15 -27
- package/dist/cjs/permissionless/core/raw-tx.js +2 -2
- package/dist/cjs/permissionless/utils/format.js +2 -2
- package/dist/cjs/permissionless/utils/governance/timelock-txs.js +2 -2
- package/dist/cjs/permissionless/utils/index.js +0 -2
- package/dist/cjs/permissionless/utils/price-update/get-price-feeds.js +1 -2
- package/dist/cjs/permissionless/utils/price-update/get-price-update-tx.js +1 -2
- package/dist/cjs/permissionless/utils/price-update/get-prices.js +1 -2
- package/dist/cjs/permissionless/utils/price-update/get-updatable-feeds.js +2 -3
- package/dist/cjs/plugins/adapters/contracts/AbstractAdapter.js +2 -2
- package/dist/cjs/plugins/adapters/contracts/AccountMigratorAdapterContract.js +2 -2
- package/dist/cjs/plugins/adapters/contracts/BalancerV2VaultAdapterContract.js +2 -2
- package/dist/cjs/plugins/adapters/contracts/BalancerV3RouterAdapterContract.js +2 -2
- package/dist/cjs/plugins/adapters/contracts/BalancerV3WrapperAdapterContract.js +2 -2
- package/dist/cjs/plugins/adapters/contracts/CamelotV3AdapterContract.js +2 -2
- package/dist/cjs/plugins/adapters/contracts/ConvexV1BaseRewardPoolAdapterContract.js +2 -2
- package/dist/cjs/plugins/adapters/contracts/ConvexV1BoosterAdapterContract.js +2 -2
- package/dist/cjs/plugins/adapters/contracts/Curve2AssetsAdapterContract.js +2 -2
- package/dist/cjs/plugins/adapters/contracts/Curve3AssetsAdapterContract.js +2 -2
- package/dist/cjs/plugins/adapters/contracts/Curve4AssetsAdapterContract.js +2 -2
- package/dist/cjs/plugins/adapters/contracts/CurveV1AdapterDeposit.js +2 -2
- package/dist/cjs/plugins/adapters/contracts/CurveV1AdapterStETHContract.js +2 -2
- package/dist/cjs/plugins/adapters/contracts/CurveV1StableNGAdapterContract.js +2 -2
- package/dist/cjs/plugins/adapters/contracts/DaiUsdsAdapterContract.js +2 -2
- package/dist/cjs/plugins/adapters/contracts/ERC4626AdapterContract.js +2 -2
- package/dist/cjs/plugins/adapters/contracts/ERC4626ReferralAdapterContract.js +2 -2
- package/dist/cjs/plugins/adapters/contracts/EqualizerRouterAdapterContract.js +2 -2
- package/dist/cjs/plugins/adapters/contracts/FluidDexAdapterContract.js +2 -2
- package/dist/cjs/plugins/adapters/contracts/InfinifiGatewayAdapterContract.js +2 -2
- package/dist/cjs/plugins/adapters/contracts/InfinifiUnwindingGatewayAdapterContract.js +2 -2
- package/dist/cjs/plugins/adapters/contracts/InfraredVaultAdapterContract.js +2 -2
- package/dist/cjs/plugins/adapters/contracts/KelpLRTDepositPoolAdapterContract.js +2 -2
- package/dist/cjs/plugins/adapters/contracts/KelpLRTWithdrawalManagerAdapterContract.js +2 -2
- package/dist/cjs/plugins/adapters/contracts/KodiakIslandGatewayAdapterContract.js +2 -2
- package/dist/cjs/plugins/adapters/contracts/LidoV1AdapterContract.js +2 -2
- package/dist/cjs/plugins/adapters/contracts/MellowClaimerAdapterContract.js +2 -2
- package/dist/cjs/plugins/adapters/contracts/MellowDVVAdapterContract.js +2 -2
- package/dist/cjs/plugins/adapters/contracts/MellowDepositQueueAdapterContract.js +2 -2
- package/dist/cjs/plugins/adapters/contracts/MellowERC4626VaultAdapterContract.js +2 -2
- package/dist/cjs/plugins/adapters/contracts/MellowRedeemQueueAdapterContract.js +2 -2
- package/dist/cjs/plugins/adapters/contracts/MellowVaultAdapterContract.js +2 -2
- package/dist/cjs/plugins/adapters/contracts/MellowWrapperAdapterContract.js +2 -2
- package/dist/cjs/plugins/adapters/contracts/MidasIssuanceVaultAdapterContract.js +2 -2
- package/dist/cjs/plugins/adapters/contracts/MidasRedemptionVaultAdapterContract.js +2 -2
- package/dist/cjs/plugins/adapters/contracts/PendleRouterAdapterContract.js +2 -2
- package/dist/cjs/plugins/adapters/contracts/StakingRewardsAdapterContract.js +2 -2
- package/dist/cjs/plugins/adapters/contracts/TraderJoeRouterAdapterContract.js +2 -2
- package/dist/cjs/plugins/adapters/contracts/UniswapV2AdapterContract.js +5 -5
- package/dist/cjs/plugins/adapters/contracts/UniswapV3AdapterContract.js +22 -22
- package/dist/cjs/plugins/adapters/contracts/UniswapV4AdapterContract.js +2 -2
- package/dist/cjs/plugins/adapters/contracts/UpshiftVaultAdapterContract.js +2 -2
- package/dist/cjs/plugins/adapters/contracts/VelodromeV2AdapterContract.js +2 -2
- package/dist/cjs/plugins/adapters/contracts/WstETHV1AdapterContract.js +2 -2
- package/dist/cjs/plugins/adapters/contracts/YearnV2AdapterContract.js +2 -2
- package/dist/cjs/plugins/bots/deserializePartialLiquidationBotParams.js +49 -0
- package/dist/cjs/plugins/zappers/ZappersPlugin.js +1 -1
- package/dist/cjs/sdk/GearboxSDK.js +8 -110
- package/dist/cjs/sdk/accountMigration/AbstractMigrateCreditAccountsService.js +1 -4
- package/dist/cjs/sdk/accounts/AbstractCreditAccountsService.js +6 -8
- package/dist/cjs/sdk/base/BaseContract.js +195 -80
- package/dist/cjs/sdk/base/ChainContractsRegister.js +135 -0
- package/dist/cjs/sdk/base/Construct.js +87 -0
- package/dist/cjs/sdk/base/SDKConstruct.js +3 -29
- package/dist/cjs/sdk/base/TokensMeta.js +4 -4
- package/dist/cjs/sdk/base/index.js +4 -2
- package/dist/cjs/sdk/core/BotListV3Contract.js +2 -2
- package/dist/cjs/sdk/core/GearStakingV3Contract.js +2 -2
- package/dist/cjs/sdk/core/address-provider/AbstractAddressProviderContract.js +2 -2
- package/dist/cjs/sdk/core/address-provider/AddressProviderV300Contract.js +11 -6
- package/dist/cjs/sdk/core/address-provider/AddressProviderV310Contract.js +4 -4
- package/dist/cjs/sdk/market/MarketConfiguratorContract.js +5 -5
- package/dist/cjs/sdk/market/MarketRegister.js +7 -9
- package/dist/cjs/sdk/market/MarketSuite.js +2 -2
- package/dist/cjs/sdk/market/credit/CreditConfiguratorV300Contract.js +4 -3
- package/dist/cjs/sdk/market/credit/CreditConfiguratorV310Contract.js +4 -3
- package/dist/cjs/sdk/market/credit/CreditFacadeV300Contract.js +9 -9
- package/dist/cjs/sdk/market/credit/CreditFacadeV310Contract.js +8 -8
- package/dist/cjs/sdk/market/credit/CreditManagerV300Contract.js +5 -2
- package/dist/cjs/sdk/market/credit/CreditManagerV310Contract.js +5 -2
- package/dist/cjs/sdk/market/credit/CreditSuite.js +2 -3
- package/dist/cjs/sdk/market/loss-policy/AliasLossPolicyV310Contract.js +3 -1
- package/dist/cjs/sdk/market/loss-policy/LossPolicyContract.js +2 -2
- package/dist/cjs/sdk/market/loss-policy/createLossPolicy.js +1 -1
- package/dist/cjs/sdk/market/oracle/PriceOracleBaseContract.js +8 -26
- package/dist/cjs/sdk/market/oracle/createPriceOracle.js +1 -1
- package/dist/cjs/sdk/market/pool/GaugeContract.js +2 -2
- package/dist/cjs/sdk/market/pool/LinearInterestRateModelContract.js +2 -2
- package/dist/cjs/sdk/market/pool/PoolQuotaKeeperV300Contract.js +2 -2
- package/dist/cjs/sdk/market/pool/PoolQuotaKeeperV310Contract.js +2 -2
- package/dist/cjs/sdk/market/pool/PoolSuite.js +1 -1
- package/dist/cjs/sdk/market/pool/PoolV300Contract.js +5 -5
- package/dist/cjs/sdk/market/pool/PoolV310Contract.js +5 -5
- package/dist/cjs/sdk/market/pool/TumblerContract.js +2 -2
- package/dist/cjs/sdk/market/pool/createInterestRateModel.js +11 -15
- package/dist/cjs/sdk/market/pricefeeds/AbstractLPPriceFeed.js +2 -22
- package/dist/cjs/sdk/market/pricefeeds/AbstractPriceFeed.js +3 -3
- package/dist/cjs/sdk/market/pricefeeds/BalancerStablePriceFeed.js +2 -9
- package/dist/cjs/sdk/market/pricefeeds/BalancerWeightedPriceFeed.js +2 -9
- package/dist/cjs/sdk/market/pricefeeds/BoundedPriceFeed.js +6 -2
- package/dist/cjs/sdk/market/pricefeeds/CompositePriceFeed.js +2 -2
- package/dist/cjs/sdk/market/pricefeeds/ConstantPriceFeed.js +2 -2
- package/dist/cjs/sdk/market/pricefeeds/CurveCryptoPriceFeed.js +2 -9
- package/dist/cjs/sdk/market/pricefeeds/CurveStablePriceFeed.js +2 -9
- package/dist/cjs/sdk/market/pricefeeds/CurveUSDPriceFeed.js +2 -9
- package/dist/cjs/sdk/market/pricefeeds/Erc4626PriceFeed.js +2 -18
- package/dist/cjs/sdk/market/pricefeeds/ExternalPriceFeed.js +2 -2
- package/dist/cjs/sdk/market/pricefeeds/MellowLRTPriceFeed.js +2 -10
- package/dist/cjs/sdk/market/pricefeeds/PendleTWAPPTPriceFeed.js +2 -2
- package/dist/cjs/sdk/market/pricefeeds/PriceFeedRef.js +6 -4
- package/dist/cjs/sdk/market/pricefeeds/PriceFeedsRegister.js +2 -3
- package/dist/cjs/sdk/market/pricefeeds/PythPriceFeed.js +2 -2
- package/dist/cjs/sdk/market/pricefeeds/RedstonePriceFeed.js +3 -3
- package/dist/cjs/sdk/market/pricefeeds/WstETHPriceFeed.js +2 -9
- package/dist/cjs/sdk/market/pricefeeds/YearnPriceFeed.js +2 -9
- package/dist/cjs/sdk/market/pricefeeds/ZeroPriceFeed.js +2 -2
- package/dist/cjs/sdk/market/pricefeeds/updates/PriceUpdatesCache.js +17 -0
- package/dist/cjs/sdk/market/pricefeeds/updates/PythUpdater.js +7 -9
- package/dist/cjs/sdk/market/pricefeeds/updates/RedstoneUpdater.js +10 -12
- package/dist/cjs/sdk/router/AbstractRouterContract.js +5 -0
- package/dist/cjs/sdk/router/RouterV310Contract.js +3 -3
- package/dist/cjs/sdk/router/createRouter.js +4 -0
- package/dist/cjs/sdk/utils/abi-decode.js +58 -0
- package/dist/cjs/sdk/utils/index.js +2 -0
- package/dist/esm/dev/create2.js +2 -2
- package/dist/esm/dev/mint/AbstractMinter.js +3 -7
- package/dist/esm/dev/mint/DealMinter.js +0 -3
- package/dist/esm/dev/mint/DirectMinter.js +0 -3
- package/dist/esm/dev/mint/FallbackMinter.js +1 -1
- package/dist/esm/dev/mint/TransferMinter.js +0 -3
- package/dist/esm/permissionless/bindings/address-provider.js +7 -7
- package/dist/esm/permissionless/bindings/bytecode-repository.js +22 -24
- package/dist/esm/permissionless/bindings/compressors/token-compressor.js +3 -3
- package/dist/esm/permissionless/bindings/compressors/withdrawal-compressor.js +10 -16
- package/dist/esm/permissionless/bindings/cross-chain-multisig.js +20 -16
- package/dist/esm/permissionless/bindings/factory/abstract-factory.js +9 -4
- package/dist/esm/permissionless/bindings/governance/batches-chain.js +3 -3
- package/dist/esm/permissionless/bindings/governance/governor.js +28 -47
- package/dist/esm/permissionless/bindings/governance/timelock.js +3 -3
- package/dist/esm/permissionless/bindings/index.js +0 -1
- package/dist/esm/permissionless/bindings/instance-manager.js +53 -69
- package/dist/esm/permissionless/bindings/market-configurator-factory.js +3 -3
- package/dist/esm/permissionless/bindings/market-configurator.js +65 -137
- package/dist/esm/permissionless/bindings/price-feed-store.js +8 -14
- package/dist/esm/permissionless/bindings/router/routing-manager.js +8 -14
- package/dist/esm/permissionless/bindings/treasury-splitter.js +16 -26
- package/dist/esm/permissionless/core/raw-tx.js +1 -1
- package/dist/esm/permissionless/utils/format.js +1 -1
- package/dist/esm/permissionless/utils/governance/timelock-txs.js +1 -1
- package/dist/esm/permissionless/utils/index.js +0 -1
- package/dist/esm/permissionless/utils/price-update/get-price-feeds.js +4 -2
- package/dist/esm/permissionless/utils/price-update/get-price-update-tx.js +1 -1
- package/dist/esm/permissionless/utils/price-update/get-prices.js +1 -2
- package/dist/esm/permissionless/utils/price-update/get-updatable-feeds.js +1 -1
- package/dist/esm/plugins/adapters/contracts/AbstractAdapter.js +2 -2
- package/dist/esm/plugins/adapters/contracts/AccountMigratorAdapterContract.js +2 -2
- package/dist/esm/plugins/adapters/contracts/BalancerV2VaultAdapterContract.js +2 -2
- package/dist/esm/plugins/adapters/contracts/BalancerV3RouterAdapterContract.js +2 -2
- package/dist/esm/plugins/adapters/contracts/BalancerV3WrapperAdapterContract.js +2 -2
- package/dist/esm/plugins/adapters/contracts/CamelotV3AdapterContract.js +2 -2
- package/dist/esm/plugins/adapters/contracts/ConvexV1BaseRewardPoolAdapterContract.js +2 -2
- package/dist/esm/plugins/adapters/contracts/ConvexV1BoosterAdapterContract.js +2 -2
- package/dist/esm/plugins/adapters/contracts/Curve2AssetsAdapterContract.js +2 -2
- package/dist/esm/plugins/adapters/contracts/Curve3AssetsAdapterContract.js +2 -2
- package/dist/esm/plugins/adapters/contracts/Curve4AssetsAdapterContract.js +2 -2
- package/dist/esm/plugins/adapters/contracts/CurveV1AdapterDeposit.js +2 -2
- package/dist/esm/plugins/adapters/contracts/CurveV1AdapterStETHContract.js +2 -2
- package/dist/esm/plugins/adapters/contracts/CurveV1StableNGAdapterContract.js +2 -2
- package/dist/esm/plugins/adapters/contracts/DaiUsdsAdapterContract.js +2 -2
- package/dist/esm/plugins/adapters/contracts/ERC4626AdapterContract.js +2 -2
- package/dist/esm/plugins/adapters/contracts/ERC4626ReferralAdapterContract.js +2 -2
- package/dist/esm/plugins/adapters/contracts/EqualizerRouterAdapterContract.js +2 -2
- package/dist/esm/plugins/adapters/contracts/FluidDexAdapterContract.js +2 -2
- package/dist/esm/plugins/adapters/contracts/InfinifiGatewayAdapterContract.js +2 -2
- package/dist/esm/plugins/adapters/contracts/InfinifiUnwindingGatewayAdapterContract.js +2 -2
- package/dist/esm/plugins/adapters/contracts/InfraredVaultAdapterContract.js +2 -2
- package/dist/esm/plugins/adapters/contracts/KelpLRTDepositPoolAdapterContract.js +2 -2
- package/dist/esm/plugins/adapters/contracts/KelpLRTWithdrawalManagerAdapterContract.js +2 -2
- package/dist/esm/plugins/adapters/contracts/KodiakIslandGatewayAdapterContract.js +2 -2
- package/dist/esm/plugins/adapters/contracts/LidoV1AdapterContract.js +2 -2
- package/dist/esm/plugins/adapters/contracts/MellowClaimerAdapterContract.js +2 -2
- package/dist/esm/plugins/adapters/contracts/MellowDVVAdapterContract.js +2 -2
- package/dist/esm/plugins/adapters/contracts/MellowDepositQueueAdapterContract.js +2 -2
- package/dist/esm/plugins/adapters/contracts/MellowERC4626VaultAdapterContract.js +2 -2
- package/dist/esm/plugins/adapters/contracts/MellowRedeemQueueAdapterContract.js +2 -2
- package/dist/esm/plugins/adapters/contracts/MellowVaultAdapterContract.js +2 -2
- package/dist/esm/plugins/adapters/contracts/MellowWrapperAdapterContract.js +2 -2
- package/dist/esm/plugins/adapters/contracts/MidasIssuanceVaultAdapterContract.js +2 -2
- package/dist/esm/plugins/adapters/contracts/MidasRedemptionVaultAdapterContract.js +2 -2
- package/dist/esm/plugins/adapters/contracts/PendleRouterAdapterContract.js +2 -2
- package/dist/esm/plugins/adapters/contracts/StakingRewardsAdapterContract.js +2 -2
- package/dist/esm/plugins/adapters/contracts/TraderJoeRouterAdapterContract.js +2 -2
- package/dist/esm/plugins/adapters/contracts/UniswapV2AdapterContract.js +5 -5
- package/dist/esm/plugins/adapters/contracts/UniswapV3AdapterContract.js +22 -22
- package/dist/esm/plugins/adapters/contracts/UniswapV4AdapterContract.js +2 -2
- package/dist/esm/plugins/adapters/contracts/UpshiftVaultAdapterContract.js +2 -2
- package/dist/esm/plugins/adapters/contracts/VelodromeV2AdapterContract.js +2 -2
- package/dist/esm/plugins/adapters/contracts/WstETHV1AdapterContract.js +2 -2
- package/dist/esm/plugins/adapters/contracts/YearnV2AdapterContract.js +2 -2
- package/dist/esm/plugins/bots/deserializePartialLiquidationBotParams.js +29 -0
- package/dist/esm/plugins/zappers/ZappersPlugin.js +1 -1
- package/dist/esm/sdk/GearboxSDK.js +10 -112
- package/dist/esm/sdk/accountMigration/AbstractMigrateCreditAccountsService.js +1 -4
- package/dist/esm/sdk/accounts/AbstractCreditAccountsService.js +7 -9
- package/dist/esm/sdk/base/BaseContract.js +202 -81
- package/dist/esm/sdk/base/ChainContractsRegister.js +111 -0
- package/dist/esm/sdk/base/Construct.js +63 -0
- package/dist/esm/sdk/base/SDKConstruct.js +3 -29
- package/dist/esm/sdk/base/TokensMeta.js +4 -4
- package/dist/esm/sdk/base/index.js +2 -1
- package/dist/esm/sdk/core/BotListV3Contract.js +2 -2
- package/dist/esm/sdk/core/GearStakingV3Contract.js +2 -2
- package/dist/esm/sdk/core/address-provider/AbstractAddressProviderContract.js +2 -2
- package/dist/esm/sdk/core/address-provider/AddressProviderV300Contract.js +11 -6
- package/dist/esm/sdk/core/address-provider/AddressProviderV310Contract.js +4 -4
- package/dist/esm/sdk/market/MarketConfiguratorContract.js +5 -5
- package/dist/esm/sdk/market/MarketRegister.js +8 -10
- package/dist/esm/sdk/market/MarketSuite.js +2 -2
- package/dist/esm/sdk/market/credit/CreditConfiguratorV300Contract.js +4 -3
- package/dist/esm/sdk/market/credit/CreditConfiguratorV310Contract.js +4 -3
- package/dist/esm/sdk/market/credit/CreditFacadeV300Contract.js +9 -9
- package/dist/esm/sdk/market/credit/CreditFacadeV310Contract.js +8 -8
- package/dist/esm/sdk/market/credit/CreditManagerV300Contract.js +5 -2
- package/dist/esm/sdk/market/credit/CreditManagerV310Contract.js +5 -2
- package/dist/esm/sdk/market/credit/CreditSuite.js +2 -3
- package/dist/esm/sdk/market/loss-policy/AliasLossPolicyV310Contract.js +3 -1
- package/dist/esm/sdk/market/loss-policy/LossPolicyContract.js +5 -3
- package/dist/esm/sdk/market/loss-policy/createLossPolicy.js +1 -1
- package/dist/esm/sdk/market/oracle/PriceOracleBaseContract.js +8 -26
- package/dist/esm/sdk/market/oracle/createPriceOracle.js +1 -1
- package/dist/esm/sdk/market/pool/GaugeContract.js +2 -2
- package/dist/esm/sdk/market/pool/LinearInterestRateModelContract.js +2 -2
- package/dist/esm/sdk/market/pool/PoolQuotaKeeperV300Contract.js +2 -2
- package/dist/esm/sdk/market/pool/PoolQuotaKeeperV310Contract.js +2 -2
- package/dist/esm/sdk/market/pool/PoolSuite.js +1 -1
- package/dist/esm/sdk/market/pool/PoolV300Contract.js +5 -5
- package/dist/esm/sdk/market/pool/PoolV310Contract.js +5 -5
- package/dist/esm/sdk/market/pool/TumblerContract.js +2 -2
- package/dist/esm/sdk/market/pool/createInterestRateModel.js +11 -15
- package/dist/esm/sdk/market/pricefeeds/AbstractLPPriceFeed.js +2 -22
- package/dist/esm/sdk/market/pricefeeds/AbstractPriceFeed.js +3 -3
- package/dist/esm/sdk/market/pricefeeds/BalancerStablePriceFeed.js +3 -13
- package/dist/esm/sdk/market/pricefeeds/BalancerWeightedPriceFeed.js +3 -13
- package/dist/esm/sdk/market/pricefeeds/BoundedPriceFeed.js +6 -2
- package/dist/esm/sdk/market/pricefeeds/CompositePriceFeed.js +2 -2
- package/dist/esm/sdk/market/pricefeeds/ConstantPriceFeed.js +2 -2
- package/dist/esm/sdk/market/pricefeeds/CurveCryptoPriceFeed.js +3 -10
- package/dist/esm/sdk/market/pricefeeds/CurveStablePriceFeed.js +3 -10
- package/dist/esm/sdk/market/pricefeeds/CurveUSDPriceFeed.js +3 -10
- package/dist/esm/sdk/market/pricefeeds/Erc4626PriceFeed.js +2 -18
- package/dist/esm/sdk/market/pricefeeds/ExternalPriceFeed.js +2 -2
- package/dist/esm/sdk/market/pricefeeds/MellowLRTPriceFeed.js +3 -11
- package/dist/esm/sdk/market/pricefeeds/PendleTWAPPTPriceFeed.js +2 -2
- package/dist/esm/sdk/market/pricefeeds/PriceFeedRef.js +7 -5
- package/dist/esm/sdk/market/pricefeeds/PriceFeedsRegister.js +3 -9
- package/dist/esm/sdk/market/pricefeeds/PythPriceFeed.js +2 -2
- package/dist/esm/sdk/market/pricefeeds/RedstonePriceFeed.js +3 -3
- package/dist/esm/sdk/market/pricefeeds/WstETHPriceFeed.js +3 -10
- package/dist/esm/sdk/market/pricefeeds/YearnPriceFeed.js +3 -10
- package/dist/esm/sdk/market/pricefeeds/ZeroPriceFeed.js +2 -2
- package/dist/esm/sdk/market/pricefeeds/updates/PriceUpdatesCache.js +17 -0
- package/dist/esm/sdk/market/pricefeeds/updates/PythUpdater.js +8 -10
- package/dist/esm/sdk/market/pricefeeds/updates/RedstoneUpdater.js +11 -13
- package/dist/esm/sdk/router/AbstractRouterContract.js +5 -0
- package/dist/esm/sdk/router/RouterV310Contract.js +3 -3
- package/dist/esm/sdk/router/createRouter.js +4 -0
- package/dist/esm/sdk/utils/abi-decode.js +37 -0
- package/dist/esm/sdk/utils/index.js +1 -0
- package/dist/types/dev/create2.d.ts +2 -2
- package/dist/types/dev/mint/AbstractMinter.d.ts +3 -4
- package/dist/types/dev/mint/DealMinter.d.ts +0 -3
- package/dist/types/dev/mint/DirectMinter.d.ts +0 -3
- package/dist/types/dev/mint/TransferMinter.d.ts +0 -3
- package/dist/types/permissionless/bindings/address-provider.d.ts +4 -255
- package/dist/types/permissionless/bindings/bytecode-repository.d.ts +5 -6
- package/dist/types/permissionless/bindings/compressors/token-compressor.d.ts +3 -3
- package/dist/types/permissionless/bindings/compressors/withdrawal-compressor.d.ts +4 -5
- package/dist/types/permissionless/bindings/cross-chain-multisig.d.ts +7 -7
- package/dist/types/permissionless/bindings/factory/abstract-factory.d.ts +1 -1
- package/dist/types/permissionless/bindings/governance/batches-chain.d.ts +3 -4
- package/dist/types/permissionless/bindings/governance/governor.d.ts +6 -7
- package/dist/types/permissionless/bindings/governance/timelock.d.ts +3 -3
- package/dist/types/permissionless/bindings/governance/types.d.ts +1 -1
- package/dist/types/permissionless/bindings/index.d.ts +0 -1
- package/dist/types/permissionless/bindings/instance-manager.d.ts +6 -7
- package/dist/types/permissionless/bindings/market-configurator-factory.d.ts +4 -4
- package/dist/types/permissionless/bindings/market-configurator.d.ts +6 -6
- package/dist/types/permissionless/bindings/price-feed-store.d.ts +6 -7
- package/dist/types/permissionless/bindings/router/routing-manager.d.ts +4 -5
- package/dist/types/permissionless/bindings/treasury-splitter.d.ts +5 -6
- package/dist/types/permissionless/core/proposal.d.ts +1 -7
- package/dist/types/permissionless/utils/create2.d.ts +1 -1
- package/dist/types/permissionless/utils/governance/batch.d.ts +1 -1
- package/dist/types/permissionless/utils/index.d.ts +0 -1
- package/dist/types/permissionless/utils/price-update/get-price-feeds.d.ts +3 -3
- package/dist/types/permissionless/utils/price-update/get-price-update-tx.d.ts +2 -2
- package/dist/types/plugins/adapters/contracts/AbstractAdapter.d.ts +2 -2
- package/dist/types/plugins/adapters/contracts/AccountMigratorAdapterContract.d.ts +2 -2
- package/dist/types/plugins/adapters/contracts/BalancerV2VaultAdapterContract.d.ts +2 -2
- package/dist/types/plugins/adapters/contracts/BalancerV3RouterAdapterContract.d.ts +2 -2
- package/dist/types/plugins/adapters/contracts/BalancerV3WrapperAdapterContract.d.ts +2 -2
- package/dist/types/plugins/adapters/contracts/CamelotV3AdapterContract.d.ts +2 -2
- package/dist/types/plugins/adapters/contracts/ConvexV1BaseRewardPoolAdapterContract.d.ts +2 -2
- package/dist/types/plugins/adapters/contracts/ConvexV1BoosterAdapterContract.d.ts +2 -2
- package/dist/types/plugins/adapters/contracts/Curve2AssetsAdapterContract.d.ts +2 -2
- package/dist/types/plugins/adapters/contracts/Curve3AssetsAdapterContract.d.ts +2 -2
- package/dist/types/plugins/adapters/contracts/Curve4AssetsAdapterContract.d.ts +2 -2
- package/dist/types/plugins/adapters/contracts/CurveV1AdapterDeposit.d.ts +2 -2
- package/dist/types/plugins/adapters/contracts/CurveV1AdapterStETHContract.d.ts +2 -2
- package/dist/types/plugins/adapters/contracts/CurveV1StableNGAdapterContract.d.ts +2 -2
- package/dist/types/plugins/adapters/contracts/DaiUsdsAdapterContract.d.ts +2 -2
- package/dist/types/plugins/adapters/contracts/ERC4626AdapterContract.d.ts +2 -2
- package/dist/types/plugins/adapters/contracts/ERC4626ReferralAdapterContract.d.ts +2 -2
- package/dist/types/plugins/adapters/contracts/EqualizerRouterAdapterContract.d.ts +2 -2
- package/dist/types/plugins/adapters/contracts/FluidDexAdapterContract.d.ts +2 -2
- package/dist/types/plugins/adapters/contracts/InfinifiGatewayAdapterContract.d.ts +2 -2
- package/dist/types/plugins/adapters/contracts/InfinifiUnwindingGatewayAdapterContract.d.ts +2 -2
- package/dist/types/plugins/adapters/contracts/InfraredVaultAdapterContract.d.ts +2 -2
- package/dist/types/plugins/adapters/contracts/KelpLRTDepositPoolAdapterContract.d.ts +2 -2
- package/dist/types/plugins/adapters/contracts/KelpLRTWithdrawalManagerAdapterContract.d.ts +2 -2
- package/dist/types/plugins/adapters/contracts/KodiakIslandGatewayAdapterContract.d.ts +2 -2
- package/dist/types/plugins/adapters/contracts/LidoV1AdapterContract.d.ts +2 -2
- package/dist/types/plugins/adapters/contracts/MellowClaimerAdapterContract.d.ts +2 -2
- package/dist/types/plugins/adapters/contracts/MellowDVVAdapterContract.d.ts +2 -2
- package/dist/types/plugins/adapters/contracts/MellowDepositQueueAdapterContract.d.ts +2 -2
- package/dist/types/plugins/adapters/contracts/MellowERC4626VaultAdapterContract.d.ts +2 -2
- package/dist/types/plugins/adapters/contracts/MellowRedeemQueueAdapterContract.d.ts +2 -2
- package/dist/types/plugins/adapters/contracts/MellowVaultAdapterContract.d.ts +2 -2
- package/dist/types/plugins/adapters/contracts/MellowWrapperAdapterContract.d.ts +2 -2
- package/dist/types/plugins/adapters/contracts/MidasIssuanceVaultAdapterContract.d.ts +2 -2
- package/dist/types/plugins/adapters/contracts/MidasRedemptionVaultAdapterContract.d.ts +2 -2
- package/dist/types/plugins/adapters/contracts/PendleRouterAdapterContract.d.ts +2 -2
- package/dist/types/plugins/adapters/contracts/StakingRewardsAdapterContract.d.ts +2 -2
- package/dist/types/plugins/adapters/contracts/TraderJoeRouterAdapterContract.d.ts +2 -2
- package/dist/types/plugins/adapters/contracts/UniswapV2AdapterContract.d.ts +3 -3
- package/dist/types/plugins/adapters/contracts/UniswapV3AdapterContract.d.ts +3 -3
- package/dist/types/plugins/adapters/contracts/UniswapV4AdapterContract.d.ts +2 -2
- package/dist/types/plugins/adapters/contracts/UpshiftVaultAdapterContract.d.ts +2 -2
- package/dist/types/plugins/adapters/contracts/VelodromeV2AdapterContract.d.ts +2 -2
- package/dist/types/plugins/adapters/contracts/WstETHV1AdapterContract.d.ts +2 -2
- package/dist/types/plugins/adapters/contracts/YearnV2AdapterContract.d.ts +2 -2
- package/dist/types/plugins/bots/deserializePartialLiquidationBotParams.d.ts +3 -0
- package/dist/types/sdk/GearboxSDK.d.ts +5 -76
- package/dist/types/sdk/accountMigration/types.d.ts +1 -2
- package/dist/types/sdk/accounts/types.d.ts +4 -3
- package/dist/types/sdk/base/BaseContract.d.ts +72 -28
- package/dist/types/sdk/base/ChainContractsRegister.d.ts +57 -0
- package/dist/types/sdk/base/Construct.d.ts +38 -0
- package/dist/types/sdk/base/PlaceholderContract.d.ts +2 -2
- package/dist/types/sdk/base/SDKConstruct.d.ts +2 -16
- package/dist/types/sdk/base/TokensMeta.d.ts +2 -3
- package/dist/types/sdk/base/index.d.ts +2 -1
- package/dist/types/sdk/base/types.d.ts +50 -0
- package/dist/types/sdk/core/BotListV3Contract.d.ts +1 -1
- package/dist/types/sdk/core/GearStakingV3Contract.d.ts +1 -1
- package/dist/types/sdk/core/address-provider/AbstractAddressProviderContract.d.ts +3 -4
- package/dist/types/sdk/core/address-provider/AddressProviderV300Contract.d.ts +3 -3
- package/dist/types/sdk/core/address-provider/AddressProviderV310Contract.d.ts +3 -3
- package/dist/types/sdk/market/MarketConfiguratorContract.d.ts +2 -2
- package/dist/types/sdk/market/credit/CreditConfiguratorV300Contract.d.ts +3 -3
- package/dist/types/sdk/market/credit/CreditConfiguratorV310Contract.d.ts +3 -3
- package/dist/types/sdk/market/credit/CreditFacadeV300Contract.d.ts +3 -4
- package/dist/types/sdk/market/credit/CreditFacadeV310Contract.d.ts +3 -4
- package/dist/types/sdk/market/credit/CreditManagerV300Contract.d.ts +1 -1
- package/dist/types/sdk/market/credit/CreditManagerV310Contract.d.ts +1 -1
- package/dist/types/sdk/market/credit/CreditSuite.d.ts +1 -1
- package/dist/types/sdk/market/credit/types.d.ts +1 -2
- package/dist/types/sdk/market/loss-policy/AliasLossPolicyV310Contract.d.ts +1 -0
- package/dist/types/sdk/market/loss-policy/LossPolicyContract.d.ts +2 -3
- package/dist/types/sdk/market/oracle/PriceOracleBaseContract.d.ts +3 -12
- package/dist/types/sdk/market/oracle/types.d.ts +0 -10
- package/dist/types/sdk/market/pool/GaugeContract.d.ts +2 -3
- package/dist/types/sdk/market/pool/LinearInterestRateModelContract.d.ts +2 -3
- package/dist/types/sdk/market/pool/PoolQuotaKeeperV300Contract.d.ts +2 -3
- package/dist/types/sdk/market/pool/PoolQuotaKeeperV310Contract.d.ts +2 -3
- package/dist/types/sdk/market/pool/PoolV300Contract.d.ts +4 -5
- package/dist/types/sdk/market/pool/PoolV310Contract.d.ts +4 -5
- package/dist/types/sdk/market/pool/TumblerContract.d.ts +2 -3
- package/dist/types/sdk/market/pricefeeds/AbstractLPPriceFeed.d.ts +3 -8
- package/dist/types/sdk/market/pricefeeds/AbstractPriceFeed.d.ts +2 -3
- package/dist/types/sdk/market/pricefeeds/BalancerStablePriceFeed.d.ts +2 -3
- package/dist/types/sdk/market/pricefeeds/BalancerWeightedPriceFeed.d.ts +2 -3
- package/dist/types/sdk/market/pricefeeds/BoundedPriceFeed.d.ts +2 -2
- package/dist/types/sdk/market/pricefeeds/CompositePriceFeed.d.ts +2 -2
- package/dist/types/sdk/market/pricefeeds/ConstantPriceFeed.d.ts +2 -2
- package/dist/types/sdk/market/pricefeeds/CurveCryptoPriceFeed.d.ts +2 -3
- package/dist/types/sdk/market/pricefeeds/CurveStablePriceFeed.d.ts +2 -3
- package/dist/types/sdk/market/pricefeeds/CurveUSDPriceFeed.d.ts +2 -3
- package/dist/types/sdk/market/pricefeeds/Erc4626PriceFeed.d.ts +2 -3
- package/dist/types/sdk/market/pricefeeds/ExternalPriceFeed.d.ts +2 -2
- package/dist/types/sdk/market/pricefeeds/MellowLRTPriceFeed.d.ts +2 -3
- package/dist/types/sdk/market/pricefeeds/PendleTWAPPTPriceFeed.d.ts +2 -2
- package/dist/types/sdk/market/pricefeeds/PriceFeedRef.d.ts +3 -4
- package/dist/types/sdk/market/pricefeeds/PriceFeedsRegister.d.ts +1 -2
- package/dist/types/sdk/market/pricefeeds/PythPriceFeed.d.ts +2 -2
- package/dist/types/sdk/market/pricefeeds/RedstonePriceFeed.d.ts +2 -2
- package/dist/types/sdk/market/pricefeeds/WstETHPriceFeed.d.ts +2 -3
- package/dist/types/sdk/market/pricefeeds/YearnPriceFeed.d.ts +2 -3
- package/dist/types/sdk/market/pricefeeds/ZeroPriceFeed.d.ts +2 -2
- package/dist/types/sdk/market/pricefeeds/types.d.ts +0 -5
- package/dist/types/sdk/market/pricefeeds/updates/PriceUpdatesCache.d.ts +8 -1
- package/dist/types/sdk/router/AbstractRouterContract.d.ts +4 -1
- package/dist/types/sdk/router/types.d.ts +1 -2
- package/dist/types/sdk/sdk-legacy/core/creditAccount.d.ts +2 -2
- package/dist/types/sdk/utils/abi-decode.d.ts +10 -0
- package/dist/types/sdk/utils/index.d.ts +1 -0
- package/package.json +1 -1
- package/dist/cjs/permissionless/bindings/base-contract.js +0 -173
- package/dist/cjs/permissionless/utils/abi-decoder.js +0 -72
- package/dist/cjs/sdk/base/AddressLabeller.js +0 -49
- package/dist/cjs/sdk/base/IAddressLabeller.js +0 -16
- package/dist/esm/permissionless/bindings/base-contract.js +0 -151
- package/dist/esm/permissionless/utils/abi-decoder.js +0 -50
- package/dist/esm/sdk/base/AddressLabeller.js +0 -25
- package/dist/esm/sdk/base/IAddressLabeller.js +0 -0
- package/dist/types/permissionless/bindings/base-contract.d.ts +0 -23
- package/dist/types/permissionless/utils/abi-decoder.d.ts +0 -13
- package/dist/types/sdk/base/AddressLabeller.d.ts +0 -11
- package/dist/types/sdk/base/IAddressLabeller.d.ts +0 -9
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
http,
|
|
6
6
|
parseEventLogs
|
|
7
7
|
} from "viem";
|
|
8
|
-
import {
|
|
8
|
+
import { ChainContractsRegister } from "./base/index.js";
|
|
9
9
|
import { detectNetwork, getChain } from "./chain/index.js";
|
|
10
10
|
import {
|
|
11
11
|
ADDRESS_PROVIDER_V310,
|
|
@@ -30,7 +30,7 @@ import {
|
|
|
30
30
|
PluginStateVersionError
|
|
31
31
|
} from "./plugins/index.js";
|
|
32
32
|
import { createRouter } from "./router/index.js";
|
|
33
|
-
import {
|
|
33
|
+
import { TypedObjectUtils, toAddress } from "./utils/index.js";
|
|
34
34
|
import { Hooks } from "./utils/internal/index.js";
|
|
35
35
|
import { getLogsSafe } from "./utils/viem/index.js";
|
|
36
36
|
const ERR_NOT_ATTACHED = new Error("Gearbox SDK not attached");
|
|
@@ -69,10 +69,9 @@ async function attachClient(options, network) {
|
|
|
69
69
|
}
|
|
70
70
|
return createClient(options, { networkType, chainId });
|
|
71
71
|
}
|
|
72
|
-
class GearboxSDK {
|
|
72
|
+
class GearboxSDK extends ChainContractsRegister {
|
|
73
73
|
#hooks = new Hooks();
|
|
74
74
|
plugins;
|
|
75
|
-
#client;
|
|
76
75
|
// Block which was use for data query
|
|
77
76
|
#currentBlock;
|
|
78
77
|
#timestamp;
|
|
@@ -83,29 +82,11 @@ class GearboxSDK {
|
|
|
83
82
|
// Collection of markets
|
|
84
83
|
#marketRegister;
|
|
85
84
|
#priceFeeds;
|
|
86
|
-
logger;
|
|
87
85
|
gasLimit;
|
|
88
|
-
addressLabels = new AddressLabeller();
|
|
89
|
-
/**
|
|
90
|
-
* Interest rate models can be reused across chain (and SDK operates on chain level)
|
|
91
|
-
* TODO: use whatever interface is necessary for InterestRateModels
|
|
92
|
-
*/
|
|
93
|
-
interestRateModels = new AddressMap();
|
|
94
86
|
/**
|
|
95
87
|
* Will throw an error if contract type is not supported, otherwise will try to use generic contract first, if possible
|
|
96
88
|
*/
|
|
97
89
|
strictContractTypes;
|
|
98
|
-
/**
|
|
99
|
-
* All contracts known to sdk
|
|
100
|
-
*/
|
|
101
|
-
contracts = new AddressMap(
|
|
102
|
-
void 0,
|
|
103
|
-
"contracts"
|
|
104
|
-
);
|
|
105
|
-
/**
|
|
106
|
-
* Token metadata such as symbol and decimals
|
|
107
|
-
*/
|
|
108
|
-
tokensMeta;
|
|
109
90
|
addHook = this.#hooks.addHook.bind(this.#hooks);
|
|
110
91
|
removeHook = this.#hooks.removeHook.bind(this.#hooks);
|
|
111
92
|
static async attach(options) {
|
|
@@ -158,17 +139,16 @@ class GearboxSDK {
|
|
|
158
139
|
}).#hydrate(rest, state);
|
|
159
140
|
}
|
|
160
141
|
constructor(options) {
|
|
161
|
-
|
|
142
|
+
super(options.client, options.logger);
|
|
162
143
|
this.strictContractTypes = options.strictContractTypes ?? false;
|
|
163
144
|
this.plugins = options.plugins ?? {};
|
|
164
|
-
this.#client = options.client;
|
|
165
145
|
for (const plugin of Object.values(this.plugins)) {
|
|
166
146
|
plugin.sdk = this;
|
|
167
147
|
}
|
|
168
148
|
if (options.gasLimit !== null) {
|
|
169
149
|
this.gasLimit = options.gasLimit || 550000000n;
|
|
170
150
|
}
|
|
171
|
-
this.
|
|
151
|
+
Object.assign(this, ChainContractsRegister.for(this.client, this.logger));
|
|
172
152
|
}
|
|
173
153
|
async #attach(opts) {
|
|
174
154
|
const {
|
|
@@ -324,74 +304,9 @@ class GearboxSDK {
|
|
|
324
304
|
timestamp: state.timestamp
|
|
325
305
|
});
|
|
326
306
|
}
|
|
327
|
-
get client() {
|
|
328
|
-
return this.#client;
|
|
329
|
-
}
|
|
330
|
-
/**
|
|
331
|
-
* Replaces client inflight
|
|
332
|
-
* You're responsible for all inconsistencies between new and old client
|
|
333
|
-
* @param options
|
|
334
|
-
*/
|
|
335
|
-
replaceClient(options, network) {
|
|
336
|
-
this.#client = createClient(options, network);
|
|
337
|
-
}
|
|
338
307
|
get networkType() {
|
|
339
308
|
return this.client.chain.network;
|
|
340
309
|
}
|
|
341
|
-
get chain() {
|
|
342
|
-
return this.client.chain;
|
|
343
|
-
}
|
|
344
|
-
get chainId() {
|
|
345
|
-
return this.client.chain.id;
|
|
346
|
-
}
|
|
347
|
-
/**
|
|
348
|
-
* Converts contract call into some human-friendly string
|
|
349
|
-
* This method is safe and should not throw
|
|
350
|
-
* @param address
|
|
351
|
-
* @param calldata
|
|
352
|
-
* @returns
|
|
353
|
-
*/
|
|
354
|
-
parseFunctionData(address, calldata) {
|
|
355
|
-
const contract = this.contracts.get(address);
|
|
356
|
-
return contract ? contract.parseFunctionData(calldata) : `unknown: ${address}.${calldata.slice(0, 10)}`;
|
|
357
|
-
}
|
|
358
|
-
/**
|
|
359
|
-
* Converts multicalls into some human-friendly strings
|
|
360
|
-
* This method is safe and should not throw
|
|
361
|
-
* @param address
|
|
362
|
-
* @param calldata
|
|
363
|
-
* @returns
|
|
364
|
-
*/
|
|
365
|
-
parseMultiCall(calls) {
|
|
366
|
-
return calls.map(
|
|
367
|
-
(call) => this.parseFunctionData(call.target, call.callData)
|
|
368
|
-
);
|
|
369
|
-
}
|
|
370
|
-
/**
|
|
371
|
-
* Return args, function, type and address name from contract call
|
|
372
|
-
* @param address
|
|
373
|
-
* @param calldata
|
|
374
|
-
* @returns
|
|
375
|
-
*/
|
|
376
|
-
parseFunctionDataToObject(address, calldata) {
|
|
377
|
-
const contract = this.contracts.get(address);
|
|
378
|
-
return contract ? {
|
|
379
|
-
...contract.parseFunctionDataToObject(calldata),
|
|
380
|
-
address,
|
|
381
|
-
type: contract.contractType
|
|
382
|
-
} : null;
|
|
383
|
-
}
|
|
384
|
-
/**
|
|
385
|
-
* Converts multicalls into call info
|
|
386
|
-
* @param address
|
|
387
|
-
* @param calldata
|
|
388
|
-
* @returns
|
|
389
|
-
*/
|
|
390
|
-
parseMultiCallToObject(calls) {
|
|
391
|
-
return calls.map(
|
|
392
|
-
(call) => this.parseFunctionDataToObject(call.target, call.callData)
|
|
393
|
-
);
|
|
394
|
-
}
|
|
395
310
|
stateHuman(raw = true) {
|
|
396
311
|
return {
|
|
397
312
|
block: Number(this.currentBlock),
|
|
@@ -483,7 +398,7 @@ class GearboxSDK {
|
|
|
483
398
|
address: watchAddresses
|
|
484
399
|
});
|
|
485
400
|
for (const log of logs) {
|
|
486
|
-
const contract = this.
|
|
401
|
+
const contract = this.getContract(log.address);
|
|
487
402
|
if (contract) {
|
|
488
403
|
const event = parseEventLogs({
|
|
489
404
|
abi: contract.abi,
|
|
@@ -572,17 +487,11 @@ class GearboxSDK {
|
|
|
572
487
|
}
|
|
573
488
|
get botListContract() {
|
|
574
489
|
const addr = this.addressProvider.getAddress(AP_BOT_LIST, NO_VERSION);
|
|
575
|
-
|
|
576
|
-
return new BotListContract(this, addr);
|
|
577
|
-
}
|
|
578
|
-
return this.contracts.get(addr);
|
|
490
|
+
return this.getContract(addr) ?? new BotListContract(this, addr);
|
|
579
491
|
}
|
|
580
492
|
get gearStakingContract() {
|
|
581
493
|
const addr = this.addressProvider.getAddress(AP_GEAR_STAKING, NO_VERSION);
|
|
582
|
-
|
|
583
|
-
return new GearStakingContract(this, addr);
|
|
584
|
-
}
|
|
585
|
-
return this.contracts.get(addr);
|
|
494
|
+
return this.getContract(addr) ?? new GearStakingContract(this, addr);
|
|
586
495
|
}
|
|
587
496
|
get marketRegister() {
|
|
588
497
|
if (this.#marketRegister === void 0) {
|
|
@@ -609,7 +518,7 @@ class GearboxSDK {
|
|
|
609
518
|
);
|
|
610
519
|
facadeAddr = cm.creditFacade.address;
|
|
611
520
|
}
|
|
612
|
-
const facadeV = this.
|
|
521
|
+
const facadeV = this.mustGetContract(facadeAddr).version;
|
|
613
522
|
routerRange = isV310(facadeV) ? VERSION_RANGE_310 : VERSION_RANGE_300;
|
|
614
523
|
}
|
|
615
524
|
const routerEntry = this.addressProvider.getLatest(AP_ROUTER, routerRange);
|
|
@@ -617,18 +526,7 @@ class GearboxSDK {
|
|
|
617
526
|
throw new Error(`router not found in version range ${routerRange}`);
|
|
618
527
|
}
|
|
619
528
|
const [routerAddr, routerV] = routerEntry;
|
|
620
|
-
|
|
621
|
-
return createRouter(this, routerAddr, routerV);
|
|
622
|
-
}
|
|
623
|
-
return this.contracts.get(routerAddr);
|
|
624
|
-
}
|
|
625
|
-
/**
|
|
626
|
-
* Helper to get human-friendly label for address
|
|
627
|
-
* @param address
|
|
628
|
-
* @returns
|
|
629
|
-
*/
|
|
630
|
-
labelAddress(address) {
|
|
631
|
-
return this.addressLabels.get(address);
|
|
529
|
+
return createRouter(this, routerAddr, routerV);
|
|
632
530
|
}
|
|
633
531
|
}
|
|
634
532
|
export {
|
|
@@ -7,9 +7,7 @@ import { createCreditAccountService } from "../accounts/createCreditAccountServi
|
|
|
7
7
|
import { SDKConstruct } from "../base/index.js";
|
|
8
8
|
import { chains as CHAINS } from "../chain/chains.js";
|
|
9
9
|
import { isV310 } from "../constants/versions.js";
|
|
10
|
-
import { childLogger } from "../utils/index.js";
|
|
11
10
|
class AbstractMigrateCreditAccountsService extends SDKConstruct {
|
|
12
|
-
#logger;
|
|
13
11
|
#version;
|
|
14
12
|
#service;
|
|
15
13
|
// TODO: HARDCODED
|
|
@@ -27,8 +25,7 @@ class AbstractMigrateCreditAccountsService extends SDKConstruct {
|
|
|
27
25
|
super(sdk);
|
|
28
26
|
this.#version = version;
|
|
29
27
|
this.#service = createCreditAccountService(this.sdk, version);
|
|
30
|
-
this
|
|
31
|
-
this.#logger?.debug(
|
|
28
|
+
this.logger?.debug(
|
|
32
29
|
`Created MigrateCreditAccountsService with version: ${this.#version}`
|
|
33
30
|
);
|
|
34
31
|
}
|
|
@@ -24,7 +24,7 @@ import {
|
|
|
24
24
|
} from "../constants/index.js";
|
|
25
25
|
import { assetsMap } from "../router/index.js";
|
|
26
26
|
import { BigIntMath } from "../sdk-legacy/index.js";
|
|
27
|
-
import { AddressMap
|
|
27
|
+
import { AddressMap } from "../utils/index.js";
|
|
28
28
|
import { simulateWithPriceUpdates } from "../utils/viem/index.js";
|
|
29
29
|
function getWithdrawalCompressorAddress(chainId) {
|
|
30
30
|
const compressor = chainId === 1 ? "0xfB79b6713fe214B8748ED7b0db1f93E4f1aC9d29" : void 0;
|
|
@@ -33,7 +33,6 @@ function getWithdrawalCompressorAddress(chainId) {
|
|
|
33
33
|
class AbstractCreditAccountService extends SDKConstruct {
|
|
34
34
|
#compressor;
|
|
35
35
|
#batchSize;
|
|
36
|
-
#logger;
|
|
37
36
|
constructor(sdk, options) {
|
|
38
37
|
super(sdk);
|
|
39
38
|
[this.#compressor] = sdk.addressProvider.mustGetLatest(
|
|
@@ -41,8 +40,7 @@ class AbstractCreditAccountService extends SDKConstruct {
|
|
|
41
40
|
VERSION_RANGE_310
|
|
42
41
|
);
|
|
43
42
|
this.#batchSize = options?.batchSize;
|
|
44
|
-
this
|
|
45
|
-
this.#logger?.debug(
|
|
43
|
+
this.logger?.debug(
|
|
46
44
|
`credit account compressor address: ${this.#compressor}`
|
|
47
45
|
);
|
|
48
46
|
}
|
|
@@ -144,7 +142,7 @@ class AbstractCreditAccountService extends SDKConstruct {
|
|
|
144
142
|
offset = newOffset;
|
|
145
143
|
} while (offset !== 0n);
|
|
146
144
|
}
|
|
147
|
-
this
|
|
145
|
+
this.logger?.debug(
|
|
148
146
|
`loaded ${allCAs.length} credit accounts (${allCAs.length - revertingOffset} reverting)`
|
|
149
147
|
);
|
|
150
148
|
return allCAs.sort((a, b) => Number(a.healthFactor - b.healthFactor));
|
|
@@ -278,7 +276,7 @@ class AbstractCreditAccountService extends SDKConstruct {
|
|
|
278
276
|
lossPolicyData = await market.lossPolicy.getLiquidationData(
|
|
279
277
|
account.creditAccount
|
|
280
278
|
);
|
|
281
|
-
this
|
|
279
|
+
this.logger?.debug({ lossPolicyData }, "loss policy data");
|
|
282
280
|
}
|
|
283
281
|
const tx = cm.creditFacade.liquidateCreditAccount(
|
|
284
282
|
account.creditAccount,
|
|
@@ -836,7 +834,7 @@ class AbstractCreditAccountService extends SDKConstruct {
|
|
|
836
834
|
gas: this.sdk.gasLimit
|
|
837
835
|
});
|
|
838
836
|
}
|
|
839
|
-
this
|
|
837
|
+
this.logger?.debug(
|
|
840
838
|
{
|
|
841
839
|
accounts: resp[0]?.length ?? 0,
|
|
842
840
|
nextOffset: Number(resp[1])
|
|
@@ -916,7 +914,7 @@ class AbstractCreditAccountService extends SDKConstruct {
|
|
|
916
914
|
});
|
|
917
915
|
const tStr = Array.from(tokens).map((t) => this.labelAddress(t)).join(", ");
|
|
918
916
|
const remark = ignoreReservePrices ? " main" : "";
|
|
919
|
-
this
|
|
917
|
+
this.logger?.debug(
|
|
920
918
|
{ account: creditAccount?.creditAccount, manager: cm.name },
|
|
921
919
|
`generating price feed updates for ${tStr} from ${priceFeeds.length}${remark} price feeds`
|
|
922
920
|
);
|
|
@@ -932,7 +930,7 @@ class AbstractCreditAccountService extends SDKConstruct {
|
|
|
932
930
|
const market = this.sdk.marketRegister.findByCreditManager(creditManager);
|
|
933
931
|
const cm = this.sdk.marketRegister.findCreditManager(creditManager);
|
|
934
932
|
const update = await this.getUpdateForAccount(options);
|
|
935
|
-
this
|
|
933
|
+
this.logger?.debug(
|
|
936
934
|
{ account: creditAccount?.creditAccount, manager: cm.name },
|
|
937
935
|
`getting on demand price updates from ${update.txs.length} txs`
|
|
938
936
|
);
|
|
@@ -1,65 +1,66 @@
|
|
|
1
|
-
import {
|
|
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 {
|
|
12
|
-
class
|
|
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
|
-
|
|
19
|
-
|
|
20
|
-
constructor(
|
|
21
|
-
super(
|
|
40
|
+
address;
|
|
41
|
+
name;
|
|
42
|
+
constructor({ client, logger }, args) {
|
|
43
|
+
super({ client, logger });
|
|
22
44
|
this.abi = args.abi;
|
|
23
|
-
this
|
|
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 =
|
|
38
|
-
this.
|
|
39
|
-
|
|
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.
|
|
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
|
-
*
|
|
75
|
-
*
|
|
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
|
-
|
|
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 =
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
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
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
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
|
-
*
|
|
120
|
-
*
|
|
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
|
-
|
|
124
|
-
const
|
|
175
|
+
stringifyFunctionParams(decoded) {
|
|
176
|
+
const abiItem = getAbiItem({
|
|
125
177
|
abi: this.abi,
|
|
126
|
-
|
|
178
|
+
name: decoded.functionName,
|
|
179
|
+
args: decoded.args
|
|
127
180
|
});
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
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
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
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.
|
|
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
|
};
|