@gearbox-protocol/sdk 16.2.0 → 16.3.0-next.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/abi/rwa/iMidasAccessControl.js +23 -0
- package/dist/cjs/abi/rwa/iMidasDegenNFT.js +92 -0
- package/dist/cjs/history/assembleOperations.js +3 -3
- package/dist/cjs/history/classifyMulticallOperations.js +7 -7
- package/dist/cjs/history/index.js +13 -0
- package/dist/cjs/history/parseCreditAccountTransaction.js +5 -5
- package/dist/cjs/{preview → history}/trace/errors.js +1 -1
- package/dist/cjs/{preview → history}/trace/extractAdapterCallTraces.js +1 -1
- package/dist/cjs/{preview → history}/trace/extractTransfers.js +3 -3
- package/dist/cjs/{preview → history}/trace/findFacadeCalls.js +3 -3
- package/dist/cjs/history/trace/index.js +14 -0
- package/dist/cjs/model/errors/index.js +37 -0
- package/dist/cjs/model/errors/liquidation-errors.js +32 -0
- package/dist/cjs/model/errors/operation-errors.js +135 -0
- package/dist/cjs/{onchain/market/oracle/errors.js → model/errors/oracle-errors.js} +1 -1
- package/dist/cjs/model/errors/prepare-errors.js +108 -0
- package/dist/cjs/model/errors/preview-errors.js +12 -0
- package/dist/cjs/model/index.js +45 -2
- package/dist/cjs/model/opportunities.schema.js +3 -1
- package/dist/cjs/model/positions.js +1 -1
- package/dist/cjs/model/result.js +0 -8
- package/dist/cjs/model/rwa.js +53 -0
- package/dist/cjs/model/rwa.schema.js +20 -0
- package/dist/cjs/offchain/opportunities/OffchainOpportunities.js +1 -1
- package/dist/cjs/onchain/accounts/index.js +0 -2
- package/dist/cjs/onchain/accounts/intents/guards.js +42 -66
- package/dist/cjs/onchain/accounts/intents/index.js +38 -35
- package/dist/cjs/onchain/accounts/intents/leverage-band.js +1 -1
- package/dist/cjs/onchain/accounts/intents/math.js +19 -15
- package/dist/cjs/onchain/accounts/intents/open-strategy.js +6 -4
- package/dist/cjs/onchain/accounts/intents/plan.js +52 -48
- package/dist/cjs/onchain/accounts/intents/realize.js +26 -24
- package/dist/cjs/onchain/accounts/intents/tail.js +15 -12
- package/dist/cjs/onchain/accounts/intents/testing/sdk-mock.js +7 -0
- package/dist/cjs/onchain/accounts/intents/tests/finish-withdraw.fixtures.js +6 -6
- package/dist/cjs/onchain/accounts/intents/tests/withdraw.fixtures.js +12 -12
- package/dist/cjs/onchain/accounts/intents/view.js +1 -1
- package/dist/cjs/onchain/accounts/liquidations/LiquidationsService.js +2 -2
- package/dist/cjs/onchain/accounts/withdrawal-compressor/index.js +0 -1
- package/dist/cjs/onchain/index.js +130 -38
- package/dist/cjs/onchain/market/MarketSuite.js +10 -4
- package/dist/cjs/onchain/market/adapters/index.js +1 -0
- package/dist/cjs/onchain/market/credit/CreditSuite.js +77 -15
- package/dist/cjs/onchain/market/index.js +8 -8
- package/dist/cjs/onchain/market/oracle/PriceOracleBaseContract.js +6 -6
- package/dist/cjs/onchain/market/oracle/index.js +0 -2
- package/dist/cjs/onchain/market/pool/PoolQuotaKeeperV310Contract.js +8 -0
- package/dist/cjs/onchain/market/rwa/RWARegistry.js +3 -2
- package/dist/cjs/onchain/market/rwa/createDegenNFT.js +53 -0
- package/dist/cjs/onchain/market/rwa/index.js +7 -5
- package/dist/cjs/onchain/market/rwa/midas/MidasDegenNFT.js +56 -0
- package/dist/cjs/onchain/market/rwa/midas/constants.js +2 -0
- package/dist/cjs/onchain/market/rwa/midas/index.js +3 -0
- package/dist/cjs/onchain/market/rwa/securitize/SecuritizeDegenNFT.js +22 -3
- package/dist/cjs/onchain/market/rwa/securitize/SecuritizeRWAFactory.js +9 -9
- package/dist/cjs/onchain/market/rwa/securitize/constants.js +2 -2
- package/dist/cjs/onchain/market/rwa/securitize/index.js +4 -3
- package/dist/cjs/onchain/market/rwa/securitize/types.js +0 -29
- package/dist/cjs/onchain/market/rwa/types.js +0 -7
- package/dist/cjs/onchain/market/zapper/index.js +0 -1
- package/dist/cjs/onchain/opportunities/MultichainOpportunitiesService.js +2 -2
- package/dist/cjs/onchain/opportunities/OpportunitiesService.js +11 -3
- package/dist/cjs/onchain/pools/PoolService.js +10 -16
- package/dist/cjs/onchain/preview/index.js +41 -0
- package/dist/cjs/{preview → onchain/preview}/parse/classifyInnerOperations.js +2 -3
- package/dist/cjs/onchain/preview/parse/index.js +14 -0
- package/dist/cjs/{preview → onchain/preview}/parse/parseFacadeOperationCalldata.js +3 -3
- package/dist/cjs/{preview → onchain/preview}/parse/parseOperationCalldata.js +16 -17
- package/dist/cjs/{preview → onchain/preview}/parse/parsePoolOperationCalldata.js +3 -3
- package/dist/cjs/{preview → onchain/preview}/parse/parseRWAFactoryOperationCalldata.js +11 -12
- package/dist/cjs/{preview → onchain/preview}/parse/types.js +1 -1
- package/dist/cjs/{preview → onchain/preview}/preview/CreditAccountState.js +3 -4
- package/dist/cjs/{preview → onchain/preview}/preview/buildDelayedStrategyPositionOperationPreview.js +10 -11
- package/dist/cjs/{preview → onchain/preview}/preview/detectCloseOrRepay.js +2 -3
- package/dist/cjs/{preview → onchain/preview}/preview/detectDelayedClaim.js +4 -5
- package/dist/cjs/{preview → onchain/preview}/preview/detectDelayedOperation.js +5 -6
- package/dist/cjs/{preview → onchain/preview}/preview/estimateClaimableAt.js +1 -1
- package/dist/cjs/onchain/preview/preview/index.js +26 -0
- package/dist/cjs/{preview → onchain/preview}/preview/previewAdjustStrategyPosition.js +18 -22
- package/dist/cjs/{preview → onchain/preview}/preview/previewExitOrRepayStrategyPosition.js +22 -28
- package/dist/cjs/onchain/preview/preview/previewOpenStrategyPosition.js +60 -0
- package/dist/cjs/onchain/preview/preview/previewOperation.js +119 -0
- package/dist/cjs/{preview/simulate/simulatePoolOperation.js → onchain/preview/preview/previewPoolPositionOperation.js} +46 -32
- package/dist/cjs/onchain/preview/preview/replayInnerOperations.js +109 -0
- package/dist/cjs/onchain/preview/preview/replayMulticall.js +22 -0
- package/dist/cjs/{preview → onchain/preview}/preview/unwrapNativeCollateral.js +11 -14
- package/dist/cjs/onchain/validation/bundles/checkAccountQuotas.js +20 -0
- package/dist/cjs/onchain/validation/bundles/checkCollateralFunding.js +59 -0
- package/dist/cjs/onchain/validation/bundles/checkCreditOperation.js +65 -0
- package/dist/cjs/onchain/validation/bundles/checkDraw.js +28 -0
- package/dist/cjs/onchain/validation/bundles/checkHealthFactors.js +27 -0
- package/dist/cjs/onchain/validation/bundles/checkLiquidationEligibility.js +33 -0
- package/dist/cjs/onchain/validation/bundles/checkLiquidationFunding.js +29 -0
- package/dist/cjs/onchain/validation/bundles/checkMarket.js +24 -0
- package/dist/cjs/onchain/validation/bundles/checkObtained.js +13 -0
- package/dist/cjs/onchain/validation/bundles/checkPoolFunding.js +22 -0
- package/dist/cjs/onchain/validation/bundles/checkPoolOperation.js +35 -0
- package/dist/cjs/onchain/validation/bundles/checkQuotasAsked.js +20 -0
- package/dist/cjs/onchain/validation/bundles/checkRWAOpenRequirements.js +33 -0
- package/dist/cjs/onchain/validation/bundles/checkRWAOpening.js +24 -0
- package/dist/cjs/onchain/validation/bundles/checkWallet.js +22 -0
- package/dist/cjs/onchain/validation/bundles/checkWalletAllowance.js +32 -0
- package/dist/cjs/onchain/validation/bundles/checkWalletBalance.js +41 -0
- package/dist/cjs/onchain/validation/bundles/index.js +35 -0
- package/dist/cjs/onchain/validation/checkLiquidation.js +22 -0
- package/dist/cjs/onchain/validation/checkOperation.js +62 -0
- package/dist/cjs/onchain/validation/checkSimulation.js +60 -0
- package/dist/cjs/onchain/validation/checks/checkBorrowLimit.js +25 -0
- package/dist/cjs/onchain/validation/checks/checkCollateralised.js +26 -0
- package/dist/cjs/onchain/validation/checks/checkCreditAccountFrozen.js +10 -0
- package/dist/cjs/onchain/validation/checks/checkCreditManagerPaused.js +10 -0
- package/dist/cjs/onchain/validation/checks/checkDebtLimits.js +18 -0
- package/dist/cjs/onchain/validation/checks/checkEmergencyLiquidator.js +13 -0
- package/dist/cjs/onchain/validation/checks/checkForbiddenToken.js +10 -0
- package/dist/cjs/onchain/validation/checks/checkLeverage.js +13 -0
- package/dist/cjs/onchain/validation/checks/checkLiquidatorEligible.js +10 -0
- package/dist/cjs/onchain/validation/checks/checkMarketExpired.js +10 -0
- package/dist/cjs/onchain/validation/checks/checkPoolLiquidity.js +25 -0
- package/dist/cjs/onchain/validation/checks/checkPoolPaused.js +10 -0
- package/dist/cjs/onchain/validation/checks/checkPoolSunset.js +10 -0
- package/dist/cjs/onchain/validation/checks/checkQuotaCount.js +10 -0
- package/dist/cjs/onchain/validation/checks/checkQuotaLimit.js +18 -0
- package/dist/cjs/onchain/validation/checks/index.js +31 -0
- package/dist/cjs/onchain/validation/helpers/amount.js +12 -0
- package/dist/cjs/onchain/validation/helpers/health-factor-limits.js +25 -0
- package/dist/cjs/onchain/validation/helpers/index.js +11 -0
- package/dist/cjs/onchain/validation/{token.js → helpers/token.js} +4 -4
- package/dist/cjs/onchain/validation/index.js +85 -27
- package/dist/cjs/onchain/validation/raise.js +33 -0
- package/dist/cjs/sdk/index.js +6 -11
- package/dist/cjs/sdk/liquidations/LiquidationsNamespace.js +9 -0
- package/dist/cjs/sdk/opportunities/OpportunitiesNamespace.js +19 -4
- package/dist/cjs/sdk/prepare/PrepareApi.js +40 -50
- package/dist/cjs/sdk/prepare/index.js +7 -11
- package/dist/cjs/sdk/prepare/types.js +0 -4
- package/dist/cjs/sdk/preview/PreviewNamespace.js +24 -13
- package/dist/esm/abi/rwa/iMidasAccessControl.js +22 -0
- package/dist/esm/abi/rwa/iMidasDegenNFT.js +91 -0
- package/dist/esm/dev/AccountOpener.js +1 -1
- package/dist/esm/dev/withdrawalUtils.js +1 -1
- package/dist/esm/history/assembleOperations.js +2 -2
- package/dist/esm/history/classifyMulticallOperations.js +2 -2
- package/dist/esm/history/index.js +6 -1
- package/dist/esm/history/parseCreditAccountTransaction.js +3 -3
- package/dist/esm/{preview → history}/trace/errors.js +1 -1
- package/dist/esm/{preview → history}/trace/extractAdapterCallTraces.js +1 -1
- package/dist/esm/{preview → history}/trace/extractTransfers.js +2 -2
- package/dist/esm/{preview → history}/trace/findFacadeCalls.js +1 -1
- package/dist/esm/model/errors/index.js +7 -0
- package/dist/esm/model/errors/liquidation-errors.js +29 -0
- package/dist/esm/model/errors/operation-errors.js +121 -0
- package/dist/esm/{onchain/market/oracle/errors.js → model/errors/oracle-errors.js} +1 -1
- package/dist/esm/model/errors/prepare-errors.js +97 -0
- package/dist/esm/model/errors/preview-errors.js +11 -0
- package/dist/esm/model/index.js +10 -3
- package/dist/esm/model/opportunities.schema.js +3 -1
- package/dist/esm/model/positions.js +1 -1
- package/dist/esm/model/result.js +1 -8
- package/dist/esm/model/rwa.js +48 -0
- package/dist/esm/model/rwa.schema.js +18 -0
- package/dist/esm/offchain/opportunities/OffchainOpportunities.js +1 -1
- package/dist/esm/onchain/accounts/CreditAccountsServiceV310.js +2 -2
- package/dist/esm/onchain/accounts/index.js +1 -2
- package/dist/esm/onchain/accounts/intents/guards.js +29 -52
- package/dist/esm/onchain/accounts/intents/index.js +39 -35
- package/dist/esm/onchain/accounts/intents/leverage-band.js +1 -1
- package/dist/esm/onchain/accounts/intents/math.js +18 -14
- package/dist/esm/onchain/accounts/intents/open-strategy.js +8 -6
- package/dist/esm/onchain/accounts/intents/plan.js +51 -47
- package/dist/esm/onchain/accounts/intents/realize.js +26 -24
- package/dist/esm/onchain/accounts/intents/tail.js +14 -11
- package/dist/esm/onchain/accounts/intents/testing/sdk-mock.js +7 -0
- package/dist/esm/onchain/accounts/intents/tests/finish-withdraw.fixtures.js +6 -6
- package/dist/esm/onchain/accounts/intents/tests/withdraw.fixtures.js +12 -12
- package/dist/esm/onchain/accounts/intents/view.js +1 -1
- package/dist/esm/onchain/accounts/liquidations/LiquidationsService.js +3 -3
- package/dist/esm/onchain/accounts/withdrawal-compressor/RedemptionLoggerV310Contract.js +1 -1
- package/dist/esm/onchain/accounts/withdrawal-compressor/WithdrawalCompressorV310Contract.js +1 -1
- package/dist/esm/onchain/accounts/withdrawal-compressor/WithdrawalCompressorV311Contract.js +1 -1
- package/dist/esm/onchain/accounts/withdrawal-compressor/WithdrawalCompressorV313Contract.js +1 -1
- package/dist/esm/onchain/accounts/withdrawal-compressor/index.js +0 -1
- package/dist/esm/onchain/base/TokensMeta.js +3 -3
- package/dist/esm/onchain/core/createAddressProvider.js +1 -1
- package/dist/esm/onchain/index.js +64 -11
- package/dist/esm/onchain/market/MarketSuite.js +10 -4
- package/dist/esm/onchain/market/adapters/contracts/AccountMigratorAdapterContract.js +1 -1
- package/dist/esm/onchain/market/adapters/contracts/ERC4626AdapterContract.js +1 -1
- package/dist/esm/onchain/market/adapters/index.js +1 -0
- package/dist/esm/onchain/market/credit/CreditFacadeV310BaseContract.js +1 -1
- package/dist/esm/onchain/market/credit/CreditSuite.js +77 -15
- package/dist/esm/onchain/market/index.js +6 -6
- package/dist/esm/onchain/market/oracle/PriceOracleBaseContract.js +1 -1
- package/dist/esm/onchain/market/oracle/index.js +1 -2
- package/dist/esm/onchain/market/pool/PoolQuotaKeeperV310Contract.js +8 -0
- package/dist/esm/onchain/market/pool/PoolV310Contract.js +1 -1
- package/dist/esm/onchain/market/rwa/RWARegistry.js +2 -1
- package/dist/esm/onchain/market/rwa/createDegenNFT.js +52 -0
- package/dist/esm/onchain/market/rwa/index.js +6 -5
- package/dist/esm/onchain/market/rwa/midas/MidasDegenNFT.js +55 -0
- package/dist/esm/onchain/market/rwa/midas/constants.js +2 -1
- package/dist/esm/onchain/market/rwa/midas/index.js +3 -2
- package/dist/esm/onchain/market/rwa/securitize/SecuritizeDegenNFT.js +20 -2
- package/dist/esm/onchain/market/rwa/securitize/SecuritizeRWAFactory.js +4 -4
- package/dist/esm/onchain/market/rwa/securitize/constants.js +2 -2
- package/dist/esm/onchain/market/rwa/securitize/index.js +4 -3
- package/dist/esm/onchain/market/rwa/securitize/types.js +1 -29
- package/dist/esm/onchain/market/rwa/types.js +1 -7
- package/dist/esm/onchain/market/zapper/IETHZapperContract.js +1 -1
- package/dist/esm/onchain/market/zapper/ZapperContract.js +1 -1
- package/dist/esm/onchain/market/zapper/index.js +0 -1
- package/dist/esm/onchain/opportunities/MultichainOpportunitiesService.js +2 -2
- package/dist/esm/onchain/opportunities/OpportunitiesService.js +11 -3
- package/dist/esm/onchain/pools/PoolService.js +10 -16
- package/dist/esm/onchain/preview/index.js +20 -0
- package/dist/esm/{preview → onchain/preview}/parse/classifyInnerOperations.js +2 -3
- package/dist/esm/{preview → onchain/preview}/parse/index.js +0 -1
- package/dist/esm/{preview → onchain/preview}/parse/parseFacadeOperationCalldata.js +1 -1
- package/dist/esm/{preview → onchain/preview}/parse/parseOperationCalldata.js +10 -11
- package/dist/esm/{preview → onchain/preview}/parse/parsePoolOperationCalldata.js +3 -3
- package/dist/esm/{preview → onchain/preview}/parse/parseRWAFactoryOperationCalldata.js +8 -9
- package/dist/esm/{preview → onchain/preview}/parse/types.js +1 -1
- package/dist/esm/{preview → onchain/preview}/preview/CreditAccountState.js +3 -4
- package/dist/esm/{preview → onchain/preview}/preview/buildDelayedStrategyPositionOperationPreview.js +10 -11
- package/dist/esm/{preview → onchain/preview}/preview/detectCloseOrRepay.js +2 -3
- package/dist/esm/{preview → onchain/preview}/preview/detectDelayedClaim.js +4 -5
- package/dist/esm/{preview → onchain/preview}/preview/detectDelayedOperation.js +5 -6
- package/dist/esm/{preview → onchain/preview}/preview/estimateClaimableAt.js +1 -1
- package/dist/esm/{preview → onchain/preview}/preview/index.js +3 -4
- package/dist/esm/{preview → onchain/preview}/preview/previewAdjustStrategyPosition.js +17 -21
- package/dist/esm/{preview → onchain/preview}/preview/previewExitOrRepayStrategyPosition.js +20 -26
- package/dist/esm/{preview → onchain/preview}/preview/previewOpenStrategyPosition.js +25 -15
- package/dist/esm/{preview → onchain/preview}/preview/previewOperation.js +54 -35
- package/dist/esm/{preview/simulate/simulatePoolOperation.js → onchain/preview/preview/previewPoolPositionOperation.js} +46 -30
- package/dist/esm/onchain/preview/preview/replayInnerOperations.js +107 -0
- package/dist/esm/onchain/preview/preview/replayMulticall.js +21 -0
- package/dist/esm/{preview → onchain/preview}/preview/unwrapNativeCollateral.js +11 -14
- package/dist/esm/onchain/utils/viem/simulateWithPriceUpdates.js +1 -1
- package/dist/esm/onchain/validation/bundles/checkAccountQuotas.js +19 -0
- package/dist/esm/onchain/validation/bundles/checkCollateralFunding.js +58 -0
- package/dist/esm/onchain/validation/bundles/checkCreditOperation.js +64 -0
- package/dist/esm/onchain/validation/bundles/checkDraw.js +27 -0
- package/dist/esm/onchain/validation/bundles/checkHealthFactors.js +26 -0
- package/dist/esm/onchain/validation/bundles/checkLiquidationEligibility.js +32 -0
- package/dist/esm/onchain/validation/bundles/checkLiquidationFunding.js +28 -0
- package/dist/esm/onchain/validation/bundles/checkMarket.js +23 -0
- package/dist/esm/onchain/validation/bundles/checkObtained.js +12 -0
- package/dist/esm/onchain/validation/bundles/checkPoolFunding.js +21 -0
- package/dist/esm/onchain/validation/bundles/checkPoolOperation.js +34 -0
- package/dist/esm/onchain/validation/bundles/checkQuotasAsked.js +19 -0
- package/dist/esm/onchain/validation/bundles/checkRWAOpenRequirements.js +32 -0
- package/dist/esm/onchain/validation/bundles/checkRWAOpening.js +23 -0
- package/dist/esm/onchain/validation/bundles/checkWallet.js +21 -0
- package/dist/esm/onchain/validation/bundles/checkWalletAllowance.js +31 -0
- package/dist/esm/onchain/validation/bundles/checkWalletBalance.js +40 -0
- package/dist/esm/onchain/validation/bundles/index.js +18 -0
- package/dist/esm/onchain/validation/checkLiquidation.js +21 -0
- package/dist/esm/onchain/validation/checkOperation.js +61 -0
- package/dist/esm/onchain/validation/checkSimulation.js +59 -0
- package/dist/esm/onchain/validation/checks/checkBorrowLimit.js +24 -0
- package/dist/esm/onchain/validation/checks/checkCollateralised.js +25 -0
- package/dist/esm/onchain/validation/checks/checkCreditAccountFrozen.js +9 -0
- package/dist/esm/onchain/validation/checks/checkCreditManagerPaused.js +9 -0
- package/dist/esm/onchain/validation/checks/checkDebtLimits.js +17 -0
- package/dist/esm/onchain/validation/checks/checkEmergencyLiquidator.js +12 -0
- package/dist/esm/onchain/validation/checks/checkForbiddenToken.js +9 -0
- package/dist/esm/onchain/validation/checks/checkLeverage.js +12 -0
- package/dist/esm/onchain/validation/checks/checkLiquidatorEligible.js +9 -0
- package/dist/esm/onchain/validation/checks/checkMarketExpired.js +9 -0
- package/dist/esm/onchain/validation/checks/checkPoolLiquidity.js +24 -0
- package/dist/esm/onchain/validation/checks/checkPoolPaused.js +9 -0
- package/dist/esm/onchain/validation/checks/checkPoolSunset.js +9 -0
- package/dist/esm/onchain/validation/checks/checkQuotaCount.js +9 -0
- package/dist/esm/onchain/validation/checks/checkQuotaLimit.js +17 -0
- package/dist/esm/onchain/validation/checks/index.js +16 -0
- package/dist/esm/onchain/validation/helpers/amount.js +11 -0
- package/dist/esm/onchain/validation/helpers/health-factor-limits.js +21 -0
- package/dist/esm/onchain/validation/helpers/index.js +4 -0
- package/dist/esm/onchain/validation/{token.js → helpers/token.js} +3 -3
- package/dist/esm/onchain/validation/index.js +43 -4
- package/dist/esm/onchain/validation/raise.js +31 -0
- package/dist/esm/sdk/index.js +2 -3
- package/dist/esm/sdk/liquidations/LiquidationsNamespace.js +9 -0
- package/dist/esm/sdk/opportunities/OpportunitiesNamespace.js +19 -4
- package/dist/esm/sdk/prepare/PrepareApi.js +25 -35
- package/dist/esm/sdk/prepare/index.js +3 -3
- package/dist/esm/sdk/prepare/types.js +1 -2
- package/dist/esm/sdk/preview/PreviewNamespace.js +24 -13
- package/dist/types/abi/rwa/iMidasAccessControl.d.ts +22 -0
- package/dist/types/abi/rwa/iMidasDegenNFT.d.ts +82 -0
- package/dist/types/history/assembleOperations.d.ts +4 -5
- package/dist/types/history/classifyMulticallOperations.d.ts +3 -4
- package/dist/types/history/index.d.ts +8 -2
- package/dist/types/history/mapOperations.d.ts +1 -1
- package/dist/types/{preview → history}/trace/errors.d.ts +1 -1
- package/dist/types/{preview → history}/trace/extractAdapterCallTraces.d.ts +1 -1
- package/dist/types/{preview → history}/trace/extractTransfers.d.ts +2 -3
- package/dist/types/{preview → history}/trace/findFacadeCalls.d.ts +1 -1
- package/dist/types/{preview → history}/trace/types.d.ts +1 -1
- package/dist/types/history/types.d.ts +2 -3
- package/dist/types/model/errors/base.d.ts +28 -0
- package/dist/types/model/errors/index.d.ts +7 -0
- package/dist/types/model/errors/liquidation-errors.d.ts +45 -0
- package/dist/types/model/errors/operation-errors.d.ts +216 -0
- package/dist/types/{onchain/market/oracle/errors.d.ts → model/errors/oracle-errors.d.ts} +3 -5
- package/dist/types/model/errors/prepare-errors.d.ts +131 -0
- package/dist/types/model/errors/preview-errors.d.ts +72 -0
- package/dist/types/model/index.d.ts +12 -4
- package/dist/types/model/opportunities.d.ts +12 -2
- package/dist/types/model/opportunities.schema.d.ts +30 -0
- package/dist/types/model/positions.d.ts +2 -2
- package/dist/types/model/previews.d.ts +52 -113
- package/dist/types/model/result.d.ts +4 -8
- package/dist/types/model/rwa.d.ts +167 -0
- package/dist/types/model/rwa.schema.d.ts +29 -0
- package/dist/types/offchain/opportunities/OffchainOpportunities.d.ts +2 -1
- package/dist/types/offchain/opportunities/types.d.ts +4 -1
- package/dist/types/onchain/accounts/CreditAccountsServiceV310.d.ts +3 -1
- package/dist/types/onchain/accounts/index.d.ts +2 -4
- package/dist/types/onchain/accounts/intents/guards.d.ts +8 -18
- package/dist/types/onchain/accounts/intents/index.d.ts +20 -19
- package/dist/types/onchain/accounts/intents/leverage-band.d.ts +1 -1
- package/dist/types/onchain/accounts/intents/math.d.ts +6 -6
- package/dist/types/onchain/accounts/intents/operations.d.ts +2 -2
- package/dist/types/onchain/accounts/intents/plan.d.ts +9 -9
- package/dist/types/onchain/accounts/intents/tail.d.ts +2 -2
- package/dist/types/onchain/accounts/intents/testing/expect.d.ts +3 -3
- package/dist/types/onchain/accounts/intents/tests/finish-withdraw.fixtures.d.ts +6 -6
- package/dist/types/onchain/accounts/intents/tests/withdraw.fixtures.d.ts +12 -12
- package/dist/types/onchain/accounts/intents/types.d.ts +32 -30
- package/dist/types/onchain/accounts/types.d.ts +2 -1
- package/dist/types/onchain/accounts/withdrawal-compressor/RedemptionLoggerV310Contract.d.ts +1 -1
- package/dist/types/onchain/accounts/withdrawal-compressor/index.d.ts +1 -2
- package/dist/types/onchain/accounts/withdrawal-compressor/types.d.ts +1 -1
- package/dist/types/onchain/index.d.ts +73 -16
- package/dist/types/onchain/market/MarketSuite.d.ts +5 -1
- package/dist/types/onchain/market/adapters/index.d.ts +2 -1
- package/dist/types/onchain/market/adapters/transfers.d.ts +0 -7
- package/dist/types/onchain/market/credit/CreditSuite.d.ts +30 -8
- package/dist/types/onchain/market/credit/index.d.ts +2 -2
- package/dist/types/onchain/market/credit/types.d.ts +11 -1
- package/dist/types/onchain/market/index.d.ts +11 -10
- package/dist/types/onchain/market/oracle/PriceOracleBaseContract.d.ts +1 -1
- package/dist/types/onchain/market/oracle/index.d.ts +1 -2
- package/dist/types/onchain/market/oracle/types.d.ts +1 -1
- package/dist/types/onchain/market/pool/PoolQuotaKeeperV310Contract.d.ts +5 -0
- package/dist/types/onchain/market/rwa/RWARegistry.d.ts +1 -1
- package/dist/types/onchain/market/rwa/createDegenNFT.d.ts +12 -0
- package/dist/types/onchain/market/rwa/index.d.ts +10 -8
- package/dist/types/onchain/market/rwa/midas/MidasDegenNFT.d.ts +98 -0
- package/dist/types/onchain/market/rwa/midas/constants.d.ts +2 -1
- package/dist/types/onchain/market/rwa/midas/index.d.ts +3 -2
- package/dist/types/onchain/market/rwa/securitize/SecuritizeDegenNFT.d.ts +8 -2
- package/dist/types/onchain/market/rwa/securitize/SecuritizeRWAFactory.d.ts +4 -3
- package/dist/types/onchain/market/rwa/securitize/constants.d.ts +2 -2
- package/dist/types/onchain/market/rwa/securitize/index.d.ts +5 -4
- package/dist/types/onchain/market/rwa/securitize/types.d.ts +4 -110
- package/dist/types/onchain/market/rwa/types.d.ts +24 -32
- package/dist/types/onchain/market/zapper/ZapperContract.d.ts +1 -1
- package/dist/types/onchain/market/zapper/index.d.ts +1 -2
- package/dist/types/onchain/market/zapper/types.d.ts +1 -1
- package/dist/types/onchain/opportunities/MultichainOpportunitiesService.d.ts +2 -1
- package/dist/types/onchain/opportunities/OpportunitiesService.d.ts +5 -1
- package/dist/types/onchain/opportunities/types.d.ts +3 -2
- package/dist/types/onchain/pools/types.d.ts +2 -2
- package/dist/types/onchain/preview/index.d.ts +24 -0
- package/dist/types/{preview → onchain/preview}/parse/classifyInnerOperations.d.ts +4 -4
- package/dist/types/{preview → onchain/preview}/parse/index.d.ts +2 -4
- package/dist/types/{preview → onchain/preview}/parse/parseFacadeOperationCalldata.d.ts +4 -4
- package/dist/types/onchain/preview/parse/parseOperationCalldata.d.ts +18 -0
- package/dist/types/{preview → onchain/preview}/parse/parsePoolOperationCalldata.d.ts +7 -7
- package/dist/types/{preview → onchain/preview}/parse/parseRWAFactoryOperationCalldata.d.ts +4 -4
- package/dist/types/{preview → onchain/preview}/parse/types-adapters.d.ts +5 -16
- package/dist/types/{preview → onchain/preview}/parse/types-facades.d.ts +3 -3
- package/dist/types/{preview → onchain/preview}/parse/types-pools.d.ts +1 -1
- package/dist/types/{preview → onchain/preview}/parse/types-rwa.d.ts +3 -3
- package/dist/types/{preview → onchain/preview}/parse/types.d.ts +3 -3
- package/dist/types/{preview → onchain/preview}/preview/CreditAccountState.d.ts +5 -5
- package/dist/types/{preview → onchain/preview}/preview/buildDelayedStrategyPositionOperationPreview.d.ts +5 -5
- package/dist/types/{preview → onchain/preview}/preview/detectCloseOrRepay.d.ts +1 -1
- package/dist/types/{preview → onchain/preview}/preview/detectDelayedClaim.d.ts +8 -8
- package/dist/types/{preview → onchain/preview}/preview/detectDelayedOperation.d.ts +9 -9
- package/dist/types/{preview → onchain/preview}/preview/estimateClaimableAt.d.ts +6 -6
- package/dist/types/{preview → onchain/preview}/preview/index.d.ts +3 -4
- package/dist/types/onchain/preview/preview/previewAdjustStrategyPosition.d.ts +20 -0
- package/dist/types/onchain/preview/preview/previewExitOrRepayStrategyPosition.d.ts +21 -0
- package/dist/types/onchain/preview/preview/previewOpenStrategyPosition.d.ts +14 -0
- package/dist/types/onchain/preview/preview/previewOperation.d.ts +32 -0
- package/dist/types/onchain/preview/preview/previewPoolPositionOperation.d.ts +13 -0
- package/dist/types/{preview → onchain/preview}/preview/replayInnerOperations.d.ts +11 -11
- package/dist/types/{preview → onchain/preview}/preview/replayMulticall.d.ts +10 -10
- package/dist/types/{preview → onchain/preview}/preview/unwrapNativeCollateral.d.ts +10 -20
- package/dist/types/onchain/validation/bundles/checkAccountQuotas.d.ts +16 -0
- package/dist/types/onchain/validation/bundles/checkCollateralFunding.d.ts +22 -0
- package/dist/types/onchain/validation/bundles/checkCreditOperation.d.ts +31 -0
- package/dist/types/onchain/validation/bundles/checkDraw.d.ts +20 -0
- package/dist/types/onchain/validation/bundles/checkHealthFactors.d.ts +39 -0
- package/dist/types/onchain/validation/bundles/checkLiquidationEligibility.d.ts +20 -0
- package/dist/types/onchain/validation/bundles/checkLiquidationFunding.d.ts +18 -0
- package/dist/types/onchain/validation/bundles/checkMarket.d.ts +15 -0
- package/dist/types/onchain/validation/bundles/checkObtained.d.ts +9 -0
- package/dist/types/onchain/validation/bundles/checkPoolFunding.d.ts +19 -0
- package/dist/types/onchain/validation/bundles/checkPoolOperation.d.ts +31 -0
- package/dist/types/onchain/validation/bundles/checkQuotasAsked.d.ts +10 -0
- package/dist/types/onchain/validation/bundles/checkRWAOpenRequirements.d.ts +21 -0
- package/dist/types/onchain/validation/bundles/checkRWAOpening.d.ts +19 -0
- package/dist/types/onchain/validation/bundles/checkWallet.d.ts +23 -0
- package/dist/types/onchain/validation/bundles/checkWalletAllowance.d.ts +18 -0
- package/dist/types/onchain/validation/bundles/checkWalletBalance.d.ts +17 -0
- package/dist/types/onchain/validation/bundles/index.d.ts +18 -0
- package/dist/types/onchain/validation/checkLiquidation.d.ts +23 -0
- package/dist/types/onchain/validation/checkOperation.d.ts +32 -0
- package/dist/types/onchain/validation/checkSimulation.d.ts +56 -0
- package/dist/types/onchain/validation/checks/checkBorrowLimit.d.ts +21 -0
- package/dist/types/onchain/validation/checks/checkCollateralised.d.ts +25 -0
- package/dist/types/onchain/validation/checks/checkCreditAccountFrozen.d.ts +12 -0
- package/dist/types/onchain/validation/checks/checkCreditManagerPaused.d.ts +12 -0
- package/dist/types/onchain/validation/checks/checkDebtLimits.d.ts +21 -0
- package/dist/types/onchain/validation/checks/checkEmergencyLiquidator.d.ts +17 -0
- package/dist/types/onchain/validation/checks/checkForbiddenToken.d.ts +12 -0
- package/dist/types/onchain/validation/checks/checkLeverage.d.ts +12 -0
- package/dist/types/onchain/validation/checks/checkLiquidatorEligible.d.ts +13 -0
- package/dist/types/onchain/validation/checks/checkMarketExpired.d.ts +14 -0
- package/dist/types/onchain/validation/checks/checkPoolLiquidity.d.ts +20 -0
- package/dist/types/onchain/validation/checks/checkPoolPaused.d.ts +12 -0
- package/dist/types/onchain/validation/checks/checkPoolSunset.d.ts +13 -0
- package/dist/types/onchain/validation/checks/checkQuotaCount.d.ts +11 -0
- package/dist/types/onchain/validation/checks/checkQuotaLimit.d.ts +18 -0
- package/dist/types/onchain/validation/checks/index.d.ts +16 -0
- package/dist/types/onchain/validation/helpers/amount.d.ts +7 -0
- package/dist/types/onchain/validation/helpers/health-factor-limits.d.ts +21 -0
- package/dist/types/onchain/validation/helpers/index.d.ts +4 -0
- package/dist/types/onchain/validation/{token.d.ts → helpers/token.d.ts} +4 -4
- package/dist/types/onchain/validation/index.d.ts +43 -4
- package/dist/types/onchain/validation/raise.d.ts +33 -0
- package/dist/types/sdk/execute/types.d.ts +2 -2
- package/dist/types/sdk/index.d.ts +5 -6
- package/dist/types/sdk/liquidations/LiquidationsNamespace.d.ts +5 -0
- package/dist/types/sdk/liquidations/types.d.ts +8 -0
- package/dist/types/sdk/opportunities/OpportunitiesNamespace.d.ts +2 -1
- package/dist/types/sdk/opportunities/types.d.ts +8 -2
- package/dist/types/sdk/prepare/PrepareApi.d.ts +5 -4
- package/dist/types/sdk/prepare/index.d.ts +5 -5
- package/dist/types/sdk/prepare/types.d.ts +41 -22
- package/dist/types/sdk/preview/PreviewNamespace.d.ts +13 -3
- package/dist/types/sdk/preview/index.d.ts +2 -2
- package/dist/types/sdk/preview/types.d.ts +30 -7
- package/package.json +1 -6
- package/dist/cjs/onchain/accounts/withdrawal-compressor/errors.js +0 -1
- package/dist/cjs/onchain/market/zapper/errors.js +0 -1
- package/dist/cjs/onchain/validation/checks.js +0 -258
- package/dist/cjs/onchain/validation/refusal.js +0 -39
- package/dist/cjs/preview/index.js +0 -86
- package/dist/cjs/preview/package.json +0 -1
- package/dist/cjs/preview/parse/errors.js +0 -1
- package/dist/cjs/preview/parse/index.js +0 -15
- package/dist/cjs/preview/prerequisites/AllowancePrerequisite.js +0 -38
- package/dist/cjs/preview/prerequisites/BalancePrerequisite.js +0 -52
- package/dist/cjs/preview/prerequisites/Prerequisite.js +0 -52
- package/dist/cjs/preview/prerequisites/RWAOpenRequirementsPrerequisite.js +0 -53
- package/dist/cjs/preview/prerequisites/buildCollateralPrerequisites.js +0 -63
- package/dist/cjs/preview/prerequisites/buildPartialLiquidationPrerequisites.js +0 -19
- package/dist/cjs/preview/prerequisites/buildPoolPrerequisites.js +0 -76
- package/dist/cjs/preview/prerequisites/buildRWAPrerequisites.js +0 -39
- package/dist/cjs/preview/prerequisites/checkPrerequisites.js +0 -74
- package/dist/cjs/preview/prerequisites/helpers.js +0 -23
- package/dist/cjs/preview/prerequisites/index.js +0 -12
- package/dist/cjs/preview/preview/errors.js +0 -85
- package/dist/cjs/preview/preview/index.js +0 -33
- package/dist/cjs/preview/preview/previewOpenStrategyPosition.js +0 -50
- package/dist/cjs/preview/preview/previewOperation.js +0 -100
- package/dist/cjs/preview/preview/previewPoolPositionOperation.js +0 -49
- package/dist/cjs/preview/preview/replayInnerOperations.js +0 -109
- package/dist/cjs/preview/preview/replayMulticall.js +0 -19
- package/dist/cjs/preview/simulate/errors.js +0 -73
- package/dist/cjs/preview/simulate/index.js +0 -11
- package/dist/cjs/preview/simulate/simulateFacadeOperation.js +0 -15
- package/dist/cjs/preview/simulate/simulateOperation.js +0 -29
- package/dist/cjs/preview/simulate/simulateRWAOperation.js +0 -15
- package/dist/cjs/preview/simulate/types.js +0 -1
- package/dist/cjs/preview/trace/index.js +0 -14
- package/dist/cjs/preview/trace/types.js +0 -1
- package/dist/cjs/preview/types.js +0 -1
- package/dist/cjs/preview/validate/checkOperation.js +0 -187
- package/dist/cjs/preview/validate/checkSimulation.js +0 -39
- package/dist/cjs/preview/validate/index.js +0 -8
- package/dist/cjs/sdk/prepare/errors.js +0 -114
- package/dist/esm/onchain/accounts/withdrawal-compressor/errors.js +0 -1
- package/dist/esm/onchain/market/zapper/errors.js +0 -1
- package/dist/esm/onchain/validation/checks.js +0 -238
- package/dist/esm/onchain/validation/refusal.js +0 -36
- package/dist/esm/preview/index.js +0 -38
- package/dist/esm/preview/package.json +0 -1
- package/dist/esm/preview/parse/errors.js +0 -1
- package/dist/esm/preview/prerequisites/AllowancePrerequisite.js +0 -37
- package/dist/esm/preview/prerequisites/BalancePrerequisite.js +0 -51
- package/dist/esm/preview/prerequisites/Prerequisite.js +0 -51
- package/dist/esm/preview/prerequisites/RWAOpenRequirementsPrerequisite.js +0 -52
- package/dist/esm/preview/prerequisites/buildCollateralPrerequisites.js +0 -62
- package/dist/esm/preview/prerequisites/buildPartialLiquidationPrerequisites.js +0 -18
- package/dist/esm/preview/prerequisites/buildPoolPrerequisites.js +0 -75
- package/dist/esm/preview/prerequisites/buildRWAPrerequisites.js +0 -38
- package/dist/esm/preview/prerequisites/checkPrerequisites.js +0 -73
- package/dist/esm/preview/prerequisites/helpers.js +0 -22
- package/dist/esm/preview/prerequisites/index.js +0 -7
- package/dist/esm/preview/preview/errors.js +0 -79
- package/dist/esm/preview/preview/previewPoolPositionOperation.js +0 -48
- package/dist/esm/preview/preview/replayInnerOperations.js +0 -107
- package/dist/esm/preview/preview/replayMulticall.js +0 -18
- package/dist/esm/preview/simulate/errors.js +0 -71
- package/dist/esm/preview/simulate/index.js +0 -6
- package/dist/esm/preview/simulate/simulateFacadeOperation.js +0 -14
- package/dist/esm/preview/simulate/simulateOperation.js +0 -28
- package/dist/esm/preview/simulate/simulateRWAOperation.js +0 -14
- package/dist/esm/preview/simulate/types.js +0 -1
- package/dist/esm/preview/trace/types.js +0 -1
- package/dist/esm/preview/types.js +0 -1
- package/dist/esm/preview/validate/checkOperation.js +0 -183
- package/dist/esm/preview/validate/checkSimulation.js +0 -38
- package/dist/esm/preview/validate/index.js +0 -3
- package/dist/esm/sdk/prepare/errors.js +0 -108
- package/dist/types/model/errors.d.ts +0 -46
- package/dist/types/onchain/accounts/withdrawal-compressor/errors.d.ts +0 -20
- package/dist/types/onchain/market/zapper/errors.d.ts +0 -18
- package/dist/types/onchain/validation/checks.d.ts +0 -164
- package/dist/types/onchain/validation/refusal.d.ts +0 -242
- package/dist/types/preview/index.d.ts +0 -47
- package/dist/types/preview/parse/errors.d.ts +0 -29
- package/dist/types/preview/parse/parseOperationCalldata.d.ts +0 -18
- package/dist/types/preview/prerequisites/AllowancePrerequisite.d.ts +0 -26
- package/dist/types/preview/prerequisites/BalancePrerequisite.d.ts +0 -29
- package/dist/types/preview/prerequisites/Prerequisite.d.ts +0 -26
- package/dist/types/preview/prerequisites/RWAOpenRequirementsPrerequisite.d.ts +0 -55
- package/dist/types/preview/prerequisites/buildCollateralPrerequisites.d.ts +0 -20
- package/dist/types/preview/prerequisites/buildPartialLiquidationPrerequisites.d.ts +0 -12
- package/dist/types/preview/prerequisites/buildPoolPrerequisites.d.ts +0 -12
- package/dist/types/preview/prerequisites/buildRWAPrerequisites.d.ts +0 -26
- package/dist/types/preview/prerequisites/checkPrerequisites.d.ts +0 -28
- package/dist/types/preview/prerequisites/helpers.d.ts +0 -10
- package/dist/types/preview/prerequisites/index.d.ts +0 -7
- package/dist/types/preview/prerequisites/types.d.ts +0 -53
- package/dist/types/preview/preview/errors.d.ts +0 -44
- package/dist/types/preview/preview/previewAdjustStrategyPosition.d.ts +0 -19
- package/dist/types/preview/preview/previewExitOrRepayStrategyPosition.d.ts +0 -18
- package/dist/types/preview/preview/previewOpenStrategyPosition.d.ts +0 -12
- package/dist/types/preview/preview/previewOperation.d.ts +0 -32
- package/dist/types/preview/preview/previewPoolPositionOperation.d.ts +0 -13
- package/dist/types/preview/simulate/errors.d.ts +0 -52
- package/dist/types/preview/simulate/index.d.ts +0 -7
- package/dist/types/preview/simulate/simulateFacadeOperation.d.ts +0 -16
- package/dist/types/preview/simulate/simulateOperation.d.ts +0 -12
- package/dist/types/preview/simulate/simulatePoolOperation.d.ts +0 -42
- package/dist/types/preview/simulate/simulateRWAOperation.d.ts +0 -16
- package/dist/types/preview/simulate/types.d.ts +0 -48
- package/dist/types/preview/types.d.ts +0 -65
- package/dist/types/preview/validate/checkOperation.d.ts +0 -71
- package/dist/types/preview/validate/checkSimulation.d.ts +0 -32
- package/dist/types/preview/validate/index.d.ts +0 -3
- package/dist/types/sdk/prepare/errors.d.ts +0 -343
- /package/dist/cjs/{preview/prerequisites → history/trace}/types.js +0 -0
- /package/dist/cjs/model/{errors.js → errors/base.js} +0 -0
- /package/dist/cjs/{preview → onchain/preview}/parse/types-adapters.js +0 -0
- /package/dist/cjs/{preview → onchain/preview}/parse/types-facades.js +0 -0
- /package/dist/cjs/{preview → onchain/preview}/parse/types-pools.js +0 -0
- /package/dist/cjs/{preview → onchain/preview}/parse/types-rwa.js +0 -0
- /package/dist/esm/{preview → history}/trace/index.js +0 -0
- /package/dist/esm/{preview/prerequisites → history/trace}/types.js +0 -0
- /package/dist/esm/model/{errors.js → errors/base.js} +0 -0
- /package/dist/esm/{preview → onchain/preview}/parse/types-adapters.js +0 -0
- /package/dist/esm/{preview → onchain/preview}/parse/types-facades.js +0 -0
- /package/dist/esm/{preview → onchain/preview}/parse/types-pools.js +0 -0
- /package/dist/esm/{preview → onchain/preview}/parse/types-rwa.js +0 -0
- /package/dist/types/{preview → history}/trace/index.d.ts +0 -0
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
import { AssetsMap } from "../../onchain/utils/AssetsMap.js";
|
|
2
|
-
import "../../onchain/constants/math.js";
|
|
3
|
-
import { AbstractAdapterContract } from "../../onchain/market/adapters/contracts/AbstractAdapter.js";
|
|
4
|
-
import "../../onchain/index.js";
|
|
5
|
-
import { adapterCallOutsideBracketError, malformedBracketError, nonAdapterCallInBracketError, unpreviewableAdapterCallError, unsupportedOutOfBracketCallError } from "./errors.js";
|
|
6
|
-
//#region src/preview/preview/replayInnerOperations.ts
|
|
7
|
-
/**
|
|
8
|
-
* Creates a {@link ReplayState} around the given account seed, with empty
|
|
9
|
-
* bookkeeping.
|
|
10
|
-
*/
|
|
11
|
-
function makeReplayState(account) {
|
|
12
|
-
return {
|
|
13
|
-
account,
|
|
14
|
-
collateralAdded: new AssetsMap(),
|
|
15
|
-
collateralWithdrawn: new AssetsMap()
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Replays a credit-facade multicall over `state`, mutating it in place in
|
|
20
|
-
* facade execution order. The result is the *minimal guaranteed* post-state.
|
|
21
|
-
*
|
|
22
|
-
* The function assumes that the call was generated by our frontend using
|
|
23
|
-
* router/withdrawal compressor, otherwise it returns a warning, but still
|
|
24
|
-
* proceeds best-effort.
|
|
25
|
-
*
|
|
26
|
-
* @returns `undefined` on success, the warning on a malformed multicall.
|
|
27
|
-
*/
|
|
28
|
-
function replayInnerOperations(sdk, multicall, state) {
|
|
29
|
-
let inBracket = false;
|
|
30
|
-
let warning;
|
|
31
|
-
for (const op of multicall) {
|
|
32
|
-
let opWarning;
|
|
33
|
-
switch (op.operation) {
|
|
34
|
-
case "AddCollateral":
|
|
35
|
-
applyAddCollateral(state, op);
|
|
36
|
-
break;
|
|
37
|
-
case "WithdrawCollateral":
|
|
38
|
-
applyWithdrawCollateral(state, op);
|
|
39
|
-
break;
|
|
40
|
-
case "IncreaseBorrowedAmount":
|
|
41
|
-
state.account.increaseDebt(op.amount);
|
|
42
|
-
break;
|
|
43
|
-
case "DecreaseBorrowedAmount":
|
|
44
|
-
state.account.repay(op.amount);
|
|
45
|
-
break;
|
|
46
|
-
case "UpdateQuota":
|
|
47
|
-
state.account.updateQuota(op.token, op.change);
|
|
48
|
-
break;
|
|
49
|
-
case "StoreExpectedBalances":
|
|
50
|
-
if (inBracket) opWarning = malformedBracketError("nested");
|
|
51
|
-
inBracket = true;
|
|
52
|
-
for (const { token, balance } of op.deltas) state.account.balances.inc(token, balance);
|
|
53
|
-
break;
|
|
54
|
-
case "CompareBalances":
|
|
55
|
-
if (!inBracket) opWarning = malformedBracketError("unmatchedCompare");
|
|
56
|
-
inBracket = false;
|
|
57
|
-
break;
|
|
58
|
-
case "Execute": opWarning = applyExecute(sdk, op, inBracket, state.account.balances);
|
|
59
|
-
}
|
|
60
|
-
warning ??= opWarning;
|
|
61
|
-
}
|
|
62
|
-
if (inBracket) warning ??= malformedBracketError("unmatchedStore");
|
|
63
|
-
return warning;
|
|
64
|
-
}
|
|
65
|
-
function applyAddCollateral(state, op) {
|
|
66
|
-
state.collateralAdded.inc(op.token, op.amount);
|
|
67
|
-
state.account.balances.inc(op.token, op.amount);
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* `MAX_UINT256` is the facade sentinel for "withdraw the entire balance", so
|
|
71
|
-
* it is resolved against the running balance at the point of the call.
|
|
72
|
-
*/
|
|
73
|
-
function applyWithdrawCollateral(state, op) {
|
|
74
|
-
const running = state.account.balances.getOrZero(op.token);
|
|
75
|
-
const amount = op.amount === 115792089237316195423570985008687907853269984665640564039457584007913129639935n ? running > 0n ? running : 0n : op.amount;
|
|
76
|
-
state.account.balances.dec(op.token, amount);
|
|
77
|
-
state.collateralWithdrawn.inc(op.token, amount);
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Replays an adapter `Execute` call against the running balances.
|
|
81
|
-
*
|
|
82
|
-
* Inside a bracket, the adapter's balance changes are previewed via
|
|
83
|
-
* {@link AbstractAdapterContract.previewBalanceChanges}. Outside a bracket,
|
|
84
|
-
* only calls that {@link AbstractAdapterContract.replayOutOfBracketCall}
|
|
85
|
-
* accepts are allowed; nothing enforces the outcome of any other out-of-bracket
|
|
86
|
-
* adapter call on-chain, so its effect on balances cannot be previewed.
|
|
87
|
-
*/
|
|
88
|
-
function applyExecute(sdk, op, inBracket, balances) {
|
|
89
|
-
const adapter = sdk.getContract(op.adapter);
|
|
90
|
-
if (!inBracket) {
|
|
91
|
-
if (adapter instanceof AbstractAdapterContract) try {
|
|
92
|
-
if (adapter.replayOutOfBracketCall(balances, op.calldata)) return;
|
|
93
|
-
} catch (e) {
|
|
94
|
-
return unsupportedOutOfBracketCallError(op.adapter, e);
|
|
95
|
-
}
|
|
96
|
-
return adapterCallOutsideBracketError(op.adapter);
|
|
97
|
-
}
|
|
98
|
-
if (!(adapter instanceof AbstractAdapterContract)) return nonAdapterCallInBracketError(op.adapter);
|
|
99
|
-
try {
|
|
100
|
-
adapter.previewBalanceChanges(balances, op.calldata);
|
|
101
|
-
return;
|
|
102
|
-
} catch (e) {
|
|
103
|
-
return unpreviewableAdapterCallError(op.adapter, e);
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
//#endregion
|
|
107
|
-
export { makeReplayState, replayInnerOperations };
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { CreditAccountState } from "./CreditAccountState.js";
|
|
2
|
-
import { makeReplayState, replayInnerOperations } from "./replayInnerOperations.js";
|
|
3
|
-
//#region src/preview/preview/replayMulticall.ts
|
|
4
|
-
/**
|
|
5
|
-
* Replays the operation's multicall over the account's pre-resolved
|
|
6
|
-
* pre-state (`options.creditAccount`) via {@link replayInnerOperations}.
|
|
7
|
-
*/
|
|
8
|
-
function replayMulticall(sdk, operation, options) {
|
|
9
|
-
const before = CreditAccountState.fromCreditAccountData(options.creditAccount);
|
|
10
|
-
const after = makeReplayState(before.clone());
|
|
11
|
-
return {
|
|
12
|
-
before,
|
|
13
|
-
after,
|
|
14
|
-
warning: replayInnerOperations(sdk, operation.multicall, after)
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
//#endregion
|
|
18
|
-
export { replayMulticall };
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
import { errorAbis } from "../../abi/errors.js";
|
|
2
|
-
import { BaseError, ContractFunctionRevertedError, decodeErrorResult } from "viem";
|
|
3
|
-
//#region src/preview/simulate/errors.ts
|
|
4
|
-
function isPreviewSimulationError(value) {
|
|
5
|
-
return typeof value === "object" && value !== null && !(value instanceof Error) && value.code === "previewSimulationFailed";
|
|
6
|
-
}
|
|
7
|
-
/**
|
|
8
|
-
* Normalises an unknown rejection reason into a {@link PreviewSimulationError}.
|
|
9
|
-
* Pass-through when it already is one; otherwise decodes it under `source`.
|
|
10
|
-
*/
|
|
11
|
-
function asPreviewSimulationError(reason, source) {
|
|
12
|
-
if (isPreviewSimulationError(reason)) return reason;
|
|
13
|
-
const error = reason instanceof Error ? reason : new Error(String(reason));
|
|
14
|
-
const detail = decodeSimulationError({ error });
|
|
15
|
-
return {
|
|
16
|
-
code: "previewSimulationFailed",
|
|
17
|
-
message: detail.reason,
|
|
18
|
-
failures: [{
|
|
19
|
-
source,
|
|
20
|
-
detail
|
|
21
|
-
}],
|
|
22
|
-
cause: error
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Decodes a simulated call revert into a {@link SimulationError}.
|
|
27
|
-
*
|
|
28
|
-
* We first try to decode any raw return bytes against the SDK's
|
|
29
|
-
* {@link errorAbis} (Gearbox protocol exceptions plus standard ERC-20 custom
|
|
30
|
-
* errors); failing that, we walk viem's error chain for a
|
|
31
|
-
* {@link ContractFunctionRevertedError} (covers `Error(string)` / `Panic`).
|
|
32
|
-
*/
|
|
33
|
-
function decodeSimulationError(revert) {
|
|
34
|
-
const { error, data } = revert;
|
|
35
|
-
if (data && data !== "0x") try {
|
|
36
|
-
const decoded = decodeErrorResult({
|
|
37
|
-
abi: errorAbis,
|
|
38
|
-
data
|
|
39
|
-
});
|
|
40
|
-
return {
|
|
41
|
-
reason: formatDecodedError(decoded.errorName, decoded.args),
|
|
42
|
-
cause: error
|
|
43
|
-
};
|
|
44
|
-
} catch {}
|
|
45
|
-
if (error instanceof BaseError) {
|
|
46
|
-
const reverted = error.walk((e) => e instanceof ContractFunctionRevertedError);
|
|
47
|
-
if (reverted instanceof ContractFunctionRevertedError) return {
|
|
48
|
-
reason: reverted.data?.errorName ?? reverted.reason ?? reverted.shortMessage ?? "reverted",
|
|
49
|
-
cause: error
|
|
50
|
-
};
|
|
51
|
-
return {
|
|
52
|
-
reason: error.shortMessage ?? error.name,
|
|
53
|
-
cause: error
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
if (error instanceof Error) return {
|
|
57
|
-
reason: error.message,
|
|
58
|
-
cause: error
|
|
59
|
-
};
|
|
60
|
-
return {
|
|
61
|
-
reason: "reverted",
|
|
62
|
-
cause: error
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
/** Renders `Name` or `Name(arg0, arg1)` for a decoded custom error. */
|
|
66
|
-
function formatDecodedError(errorName, args) {
|
|
67
|
-
if (!args || args.length === 0) return errorName;
|
|
68
|
-
return `${errorName}(${args.map((arg) => String(arg)).join(", ")})`;
|
|
69
|
-
}
|
|
70
|
-
//#endregion
|
|
71
|
-
export { asPreviewSimulationError, decodeSimulationError };
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { asPreviewSimulationError } from "./errors.js";
|
|
2
|
-
import { simulatePoolOperation } from "./simulatePoolOperation.js";
|
|
3
|
-
import { simulateFacadeOperation } from "./simulateFacadeOperation.js";
|
|
4
|
-
import { simulateRWAOperation } from "./simulateRWAOperation.js";
|
|
5
|
-
import { simulateOperation } from "./simulateOperation.js";
|
|
6
|
-
export { asPreviewSimulationError, simulateFacadeOperation, simulateOperation, simulatePoolOperation, simulateRWAOperation };
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
//#region src/preview/simulate/simulateFacadeOperation.ts
|
|
2
|
-
/**
|
|
3
|
-
* Simulates a credit-facade operation.
|
|
4
|
-
*
|
|
5
|
-
* Not yet implemented: credit-facade simulation requires multicall-aware
|
|
6
|
-
* balance/transfer accounting that the pool simulation does not cover. The
|
|
7
|
-
* signature mirrors {@link simulatePoolOperation} so the
|
|
8
|
-
* {@link simulateOperation} wrapper can delegate uniformly once implemented.
|
|
9
|
-
*/
|
|
10
|
-
async function simulateFacadeOperation(_input, _options) {
|
|
11
|
-
throw new Error("not yet implemented");
|
|
12
|
-
}
|
|
13
|
-
//#endregion
|
|
14
|
-
export { simulateFacadeOperation };
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { sdkOk } from "../../model/result.js";
|
|
2
|
-
import "../../model/index.js";
|
|
3
|
-
import { isPoolOperation, isRWAOperation } from "../parse/types.js";
|
|
4
|
-
import "../parse/index.js";
|
|
5
|
-
import { simulatePoolOperation } from "./simulatePoolOperation.js";
|
|
6
|
-
import { simulateFacadeOperation } from "./simulateFacadeOperation.js";
|
|
7
|
-
import { simulateRWAOperation } from "./simulateRWAOperation.js";
|
|
8
|
-
//#region src/preview/simulate/simulateOperation.ts
|
|
9
|
-
/**
|
|
10
|
-
* Simulates a parsed pool or credit account operation
|
|
11
|
-
*/
|
|
12
|
-
async function simulateOperation(input, options) {
|
|
13
|
-
const { operation } = input;
|
|
14
|
-
if (isPoolOperation(operation)) return simulatePoolOperation({
|
|
15
|
-
...input,
|
|
16
|
-
operation
|
|
17
|
-
}, options);
|
|
18
|
-
if (isRWAOperation(operation)) return sdkOk(await simulateRWAOperation({
|
|
19
|
-
...input,
|
|
20
|
-
operation
|
|
21
|
-
}, options));
|
|
22
|
-
return sdkOk(await simulateFacadeOperation({
|
|
23
|
-
...input,
|
|
24
|
-
operation
|
|
25
|
-
}, options));
|
|
26
|
-
}
|
|
27
|
-
//#endregion
|
|
28
|
-
export { simulateOperation };
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
//#region src/preview/simulate/simulateRWAOperation.ts
|
|
2
|
-
/**
|
|
3
|
-
* Simulates an RWA-factory operation.
|
|
4
|
-
*
|
|
5
|
-
* Not yet implemented: like credit-facade simulation, it requires
|
|
6
|
-
* multicall-aware balance/transfer accounting that the pool simulation does
|
|
7
|
-
* not cover. The signature mirrors {@link simulatePoolOperation} so the
|
|
8
|
-
* {@link simulateOperation} wrapper can delegate uniformly once implemented.
|
|
9
|
-
*/
|
|
10
|
-
async function simulateRWAOperation(_input, _options) {
|
|
11
|
-
throw new Error("not yet implemented");
|
|
12
|
-
}
|
|
13
|
-
//#endregion
|
|
14
|
-
export { simulateRWAOperation };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,183 +0,0 @@
|
|
|
1
|
-
import { checkBorrowLimit, checkCollateralised, checkCreditManagerPaused, checkDebtInBand, checkForbiddenToken, checkFunding, checkMarketExpired, checkPoolPaused, checkPoolPayout, checkPoolSunset, checkPreviewError, checkQuotaCount, checkQuotaLimit } from "../../onchain/validation/checks.js";
|
|
2
|
-
import { toToken } from "../../onchain/validation/token.js";
|
|
3
|
-
import { borrowable } from "../../onchain/accounts/intents/guards.js";
|
|
4
|
-
import "../../onchain/index.js";
|
|
5
|
-
import { isAddressEqual } from "viem";
|
|
6
|
-
//#region src/preview/validate/checkOperation.ts
|
|
7
|
-
/**
|
|
8
|
-
* Whether a parsed operation may be signed at all — the protocol state that
|
|
9
|
-
* `checkPrerequisites` leaves out, since that one covers only what the sender
|
|
10
|
-
* can fix themselves.
|
|
11
|
-
*
|
|
12
|
-
* Synchronous: the preview carries the numbers and the market is attached.
|
|
13
|
-
* Reports the most fundamental issue it finds and stops there, which is the one
|
|
14
|
-
* a caller acts on.
|
|
15
|
-
*/
|
|
16
|
-
function checkOperation(input, options = {}) {
|
|
17
|
-
const { sdk, preview } = input;
|
|
18
|
-
const malformed = checkPreviewError("warning" in preview ? preview.warning : void 0);
|
|
19
|
-
if (malformed) return malformed;
|
|
20
|
-
switch (preview.operation) {
|
|
21
|
-
case "Deposit":
|
|
22
|
-
case "Mint": return poolIssues(sdk, preview, options, true);
|
|
23
|
-
case "Withdraw":
|
|
24
|
-
case "Redeem": return poolIssues(sdk, preview, options, false);
|
|
25
|
-
case "DelayedCreditAccountOperation": return checkOperation({
|
|
26
|
-
sdk,
|
|
27
|
-
preview: preview.instantPreview
|
|
28
|
-
}, options);
|
|
29
|
-
case "OpenCreditAccount":
|
|
30
|
-
case "RWAOpenCreditAccount":
|
|
31
|
-
case "AdjustCreditAccount": return creditIssues(sdk, preview, options);
|
|
32
|
-
case "CloseCreditAccount":
|
|
33
|
-
case "RepayCreditAccount": return marketIssues(sdk.marketRegister.findCreditManager(preview.creditManager));
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
function poolIssues(sdk, preview, options, isDeposit) {
|
|
37
|
-
const market = sdk.marketRegister.findByPool(preview.pool);
|
|
38
|
-
return checkPoolPaused({
|
|
39
|
-
isPaused: market.pool.pool.isPaused,
|
|
40
|
-
pool: preview.pool
|
|
41
|
-
}) || checkPoolSunset({
|
|
42
|
-
isSunset: market.sunset,
|
|
43
|
-
isDeposit,
|
|
44
|
-
pool: preview.pool
|
|
45
|
-
}) || (isDeposit ? null : checkPoolPayout({
|
|
46
|
-
requested: preview.tokenOut.value,
|
|
47
|
-
available: market.pool.pool.availableLiquidity,
|
|
48
|
-
underlying: preview.tokenOut.token
|
|
49
|
-
})) || fundingIssue(options, [preview.tokenIn]);
|
|
50
|
-
}
|
|
51
|
-
/** What the market itself refuses, whatever the operation does. */
|
|
52
|
-
function marketIssues(suite) {
|
|
53
|
-
const creditManager = suite.creditManager.address;
|
|
54
|
-
return checkCreditManagerPaused({
|
|
55
|
-
isPaused: suite.isPaused,
|
|
56
|
-
creditManager
|
|
57
|
-
}) || checkMarketExpired({
|
|
58
|
-
isExpired: suite.isExpired,
|
|
59
|
-
creditManager,
|
|
60
|
-
expirationDate: suite.creditFacade.expirationDate
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
function creditIssues(sdk, preview, options) {
|
|
64
|
-
const suite = sdk.marketRegister.findCreditManager(preview.creditManager);
|
|
65
|
-
const market = suite.market;
|
|
66
|
-
const underlying = toToken(sdk, market.pool.underlying);
|
|
67
|
-
const isOpening = preview.operation === "OpenCreditAccount" || preview.operation === "RWAOpenCreditAccount";
|
|
68
|
-
return marketIssues(suite) || checkDebtInBand({
|
|
69
|
-
debt: preview.totalDebt.value,
|
|
70
|
-
minDebt: suite.creditFacade.minDebt,
|
|
71
|
-
maxDebt: suite.creditFacade.maxDebt,
|
|
72
|
-
underlying,
|
|
73
|
-
allowZero: !isOpening
|
|
74
|
-
}) || borrowIssue(suite, preview, underlying) || forbiddenIssue(suite, preview) || quotaCountIssue(suite, preview) || quotaIssue(market, preview, underlying) || collateralIssue({
|
|
75
|
-
totalDebt: preview.totalDebt,
|
|
76
|
-
healthFactor: preview.estHealthFactor,
|
|
77
|
-
safeHealthFactor: preview.estSafeHealthFactor
|
|
78
|
-
}, options) || fundingIssue(options, preview.collateralAdded);
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* A bar that reads nothing but the projected account, so a parsed transaction
|
|
82
|
-
* and a simulated one are held to it by the same code.
|
|
83
|
-
*
|
|
84
|
-
* These stay separate functions rather than one block because the order the
|
|
85
|
-
* checks run in is the answer: `checkOperation` interleaves the checks that
|
|
86
|
-
* need an operation's *delta* between them, and the caller acts on the first
|
|
87
|
-
* issue reported.
|
|
88
|
-
*/
|
|
89
|
-
function quotaCountIssue(suite, account) {
|
|
90
|
-
return checkQuotaCount({
|
|
91
|
-
count: account.quotas.filter((q) => q.value > 0n).length,
|
|
92
|
-
max: suite.creditManager.maxEnabledTokens
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* What the transaction draws, against what the market can lend right now.
|
|
97
|
-
*
|
|
98
|
-
* Only a draw is weighed: repaying, or leaving the debt alone, can never exceed
|
|
99
|
-
* a ceiling. Opening borrows the whole debt; adjusting borrows
|
|
100
|
-
* `totalDebtChange`.
|
|
101
|
-
*
|
|
102
|
-
* The engine holds every simulation to this already (`assertCanBorrow`), so
|
|
103
|
-
* this is here for the transactions it never saw — a pasted calldata reaches
|
|
104
|
-
* the confirm screen with nothing else standing between it and a revert.
|
|
105
|
-
*/
|
|
106
|
-
function borrowIssue(suite, preview, underlying) {
|
|
107
|
-
const drawn = preview.operation === "AdjustCreditAccount" ? preview.totalDebtChange.value : preview.totalDebt.value;
|
|
108
|
-
if (drawn <= 0n) return null;
|
|
109
|
-
const { limit, binding } = borrowable(suite);
|
|
110
|
-
return checkBorrowLimit({
|
|
111
|
-
requested: drawn,
|
|
112
|
-
available: limit,
|
|
113
|
-
binding,
|
|
114
|
-
underlying
|
|
115
|
-
});
|
|
116
|
-
}
|
|
117
|
-
/**
|
|
118
|
-
* The account against whichever bars the caller holds it to.
|
|
119
|
-
*
|
|
120
|
-
* A loan-free account is nothing to weigh: the health factor reports its
|
|
121
|
-
* zero-debt sentinel and no bar applies.
|
|
122
|
-
*
|
|
123
|
-
* {@inheritDoc quotaCountIssue}
|
|
124
|
-
*/
|
|
125
|
-
function collateralIssue(account, options) {
|
|
126
|
-
const { minHealthFactor, minSafeHealthFactor, currentHealthFactor } = options;
|
|
127
|
-
if (account.totalDebt.value === 0n) return null;
|
|
128
|
-
return (minHealthFactor === void 0 ? null : checkCollateralised({
|
|
129
|
-
healthFactor: account.healthFactor,
|
|
130
|
-
required: minHealthFactor,
|
|
131
|
-
safePrices: false,
|
|
132
|
-
improvesFrom: currentHealthFactor
|
|
133
|
-
})) || (minSafeHealthFactor === void 0 ? null : checkCollateralised({
|
|
134
|
-
healthFactor: account.safeHealthFactor,
|
|
135
|
-
required: minSafeHealthFactor,
|
|
136
|
-
safePrices: true
|
|
137
|
-
}));
|
|
138
|
-
}
|
|
139
|
-
/** The wallet's side of the operation, against the balances it was given. */
|
|
140
|
-
function fundingIssue(options, puts) {
|
|
141
|
-
const { balances } = options;
|
|
142
|
-
if (!balances) return null;
|
|
143
|
-
for (const { token, value } of puts) {
|
|
144
|
-
const issue = checkFunding({
|
|
145
|
-
token,
|
|
146
|
-
required: value,
|
|
147
|
-
held: balances.get(token.address) ?? 0n
|
|
148
|
-
});
|
|
149
|
-
if (issue) return issue;
|
|
150
|
-
}
|
|
151
|
-
return null;
|
|
152
|
-
}
|
|
153
|
-
function forbiddenIssue(suite, preview) {
|
|
154
|
-
const obtained = preview.operation === "AdjustCreditAccount" ? preview.assetsChange : preview.estAssets;
|
|
155
|
-
const forbidden = suite.forbiddenTokens;
|
|
156
|
-
for (const asset of obtained) {
|
|
157
|
-
if (asset.value <= 0n) continue;
|
|
158
|
-
const issue = checkForbiddenToken({
|
|
159
|
-
token: asset.token,
|
|
160
|
-
isForbidden: forbidden.some((f) => isAddressEqual(f, asset.token.address))
|
|
161
|
-
});
|
|
162
|
-
if (issue) return issue;
|
|
163
|
-
}
|
|
164
|
-
return null;
|
|
165
|
-
}
|
|
166
|
-
function quotaIssue(market, preview, underlying) {
|
|
167
|
-
const increases = preview.operation === "AdjustCreditAccount" ? preview.quotasChange : preview.quotas;
|
|
168
|
-
const { pqk } = market.pool;
|
|
169
|
-
for (const q of increases) {
|
|
170
|
-
if (q.value <= 0n) continue;
|
|
171
|
-
const quota = pqk.hasActiveQuota(q.token.address) ? pqk.quotas.get(q.token.address) : void 0;
|
|
172
|
-
const issue = checkQuotaLimit({
|
|
173
|
-
token: q.token,
|
|
174
|
-
requested: quota ? q.value : void 0,
|
|
175
|
-
available: (quota?.limit ?? 0n) - (quota?.totalQuoted ?? 0n),
|
|
176
|
-
underlying
|
|
177
|
-
});
|
|
178
|
-
if (issue) return issue;
|
|
179
|
-
}
|
|
180
|
-
return null;
|
|
181
|
-
}
|
|
182
|
-
//#endregion
|
|
183
|
-
export { checkOperation, collateralIssue, marketIssues, quotaCountIssue };
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { checkDebtInBand } from "../../onchain/validation/checks.js";
|
|
2
|
-
import { toToken } from "../../onchain/validation/token.js";
|
|
3
|
-
import "../../onchain/index.js";
|
|
4
|
-
import { collateralIssue, marketIssues, quotaCountIssue } from "./checkOperation.js";
|
|
5
|
-
//#region src/preview/validate/checkSimulation.ts
|
|
6
|
-
/**
|
|
7
|
-
* Whether a simulated operation clears the caller's own bars.
|
|
8
|
-
*
|
|
9
|
-
* The engine holds an account to the facade's `1.0`, because its guards answer
|
|
10
|
-
* "would this revert". A form is wiser to ask for more, and the engine's own
|
|
11
|
-
* note says so — a caller wanting the stricter bar applies it itself. This is
|
|
12
|
-
* that second opinion, over the numbers the engine already reported.
|
|
13
|
-
*
|
|
14
|
-
* Three of the checks below the engine does not make at all: both health-factor
|
|
15
|
-
* bars are its own `1.0`, and the quota count it never weighs. The other two run
|
|
16
|
-
* against the same numbers the engine used, and are here so that a change in the
|
|
17
|
-
* engine cannot pass silently.
|
|
18
|
-
*
|
|
19
|
-
* What is deliberately absent: the forbidden-token, quota-limit and funding
|
|
20
|
-
* checks all need the *delta* an operation applies, and `OperationState` reports
|
|
21
|
-
* only the state after it. Weighing them against absolutes would refuse a
|
|
22
|
-
* forbidden token the account merely holds, or a quota the operation never
|
|
23
|
-
* touched. The engine performed all three during the walk, so a simulation that
|
|
24
|
-
* came back `ok` has already passed them.
|
|
25
|
-
*/
|
|
26
|
-
function checkSimulation(input, options = {}) {
|
|
27
|
-
const { sdk, state } = input;
|
|
28
|
-
const suite = sdk.marketRegister.findCreditManager(state.creditManager);
|
|
29
|
-
return marketIssues(suite) || checkDebtInBand({
|
|
30
|
-
debt: state.totalDebt.value,
|
|
31
|
-
minDebt: suite.creditFacade.minDebt,
|
|
32
|
-
maxDebt: suite.creditFacade.maxDebt,
|
|
33
|
-
underlying: toToken(sdk, suite.market.pool.underlying),
|
|
34
|
-
allowZero: true
|
|
35
|
-
}) || quotaCountIssue(suite, state) || collateralIssue(state, options);
|
|
36
|
-
}
|
|
37
|
-
//#endregion
|
|
38
|
-
export { checkSimulation };
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
//#region src/sdk/prepare/errors.ts
|
|
2
|
-
/**
|
|
3
|
-
* One sentence per refusal, naming what was ruled out rather than restating the
|
|
4
|
-
* numbers the error already carries.
|
|
5
|
-
*
|
|
6
|
-
* English and loggable, not a string to put on a screen: a form renders the
|
|
7
|
-
* code and the amounts in its own words, see {@link IGearboxError.message}.
|
|
8
|
-
**/
|
|
9
|
-
const MESSAGES = {
|
|
10
|
-
debtOutOfRange: "The debt this request implies is outside the market's band.",
|
|
11
|
-
leverageOutOfRange: "The leverage asked for cannot be expressed as a plan.",
|
|
12
|
-
insufficientSourceBalance: "Neither the account nor the wallet holds enough to fund this request.",
|
|
13
|
-
unsupportedCollateralToken: "This flow does not accept that token.",
|
|
14
|
-
unsupportedTokenPair: "No route exists between these two tokens.",
|
|
15
|
-
noDelayedRoute: "This request cannot be served as a delayed redemption.",
|
|
16
|
-
multipleDelayedWithdrawals: "The source asset has several redemption venues and none was named.",
|
|
17
|
-
withdrawalInProgress: "A redemption of this asset is already in flight on the account.",
|
|
18
|
-
noRecordedIntent: "The claim names no operation to resume.",
|
|
19
|
-
marketPaused: "The market is paused.",
|
|
20
|
-
marketExpired: "The market is past its expiration date.",
|
|
21
|
-
insufficientPoolLiquidity: "The pool cannot lend what this plan draws.",
|
|
22
|
-
quotaLimitReached: "The market takes no more quota for a token this plan holds.",
|
|
23
|
-
forbiddenToken: "This plan would increase the balance of a forbidden token.",
|
|
24
|
-
insufficientCollateral: "The account would end this transaction under-collateralised.",
|
|
25
|
-
poolSunset: "The pool is winding down and takes no more deposits.",
|
|
26
|
-
quotaCountExceeded: "The account would hold more quoted tokens than the facade enables at once.",
|
|
27
|
-
malformedTransaction: "The transaction could not be replayed."
|
|
28
|
-
};
|
|
29
|
-
/**
|
|
30
|
-
* The engine's refusal, as the error the namespace answers with.
|
|
31
|
-
*
|
|
32
|
-
* One place does the lifting, so the two shapes cannot drift: `reason` becomes
|
|
33
|
-
* `code`, the detail is spread onto the error, and the sentence comes from
|
|
34
|
-
* {@link MESSAGES}. A malformed transaction is spelled out rather than spread,
|
|
35
|
-
* because its detail names a `code` and a `message` of its own and they are not
|
|
36
|
-
* the envelope's.
|
|
37
|
-
*
|
|
38
|
-
* Generic over the issue it is handed, so a call site that already knows the
|
|
39
|
-
* reason gets that reason's error back rather than a union to narrow again.
|
|
40
|
-
**/
|
|
41
|
-
function toRefusalError(issue) {
|
|
42
|
-
if (issue.reason === "malformedTransaction") return {
|
|
43
|
-
code: "malformedTransaction",
|
|
44
|
-
message: MESSAGES.malformedTransaction,
|
|
45
|
-
previewCode: issue.detail.code,
|
|
46
|
-
detail: issue.detail.message
|
|
47
|
-
};
|
|
48
|
-
return {
|
|
49
|
-
code: issue.reason,
|
|
50
|
-
message: MESSAGES[issue.reason],
|
|
51
|
-
...issue.detail
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* {@inheritDoc NoStrategyTargetCollateralError}
|
|
56
|
-
**/
|
|
57
|
-
function noStrategyTargetCollateral(creditManager) {
|
|
58
|
-
return {
|
|
59
|
-
code: "noStrategyTargetCollateral",
|
|
60
|
-
message: `Credit manager ${creditManager} has no strategy target collateral, and none was named.`,
|
|
61
|
-
creditManager
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* {@inheritDoc CreditAccountNotEmptyError}
|
|
66
|
-
**/
|
|
67
|
-
function creditAccountNotEmpty(creditAccount) {
|
|
68
|
-
return {
|
|
69
|
-
code: "creditAccountNotEmpty",
|
|
70
|
-
message: `Credit account ${creditAccount} carries debt or quotas.`,
|
|
71
|
-
creditAccount
|
|
72
|
-
};
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* {@inheritDoc CreditAccountNotFoundError}
|
|
76
|
-
**/
|
|
77
|
-
function creditAccountNotFound(creditAccount) {
|
|
78
|
-
return {
|
|
79
|
-
code: "creditAccountNotFound",
|
|
80
|
-
message: `Credit account not found: ${creditAccount}.`,
|
|
81
|
-
creditAccount
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* {@inheritDoc EmptyOpenTakesNothingError}
|
|
86
|
-
**/
|
|
87
|
-
function emptyOpenTakesNothing() {
|
|
88
|
-
return {
|
|
89
|
-
code: "emptyOpenTakesNothing",
|
|
90
|
-
message: "An empty opening takes no collateral, no account to reuse and no leverage."
|
|
91
|
-
};
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* {@inheritDoc UnexpectedFailureError}
|
|
95
|
-
*
|
|
96
|
-
* Takes what was thrown, whatever that is: a `throw` is not obliged to raise an
|
|
97
|
-
* `Error`, and `cause` promises one.
|
|
98
|
-
**/
|
|
99
|
-
function unexpectedFailure(thrown) {
|
|
100
|
-
const cause = thrown instanceof Error ? thrown : new Error(String(thrown));
|
|
101
|
-
return {
|
|
102
|
-
code: "unexpectedFailure",
|
|
103
|
-
message: `The SDK could not prepare this operation: ${cause.message}`,
|
|
104
|
-
cause
|
|
105
|
-
};
|
|
106
|
-
}
|
|
107
|
-
//#endregion
|
|
108
|
-
export { creditAccountNotEmpty, creditAccountNotFound, emptyOpenTakesNothing, noStrategyTargetCollateral, toRefusalError, unexpectedFailure };
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
//#region src/model/errors.d.ts
|
|
2
|
-
/**
|
|
3
|
-
* The failure vocabulary the SDK answers in.
|
|
4
|
-
*
|
|
5
|
-
* A request that the protocol, the market or the request's own numbers rule out
|
|
6
|
-
* is not an exception: it is an answer, and a screen shows it the way it shows
|
|
7
|
-
* any other. So a method that can be refused returns an {@link SDKReturn}
|
|
8
|
-
* envelope rather than throwing, and what it puts in the failure half is one of
|
|
9
|
-
* these — never a bare string, never a boolean the caller has to interpret.
|
|
10
|
-
*
|
|
11
|
-
* A thrown exception still means what it always did: the SDK could not do its
|
|
12
|
-
* job (a read failed, a contract reverted unexpectedly, an argument is wrong).
|
|
13
|
-
* Those are bugs and outages, not refusals of the request.
|
|
14
|
-
**/
|
|
15
|
-
/**
|
|
16
|
-
* What every error the SDK reports has.
|
|
17
|
-
*
|
|
18
|
-
* `code` is the discriminant: switch on it and the error narrows to the shape
|
|
19
|
-
* carrying that failure's own numbers, so a caller reads `available` and
|
|
20
|
-
* `required` off the error rather than re-deriving them from the request.
|
|
21
|
-
*
|
|
22
|
-
* The codes themselves are per namespace — there is no SDK-wide enumeration of
|
|
23
|
-
* them, because the set a method can answer with is part of that method's
|
|
24
|
-
* contract, see the `E` of {@link SDKReturn}.
|
|
25
|
-
**/
|
|
26
|
-
interface IGearboxError {
|
|
27
|
-
/**
|
|
28
|
-
* Machine-readable identity of the failure, and the discriminant of the
|
|
29
|
-
* union a method returns.
|
|
30
|
-
**/
|
|
31
|
-
code: string;
|
|
32
|
-
/**
|
|
33
|
-
* One sentence naming what was refused, in English, safe to log. Not a
|
|
34
|
-
* message to show a user as-is: a screen renders the code and the numbers
|
|
35
|
-
* beside it in its own words and its own language.
|
|
36
|
-
**/
|
|
37
|
-
message: string;
|
|
38
|
-
/**
|
|
39
|
-
* The failure this one was raised for, where one error stands in front of
|
|
40
|
-
* another. Absent for a refusal that is its own reason, which is most of
|
|
41
|
-
* them.
|
|
42
|
-
**/
|
|
43
|
-
cause?: IGearboxError | Error;
|
|
44
|
-
}
|
|
45
|
-
//#endregion
|
|
46
|
-
export { IGearboxError };
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { IGearboxError } from "../../../model/errors.js";
|
|
2
|
-
import "../../../model/index.js";
|
|
3
|
-
import { Hex } from "viem";
|
|
4
|
-
//#region src/onchain/accounts/withdrawal-compressor/errors.d.ts
|
|
5
|
-
/**
|
|
6
|
-
* Refusal answered when a delayed-withdrawal request or redemption log carries
|
|
7
|
-
* non-empty `extraData` that cannot be decoded as a `DelayedIntent`.
|
|
8
|
-
* Requests produced by our stack always encode a valid intent, so garbage
|
|
9
|
-
* here means a malformed/foreign transaction that must not be previewed as
|
|
10
|
-
* if it were fine. A plain returned object — not a thrown `Error`.
|
|
11
|
-
*/
|
|
12
|
-
interface InvalidDelayedIntentError extends IGearboxError {
|
|
13
|
-
code: "invalidDelayedIntent";
|
|
14
|
-
/** Raw `extraData` that failed to decode. */
|
|
15
|
-
extraData: Hex;
|
|
16
|
-
/** The decoding failure this refusal stands in front of. */
|
|
17
|
-
cause?: Error;
|
|
18
|
-
}
|
|
19
|
-
//#endregion
|
|
20
|
-
export { InvalidDelayedIntentError };
|