@gearbox-protocol/sdk 14.12.0-next.1 → 14.12.0-next.11
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/abi/iZapper.js +62 -24
- package/dist/cjs/dev/AccountOpener.js +7 -13
- package/dist/cjs/history/classifyMulticallOperations.js +2 -0
- package/dist/cjs/history/mapOperations.js +7 -0
- package/dist/cjs/plugins/adapters/abi/iConvexV1BoosterAdapter.js +143 -0
- package/dist/cjs/plugins/adapters/abi/index.js +2 -0
- package/dist/cjs/plugins/adapters/contracts/AbstractAdapter.js +36 -0
- package/dist/cjs/plugins/adapters/contracts/AbstractCurveAdapter.js +66 -0
- package/dist/cjs/plugins/adapters/contracts/BalancerV3RouterAdapterContract.js +19 -0
- package/dist/cjs/plugins/adapters/contracts/BalancerV3WrapperAdapterContract.js +15 -0
- package/dist/cjs/plugins/adapters/contracts/CamelotV3AdapterContract.js +20 -0
- package/dist/cjs/plugins/adapters/contracts/ConvexV1BaseRewardPoolAdapterContract.js +18 -0
- package/dist/cjs/plugins/adapters/contracts/ConvexV1BoosterAdapterContract.js +28 -2
- package/dist/cjs/plugins/adapters/contracts/Curve2AssetsAdapterContract.js +2 -7
- package/dist/cjs/plugins/adapters/contracts/Curve3AssetsAdapterContract.js +2 -7
- package/dist/cjs/plugins/adapters/contracts/Curve4AssetsAdapterContract.js +2 -7
- package/dist/cjs/plugins/adapters/contracts/CurveV1AdapterDeposit.js +2 -2
- package/dist/cjs/plugins/adapters/contracts/CurveV1AdapterStETHContract.js +2 -7
- package/dist/cjs/plugins/adapters/contracts/CurveV1StableNGAdapterContract.js +2 -7
- package/dist/cjs/plugins/adapters/contracts/DaiUsdsAdapterContract.js +14 -0
- package/dist/cjs/plugins/adapters/contracts/ERC4626AdapterContract.js +15 -0
- package/dist/cjs/plugins/adapters/contracts/ERC4626ReferralAdapterContract.js +14 -0
- package/dist/cjs/plugins/adapters/contracts/FluidDexAdapterContract.js +15 -0
- package/dist/cjs/plugins/adapters/contracts/InfinifiGatewayAdapterContract.js +21 -0
- package/dist/cjs/plugins/adapters/contracts/KelpLRTDepositPoolAdapterContract.js +10 -0
- package/dist/cjs/plugins/adapters/contracts/LidoV1AdapterContract.js +11 -0
- package/dist/cjs/plugins/adapters/contracts/MellowDVVAdapterContract.js +15 -0
- package/dist/cjs/plugins/adapters/contracts/MellowERC4626VaultAdapterContract.js +15 -0
- package/dist/cjs/plugins/adapters/contracts/MellowWrapperAdapterContract.js +11 -0
- package/dist/cjs/plugins/adapters/contracts/MidasIssuanceVaultAdapterContract.js +10 -0
- package/dist/cjs/plugins/adapters/contracts/MidasRedemptionVaultAdapterContract.js +12 -0
- package/dist/cjs/plugins/adapters/contracts/PendleRouterAdapterContract.js +58 -0
- package/dist/cjs/plugins/adapters/contracts/SecuritizeOnRampAdapterContract.js +11 -0
- package/dist/cjs/plugins/adapters/contracts/SecuritizeSwapAdapterContract.js +22 -1
- package/dist/cjs/plugins/adapters/contracts/StakingRewardsAdapterContract.js +17 -0
- package/dist/cjs/plugins/adapters/contracts/TraderJoeRouterAdapterContract.js +10 -0
- package/dist/cjs/plugins/adapters/contracts/UniswapV2AdapterContract.js +10 -0
- package/dist/cjs/plugins/adapters/contracts/UniswapV3AdapterContract.js +20 -0
- package/dist/cjs/plugins/adapters/contracts/UniswapV4AdapterContract.js +15 -0
- package/dist/cjs/plugins/adapters/contracts/UpshiftVaultAdapterContract.js +14 -0
- package/dist/cjs/plugins/adapters/contracts/VelodromeV2AdapterContract.js +10 -0
- package/dist/cjs/plugins/adapters/contracts/WstETHV1AdapterContract.js +15 -0
- package/dist/cjs/preview/index.js +2 -4
- package/dist/cjs/preview/parse/classifyInnerOperations.js +14 -1
- package/dist/cjs/preview/parse/errors.js +5 -2
- package/dist/cjs/preview/parse/index.js +2 -2
- package/dist/cjs/preview/parse/parseFacadeOperationCalldata.js +5 -12
- package/dist/cjs/preview/parse/parseOperationCalldata.js +40 -1
- package/dist/cjs/preview/parse/parsePoolOperationCalldata.js +14 -2
- package/dist/cjs/preview/parse/parseRWAFactoryOperationCalldata.js +104 -0
- package/dist/cjs/preview/parse/types-rwa.js +16 -0
- package/dist/cjs/preview/parse/types.js +9 -2
- package/dist/cjs/preview/prerequisites/AllowancePrerequisite.js +13 -13
- package/dist/cjs/preview/prerequisites/BalancePrerequisite.js +32 -14
- package/dist/cjs/preview/prerequisites/RWAOpenRequirementsPrerequisite.js +66 -0
- package/dist/cjs/preview/prerequisites/buildPrerequisites.js +124 -14
- package/dist/cjs/preview/prerequisites/index.js +2 -0
- package/dist/cjs/preview/preview/applyInnerOperations.js +130 -0
- package/dist/cjs/preview/preview/errors.js +52 -0
- package/dist/cjs/preview/preview/index.js +30 -0
- package/dist/cjs/preview/preview/previewAdjustCreditAccount.js +90 -0
- package/dist/cjs/preview/preview/previewOpenCreditAccount.js +67 -0
- package/dist/cjs/preview/preview/previewOperation.js +45 -0
- package/dist/cjs/preview/preview/previewPoolOperation.js +75 -0
- package/dist/cjs/preview/preview/types.js +16 -0
- package/dist/cjs/{sdk/market/zapper/Zapper.js → preview/preview/unwrapNativeCollateral.js} +20 -22
- package/dist/cjs/preview/simulate/errors.js +0 -7
- package/dist/cjs/preview/simulate/index.js +5 -5
- package/dist/cjs/preview/simulate/simulateOperation.js +4 -0
- package/dist/cjs/preview/simulate/simulatePoolOperation.js +60 -31
- package/dist/cjs/preview/simulate/{constants.js → simulateRWAOperation.js} +8 -6
- package/dist/cjs/sdk/MultichainSDK.js +1 -0
- package/dist/cjs/sdk/OnchainSDK.js +7 -3
- package/dist/cjs/sdk/accounts/CreditAccountsServiceV310.js +53 -23
- package/dist/cjs/sdk/base/BaseContract.js +4 -2
- package/dist/cjs/sdk/base/ChainContractsRegister.js +1 -0
- package/dist/cjs/sdk/market/MarketRegister.js +10 -5
- package/dist/cjs/sdk/market/ZapperRegister.js +54 -0
- package/dist/cjs/sdk/market/rwa/securitize/SecuritizeRWAFactory.js +30 -0
- package/dist/cjs/sdk/market/rwa/types.js +5 -2
- package/dist/cjs/sdk/market/zapper/IERC20ZapperContract.js +3 -38
- package/dist/cjs/sdk/market/zapper/IETHZapperContract.js +3 -38
- package/dist/cjs/sdk/market/zapper/ZapperContract.js +106 -0
- package/dist/cjs/sdk/market/zapper/createZapper.js +12 -4
- package/dist/cjs/{preview/simulate/holders.js → sdk/market/zapper/errors.js} +13 -21
- package/dist/cjs/sdk/market/zapper/index.js +6 -2
- package/dist/cjs/sdk/market/zapper/types.js +16 -0
- package/dist/cjs/sdk/options.js +41 -17
- package/dist/cjs/sdk/router/AbstractRouterContract.js +21 -27
- package/dist/cjs/sdk/router/RouterV310Contract.js +11 -12
- package/dist/cjs/sdk/router/helpers.js +0 -5
- package/dist/cjs/sdk/utils/AddressMap.js +6 -0
- package/dist/cjs/sdk/utils/AssetsMap.js +97 -0
- package/dist/cjs/sdk/utils/index.js +2 -0
- package/dist/esm/abi/iZapper.js +62 -24
- package/dist/esm/dev/AccountOpener.js +8 -13
- package/dist/esm/history/classifyMulticallOperations.js +2 -0
- package/dist/esm/history/mapOperations.js +7 -0
- package/dist/esm/plugins/adapters/abi/iConvexV1BoosterAdapter.js +119 -0
- package/dist/esm/plugins/adapters/abi/index.js +1 -0
- package/dist/esm/plugins/adapters/contracts/AbstractAdapter.js +36 -0
- package/dist/esm/plugins/adapters/contracts/AbstractCurveAdapter.js +42 -0
- package/dist/esm/plugins/adapters/contracts/BalancerV3RouterAdapterContract.js +22 -1
- package/dist/esm/plugins/adapters/contracts/BalancerV3WrapperAdapterContract.js +18 -1
- package/dist/esm/plugins/adapters/contracts/CamelotV3AdapterContract.js +23 -1
- package/dist/esm/plugins/adapters/contracts/ConvexV1BaseRewardPoolAdapterContract.js +22 -1
- package/dist/esm/plugins/adapters/contracts/ConvexV1BoosterAdapterContract.js +30 -2
- package/dist/esm/plugins/adapters/contracts/Curve2AssetsAdapterContract.js +2 -7
- package/dist/esm/plugins/adapters/contracts/Curve3AssetsAdapterContract.js +2 -7
- package/dist/esm/plugins/adapters/contracts/Curve4AssetsAdapterContract.js +2 -7
- package/dist/esm/plugins/adapters/contracts/CurveV1AdapterDeposit.js +2 -2
- package/dist/esm/plugins/adapters/contracts/CurveV1AdapterStETHContract.js +2 -7
- package/dist/esm/plugins/adapters/contracts/CurveV1StableNGAdapterContract.js +2 -7
- package/dist/esm/plugins/adapters/contracts/DaiUsdsAdapterContract.js +17 -1
- package/dist/esm/plugins/adapters/contracts/ERC4626AdapterContract.js +19 -1
- package/dist/esm/plugins/adapters/contracts/ERC4626ReferralAdapterContract.js +17 -1
- package/dist/esm/plugins/adapters/contracts/FluidDexAdapterContract.js +18 -1
- package/dist/esm/plugins/adapters/contracts/InfinifiGatewayAdapterContract.js +24 -1
- package/dist/esm/plugins/adapters/contracts/KelpLRTDepositPoolAdapterContract.js +13 -1
- package/dist/esm/plugins/adapters/contracts/LidoV1AdapterContract.js +14 -1
- package/dist/esm/plugins/adapters/contracts/MellowDVVAdapterContract.js +18 -1
- package/dist/esm/plugins/adapters/contracts/MellowERC4626VaultAdapterContract.js +18 -1
- package/dist/esm/plugins/adapters/contracts/MellowWrapperAdapterContract.js +14 -1
- package/dist/esm/plugins/adapters/contracts/MidasIssuanceVaultAdapterContract.js +13 -1
- package/dist/esm/plugins/adapters/contracts/MidasRedemptionVaultAdapterContract.js +15 -1
- package/dist/esm/plugins/adapters/contracts/PendleRouterAdapterContract.js +61 -1
- package/dist/esm/plugins/adapters/contracts/SecuritizeOnRampAdapterContract.js +14 -1
- package/dist/esm/plugins/adapters/contracts/SecuritizeSwapAdapterContract.js +25 -2
- package/dist/esm/plugins/adapters/contracts/StakingRewardsAdapterContract.js +20 -1
- package/dist/esm/plugins/adapters/contracts/TraderJoeRouterAdapterContract.js +13 -1
- package/dist/esm/plugins/adapters/contracts/UniswapV2AdapterContract.js +10 -0
- package/dist/esm/plugins/adapters/contracts/UniswapV3AdapterContract.js +20 -0
- package/dist/esm/plugins/adapters/contracts/UniswapV4AdapterContract.js +18 -1
- package/dist/esm/plugins/adapters/contracts/UpshiftVaultAdapterContract.js +17 -1
- package/dist/esm/plugins/adapters/contracts/VelodromeV2AdapterContract.js +13 -1
- package/dist/esm/plugins/adapters/contracts/WstETHV1AdapterContract.js +18 -1
- package/dist/esm/preview/index.js +1 -2
- package/dist/esm/preview/parse/classifyInnerOperations.js +14 -1
- package/dist/esm/preview/parse/errors.js +3 -1
- package/dist/esm/preview/parse/index.js +1 -1
- package/dist/esm/preview/parse/parseFacadeOperationCalldata.js +5 -12
- package/dist/esm/preview/parse/parseOperationCalldata.js +43 -2
- package/dist/esm/preview/parse/parsePoolOperationCalldata.js +14 -2
- package/dist/esm/preview/parse/parseRWAFactoryOperationCalldata.js +85 -0
- package/dist/esm/preview/parse/types-rwa.js +0 -0
- package/dist/esm/preview/parse/types.js +6 -1
- package/dist/esm/preview/prerequisites/AllowancePrerequisite.js +13 -13
- package/dist/esm/preview/prerequisites/BalancePrerequisite.js +32 -14
- package/dist/esm/preview/prerequisites/RWAOpenRequirementsPrerequisite.js +42 -0
- package/dist/esm/preview/prerequisites/buildPrerequisites.js +130 -14
- package/dist/esm/preview/prerequisites/index.js +1 -0
- package/dist/esm/preview/preview/applyInnerOperations.js +108 -0
- package/dist/esm/preview/preview/errors.js +27 -0
- package/dist/esm/preview/preview/index.js +5 -0
- package/dist/esm/preview/preview/previewAdjustCreditAccount.js +74 -0
- package/dist/esm/preview/preview/previewOpenCreditAccount.js +49 -0
- package/dist/esm/preview/preview/previewOperation.js +21 -0
- package/dist/esm/preview/preview/previewPoolOperation.js +53 -0
- package/dist/esm/preview/preview/types.js +0 -0
- package/dist/esm/preview/preview/unwrapNativeCollateral.js +21 -0
- package/dist/esm/preview/simulate/errors.js +0 -6
- package/dist/esm/preview/simulate/index.js +3 -3
- package/dist/esm/preview/simulate/simulateOperation.js +8 -1
- package/dist/esm/preview/simulate/simulatePoolOperation.js +61 -35
- package/dist/esm/preview/simulate/simulateRWAOperation.js +6 -0
- package/dist/esm/sdk/MultichainSDK.js +1 -0
- package/dist/esm/sdk/OnchainSDK.js +7 -3
- package/dist/esm/sdk/accounts/CreditAccountsServiceV310.js +54 -24
- package/dist/esm/sdk/base/BaseContract.js +4 -2
- package/dist/esm/sdk/base/ChainContractsRegister.js +1 -0
- package/dist/esm/sdk/market/MarketRegister.js +10 -5
- package/dist/esm/sdk/market/ZapperRegister.js +54 -0
- package/dist/esm/sdk/market/rwa/securitize/SecuritizeRWAFactory.js +33 -1
- package/dist/esm/sdk/market/rwa/types.js +5 -2
- package/dist/esm/sdk/market/zapper/IERC20ZapperContract.js +3 -38
- package/dist/esm/sdk/market/zapper/IETHZapperContract.js +3 -38
- package/dist/esm/sdk/market/zapper/ZapperContract.js +82 -0
- package/dist/esm/sdk/market/zapper/createZapper.js +12 -4
- package/dist/esm/sdk/market/zapper/errors.js +13 -0
- package/dist/esm/sdk/market/zapper/index.js +3 -1
- package/dist/esm/sdk/market/zapper/types.js +0 -0
- package/dist/esm/sdk/options.js +39 -15
- package/dist/esm/sdk/router/AbstractRouterContract.js +25 -29
- package/dist/esm/sdk/router/RouterV310Contract.js +11 -12
- package/dist/esm/sdk/router/helpers.js +0 -4
- package/dist/esm/sdk/utils/AddressMap.js +6 -0
- package/dist/esm/sdk/utils/AssetsMap.js +73 -0
- package/dist/esm/sdk/utils/index.js +1 -0
- package/dist/types/abi/iERC20Zapper.d.ts +91 -23
- package/dist/types/abi/iETHZapper.d.ts +91 -23
- package/dist/types/abi/iZapper.d.ts +91 -23
- package/dist/types/common-utils/utils/strategies/assets/assets.d.ts +1 -1
- package/dist/types/common-utils/utils/strategies/credit-managers/get-wallet-balances-allowed-on-cm.d.ts +1 -1
- package/dist/types/common-utils/utils/strategies/strategy-info/calculate-total-apy.d.ts +1 -1
- package/dist/types/common-utils/utils/strategies/strategy-info/calculate-total-points.d.ts +1 -1
- package/dist/types/common-utils/utils/strategies/tokens/add-amount-in-target.d.ts +1 -1
- package/dist/types/common-utils/utils/strategies/tokens/get-list-with-amount-in-target.d.ts +1 -1
- package/dist/types/common-utils/utils/strategies/types/strategy-earnings.d.ts +1 -1
- package/dist/types/common-utils/utils/validation/validate-balances.d.ts +1 -1
- package/dist/types/common-utils/utils/validation/validate-open-account.d.ts +1 -1
- package/dist/types/common-utils/utils/validation/validate-quota.d.ts +1 -1
- package/dist/types/common-utils/utils/validation/validate-token-to-obtain.d.ts +1 -1
- package/dist/types/history/types.d.ts +4 -4
- package/dist/types/plugins/adapters/abi/iConvexV1BoosterAdapter.d.ts +204 -0
- package/dist/types/plugins/adapters/abi/index.d.ts +1 -0
- package/dist/types/plugins/adapters/contracts/AbstractAdapter.d.ts +21 -3
- package/dist/types/plugins/adapters/contracts/AbstractCurveAdapter.d.ts +18 -0
- package/dist/types/plugins/adapters/contracts/BalancerV3RouterAdapterContract.d.ts +4 -2
- package/dist/types/plugins/adapters/contracts/BalancerV3WrapperAdapterContract.d.ts +4 -2
- package/dist/types/plugins/adapters/contracts/CamelotV3AdapterContract.d.ts +4 -2
- package/dist/types/plugins/adapters/contracts/ConvexV1BaseRewardPoolAdapterContract.d.ts +4 -2
- package/dist/types/plugins/adapters/contracts/ConvexV1BoosterAdapterContract.d.ts +8 -6
- package/dist/types/plugins/adapters/contracts/Curve2AssetsAdapterContract.d.ts +3 -6
- package/dist/types/plugins/adapters/contracts/Curve3AssetsAdapterContract.d.ts +3 -6
- package/dist/types/plugins/adapters/contracts/Curve4AssetsAdapterContract.d.ts +3 -6
- package/dist/types/plugins/adapters/contracts/CurveV1AdapterDeposit.d.ts +2 -2
- package/dist/types/plugins/adapters/contracts/CurveV1AdapterStETHContract.d.ts +3 -6
- package/dist/types/plugins/adapters/contracts/CurveV1StableNGAdapterContract.d.ts +3 -6
- package/dist/types/plugins/adapters/contracts/DaiUsdsAdapterContract.d.ts +4 -2
- package/dist/types/plugins/adapters/contracts/ERC4626AdapterContract.d.ts +4 -2
- package/dist/types/plugins/adapters/contracts/ERC4626ReferralAdapterContract.d.ts +4 -2
- package/dist/types/plugins/adapters/contracts/FluidDexAdapterContract.d.ts +4 -2
- package/dist/types/plugins/adapters/contracts/InfinifiGatewayAdapterContract.d.ts +4 -2
- package/dist/types/plugins/adapters/contracts/KelpLRTDepositPoolAdapterContract.d.ts +4 -2
- package/dist/types/plugins/adapters/contracts/LidoV1AdapterContract.d.ts +4 -2
- package/dist/types/plugins/adapters/contracts/MellowDVVAdapterContract.d.ts +4 -2
- package/dist/types/plugins/adapters/contracts/MellowERC4626VaultAdapterContract.d.ts +4 -2
- package/dist/types/plugins/adapters/contracts/MellowWrapperAdapterContract.d.ts +4 -2
- package/dist/types/plugins/adapters/contracts/MidasIssuanceVaultAdapterContract.d.ts +4 -2
- package/dist/types/plugins/adapters/contracts/MidasRedemptionVaultAdapterContract.d.ts +4 -2
- package/dist/types/plugins/adapters/contracts/PendleRouterAdapterContract.d.ts +4 -2
- package/dist/types/plugins/adapters/contracts/SecuritizeOnRampAdapterContract.d.ts +4 -2
- package/dist/types/plugins/adapters/contracts/SecuritizeSwapAdapterContract.d.ts +15 -3
- package/dist/types/plugins/adapters/contracts/StakingRewardsAdapterContract.d.ts +4 -2
- package/dist/types/plugins/adapters/contracts/TraderJoeRouterAdapterContract.d.ts +4 -2
- package/dist/types/plugins/adapters/contracts/UniswapV2AdapterContract.d.ts +3 -1
- package/dist/types/plugins/adapters/contracts/UniswapV3AdapterContract.d.ts +3 -1
- package/dist/types/plugins/adapters/contracts/UniswapV4AdapterContract.d.ts +4 -2
- package/dist/types/plugins/adapters/contracts/UpshiftVaultAdapterContract.d.ts +4 -2
- package/dist/types/plugins/adapters/contracts/VelodromeV2AdapterContract.d.ts +4 -2
- package/dist/types/plugins/adapters/contracts/WstETHV1AdapterContract.d.ts +4 -2
- package/dist/types/plugins/adapters/types.d.ts +10 -0
- package/dist/types/preview/index.d.ts +1 -2
- package/dist/types/preview/parse/classifyInnerOperations.d.ts +0 -2
- package/dist/types/preview/parse/errors.d.ts +1 -0
- package/dist/types/preview/parse/index.d.ts +1 -1
- package/dist/types/preview/parse/parseOperationCalldata.d.ts +3 -3
- package/dist/types/preview/parse/parseRWAFactoryOperationCalldata.d.ts +22 -0
- package/dist/types/preview/parse/types-adapters.d.ts +5 -1
- package/dist/types/preview/parse/types-facades.d.ts +23 -34
- package/dist/types/preview/parse/types-pools.d.ts +90 -2
- package/dist/types/preview/parse/types-rwa.d.ts +48 -0
- package/dist/types/preview/parse/types.d.ts +11 -6
- package/dist/types/preview/prerequisites/AllowancePrerequisite.d.ts +1 -3
- package/dist/types/preview/prerequisites/BalancePrerequisite.d.ts +9 -6
- package/dist/types/preview/prerequisites/RWAOpenRequirementsPrerequisite.d.ts +36 -0
- package/dist/types/preview/prerequisites/buildPrerequisites.d.ts +15 -6
- package/dist/types/preview/prerequisites/index.d.ts +1 -0
- package/dist/types/preview/prerequisites/types.d.ts +10 -8
- package/dist/types/preview/preview/applyInnerOperations.d.ts +77 -0
- package/dist/types/preview/preview/errors.d.ts +21 -0
- package/dist/types/preview/preview/index.d.ts +5 -0
- package/dist/types/preview/preview/previewAdjustCreditAccount.d.ts +11 -0
- package/dist/types/preview/preview/previewOpenCreditAccount.d.ts +4 -0
- package/dist/types/preview/preview/previewOperation.d.ts +7 -0
- package/dist/types/preview/preview/previewPoolOperation.d.ts +5 -0
- package/dist/types/preview/preview/types.d.ts +177 -0
- package/dist/types/preview/preview/unwrapNativeCollateral.d.ts +20 -0
- package/dist/types/preview/simulate/errors.d.ts +6 -12
- package/dist/types/preview/simulate/index.d.ts +3 -2
- package/dist/types/preview/simulate/simulateFacadeOperation.d.ts +0 -2
- package/dist/types/preview/simulate/simulateOperation.d.ts +0 -2
- package/dist/types/preview/simulate/simulatePoolOperation.d.ts +9 -3
- package/dist/types/preview/simulate/simulateRWAOperation.d.ts +23 -0
- package/dist/types/preview/simulate/types.d.ts +12 -39
- package/dist/types/sdk/MultichainSDK.d.ts +5 -0
- package/dist/types/sdk/OnchainSDK.d.ts +4 -0
- package/dist/types/sdk/accounts/CreditAccountsServiceV310.d.ts +11 -3
- package/dist/types/sdk/accounts/types.d.ts +66 -8
- package/dist/types/sdk/base/BaseContract.d.ts +1 -1
- package/dist/types/sdk/base/TokensMeta.d.ts +1 -1
- package/dist/types/sdk/base/types.d.ts +18 -0
- package/dist/types/sdk/market/MarketRegister.d.ts +15 -6
- package/dist/types/sdk/market/ZapperRegister.d.ts +25 -4
- package/dist/types/sdk/market/rwa/securitize/SecuritizeRWAFactory.d.ts +6 -1
- package/dist/types/sdk/market/rwa/types.d.ts +13 -5
- package/dist/types/sdk/market/zapper/IERC20ZapperContract.d.ts +93 -39
- package/dist/types/sdk/market/zapper/IETHZapperContract.d.ts +93 -39
- package/dist/types/sdk/market/zapper/ZapperContract.d.ts +35 -0
- package/dist/types/sdk/market/zapper/createZapper.d.ts +2 -4
- package/dist/types/sdk/market/zapper/errors.d.ts +10 -0
- package/dist/types/sdk/market/zapper/index.d.ts +3 -1
- package/dist/types/sdk/market/zapper/types.d.ts +64 -0
- package/dist/types/sdk/options.d.ts +10 -5
- package/dist/types/sdk/pools/types.d.ts +4 -4
- package/dist/types/sdk/router/AbstractRouterContract.d.ts +5 -5
- package/dist/types/sdk/router/helpers.d.ts +1 -2
- package/dist/types/sdk/router/types.d.ts +1 -15
- package/dist/types/sdk/types/state-human.d.ts +9 -0
- package/dist/types/sdk/types/state.d.ts +7 -0
- package/dist/types/sdk/utils/AddressMap.d.ts +4 -0
- package/dist/types/sdk/utils/AssetsMap.d.ts +44 -0
- package/dist/types/sdk/utils/index.d.ts +1 -0
- package/package.json +3 -3
- package/dist/cjs/preview/parse/extractExpectedBalanceChanges.js +0 -48
- package/dist/cjs/preview/simulate/extractERC20Transfers.js +0 -47
- package/dist/cjs/preview/simulate/simulatePoolOpMulticall.js +0 -155
- package/dist/cjs/preview/simulate/simulatePoolOpV1.js +0 -106
- package/dist/esm/preview/parse/extractExpectedBalanceChanges.js +0 -24
- package/dist/esm/preview/simulate/constants.js +0 -4
- package/dist/esm/preview/simulate/extractERC20Transfers.js +0 -23
- package/dist/esm/preview/simulate/holders.js +0 -21
- package/dist/esm/preview/simulate/simulatePoolOpMulticall.js +0 -130
- package/dist/esm/preview/simulate/simulatePoolOpV1.js +0 -82
- package/dist/esm/sdk/market/zapper/Zapper.js +0 -23
- package/dist/types/preview/parse/extractExpectedBalanceChanges.d.ts +0 -22
- package/dist/types/preview/simulate/constants.d.ts +0 -6
- package/dist/types/preview/simulate/extractERC20Transfers.d.ts +0 -11
- package/dist/types/preview/simulate/holders.d.ts +0 -7
- package/dist/types/preview/simulate/simulatePoolOpMulticall.d.ts +0 -28
- package/dist/types/preview/simulate/simulatePoolOpV1.d.ts +0 -14
- package/dist/types/sdk/market/zapper/Zapper.d.ts +0 -13
|
@@ -1,25 +1,9 @@
|
|
|
1
1
|
import { ierc20ZapperAbi } from "../../../abi/iERC20Zapper.js";
|
|
2
|
-
import {
|
|
2
|
+
import { ZapperContract } from "./ZapperContract.js";
|
|
3
3
|
const abi = ierc20ZapperAbi;
|
|
4
|
-
class IERC20ZapperContract extends
|
|
5
|
-
pool;
|
|
6
|
-
type;
|
|
7
|
-
baseParams;
|
|
8
|
-
tokenIn;
|
|
9
|
-
tokenOut;
|
|
4
|
+
class IERC20ZapperContract extends ZapperContract {
|
|
10
5
|
constructor(sdk, data) {
|
|
11
|
-
super(sdk,
|
|
12
|
-
addr: data.baseParams.addr,
|
|
13
|
-
abi,
|
|
14
|
-
name: `ERC20Zapper(${sdk.labelAddress(data.baseParams.addr)})`,
|
|
15
|
-
version: data.baseParams.version,
|
|
16
|
-
contractType: data.baseParams.contractType
|
|
17
|
-
});
|
|
18
|
-
this.pool = data.pool;
|
|
19
|
-
this.type = data.type;
|
|
20
|
-
this.baseParams = data.baseParams;
|
|
21
|
-
this.tokenIn = data.tokenIn;
|
|
22
|
-
this.tokenOut = data.tokenOut;
|
|
6
|
+
super(sdk, data, abi, "ERC20Zapper");
|
|
23
7
|
}
|
|
24
8
|
/**
|
|
25
9
|
* Deposits ERC20 tokens into the pool via this zapper.
|
|
@@ -49,25 +33,6 @@ class IERC20ZapperContract extends BaseContract {
|
|
|
49
33
|
args: [tokenInAmount, receiver, referralCode, deadline, v, r, s]
|
|
50
34
|
});
|
|
51
35
|
}
|
|
52
|
-
/**
|
|
53
|
-
* Redeems pool shares (diesel tokens) for the underlying asset via this zapper.
|
|
54
|
-
*/
|
|
55
|
-
redeem(tokenInAmount, receiver) {
|
|
56
|
-
return this.createRawTx({
|
|
57
|
-
functionName: "redeem",
|
|
58
|
-
args: [tokenInAmount, receiver]
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Redeems pool shares via this zapper with an EIP-2612 permit signature,
|
|
63
|
-
* skipping a separate approve transaction.
|
|
64
|
-
*/
|
|
65
|
-
redeemWithPermit(tokenInAmount, receiver, deadline, v, r, s) {
|
|
66
|
-
return this.createRawTx({
|
|
67
|
-
functionName: "redeemWithPermit",
|
|
68
|
-
args: [tokenInAmount, receiver, deadline, v, r, s]
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
36
|
}
|
|
72
37
|
export {
|
|
73
38
|
IERC20ZapperContract
|
|
@@ -1,25 +1,9 @@
|
|
|
1
1
|
import { iethZapperAbi } from "../../../abi/iETHZapper.js";
|
|
2
|
-
import {
|
|
2
|
+
import { ZapperContract } from "./ZapperContract.js";
|
|
3
3
|
const abi = iethZapperAbi;
|
|
4
|
-
class IETHZapperContract extends
|
|
5
|
-
pool;
|
|
6
|
-
type;
|
|
7
|
-
baseParams;
|
|
8
|
-
tokenIn;
|
|
9
|
-
tokenOut;
|
|
4
|
+
class IETHZapperContract extends ZapperContract {
|
|
10
5
|
constructor(sdk, data) {
|
|
11
|
-
super(sdk,
|
|
12
|
-
addr: data.baseParams.addr,
|
|
13
|
-
abi,
|
|
14
|
-
name: `ETHZapper(${sdk.labelAddress(data.baseParams.addr)})`,
|
|
15
|
-
version: data.baseParams.version,
|
|
16
|
-
contractType: data.baseParams.contractType
|
|
17
|
-
});
|
|
18
|
-
this.pool = data.pool;
|
|
19
|
-
this.type = data.type;
|
|
20
|
-
this.baseParams = data.baseParams;
|
|
21
|
-
this.tokenIn = data.tokenIn;
|
|
22
|
-
this.tokenOut = data.tokenOut;
|
|
6
|
+
super(sdk, data, abi, "ETHZapper");
|
|
23
7
|
}
|
|
24
8
|
/**
|
|
25
9
|
* Deposits native ETH into the pool via this zapper.
|
|
@@ -40,25 +24,6 @@ class IETHZapperContract extends BaseContract {
|
|
|
40
24
|
args: [receiver, referralCode]
|
|
41
25
|
});
|
|
42
26
|
}
|
|
43
|
-
/**
|
|
44
|
-
* Redeems pool shares (diesel tokens) for the underlying asset via this zapper.
|
|
45
|
-
*/
|
|
46
|
-
redeem(tokenInAmount, receiver) {
|
|
47
|
-
return this.createRawTx({
|
|
48
|
-
functionName: "redeem",
|
|
49
|
-
args: [tokenInAmount, receiver]
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Redeems pool shares via this zapper with an EIP-2612 permit signature,
|
|
54
|
-
* skipping a separate approve transaction.
|
|
55
|
-
*/
|
|
56
|
-
redeemWithPermit(tokenInAmount, receiver, deadline, v, r, s) {
|
|
57
|
-
return this.createRawTx({
|
|
58
|
-
functionName: "redeemWithPermit",
|
|
59
|
-
args: [tokenInAmount, receiver, deadline, v, r, s]
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
27
|
}
|
|
63
28
|
export {
|
|
64
29
|
IETHZapperContract
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { iZapperAbi } from "../../../abi/iZapper.js";
|
|
2
|
+
import { BaseContract } from "../../base/index.js";
|
|
3
|
+
import { UnsupportedZapperFunctionError } from "./errors.js";
|
|
4
|
+
class ZapperContract extends BaseContract {
|
|
5
|
+
sdk;
|
|
6
|
+
pool;
|
|
7
|
+
type;
|
|
8
|
+
baseParams;
|
|
9
|
+
tokenIn;
|
|
10
|
+
tokenOut;
|
|
11
|
+
constructor(sdk, data, abi = iZapperAbi, namePrefix = "Zapper") {
|
|
12
|
+
super(sdk, {
|
|
13
|
+
addr: data.baseParams.addr,
|
|
14
|
+
abi,
|
|
15
|
+
name: `${namePrefix}(${sdk.labelAddress(data.baseParams.addr)})`,
|
|
16
|
+
version: data.baseParams.version,
|
|
17
|
+
contractType: data.baseParams.contractType
|
|
18
|
+
});
|
|
19
|
+
this.sdk = sdk;
|
|
20
|
+
this.pool = data.pool;
|
|
21
|
+
this.type = data.type;
|
|
22
|
+
this.baseParams = data.baseParams;
|
|
23
|
+
this.tokenIn = data.tokenIn;
|
|
24
|
+
this.tokenOut = data.tokenOut;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Decodes zapper calldata into {@link ParsedZapperOperation}.
|
|
28
|
+
* Throws {@link UnsupportedZapperFunctionError} for unknown selectors.
|
|
29
|
+
*/
|
|
30
|
+
parseOperation(calldata, value) {
|
|
31
|
+
const parsed = this.parseFunctionDataV2(calldata);
|
|
32
|
+
const { rawArgs } = parsed;
|
|
33
|
+
const pool = this.pool;
|
|
34
|
+
const zapper = this.address;
|
|
35
|
+
const underlying = this.sdk.marketRegister.findByPool(pool).underlying;
|
|
36
|
+
const receiver = rawArgs.receiver;
|
|
37
|
+
if (parsed.functionName.startsWith("deposit")) {
|
|
38
|
+
return {
|
|
39
|
+
operation: "Deposit",
|
|
40
|
+
pool,
|
|
41
|
+
zapper,
|
|
42
|
+
receiver,
|
|
43
|
+
assets: rawArgs.tokenInAmount ?? value ?? 0n,
|
|
44
|
+
underlying,
|
|
45
|
+
referralCode: rawArgs.referralCode
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
if (parsed.functionName.startsWith("redeem")) {
|
|
49
|
+
return {
|
|
50
|
+
operation: "Redeem",
|
|
51
|
+
pool,
|
|
52
|
+
zapper,
|
|
53
|
+
receiver,
|
|
54
|
+
shares: rawArgs.tokenOutAmount,
|
|
55
|
+
underlying
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
throw new UnsupportedZapperFunctionError(zapper, parsed.functionName);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Redeems pool shares (diesel tokens) for the underlying asset via this zapper.
|
|
62
|
+
*/
|
|
63
|
+
redeem(tokenInAmount, receiver) {
|
|
64
|
+
return this.createRawTx({
|
|
65
|
+
functionName: "redeem",
|
|
66
|
+
args: [tokenInAmount, receiver]
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Redeems pool shares via this zapper with an EIP-2612 permit signature,
|
|
71
|
+
* skipping a separate approve transaction.
|
|
72
|
+
*/
|
|
73
|
+
redeemWithPermit(tokenInAmount, receiver, deadline, v, r, s) {
|
|
74
|
+
return this.createRawTx({
|
|
75
|
+
functionName: "redeemWithPermit",
|
|
76
|
+
args: [tokenInAmount, receiver, deadline, v, r, s]
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
export {
|
|
81
|
+
ZapperContract
|
|
82
|
+
};
|
|
@@ -1,20 +1,28 @@
|
|
|
1
|
+
import { bytes32ToString } from "../../utils/index.js";
|
|
1
2
|
import { IERC20ZapperContract } from "./IERC20ZapperContract.js";
|
|
2
3
|
import { IETHZapperContract } from "./IETHZapperContract.js";
|
|
3
|
-
import {
|
|
4
|
+
import { ZapperContract } from "./ZapperContract.js";
|
|
4
5
|
function createZapper(sdk, data) {
|
|
6
|
+
const existing = sdk.getContract(data.baseParams.addr);
|
|
7
|
+
if (existing) {
|
|
8
|
+
return existing;
|
|
9
|
+
}
|
|
5
10
|
if (data.type === "base") {
|
|
6
|
-
const contractType =
|
|
11
|
+
const contractType = bytes32ToString(data.baseParams.contractType);
|
|
7
12
|
switch (contractType) {
|
|
8
13
|
case "ZAPPER::ERC4626_UNDERLYING":
|
|
9
14
|
return new IERC20ZapperContract(sdk, data);
|
|
10
15
|
case "ZAPPER::WETH_DEPOSIT":
|
|
11
16
|
return new IETHZapperContract(sdk, data);
|
|
12
17
|
default:
|
|
18
|
+
if (sdk.strictContractTypes) {
|
|
19
|
+
throw new Error(`Unknown zapper contract type: ${contractType}`);
|
|
20
|
+
}
|
|
13
21
|
sdk.logger?.warn(`Unknown zapper contract type: ${contractType}`);
|
|
14
|
-
return new
|
|
22
|
+
return new ZapperContract(sdk, data);
|
|
15
23
|
}
|
|
16
24
|
}
|
|
17
|
-
return new
|
|
25
|
+
return new ZapperContract(sdk, data);
|
|
18
26
|
}
|
|
19
27
|
export {
|
|
20
28
|
createZapper
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
class UnsupportedZapperFunctionError extends Error {
|
|
2
|
+
zapper;
|
|
3
|
+
functionName;
|
|
4
|
+
constructor(zapper, functionName) {
|
|
5
|
+
super(`unsupported zapper function "${functionName}" on ${zapper}`);
|
|
6
|
+
this.name = "UnsupportedZapperFunctionError";
|
|
7
|
+
this.zapper = zapper;
|
|
8
|
+
this.functionName = functionName;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
export {
|
|
12
|
+
UnsupportedZapperFunctionError
|
|
13
|
+
};
|
|
File without changes
|
package/dist/esm/sdk/options.js
CHANGED
|
@@ -4,12 +4,18 @@ import {
|
|
|
4
4
|
RedstoneOptions
|
|
5
5
|
} from "./market/pricefeeds/updates/index.js";
|
|
6
6
|
import { ZodAddress } from "./utils/index.js";
|
|
7
|
-
const
|
|
8
|
-
/**
|
|
7
|
+
const onchainSDKOptionsSchema = z.object({
|
|
8
|
+
/**
|
|
9
|
+
* When `true`, throw on unrecognised contract types.
|
|
10
|
+
**/
|
|
9
11
|
strictContractTypes: z.boolean().optional(),
|
|
10
|
-
/**
|
|
12
|
+
/**
|
|
13
|
+
* Plugins that extend SDK functionality.
|
|
14
|
+
**/
|
|
11
15
|
plugins: z.record(z.string(), z.any()).optional(),
|
|
12
|
-
/**
|
|
16
|
+
/**
|
|
17
|
+
* Custom logger implementation.
|
|
18
|
+
**/
|
|
13
19
|
logger: z.any(),
|
|
14
20
|
/**
|
|
15
21
|
* Explicit gas limit for read-only `eth_call` requests.
|
|
@@ -18,10 +24,14 @@ const OnchainSDKOptionsSchema = z.object({
|
|
|
18
24
|
**/
|
|
19
25
|
gasLimit: z.bigint().nonnegative().nullable().optional()
|
|
20
26
|
});
|
|
21
|
-
const
|
|
22
|
-
/**
|
|
27
|
+
const attachOptionsSchema = z.object({
|
|
28
|
+
/**
|
|
29
|
+
* Override address of the Gearbox AddressProvider contract.
|
|
30
|
+
**/
|
|
23
31
|
addressProvider: ZodAddress().optional(),
|
|
24
|
-
/**
|
|
32
|
+
/**
|
|
33
|
+
* Addresses of market configurator contracts to load.
|
|
34
|
+
**/
|
|
25
35
|
marketConfigurators: z.array(ZodAddress()).optional(),
|
|
26
36
|
/**
|
|
27
37
|
* Addresses of RWA factory contracts to load.
|
|
@@ -29,18 +39,32 @@ const AttachOptionsSchema = z.object({
|
|
|
29
39
|
* (from {@link GearboxChain.rwaFactories})
|
|
30
40
|
**/
|
|
31
41
|
rwaFactories: z.array(ZodAddress()).optional(),
|
|
32
|
-
/**
|
|
42
|
+
/**
|
|
43
|
+
* Pin SDK to a specific block number during attach.
|
|
44
|
+
**/
|
|
33
45
|
blockNumber: z.union([z.bigint().nonnegative(), z.number().int().nonnegative()]).optional(),
|
|
34
|
-
/**
|
|
46
|
+
/**
|
|
47
|
+
* Skip fetching updatable price feeds on attach and sync.
|
|
48
|
+
**/
|
|
35
49
|
ignoreUpdateablePrices: z.boolean().optional(),
|
|
36
|
-
/**
|
|
50
|
+
/**
|
|
51
|
+
* Pool addresses whose markets should be skipped.
|
|
52
|
+
**/
|
|
37
53
|
ignoreMarkets: z.array(ZodAddress()).optional(),
|
|
38
|
-
/**
|
|
54
|
+
/**
|
|
55
|
+
* Options for Redstone price-feed updates.
|
|
56
|
+
**/
|
|
39
57
|
redstone: RedstoneOptions.optional(),
|
|
40
|
-
/**
|
|
41
|
-
|
|
58
|
+
/**
|
|
59
|
+
* Options for Pyth price-feed updates.
|
|
60
|
+
**/
|
|
61
|
+
pyth: PythOptions.optional(),
|
|
62
|
+
/**
|
|
63
|
+
* When `true`, automatically load zappers during attach.
|
|
64
|
+
**/
|
|
65
|
+
loadZappers: z.boolean().optional()
|
|
42
66
|
});
|
|
43
67
|
export {
|
|
44
|
-
|
|
45
|
-
|
|
68
|
+
attachOptionsSchema,
|
|
69
|
+
onchainSDKOptionsSchema
|
|
46
70
|
};
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
BaseContract
|
|
3
|
+
} from "../base/index.js";
|
|
2
4
|
import { PERCENTAGE_FACTOR } from "../constants/math.js";
|
|
3
|
-
import {
|
|
5
|
+
import { AddressSet, AssetsMap, formatBN, isDust } from "../utils/index.js";
|
|
4
6
|
import { limitLeftover } from "./helpers.js";
|
|
5
7
|
class AbstractRouterContract extends BaseContract {
|
|
6
8
|
/**
|
|
@@ -18,15 +20,15 @@ class AbstractRouterContract extends BaseContract {
|
|
|
18
20
|
options.debtOnly
|
|
19
21
|
);
|
|
20
22
|
const { leftoverBalances, expectedBalances, tokensToClaim } = b;
|
|
21
|
-
const expected = new
|
|
22
|
-
const leftover = new
|
|
23
|
+
const expected = new AssetsMap();
|
|
24
|
+
const leftover = new AssetsMap();
|
|
23
25
|
for (const token of cm.collateralTokens) {
|
|
24
|
-
const actual = expectedBalances.get(token)
|
|
25
|
-
expected.upsert(token,
|
|
26
|
-
leftover.upsert(
|
|
26
|
+
const actual = expectedBalances.get(token) || 0n;
|
|
27
|
+
expected.upsert(token, actual > 10n ? actual : 0n);
|
|
28
|
+
leftover.upsert(
|
|
27
29
|
token,
|
|
28
|
-
|
|
29
|
-
|
|
30
|
+
limitLeftover(leftoverBalances.get(token) || 1n, token) ?? 1n
|
|
31
|
+
);
|
|
30
32
|
}
|
|
31
33
|
return {
|
|
32
34
|
expectedBalances: expected,
|
|
@@ -35,8 +37,8 @@ class AbstractRouterContract extends BaseContract {
|
|
|
35
37
|
};
|
|
36
38
|
}
|
|
37
39
|
getDefaultExpectedAndLeftover(ca, keepAssets, debtOnly) {
|
|
38
|
-
const expectedBalances = new
|
|
39
|
-
const leftoverBalances = new
|
|
40
|
+
const expectedBalances = new AssetsMap();
|
|
41
|
+
const leftoverBalances = new AssetsMap();
|
|
40
42
|
const keepAssetsSet = new AddressSet(keepAssets);
|
|
41
43
|
if (debtOnly) {
|
|
42
44
|
const result = this.getLeftoversAfterBuyingDebt(ca, keepAssetsSet);
|
|
@@ -48,23 +50,23 @@ class AbstractRouterContract extends BaseContract {
|
|
|
48
50
|
}
|
|
49
51
|
for (const { token, balance, mask } of ca.tokens) {
|
|
50
52
|
const isEnabled = (mask & ca.enabledTokensMask) !== 0n;
|
|
51
|
-
expectedBalances.upsert(token,
|
|
53
|
+
expectedBalances.upsert(token, balance);
|
|
52
54
|
if (keepAssetsSet.has(token) || !isEnabled || isDust({
|
|
53
55
|
sdk: this.sdk,
|
|
54
56
|
token,
|
|
55
57
|
balance,
|
|
56
58
|
creditManager: ca.creditManager
|
|
57
59
|
})) {
|
|
58
|
-
leftoverBalances.upsert(
|
|
60
|
+
leftoverBalances.upsert(
|
|
59
61
|
token,
|
|
60
|
-
|
|
61
|
-
|
|
62
|
+
limitLeftover(balance, token) ?? balance
|
|
63
|
+
);
|
|
62
64
|
}
|
|
63
65
|
}
|
|
64
66
|
return {
|
|
65
67
|
expectedBalances,
|
|
66
68
|
leftoverBalances,
|
|
67
|
-
tokensToClaim: new
|
|
69
|
+
tokensToClaim: new AssetsMap()
|
|
68
70
|
};
|
|
69
71
|
}
|
|
70
72
|
/**
|
|
@@ -77,16 +79,13 @@ class AbstractRouterContract extends BaseContract {
|
|
|
77
79
|
const { priceOracle } = this.sdk.marketRegister.findByCreditManager(
|
|
78
80
|
ca.creditManager
|
|
79
81
|
);
|
|
80
|
-
const expectedBalances = new
|
|
81
|
-
const leftoverBalances = new
|
|
82
|
+
const expectedBalances = new AssetsMap();
|
|
83
|
+
const leftoverBalances = new AssetsMap();
|
|
82
84
|
const usdBalances = [];
|
|
83
85
|
for (const { token, balance, mask } of ca.tokens) {
|
|
84
86
|
const isEnabled = (mask & ca.enabledTokensMask) !== 0n;
|
|
85
|
-
expectedBalances.upsert(token,
|
|
86
|
-
leftoverBalances.upsert(token,
|
|
87
|
-
token,
|
|
88
|
-
balance: limitLeftover(balance, token) ?? balance
|
|
89
|
-
});
|
|
87
|
+
expectedBalances.upsert(token, balance);
|
|
88
|
+
leftoverBalances.upsert(token, limitLeftover(balance, token) ?? balance);
|
|
90
89
|
if (isEnabled && !keepAssets.has(token)) {
|
|
91
90
|
usdBalances.push({
|
|
92
91
|
token,
|
|
@@ -116,15 +115,12 @@ class AbstractRouterContract extends BaseContract {
|
|
|
116
115
|
if (tokenAmount === 0n) {
|
|
117
116
|
return void 0;
|
|
118
117
|
}
|
|
119
|
-
let leftoverBalance = leftoverBalances.get(highestToken.token)
|
|
118
|
+
let leftoverBalance = leftoverBalances.get(highestToken.token) ?? 0n;
|
|
120
119
|
leftoverBalance -= tokenAmount;
|
|
121
120
|
if (leftoverBalance < 0n) {
|
|
122
121
|
return void 0;
|
|
123
122
|
}
|
|
124
|
-
leftoverBalances.upsert(highestToken.token,
|
|
125
|
-
token: highestToken.token,
|
|
126
|
-
balance: leftoverBalance
|
|
127
|
-
});
|
|
123
|
+
leftoverBalances.upsert(highestToken.token, leftoverBalance);
|
|
128
124
|
const tokenAmountStr = this.sdk.tokensMeta.formatBN(
|
|
129
125
|
highestToken.token,
|
|
130
126
|
tokenAmount,
|
|
@@ -137,7 +133,7 @@ class AbstractRouterContract extends BaseContract {
|
|
|
137
133
|
return {
|
|
138
134
|
expectedBalances,
|
|
139
135
|
leftoverBalances,
|
|
140
|
-
tokensToClaim: new
|
|
136
|
+
tokensToClaim: new AssetsMap()
|
|
141
137
|
};
|
|
142
138
|
}
|
|
143
139
|
safeConvertToUSD(priceOracle, token, balance) {
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { getAddress } from "viem";
|
|
2
2
|
import { gearboxRouterAbi } from "../../abi/router/gearboxRouter.js";
|
|
3
|
-
import { AddressMap } from "../utils/AddressMap.js";
|
|
4
3
|
import { formatBN } from "../utils/formatter.js";
|
|
5
|
-
import { isDust } from "../utils/index.js";
|
|
4
|
+
import { AddressMap, AssetsMap, isDust } from "../utils/index.js";
|
|
6
5
|
import { AbstractRouterContract } from "./AbstractRouterContract.js";
|
|
7
|
-
import {
|
|
6
|
+
import { limitLeftover } from "./helpers.js";
|
|
8
7
|
const abi = gearboxRouterAbi;
|
|
9
8
|
class RouterV310Contract extends AbstractRouterContract {
|
|
10
9
|
#numSplits = new AddressMap();
|
|
@@ -71,8 +70,8 @@ class RouterV310Contract extends AbstractRouterContract {
|
|
|
71
70
|
slippage
|
|
72
71
|
} = props;
|
|
73
72
|
const [expectedMap, leftoverMap] = [
|
|
74
|
-
|
|
75
|
-
|
|
73
|
+
new AssetsMap(expectedBalances),
|
|
74
|
+
new AssetsMap(leftoverBalances)
|
|
76
75
|
];
|
|
77
76
|
const getNumSplits = this.#numSplitsGetter(cm, expectedBalances);
|
|
78
77
|
const tData = cm.collateralTokens.map(
|
|
@@ -157,22 +156,22 @@ class RouterV310Contract extends AbstractRouterContract {
|
|
|
157
156
|
} = props;
|
|
158
157
|
const { expectedBalances, leftoverBalances, tokensToClaim } = this.getExpectedAndLeftover(ca, cm, {
|
|
159
158
|
balances: balances ? {
|
|
160
|
-
expectedBalances:
|
|
161
|
-
leftoverBalances:
|
|
162
|
-
tokensToClaim:
|
|
159
|
+
expectedBalances: new AssetsMap(balances.expectedBalances),
|
|
160
|
+
leftoverBalances: new AssetsMap(balances.leftoverBalances),
|
|
161
|
+
tokensToClaim: new AssetsMap(balances.tokensToClaim || [])
|
|
163
162
|
} : void 0,
|
|
164
163
|
keepAssets: balances ? void 0 : keepAssets,
|
|
165
164
|
debtOnly
|
|
166
165
|
});
|
|
167
|
-
const getNumSplits = this.#numSplitsGetter(cm, expectedBalances.
|
|
166
|
+
const getNumSplits = this.#numSplitsGetter(cm, expectedBalances.toAssets());
|
|
168
167
|
const tData = [];
|
|
169
168
|
for (const token of cm.collateralTokens) {
|
|
170
169
|
tData.push({
|
|
171
170
|
token,
|
|
172
|
-
balance: expectedBalances.get(token)
|
|
173
|
-
leftoverBalance: limitLeftover(leftoverBalances.get(token)
|
|
171
|
+
balance: expectedBalances.get(token) || 0n,
|
|
172
|
+
leftoverBalance: limitLeftover(leftoverBalances.get(token), token) ?? 0n,
|
|
174
173
|
numSplits: getNumSplits(token),
|
|
175
|
-
claimRewards:
|
|
174
|
+
claimRewards: tokensToClaim.has(token)
|
|
176
175
|
});
|
|
177
176
|
}
|
|
178
177
|
this.logger?.debug(
|
|
@@ -1,7 +1,4 @@
|
|
|
1
1
|
import { AddressMap } from "../utils/index.js";
|
|
2
|
-
function balancesMap(assets) {
|
|
3
|
-
return new AddressMap(assets.map(({ token, balance }) => [token, balance]));
|
|
4
|
-
}
|
|
5
2
|
function assetsMap(assets) {
|
|
6
3
|
return new AddressMap(assets.map((a) => [a.token, a]));
|
|
7
4
|
}
|
|
@@ -16,6 +13,5 @@ function limitLeftover(balance, token) {
|
|
|
16
13
|
}
|
|
17
14
|
export {
|
|
18
15
|
assetsMap,
|
|
19
|
-
balancesMap,
|
|
20
16
|
limitLeftover
|
|
21
17
|
};
|
|
@@ -113,6 +113,12 @@ class AddressMap {
|
|
|
113
113
|
keys() {
|
|
114
114
|
return Array.from(this.#map.keys());
|
|
115
115
|
}
|
|
116
|
+
/**
|
|
117
|
+
* Returns an unfrozen shallow copy of the map.
|
|
118
|
+
**/
|
|
119
|
+
clone() {
|
|
120
|
+
return new AddressMap(this.entries(), this.name);
|
|
121
|
+
}
|
|
116
122
|
/**
|
|
117
123
|
* Converts the map to a plain `Record<Address, T>` object.
|
|
118
124
|
**/
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { AddressMap } from "./AddressMap.js";
|
|
2
|
+
class AssetsMap extends AddressMap {
|
|
3
|
+
/**
|
|
4
|
+
* @param entries - Optional initial entries as `[address, balance]` tuples or {@link Asset} objects.
|
|
5
|
+
* @param name - Optional label used in error messages when a lookup fails.
|
|
6
|
+
*/
|
|
7
|
+
constructor(entries, name) {
|
|
8
|
+
super(
|
|
9
|
+
entries?.map((e) => Array.isArray(e) ? e : [e.token, e.balance]),
|
|
10
|
+
name
|
|
11
|
+
);
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Looks up a token balance, treating a missing key as `0n`.
|
|
15
|
+
*/
|
|
16
|
+
getOrZero(address) {
|
|
17
|
+
return this.get(address) ?? 0n;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Adds `amount` to the token balance, treating a missing key as `0n`.
|
|
21
|
+
*/
|
|
22
|
+
inc(address, amount) {
|
|
23
|
+
this.upsert(address, this.getOrZero(address) + amount);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Subtracts `amount` from the token balance, treating a missing key as `0n`.
|
|
27
|
+
*/
|
|
28
|
+
dec(address, amount) {
|
|
29
|
+
this.inc(address, -amount);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Per-token difference `this - before`, non-zero entries only.
|
|
33
|
+
*
|
|
34
|
+
* Assumes this map's keys are a superset of `before`'s keys; tokens present
|
|
35
|
+
* only in `before` are not reported.
|
|
36
|
+
*/
|
|
37
|
+
difference(before) {
|
|
38
|
+
const result = new AssetsMap();
|
|
39
|
+
for (const [token, balance] of this.entries()) {
|
|
40
|
+
const change = balance - before.getOrZero(token);
|
|
41
|
+
if (change !== 0n) {
|
|
42
|
+
result.upsert(token, change);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return result;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Sums `fn` over all entries.
|
|
49
|
+
*/
|
|
50
|
+
sum(fn) {
|
|
51
|
+
return this.entries().reduce(
|
|
52
|
+
(acc, [token, balance]) => acc + fn(token, balance),
|
|
53
|
+
0n
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Converts the map to an array of {@link Asset} objects.
|
|
58
|
+
* @param minBalance - If provided, keeps only entries with a balance
|
|
59
|
+
* strictly greater than this threshold (e.g. `1n` to filter out dust).
|
|
60
|
+
*/
|
|
61
|
+
toAssets(minBalance) {
|
|
62
|
+
const abs = (balance) => balance > 0n ? balance : -balance;
|
|
63
|
+
return this.entries().filter(
|
|
64
|
+
([, balance]) => minBalance === void 0 || abs(balance) > minBalance
|
|
65
|
+
).map(([token, balance]) => ({ token, balance }));
|
|
66
|
+
}
|
|
67
|
+
clone() {
|
|
68
|
+
return new AssetsMap(this.entries(), this.name);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
export {
|
|
72
|
+
AssetsMap
|
|
73
|
+
};
|