@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
|
File without changes
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
export * from "./types-adapters.js";
|
|
2
2
|
export * from "./types-facades.js";
|
|
3
3
|
export * from "./types-pools.js";
|
|
4
|
+
export * from "./types-rwa.js";
|
|
4
5
|
function isPoolOperation(tx) {
|
|
5
6
|
return tx.operation === "Deposit" || tx.operation === "Mint" || tx.operation === "Withdraw" || tx.operation === "Redeem";
|
|
6
7
|
}
|
|
8
|
+
function isRWAOperation(tx) {
|
|
9
|
+
return tx.operation === "SecuritizeOpenCreditAccount" || tx.operation === "SecuritizeMulticall";
|
|
10
|
+
}
|
|
7
11
|
export {
|
|
8
|
-
isPoolOperation
|
|
12
|
+
isPoolOperation,
|
|
13
|
+
isRWAOperation
|
|
9
14
|
};
|
|
@@ -4,14 +4,14 @@ import {
|
|
|
4
4
|
toPrerequisiteError
|
|
5
5
|
} from "./Prerequisite.js";
|
|
6
6
|
class AllowancePrerequisite extends Prerequisite {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
#id;
|
|
8
|
+
#title;
|
|
9
|
+
#detail;
|
|
10
10
|
constructor(props) {
|
|
11
11
|
super();
|
|
12
|
-
this
|
|
13
|
-
this
|
|
14
|
-
this
|
|
12
|
+
this.#id = props.id ?? `allowance:${props.token}:${props.owner}:${props.spender}`;
|
|
13
|
+
this.#title = props.title ?? "Token approval";
|
|
14
|
+
this.#detail = {
|
|
15
15
|
token: props.token,
|
|
16
16
|
owner: props.owner,
|
|
17
17
|
spender: props.spender,
|
|
@@ -19,24 +19,24 @@ class AllowancePrerequisite extends Prerequisite {
|
|
|
19
19
|
};
|
|
20
20
|
}
|
|
21
21
|
get id() {
|
|
22
|
-
return this
|
|
22
|
+
return this.#id;
|
|
23
23
|
}
|
|
24
24
|
get kind() {
|
|
25
25
|
return "allowance";
|
|
26
26
|
}
|
|
27
27
|
get title() {
|
|
28
|
-
return this
|
|
28
|
+
return this.#title;
|
|
29
29
|
}
|
|
30
30
|
get detail() {
|
|
31
|
-
return this
|
|
31
|
+
return this.#detail;
|
|
32
32
|
}
|
|
33
33
|
calls() {
|
|
34
34
|
return [
|
|
35
35
|
{
|
|
36
|
-
address: this.
|
|
36
|
+
address: this.#detail.token,
|
|
37
37
|
abi: erc20Abi,
|
|
38
38
|
functionName: "allowance",
|
|
39
|
-
args: [this.
|
|
39
|
+
args: [this.#detail.owner, this.#detail.spender]
|
|
40
40
|
}
|
|
41
41
|
];
|
|
42
42
|
}
|
|
@@ -46,8 +46,8 @@ class AllowancePrerequisite extends Prerequisite {
|
|
|
46
46
|
return this.errorResult(toPrerequisiteError(res?.error));
|
|
47
47
|
}
|
|
48
48
|
const actual = res.result;
|
|
49
|
-
return this.satisfiedResult(actual >= this.
|
|
50
|
-
...this
|
|
49
|
+
return this.satisfiedResult(actual >= this.#detail.required, {
|
|
50
|
+
...this.#detail,
|
|
51
51
|
actual
|
|
52
52
|
});
|
|
53
53
|
}
|
|
@@ -1,41 +1,59 @@
|
|
|
1
1
|
import { erc20Abi } from "viem";
|
|
2
|
+
import { iMulticall3Abi } from "../../abi/iMulticall3.js";
|
|
3
|
+
import { hexEq, NATIVE_ADDRESS } from "../../sdk/index.js";
|
|
2
4
|
import {
|
|
3
5
|
Prerequisite,
|
|
4
6
|
toPrerequisiteError
|
|
5
7
|
} from "./Prerequisite.js";
|
|
6
8
|
class BalancePrerequisite extends Prerequisite {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
9
|
+
#id;
|
|
10
|
+
#title;
|
|
11
|
+
#detail;
|
|
10
12
|
constructor(props) {
|
|
11
13
|
super();
|
|
12
|
-
this
|
|
13
|
-
this
|
|
14
|
-
this
|
|
14
|
+
this.#id = props.id ?? `balance:${props.token}:${props.owner}`;
|
|
15
|
+
this.#title = props.title ?? "Sufficient balance";
|
|
16
|
+
this.#detail = {
|
|
15
17
|
token: props.token,
|
|
16
18
|
owner: props.owner,
|
|
17
19
|
required: props.required
|
|
18
20
|
};
|
|
19
21
|
}
|
|
20
22
|
get id() {
|
|
21
|
-
return this
|
|
23
|
+
return this.#id;
|
|
22
24
|
}
|
|
23
25
|
get kind() {
|
|
24
26
|
return "balance";
|
|
25
27
|
}
|
|
26
28
|
get title() {
|
|
27
|
-
return this
|
|
29
|
+
return this.#title;
|
|
28
30
|
}
|
|
29
31
|
get detail() {
|
|
30
|
-
return this
|
|
32
|
+
return this.#detail;
|
|
31
33
|
}
|
|
32
|
-
calls() {
|
|
34
|
+
calls(ctx) {
|
|
35
|
+
if (hexEq(this.#detail.token, NATIVE_ADDRESS)) {
|
|
36
|
+
const multicall3 = ctx.sdk.client.chain.contracts?.multicall3?.address;
|
|
37
|
+
if (!multicall3) {
|
|
38
|
+
throw new Error(
|
|
39
|
+
"multicall3 is not configured for this chain, cannot read native balance"
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
return [
|
|
43
|
+
{
|
|
44
|
+
address: multicall3,
|
|
45
|
+
abi: iMulticall3Abi,
|
|
46
|
+
functionName: "getEthBalance",
|
|
47
|
+
args: [this.#detail.owner]
|
|
48
|
+
}
|
|
49
|
+
];
|
|
50
|
+
}
|
|
33
51
|
return [
|
|
34
52
|
{
|
|
35
|
-
address: this.
|
|
53
|
+
address: this.#detail.token,
|
|
36
54
|
abi: erc20Abi,
|
|
37
55
|
functionName: "balanceOf",
|
|
38
|
-
args: [this.
|
|
56
|
+
args: [this.#detail.owner]
|
|
39
57
|
}
|
|
40
58
|
];
|
|
41
59
|
}
|
|
@@ -45,8 +63,8 @@ class BalancePrerequisite extends Prerequisite {
|
|
|
45
63
|
return this.errorResult(toPrerequisiteError(res?.error));
|
|
46
64
|
}
|
|
47
65
|
const actual = res.result;
|
|
48
|
-
return this.satisfiedResult(actual >= this.
|
|
49
|
-
...this
|
|
66
|
+
return this.satisfiedResult(actual >= this.#detail.required, {
|
|
67
|
+
...this.#detail,
|
|
50
68
|
actual
|
|
51
69
|
});
|
|
52
70
|
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Prerequisite } from "./Prerequisite.js";
|
|
2
|
+
class RWAOpenRequirementsPrerequisite extends Prerequisite {
|
|
3
|
+
#id;
|
|
4
|
+
#title;
|
|
5
|
+
#detail;
|
|
6
|
+
constructor(props) {
|
|
7
|
+
super();
|
|
8
|
+
this.#id = props.id ?? `rwaOpenRequirements:${props.factory}:${props.token}`;
|
|
9
|
+
this.#title = props.title ?? "RWA account requirements fulfilled";
|
|
10
|
+
this.#detail = props.requirements;
|
|
11
|
+
}
|
|
12
|
+
get id() {
|
|
13
|
+
return this.#id;
|
|
14
|
+
}
|
|
15
|
+
get kind() {
|
|
16
|
+
return "rwaOpenRequirements";
|
|
17
|
+
}
|
|
18
|
+
get title() {
|
|
19
|
+
return this.#title;
|
|
20
|
+
}
|
|
21
|
+
get detail() {
|
|
22
|
+
return this.#detail;
|
|
23
|
+
}
|
|
24
|
+
/** Pre-resolved: no on-chain reads to contribute. */
|
|
25
|
+
calls() {
|
|
26
|
+
return [];
|
|
27
|
+
}
|
|
28
|
+
resolve() {
|
|
29
|
+
return this.satisfiedResult(this.#satisfied(), this.#detail);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Satisfied when the borrower has nothing left to do: no tokens pending
|
|
33
|
+
* issuer-side registration and no messages left to sign.
|
|
34
|
+
*/
|
|
35
|
+
#satisfied() {
|
|
36
|
+
const { securitizeTokensToRegister, requiredSignatures } = this.#detail;
|
|
37
|
+
return securitizeTokensToRegister.length === 0 && requiredSignatures.length === 0;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
export {
|
|
41
|
+
RWAOpenRequirementsPrerequisite
|
|
42
|
+
};
|
|
@@ -1,8 +1,19 @@
|
|
|
1
1
|
import { isAddressEqual } from "viem";
|
|
2
|
+
import {
|
|
3
|
+
AddressSet,
|
|
4
|
+
AssetsMap,
|
|
5
|
+
NATIVE_ADDRESS
|
|
6
|
+
} from "../../sdk/index.js";
|
|
7
|
+
import {
|
|
8
|
+
parseOperationCalldata
|
|
9
|
+
} from "../parse/parseOperationCalldata.js";
|
|
2
10
|
import { AllowancePrerequisite } from "./AllowancePrerequisite.js";
|
|
3
11
|
import { BalancePrerequisite } from "./BalancePrerequisite.js";
|
|
4
|
-
|
|
5
|
-
|
|
12
|
+
import { RWAOpenRequirementsPrerequisite } from "./RWAOpenRequirementsPrerequisite.js";
|
|
13
|
+
async function buildPrerequisites(input) {
|
|
14
|
+
const { sdk, sender: wallet, blockNumber } = input;
|
|
15
|
+
const tx = parseOperationCalldata(input);
|
|
16
|
+
const ctx = { sdk, wallet, blockNumber };
|
|
6
17
|
switch (tx.operation) {
|
|
7
18
|
// Deposit and Mint both pull the underlying from the caller into the pool;
|
|
8
19
|
// they only differ in which side (assets vs shares) the caller specifies.
|
|
@@ -11,6 +22,29 @@ function buildPrerequisites(tx, ctx) {
|
|
|
11
22
|
// here we approximate Mint by its shares amount (a lower bound on assets is
|
|
12
23
|
// not knowable from calldata alone).
|
|
13
24
|
case "Deposit":
|
|
25
|
+
if (tx.zapper) {
|
|
26
|
+
const prereqs = [];
|
|
27
|
+
if (!isAddressEqual(tx.tokenIn, NATIVE_ADDRESS)) {
|
|
28
|
+
prereqs.push(
|
|
29
|
+
new AllowancePrerequisite({
|
|
30
|
+
token: tx.tokenIn,
|
|
31
|
+
owner: wallet,
|
|
32
|
+
spender: tx.zapper,
|
|
33
|
+
required: tx.assets,
|
|
34
|
+
title: "Token approved to zapper"
|
|
35
|
+
})
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
prereqs.push(
|
|
39
|
+
new BalancePrerequisite({
|
|
40
|
+
token: tx.tokenIn,
|
|
41
|
+
owner: wallet,
|
|
42
|
+
required: tx.assets,
|
|
43
|
+
title: "Sufficient token balance"
|
|
44
|
+
})
|
|
45
|
+
);
|
|
46
|
+
return prereqs;
|
|
47
|
+
}
|
|
14
48
|
return [
|
|
15
49
|
new AllowancePrerequisite({
|
|
16
50
|
token: tx.underlying,
|
|
@@ -45,6 +79,23 @@ function buildPrerequisites(tx, ctx) {
|
|
|
45
79
|
// Redeem and Withdraw both burn LP shares from `owner`; they only differ in
|
|
46
80
|
// which side (shares vs assets) the caller specifies.
|
|
47
81
|
case "Redeem": {
|
|
82
|
+
if (tx.zapper) {
|
|
83
|
+
return [
|
|
84
|
+
new BalancePrerequisite({
|
|
85
|
+
token: tx.tokenIn,
|
|
86
|
+
owner: wallet,
|
|
87
|
+
required: tx.shares,
|
|
88
|
+
title: "Sufficient share token balance"
|
|
89
|
+
}),
|
|
90
|
+
new AllowancePrerequisite({
|
|
91
|
+
token: tx.tokenIn,
|
|
92
|
+
owner: wallet,
|
|
93
|
+
spender: tx.zapper,
|
|
94
|
+
required: tx.shares,
|
|
95
|
+
title: "Share token approved to zapper"
|
|
96
|
+
})
|
|
97
|
+
];
|
|
98
|
+
}
|
|
48
99
|
const prereqs = [
|
|
49
100
|
new BalancePrerequisite({
|
|
50
101
|
token: tx.pool,
|
|
@@ -93,7 +144,37 @@ function buildPrerequisites(tx, ctx) {
|
|
|
93
144
|
case "OpenCreditAccount":
|
|
94
145
|
case "CloseCreditAccount":
|
|
95
146
|
case "LiquidateCreditAccount":
|
|
96
|
-
return collateralPrerequisites(
|
|
147
|
+
return collateralPrerequisites(
|
|
148
|
+
tx.operation === "OpenCreditAccount" ? { creditManager: tx.creditManager, borrower: wallet } : {
|
|
149
|
+
creditManager: tx.creditManager,
|
|
150
|
+
creditAccount: tx.creditAccount
|
|
151
|
+
},
|
|
152
|
+
tx.multicall,
|
|
153
|
+
ctx
|
|
154
|
+
);
|
|
155
|
+
// RWA-factory operations: same collateral checks as facade operations,
|
|
156
|
+
// plus (for opening) the factory's open-account requirements. The parsed
|
|
157
|
+
// operation carries template (empty) `tokensToRegister`/`signaturesToCache`;
|
|
158
|
+
// the prerequisite detail provides the real values.
|
|
159
|
+
case "SecuritizeOpenCreditAccount":
|
|
160
|
+
return [
|
|
161
|
+
...await collateralPrerequisites(
|
|
162
|
+
{ creditManager: tx.creditManager, borrower: wallet },
|
|
163
|
+
tx.multicall,
|
|
164
|
+
ctx
|
|
165
|
+
),
|
|
166
|
+
...await rwaOpenRequirementsPrerequisites(
|
|
167
|
+
tx.multicall,
|
|
168
|
+
tx.creditManager,
|
|
169
|
+
ctx
|
|
170
|
+
)
|
|
171
|
+
];
|
|
172
|
+
case "SecuritizeMulticall":
|
|
173
|
+
return collateralPrerequisites(
|
|
174
|
+
{ creditManager: tx.creditManager, creditAccount: tx.creditAccount },
|
|
175
|
+
tx.multicall,
|
|
176
|
+
ctx
|
|
177
|
+
);
|
|
97
178
|
case "PartiallyLiquidateCreditAccount": {
|
|
98
179
|
const underlying = underlyingOf(ctx.sdk, tx.creditManager);
|
|
99
180
|
if (!underlying || tx.repaidAmount === 0n) {
|
|
@@ -119,28 +200,28 @@ function buildPrerequisites(tx, ctx) {
|
|
|
119
200
|
return [];
|
|
120
201
|
}
|
|
121
202
|
}
|
|
122
|
-
function collateralPrerequisites(
|
|
123
|
-
const
|
|
203
|
+
async function collateralPrerequisites(spenderOptions, multicall, ctx) {
|
|
204
|
+
const { sdk, wallet } = ctx;
|
|
205
|
+
const required = new AssetsMap();
|
|
124
206
|
for (const op of multicall) {
|
|
125
207
|
if (op.operation !== "AddCollateral" || op.amount === 0n) {
|
|
126
208
|
continue;
|
|
127
209
|
}
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
amount: (existing?.amount ?? 0n) + op.amount
|
|
133
|
-
});
|
|
210
|
+
required.inc(op.token, op.amount);
|
|
211
|
+
}
|
|
212
|
+
if (required.size === 0) {
|
|
213
|
+
return [];
|
|
134
214
|
}
|
|
215
|
+
const spender = await sdk.accounts.getApprovalAddress(spenderOptions);
|
|
135
216
|
const prereqs = [];
|
|
136
|
-
for (const
|
|
217
|
+
for (const [token, amount] of required.entries()) {
|
|
137
218
|
prereqs.push(
|
|
138
219
|
new AllowancePrerequisite({
|
|
139
220
|
token,
|
|
140
221
|
owner: wallet,
|
|
141
|
-
spender
|
|
222
|
+
spender,
|
|
142
223
|
required: amount,
|
|
143
|
-
title: "Collateral approved
|
|
224
|
+
title: "Collateral approved"
|
|
144
225
|
}),
|
|
145
226
|
new BalancePrerequisite({
|
|
146
227
|
token,
|
|
@@ -152,6 +233,41 @@ function collateralPrerequisites(multicall, creditManager, wallet) {
|
|
|
152
233
|
}
|
|
153
234
|
return prereqs;
|
|
154
235
|
}
|
|
236
|
+
async function rwaOpenRequirementsPrerequisites(multicall, creditManager, ctx) {
|
|
237
|
+
const { sdk, wallet } = ctx;
|
|
238
|
+
const { rwaFactory } = sdk.marketRegister.findByCreditManager(creditManager);
|
|
239
|
+
if (!rwaFactory) {
|
|
240
|
+
return [];
|
|
241
|
+
}
|
|
242
|
+
const rwaTokens = new AddressSet(rwaFactory.getTokens());
|
|
243
|
+
const candidates = new AddressSet();
|
|
244
|
+
for (const op of multicall) {
|
|
245
|
+
if (op.operation === "AddCollateral" || op.operation === "UpdateQuota") {
|
|
246
|
+
candidates.add(op.token);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
const prereqs = [];
|
|
250
|
+
for (const token of candidates) {
|
|
251
|
+
if (!rwaTokens.has(token)) {
|
|
252
|
+
continue;
|
|
253
|
+
}
|
|
254
|
+
const requirements = await sdk.accounts.getOpenAccountRequirements(
|
|
255
|
+
wallet,
|
|
256
|
+
creditManager,
|
|
257
|
+
{ tokenOutAddress: token }
|
|
258
|
+
);
|
|
259
|
+
if (requirements) {
|
|
260
|
+
prereqs.push(
|
|
261
|
+
new RWAOpenRequirementsPrerequisite({
|
|
262
|
+
requirements,
|
|
263
|
+
token,
|
|
264
|
+
factory: rwaFactory.address
|
|
265
|
+
})
|
|
266
|
+
);
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
return prereqs;
|
|
270
|
+
}
|
|
155
271
|
function underlyingOf(sdk, creditManager) {
|
|
156
272
|
const suite = sdk.marketRegister.creditManagers.find(
|
|
157
273
|
(cm) => isAddressEqual(cm.creditManager.address, creditManager)
|
|
@@ -3,5 +3,6 @@ export * from "./BalancePrerequisite.js";
|
|
|
3
3
|
export * from "./buildPrerequisites.js";
|
|
4
4
|
export * from "./Prerequisite.js";
|
|
5
5
|
export * from "./prepareAction.js";
|
|
6
|
+
export * from "./RWAOpenRequirementsPrerequisite.js";
|
|
6
7
|
export * from "./runPrerequisites.js";
|
|
7
8
|
export * from "./types.js";
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { AbstractAdapterContract } from "../../plugins/adapters/index.js";
|
|
2
|
+
import {
|
|
3
|
+
AssetsMap,
|
|
4
|
+
MAX_UINT256,
|
|
5
|
+
MIN_INT96
|
|
6
|
+
} from "../../sdk/index.js";
|
|
7
|
+
function makeInnerOperationsState() {
|
|
8
|
+
return {
|
|
9
|
+
balances: new AssetsMap(),
|
|
10
|
+
debt: 0n,
|
|
11
|
+
totalDebt: 0n,
|
|
12
|
+
collateralAdded: new AssetsMap(),
|
|
13
|
+
collateralWithdrawn: new AssetsMap(),
|
|
14
|
+
quotaChanges: []
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
function applyInnerOperations(sdk, multicall, state) {
|
|
18
|
+
let inBracket = false;
|
|
19
|
+
let storeSeen = false;
|
|
20
|
+
for (const op of multicall) {
|
|
21
|
+
switch (op.operation) {
|
|
22
|
+
case "AddCollateral":
|
|
23
|
+
state.collateralAdded.inc(op.token, op.amount);
|
|
24
|
+
state.balances.inc(op.token, op.amount);
|
|
25
|
+
break;
|
|
26
|
+
case "WithdrawCollateral": {
|
|
27
|
+
const running = state.balances.getOrZero(op.token);
|
|
28
|
+
const amount = op.amount === MAX_UINT256 ? running > 0n ? running : 0n : op.amount;
|
|
29
|
+
state.balances.dec(op.token, amount);
|
|
30
|
+
state.collateralWithdrawn.inc(op.token, amount);
|
|
31
|
+
break;
|
|
32
|
+
}
|
|
33
|
+
case "IncreaseBorrowedAmount":
|
|
34
|
+
state.debt += op.amount;
|
|
35
|
+
state.totalDebt += op.amount;
|
|
36
|
+
state.balances.inc(op.token, op.amount);
|
|
37
|
+
break;
|
|
38
|
+
case "DecreaseBorrowedAmount": {
|
|
39
|
+
const repaid = op.amount > state.totalDebt ? state.totalDebt : op.amount;
|
|
40
|
+
state.balances.dec(op.token, repaid);
|
|
41
|
+
state.totalDebt -= repaid;
|
|
42
|
+
if (state.debt > state.totalDebt) {
|
|
43
|
+
state.debt = state.totalDebt;
|
|
44
|
+
}
|
|
45
|
+
break;
|
|
46
|
+
}
|
|
47
|
+
case "UpdateQuota":
|
|
48
|
+
state.quotaChanges.push({ token: op.token, balance: op.change });
|
|
49
|
+
break;
|
|
50
|
+
case "StoreExpectedBalances":
|
|
51
|
+
if (storeSeen) {
|
|
52
|
+
throw new Error(
|
|
53
|
+
"malformed multicall: duplicate storeExpectedBalances call"
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
storeSeen = true;
|
|
57
|
+
inBracket = true;
|
|
58
|
+
for (const { token, balance } of op.deltas) {
|
|
59
|
+
state.balances.inc(token, balance);
|
|
60
|
+
}
|
|
61
|
+
break;
|
|
62
|
+
case "CompareBalances":
|
|
63
|
+
if (!inBracket) {
|
|
64
|
+
throw new Error(
|
|
65
|
+
"malformed multicall: compareBalances without a preceding storeExpectedBalances"
|
|
66
|
+
);
|
|
67
|
+
}
|
|
68
|
+
inBracket = false;
|
|
69
|
+
break;
|
|
70
|
+
case "Execute":
|
|
71
|
+
if (inBracket) {
|
|
72
|
+
const adapter = sdk.getContract(op.adapter);
|
|
73
|
+
if (!(adapter instanceof AbstractAdapterContract)) {
|
|
74
|
+
throw new Error(
|
|
75
|
+
`call to ${op.adapter} between storeExpectedBalances and compareBalances is not an adapter call`
|
|
76
|
+
);
|
|
77
|
+
}
|
|
78
|
+
adapter.previewBalanceChanges(state.balances, op.calldata);
|
|
79
|
+
}
|
|
80
|
+
break;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
if (inBracket) {
|
|
84
|
+
throw new Error(
|
|
85
|
+
"malformed multicall: storeExpectedBalances without a matching compareBalances"
|
|
86
|
+
);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
function applyQuotaChanges(initialQuotas, changes) {
|
|
90
|
+
const final = initialQuotas.clone();
|
|
91
|
+
for (const { token, balance: change } of changes) {
|
|
92
|
+
if (change === MIN_INT96) {
|
|
93
|
+
final.upsert(token, 0n);
|
|
94
|
+
} else {
|
|
95
|
+
const next = final.getOrZero(token) + change;
|
|
96
|
+
final.upsert(token, next > 0n ? next : 0n);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return {
|
|
100
|
+
quotas: final.toAssets(0n),
|
|
101
|
+
quotasChange: final.difference(initialQuotas).toAssets()
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
export {
|
|
105
|
+
applyInnerOperations,
|
|
106
|
+
applyQuotaChanges,
|
|
107
|
+
makeInnerOperationsState
|
|
108
|
+
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
class InvalidTransactionValueError extends Error {
|
|
2
|
+
/** Transaction `msg.value`. */
|
|
3
|
+
value;
|
|
4
|
+
/** Amount of wrapped native token added as collateral. */
|
|
5
|
+
wethCollateral;
|
|
6
|
+
constructor(value, wethCollateral) {
|
|
7
|
+
super(
|
|
8
|
+
`transaction value ${value} exceeds WETH collateral ${wethCollateral}`
|
|
9
|
+
);
|
|
10
|
+
this.name = "InvalidTransactionValueError";
|
|
11
|
+
this.value = value;
|
|
12
|
+
this.wethCollateral = wethCollateral;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
class UnsupportedOperationError extends Error {
|
|
16
|
+
/** The parsed operation kind (the `operation` discriminant). */
|
|
17
|
+
operation;
|
|
18
|
+
constructor(operation) {
|
|
19
|
+
super(`operation "${operation}" is not supported by previewOperation`);
|
|
20
|
+
this.name = "UnsupportedOperationError";
|
|
21
|
+
this.operation = operation;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
export {
|
|
25
|
+
InvalidTransactionValueError,
|
|
26
|
+
UnsupportedOperationError
|
|
27
|
+
};
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import {
|
|
2
|
+
AP_WETH_TOKEN,
|
|
3
|
+
AssetsMap,
|
|
4
|
+
NO_VERSION
|
|
5
|
+
} from "../../sdk/index.js";
|
|
6
|
+
import {
|
|
7
|
+
applyInnerOperations,
|
|
8
|
+
applyQuotaChanges,
|
|
9
|
+
makeInnerOperationsState
|
|
10
|
+
} from "./applyInnerOperations.js";
|
|
11
|
+
import { unwrapNativeCollateral } from "./unwrapNativeCollateral.js";
|
|
12
|
+
async function previewAdjustCreditAccount(input, operation, options) {
|
|
13
|
+
const { sdk, value = 0n } = input;
|
|
14
|
+
const market = sdk.marketRegister.findByCreditManager(
|
|
15
|
+
operation.creditManager
|
|
16
|
+
);
|
|
17
|
+
let ca = options?.creditAccount;
|
|
18
|
+
if (!ca) {
|
|
19
|
+
ca = await sdk.accounts.getCreditAccountData(
|
|
20
|
+
operation.creditAccount,
|
|
21
|
+
options?.blockNumber
|
|
22
|
+
);
|
|
23
|
+
}
|
|
24
|
+
if (!ca) {
|
|
25
|
+
throw new Error(`credit account ${operation.creditAccount} not found`);
|
|
26
|
+
}
|
|
27
|
+
const initialBalances = new AssetsMap();
|
|
28
|
+
const initialQuotas = new AssetsMap();
|
|
29
|
+
for (const t of ca.tokens) {
|
|
30
|
+
if (t.balance > 1n) {
|
|
31
|
+
initialBalances.upsert(t.token, t.balance);
|
|
32
|
+
}
|
|
33
|
+
if (t.quota > 1n) {
|
|
34
|
+
initialQuotas.upsert(t.token, t.quota);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
const state = makeInnerOperationsState();
|
|
38
|
+
state.balances = initialBalances.clone();
|
|
39
|
+
state.debt = ca.debt;
|
|
40
|
+
state.totalDebt = ca.debt + ca.accruedInterest + ca.accruedFees;
|
|
41
|
+
applyInnerOperations(sdk, operation.multicall, state);
|
|
42
|
+
const collateralAdded = unwrapNativeCollateral(
|
|
43
|
+
state.collateralAdded.toAssets(),
|
|
44
|
+
value,
|
|
45
|
+
sdk.addressProvider.getAddress(AP_WETH_TOKEN, NO_VERSION)
|
|
46
|
+
);
|
|
47
|
+
const { quotas, quotasChange } = applyQuotaChanges(
|
|
48
|
+
initialQuotas,
|
|
49
|
+
state.quotaChanges
|
|
50
|
+
);
|
|
51
|
+
const assets = state.balances.toAssets(1n);
|
|
52
|
+
const assetsChange = state.balances.difference(initialBalances).toAssets(1n);
|
|
53
|
+
const totalValue = assets.reduce(
|
|
54
|
+
(acc, { token, balance }) => acc + market.priceOracle.convert(token, market.underlying, balance),
|
|
55
|
+
0n
|
|
56
|
+
);
|
|
57
|
+
return {
|
|
58
|
+
operation: "AdjustCreditAccount",
|
|
59
|
+
creditManager: operation.creditManager,
|
|
60
|
+
creditAccount: operation.creditAccount,
|
|
61
|
+
collateralAdded,
|
|
62
|
+
collateralWithdrawn: state.collateralWithdrawn.toAssets(),
|
|
63
|
+
totalValue,
|
|
64
|
+
debt: state.debt,
|
|
65
|
+
debtChange: state.debt - ca.debt,
|
|
66
|
+
quotas,
|
|
67
|
+
quotasChange,
|
|
68
|
+
assets,
|
|
69
|
+
assetsChange
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
export {
|
|
73
|
+
previewAdjustCreditAccount
|
|
74
|
+
};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import {
|
|
2
|
+
AP_WETH_TOKEN,
|
|
3
|
+
NO_VERSION
|
|
4
|
+
} from "../../sdk/index.js";
|
|
5
|
+
import {
|
|
6
|
+
applyInnerOperations,
|
|
7
|
+
makeInnerOperationsState
|
|
8
|
+
} from "./applyInnerOperations.js";
|
|
9
|
+
import { unwrapNativeCollateral } from "./unwrapNativeCollateral.js";
|
|
10
|
+
function previewOpenCreditAccount(input, operation) {
|
|
11
|
+
const { sdk, value = 0n } = input;
|
|
12
|
+
const market = sdk.marketRegister.findByCreditManager(
|
|
13
|
+
operation.creditManager
|
|
14
|
+
);
|
|
15
|
+
const state = makeInnerOperationsState();
|
|
16
|
+
applyInnerOperations(sdk, operation.multicall, state);
|
|
17
|
+
const collateralValue = state.collateralAdded.sum(
|
|
18
|
+
(token, balance) => market.priceOracle.convert(token, market.underlying, balance)
|
|
19
|
+
);
|
|
20
|
+
const collateral = unwrapNativeCollateral(
|
|
21
|
+
state.collateralAdded.toAssets(),
|
|
22
|
+
value,
|
|
23
|
+
sdk.addressProvider.getAddress(AP_WETH_TOKEN, NO_VERSION)
|
|
24
|
+
);
|
|
25
|
+
const assets = state.balances.toAssets(1n);
|
|
26
|
+
return {
|
|
27
|
+
operation: operation.operation,
|
|
28
|
+
creditManager: operation.creditManager,
|
|
29
|
+
target: inferTargetAsset(operation.multicall, state.balances),
|
|
30
|
+
collateral,
|
|
31
|
+
collateralValue,
|
|
32
|
+
debt: state.debt,
|
|
33
|
+
// On opening, initial quotas are zero, so the raw changes are the quotas.
|
|
34
|
+
quotas: state.quotaChanges,
|
|
35
|
+
assets
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
function inferTargetAsset(multicall, balances) {
|
|
39
|
+
for (const op of multicall) {
|
|
40
|
+
if (op.operation === "UpdateQuota" && op.change > 0n) {
|
|
41
|
+
const balance = balances.get(op.token);
|
|
42
|
+
return balance ? { token: op.token, balance } : void 0;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return void 0;
|
|
46
|
+
}
|
|
47
|
+
export {
|
|
48
|
+
previewOpenCreditAccount
|
|
49
|
+
};
|