@gearbox-protocol/sdk 16.1.2 → 16.3.0-next.1
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/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 +40 -2
- package/dist/cjs/model/positions.js +1 -1
- package/dist/cjs/model/result.js +0 -8
- package/dist/cjs/model/rwa.js +40 -0
- package/dist/cjs/onchain/accounts/CreditAccountsServiceV310.js +2 -2
- 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 +44 -8
- 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/withdrawal-compressor/index.js +0 -1
- package/dist/cjs/onchain/index.js +122 -36
- package/dist/cjs/onchain/market/MarketSuite.js +7 -1
- package/dist/cjs/onchain/market/adapters/index.js +1 -0
- package/dist/cjs/onchain/market/credit/CreditSuite.js +47 -15
- package/dist/cjs/onchain/market/index.js +0 -6
- 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/index.js +0 -4
- package/dist/cjs/onchain/market/rwa/securitize/SecuritizeRWAFactory.js +7 -7
- package/dist/cjs/onchain/market/rwa/securitize/constants.js +0 -2
- package/dist/cjs/onchain/market/rwa/securitize/index.js +1 -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/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/execute/ExecuteApi.js +1 -0
- package/dist/cjs/sdk/index.js +6 -9
- package/dist/cjs/sdk/liquidations/LiquidationsNamespace.js +9 -0
- package/dist/cjs/sdk/prepare/PrepareApi.js +55 -48
- package/dist/cjs/sdk/prepare/index.js +7 -9
- package/dist/cjs/sdk/prepare/types.js +0 -4
- package/dist/cjs/sdk/preview/PreviewNamespace.js +24 -13
- 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 +1 -1
- 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 +9 -3
- package/dist/esm/model/positions.js +1 -1
- package/dist/esm/model/result.js +1 -8
- package/dist/esm/model/rwa.js +37 -0
- 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 +46 -10
- 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/withdrawal-compressor/index.js +0 -1
- package/dist/esm/onchain/index.js +61 -10
- package/dist/esm/onchain/market/MarketSuite.js +7 -1
- package/dist/esm/onchain/market/adapters/index.js +1 -0
- package/dist/esm/onchain/market/credit/CreditSuite.js +47 -15
- package/dist/esm/onchain/market/index.js +3 -5
- 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/rwa/RWARegistry.js +2 -1
- package/dist/esm/onchain/market/rwa/index.js +3 -4
- package/dist/esm/onchain/market/rwa/securitize/SecuritizeRWAFactory.js +2 -2
- package/dist/esm/onchain/market/rwa/securitize/constants.js +1 -2
- package/dist/esm/onchain/market/rwa/securitize/index.js +3 -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/index.js +0 -1
- 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/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/execute/ExecuteApi.js +1 -0
- package/dist/esm/sdk/index.js +2 -3
- package/dist/esm/sdk/liquidations/LiquidationsNamespace.js +9 -0
- package/dist/esm/sdk/prepare/PrepareApi.js +43 -36
- 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/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 +11 -4
- package/dist/types/model/opportunities.d.ts +3 -2
- 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 +143 -0
- 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/open-strategy.d.ts +34 -3
- 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/open-strategy.fixtures.d.ts +2 -2
- 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 +4 -2
- 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 +68 -13
- 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 +20 -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 +6 -7
- 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/index.d.ts +4 -4
- package/dist/types/onchain/market/rwa/securitize/SecuritizeRWAFactory.d.ts +3 -2
- package/dist/types/onchain/market/rwa/securitize/constants.d.ts +1 -2
- package/dist/types/onchain/market/rwa/securitize/index.d.ts +3 -3
- package/dist/types/onchain/market/rwa/securitize/types.d.ts +4 -110
- package/dist/types/onchain/market/rwa/types.d.ts +6 -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/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/prepare/PrepareApi.d.ts +6 -5
- package/dist/types/sdk/prepare/index.d.ts +5 -5
- package/dist/types/sdk/prepare/types.d.ts +65 -23
- 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 -93
- 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 -89
- 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 -319
- /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,9 +1,10 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_onchain_utils_AssetsMap = require("../../
|
|
3
|
-
const require_onchain_constants_addresses = require("../../
|
|
4
|
-
require("
|
|
5
|
-
const
|
|
6
|
-
|
|
2
|
+
const require_onchain_utils_AssetsMap = require("../../utils/AssetsMap.js");
|
|
3
|
+
const require_onchain_constants_addresses = require("../../constants/addresses.js");
|
|
4
|
+
const require_model_errors_preview_errors = require("../../../model/errors/preview-errors.js");
|
|
5
|
+
const require_model_result = require("../../../model/result.js");
|
|
6
|
+
require("../../../model/index.js");
|
|
7
|
+
//#region src/onchain/preview/preview/unwrapNativeCollateral.ts
|
|
7
8
|
/**
|
|
8
9
|
* Represents the transaction's attached native value as a `NATIVE_ADDRESS`
|
|
9
10
|
* entry in the collateral list.
|
|
@@ -15,26 +16,22 @@ const require_preview_preview_errors = require("./errors.js");
|
|
|
15
16
|
* reaches zero). Other entries are preserved.
|
|
16
17
|
*
|
|
17
18
|
* When `nativeAmount` is positive but the WETH collateral is missing or
|
|
18
|
-
* smaller than it, the transaction is malformed
|
|
19
|
-
* as-is (no unwrapping) together with an `invalidTransactionValue` warning.
|
|
19
|
+
* smaller than it, the transaction is malformed.
|
|
20
20
|
*
|
|
21
21
|
* @param collateral - Collateral assets as declared by the multicall.
|
|
22
22
|
* @param nativeAmount - Transaction `msg.value`.
|
|
23
23
|
* @param wethToken - Wrapped native token address.
|
|
24
24
|
* @returns Collateral with the native amount unwrapped from the WETH entry,
|
|
25
|
-
*
|
|
25
|
+
* or `malformedTransaction` when `msg.value` does not fit the declared WETH.
|
|
26
26
|
*/
|
|
27
27
|
function unwrapNativeCollateral(collateral, nativeAmount, wethToken) {
|
|
28
|
-
if (nativeAmount === 0n) return
|
|
28
|
+
if (nativeAmount === 0n) return require_model_result.sdkOk(collateral);
|
|
29
29
|
const balances = new require_onchain_utils_AssetsMap.AssetsMap(collateral);
|
|
30
30
|
const wethBalance = balances.get(wethToken) ?? 0n;
|
|
31
|
-
if (wethBalance < nativeAmount) return {
|
|
32
|
-
assets: collateral,
|
|
33
|
-
warning: require_preview_preview_errors.invalidTransactionValueError(nativeAmount, wethBalance)
|
|
34
|
-
};
|
|
31
|
+
if (wethBalance < nativeAmount) return require_model_result.sdkErr(require_model_errors_preview_errors.malformedTransaction(`transaction value ${nativeAmount} exceeds WETH collateral ${wethBalance}`));
|
|
35
32
|
balances.upsert(wethToken, wethBalance === nativeAmount ? void 0 : wethBalance - nativeAmount);
|
|
36
33
|
balances.inc(require_onchain_constants_addresses.NATIVE_ADDRESS, nativeAmount);
|
|
37
|
-
return
|
|
34
|
+
return require_model_result.sdkOk(balances.toAssets());
|
|
38
35
|
}
|
|
39
36
|
//#endregion
|
|
40
37
|
exports.unwrapNativeCollateral = unwrapNativeCollateral;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_onchain_validation_checks_checkQuotaCount = require("../checks/checkQuotaCount.js");
|
|
3
|
+
require("../checks/index.js");
|
|
4
|
+
//#region src/onchain/validation/bundles/checkAccountQuotas.ts
|
|
5
|
+
/**
|
|
6
|
+
* How many quoted tokens the account would end up holding, against the number
|
|
7
|
+
* the facade enables at once.
|
|
8
|
+
*
|
|
9
|
+
* Reads nothing but the projected account, so a parsed transaction and a
|
|
10
|
+
* simulated one are held to it by the same code — including the reading that a
|
|
11
|
+
* quota the operation zeroed out is no longer held.
|
|
12
|
+
*/
|
|
13
|
+
function checkAccountQuotas(suite, account) {
|
|
14
|
+
return require_onchain_validation_checks_checkQuotaCount.checkQuotaCount({
|
|
15
|
+
count: account.quotas.filter((q) => q.value > 0n).length,
|
|
16
|
+
max: suite.creditManager.maxEnabledTokens
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
//#endregion
|
|
20
|
+
exports.checkAccountQuotas = checkAccountQuotas;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_onchain_utils_AssetsMap = require("../../utils/AssetsMap.js");
|
|
3
|
+
const require_onchain_constants_address_provider = require("../../constants/address-provider.js");
|
|
4
|
+
const require_onchain_constants_addresses = require("../../constants/addresses.js");
|
|
5
|
+
require("../../constants/index.js");
|
|
6
|
+
const require_model_errors_prepare_errors = require("../../../model/errors/prepare-errors.js");
|
|
7
|
+
require("../../../model/index.js");
|
|
8
|
+
const require_onchain_validation_bundles_checkWalletAllowance = require("./checkWalletAllowance.js");
|
|
9
|
+
const require_onchain_validation_bundles_checkWalletBalance = require("./checkWalletBalance.js");
|
|
10
|
+
//#region src/onchain/validation/bundles/checkCollateralFunding.ts
|
|
11
|
+
/**
|
|
12
|
+
* What the wallet must hold and have approved for the collateral the
|
|
13
|
+
* operation adds. Native value is already split out of `collateralAdded` as a
|
|
14
|
+
* `NATIVE_ADDRESS` entry; the facade wraps it into WETH, so the WETH allowance
|
|
15
|
+
* covers both halves.
|
|
16
|
+
*/
|
|
17
|
+
async function checkCollateralFunding(input) {
|
|
18
|
+
const { sdk, preview, sender, blockNumber } = input;
|
|
19
|
+
const held = new require_onchain_utils_AssetsMap.AssetsMap(preview.collateralAdded.map((a) => ({
|
|
20
|
+
token: a.token.address,
|
|
21
|
+
balance: a.value
|
|
22
|
+
})));
|
|
23
|
+
if (held.size === 0) return [];
|
|
24
|
+
let spender;
|
|
25
|
+
try {
|
|
26
|
+
if (preview.operation === "OpenCreditAccount" || preview.operation === "RWAOpenCreditAccount") spender = await sdk.accounts.getApprovalAddress({
|
|
27
|
+
creditManager: preview.creditManager,
|
|
28
|
+
borrower: sender
|
|
29
|
+
});
|
|
30
|
+
else spender = await sdk.accounts.getApprovalAddress({
|
|
31
|
+
creditManager: preview.creditManager,
|
|
32
|
+
creditAccount: preview.creditAccount
|
|
33
|
+
});
|
|
34
|
+
} catch (cause) {
|
|
35
|
+
return [require_model_errors_prepare_errors.unexpectedFailure(cause, "resolve the approval address")];
|
|
36
|
+
}
|
|
37
|
+
const approved = held.clone();
|
|
38
|
+
const native = approved.get("0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE") ?? 0n;
|
|
39
|
+
if (native > 0n) {
|
|
40
|
+
approved.delete(require_onchain_constants_addresses.NATIVE_ADDRESS);
|
|
41
|
+
approved.inc(sdk.addressProvider.getAddress(require_onchain_constants_address_provider.AP_WETH_TOKEN, 0), native);
|
|
42
|
+
}
|
|
43
|
+
return (await Promise.all([...held.entries().map(([token, required]) => require_onchain_validation_bundles_checkWalletBalance.checkWalletBalance({
|
|
44
|
+
sdk,
|
|
45
|
+
token,
|
|
46
|
+
holder: sender,
|
|
47
|
+
required,
|
|
48
|
+
blockNumber
|
|
49
|
+
})), ...approved.entries().map(([token, required]) => require_onchain_validation_bundles_checkWalletAllowance.checkWalletAllowance({
|
|
50
|
+
sdk,
|
|
51
|
+
token,
|
|
52
|
+
owner: sender,
|
|
53
|
+
spender,
|
|
54
|
+
required,
|
|
55
|
+
blockNumber
|
|
56
|
+
}))])).flat();
|
|
57
|
+
}
|
|
58
|
+
//#endregion
|
|
59
|
+
exports.checkCollateralFunding = checkCollateralFunding;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_onchain_validation_helpers_token = require("../helpers/token.js");
|
|
3
|
+
require("../helpers/index.js");
|
|
4
|
+
const require_onchain_validation_checks_checkDebtLimits = require("../checks/checkDebtLimits.js");
|
|
5
|
+
require("../checks/index.js");
|
|
6
|
+
const require_onchain_validation_bundles_checkAccountQuotas = require("./checkAccountQuotas.js");
|
|
7
|
+
const require_onchain_validation_bundles_checkCollateralFunding = require("./checkCollateralFunding.js");
|
|
8
|
+
const require_onchain_validation_bundles_checkDraw = require("./checkDraw.js");
|
|
9
|
+
const require_onchain_validation_bundles_checkHealthFactors = require("./checkHealthFactors.js");
|
|
10
|
+
const require_onchain_validation_bundles_checkMarket = require("./checkMarket.js");
|
|
11
|
+
const require_onchain_validation_bundles_checkObtained = require("./checkObtained.js");
|
|
12
|
+
const require_onchain_validation_bundles_checkQuotasAsked = require("./checkQuotasAsked.js");
|
|
13
|
+
const require_onchain_validation_bundles_checkRWAOpening = require("./checkRWAOpening.js");
|
|
14
|
+
//#region src/onchain/validation/bundles/checkCreditOperation.ts
|
|
15
|
+
/**
|
|
16
|
+
* What the protocol stops a credit operation for, then what the wallet still
|
|
17
|
+
* has to hold, approve or sign.
|
|
18
|
+
*
|
|
19
|
+
* The array is in check order, most fundamental first: the market's own state,
|
|
20
|
+
* then what the facade would revert on, then what the operation asks the
|
|
21
|
+
* market for, then the account it leaves behind, and last the wallet's side.
|
|
22
|
+
*/
|
|
23
|
+
async function checkCreditOperation(args) {
|
|
24
|
+
const { sdk, preview, sender, blockNumber, ...thresholds } = args;
|
|
25
|
+
const suite = sdk.marketRegister.findCreditManager(preview.creditManager);
|
|
26
|
+
const market = suite.market;
|
|
27
|
+
const underlying = require_onchain_validation_helpers_token.toToken(sdk, market.pool.underlying);
|
|
28
|
+
const isOpening = preview.operation === "OpenCreditAccount" || preview.operation === "RWAOpenCreditAccount";
|
|
29
|
+
const protocol = [
|
|
30
|
+
...require_onchain_validation_bundles_checkMarket.checkMarket(suite),
|
|
31
|
+
...require_onchain_validation_checks_checkDebtLimits.checkDebtLimits({
|
|
32
|
+
debt: preview.totalDebt.value,
|
|
33
|
+
minDebt: suite.creditFacade.minDebt,
|
|
34
|
+
maxDebt: suite.creditFacade.maxDebt,
|
|
35
|
+
underlying,
|
|
36
|
+
allowZero: !isOpening
|
|
37
|
+
}),
|
|
38
|
+
...require_onchain_validation_bundles_checkDraw.checkDraw(suite, preview, underlying),
|
|
39
|
+
...require_onchain_validation_bundles_checkObtained.checkObtained(suite, preview),
|
|
40
|
+
...require_onchain_validation_bundles_checkAccountQuotas.checkAccountQuotas(suite, preview),
|
|
41
|
+
...require_onchain_validation_bundles_checkQuotasAsked.checkQuotasAsked(market, preview, underlying),
|
|
42
|
+
...require_onchain_validation_bundles_checkHealthFactors.checkHealthFactors({
|
|
43
|
+
totalDebt: preview.totalDebt,
|
|
44
|
+
healthFactor: preview.estHealthFactor,
|
|
45
|
+
safeHealthFactor: preview.estSafeHealthFactor
|
|
46
|
+
}, thresholds)
|
|
47
|
+
];
|
|
48
|
+
const [funding, rwa] = await Promise.all([require_onchain_validation_bundles_checkCollateralFunding.checkCollateralFunding({
|
|
49
|
+
sdk,
|
|
50
|
+
preview,
|
|
51
|
+
sender,
|
|
52
|
+
blockNumber
|
|
53
|
+
}), preview.operation === "RWAOpenCreditAccount" ? require_onchain_validation_bundles_checkRWAOpening.checkRWAOpening({
|
|
54
|
+
sdk,
|
|
55
|
+
preview,
|
|
56
|
+
sender
|
|
57
|
+
}) : []]);
|
|
58
|
+
return [
|
|
59
|
+
...protocol,
|
|
60
|
+
...funding,
|
|
61
|
+
...rwa
|
|
62
|
+
];
|
|
63
|
+
}
|
|
64
|
+
//#endregion
|
|
65
|
+
exports.checkCreditOperation = checkCreditOperation;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_onchain_validation_checks_checkBorrowLimit = require("../checks/checkBorrowLimit.js");
|
|
3
|
+
require("../checks/index.js");
|
|
4
|
+
//#region src/onchain/validation/bundles/checkDraw.ts
|
|
5
|
+
/**
|
|
6
|
+
* What the transaction draws, against what the market can lend right now.
|
|
7
|
+
*
|
|
8
|
+
* Only a draw is weighed: repaying, or leaving the debt alone, can never exceed
|
|
9
|
+
* a ceiling. Opening borrows the whole debt; adjusting borrows
|
|
10
|
+
* `totalDebtChange`.
|
|
11
|
+
*
|
|
12
|
+
* The engine holds every simulation to this already (`assertCanBorrow`), so
|
|
13
|
+
* this is here for the transactions it never saw — a pasted calldata reaches
|
|
14
|
+
* the confirm screen with nothing else standing between it and a revert.
|
|
15
|
+
*/
|
|
16
|
+
function checkDraw(suite, preview, underlying) {
|
|
17
|
+
const drawn = preview.operation === "AdjustCreditAccount" ? preview.totalDebtChange.value : preview.totalDebt.value;
|
|
18
|
+
if (drawn <= 0n) return [];
|
|
19
|
+
const { value, limit } = suite.maxBorrowAmount();
|
|
20
|
+
return require_onchain_validation_checks_checkBorrowLimit.checkBorrowLimit({
|
|
21
|
+
requested: drawn,
|
|
22
|
+
available: value,
|
|
23
|
+
limit,
|
|
24
|
+
underlying
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
//#endregion
|
|
28
|
+
exports.checkDraw = checkDraw;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_onchain_validation_checks_checkCollateralised = require("../checks/checkCollateralised.js");
|
|
3
|
+
require("../checks/index.js");
|
|
4
|
+
//#region src/onchain/validation/bundles/checkHealthFactors.ts
|
|
5
|
+
/**
|
|
6
|
+
* The account against whichever thresholds the caller holds it to, so a parsed
|
|
7
|
+
* transaction and a simulated one are weighed by the same code.
|
|
8
|
+
*
|
|
9
|
+
* A loan-free account is nothing to weigh: the health factor reports its
|
|
10
|
+
* zero-debt sentinel and no threshold applies.
|
|
11
|
+
*/
|
|
12
|
+
function checkHealthFactors(account, thresholds) {
|
|
13
|
+
const { minHealthFactor, minSafeHealthFactor, currentHealthFactor } = thresholds;
|
|
14
|
+
if (account.totalDebt.value === 0n) return [];
|
|
15
|
+
return [...minHealthFactor === void 0 ? [] : require_onchain_validation_checks_checkCollateralised.checkCollateralised({
|
|
16
|
+
healthFactor: account.healthFactor,
|
|
17
|
+
healthFactorThreshold: minHealthFactor,
|
|
18
|
+
safePrices: false,
|
|
19
|
+
improvesFrom: currentHealthFactor
|
|
20
|
+
}), ...minSafeHealthFactor === void 0 ? [] : require_onchain_validation_checks_checkCollateralised.checkCollateralised({
|
|
21
|
+
healthFactor: account.safeHealthFactor,
|
|
22
|
+
healthFactorThreshold: minSafeHealthFactor,
|
|
23
|
+
safePrices: true
|
|
24
|
+
})];
|
|
25
|
+
}
|
|
26
|
+
//#endregion
|
|
27
|
+
exports.checkHealthFactors = checkHealthFactors;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_onchain_validation_checks_checkCreditAccountFrozen = require("../checks/checkCreditAccountFrozen.js");
|
|
3
|
+
const require_onchain_validation_checks_checkEmergencyLiquidator = require("../checks/checkEmergencyLiquidator.js");
|
|
4
|
+
const require_onchain_validation_checks_checkLiquidatorEligible = require("../checks/checkLiquidatorEligible.js");
|
|
5
|
+
require("../checks/index.js");
|
|
6
|
+
//#region src/onchain/validation/bundles/checkLiquidationEligibility.ts
|
|
7
|
+
/**
|
|
8
|
+
* Whether this wallet may liquidate this account, from the facts the
|
|
9
|
+
* compressor already reported and the market's emergency-liquidator list.
|
|
10
|
+
*/
|
|
11
|
+
function checkLiquidationEligibility(input) {
|
|
12
|
+
const { sdk, details, liquidator } = input;
|
|
13
|
+
const market = sdk.marketRegister.findByCreditManager(details.creditManager);
|
|
14
|
+
return [
|
|
15
|
+
...require_onchain_validation_checks_checkCreditAccountFrozen.checkCreditAccountFrozen({
|
|
16
|
+
frozen: details.isCreditAccountFrozen,
|
|
17
|
+
creditAccount: details.creditAccount
|
|
18
|
+
}),
|
|
19
|
+
...require_onchain_validation_checks_checkEmergencyLiquidator.checkEmergencyLiquidator({
|
|
20
|
+
paused: details.paused,
|
|
21
|
+
isEmergencyLiquidator: market.isEmergencyLiquidator(liquidator),
|
|
22
|
+
creditManager: details.creditManager,
|
|
23
|
+
liquidator
|
|
24
|
+
}),
|
|
25
|
+
...require_onchain_validation_checks_checkLiquidatorEligible.checkLiquidatorEligible({
|
|
26
|
+
eligible: details.isLiquidatorEligible,
|
|
27
|
+
kycProtocol: details.kycProtocol,
|
|
28
|
+
kycToken: details.kycToken
|
|
29
|
+
})
|
|
30
|
+
];
|
|
31
|
+
}
|
|
32
|
+
//#endregion
|
|
33
|
+
exports.checkLiquidationEligibility = checkLiquidationEligibility;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_onchain_validation_bundles_checkWalletAllowance = require("./checkWalletAllowance.js");
|
|
3
|
+
const require_onchain_validation_bundles_checkWalletBalance = require("./checkWalletBalance.js");
|
|
4
|
+
//#region src/onchain/validation/bundles/checkLiquidationFunding.ts
|
|
5
|
+
/**
|
|
6
|
+
* What the liquidator wallet must hold and have approved.
|
|
7
|
+
*/
|
|
8
|
+
async function checkLiquidationFunding(input) {
|
|
9
|
+
const { sdk, details, liquidator, blockNumber } = input;
|
|
10
|
+
const reads = [];
|
|
11
|
+
if (details.repaymentAmount.value > 0n) reads.push(require_onchain_validation_bundles_checkWalletBalance.checkWalletBalance({
|
|
12
|
+
sdk,
|
|
13
|
+
token: details.repaymentAmount.token.address,
|
|
14
|
+
holder: liquidator,
|
|
15
|
+
required: details.repaymentAmount.value,
|
|
16
|
+
blockNumber
|
|
17
|
+
}));
|
|
18
|
+
if (details.approve) reads.push(require_onchain_validation_bundles_checkWalletAllowance.checkWalletAllowance({
|
|
19
|
+
sdk,
|
|
20
|
+
token: details.approve.token.address,
|
|
21
|
+
owner: liquidator,
|
|
22
|
+
spender: details.approve.spender,
|
|
23
|
+
required: details.approve.value,
|
|
24
|
+
blockNumber
|
|
25
|
+
}));
|
|
26
|
+
return (await Promise.all(reads)).flat();
|
|
27
|
+
}
|
|
28
|
+
//#endregion
|
|
29
|
+
exports.checkLiquidationFunding = checkLiquidationFunding;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_onchain_validation_checks_checkCreditManagerPaused = require("../checks/checkCreditManagerPaused.js");
|
|
3
|
+
const require_onchain_validation_checks_checkMarketExpired = require("../checks/checkMarketExpired.js");
|
|
4
|
+
require("../checks/index.js");
|
|
5
|
+
//#region src/onchain/validation/bundles/checkMarket.ts
|
|
6
|
+
/**
|
|
7
|
+
* What the market itself stops, whatever the operation does.
|
|
8
|
+
*
|
|
9
|
+
* Neither state is anything the sender can fix, which is why it comes first
|
|
10
|
+
* wherever it is composed in.
|
|
11
|
+
*/
|
|
12
|
+
function checkMarket(suite) {
|
|
13
|
+
const creditManager = suite.creditManager.address;
|
|
14
|
+
return [...require_onchain_validation_checks_checkCreditManagerPaused.checkCreditManagerPaused({
|
|
15
|
+
isPaused: suite.isPaused,
|
|
16
|
+
creditManager
|
|
17
|
+
}), ...require_onchain_validation_checks_checkMarketExpired.checkMarketExpired({
|
|
18
|
+
isExpired: suite.isExpired,
|
|
19
|
+
creditManager,
|
|
20
|
+
expirationDate: suite.creditFacade.expirationDate
|
|
21
|
+
})];
|
|
22
|
+
}
|
|
23
|
+
//#endregion
|
|
24
|
+
exports.checkMarket = checkMarket;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_onchain_validation_checks_checkForbiddenToken = require("../checks/checkForbiddenToken.js");
|
|
3
|
+
require("../checks/index.js");
|
|
4
|
+
//#region src/onchain/validation/bundles/checkObtained.ts
|
|
5
|
+
/** Every token the operation buys more of, against what the market forbids. */
|
|
6
|
+
function checkObtained(suite, preview) {
|
|
7
|
+
return (preview.operation === "AdjustCreditAccount" ? preview.assetsChange : preview.estAssets).filter((asset) => asset.value > 0n).flatMap((asset) => require_onchain_validation_checks_checkForbiddenToken.checkForbiddenToken({
|
|
8
|
+
token: asset.token,
|
|
9
|
+
isForbidden: suite.isForbidden(asset.token.address)
|
|
10
|
+
}));
|
|
11
|
+
}
|
|
12
|
+
//#endregion
|
|
13
|
+
exports.checkObtained = checkObtained;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_onchain_validation_bundles_checkWallet = require("./checkWallet.js");
|
|
3
|
+
//#region src/onchain/validation/bundles/checkPoolFunding.ts
|
|
4
|
+
/**
|
|
5
|
+
* What the wallet must hold (and approve) for a pool deposit, mint, withdraw
|
|
6
|
+
* or redeem, read off the preview's `tokenIn`, `zapper` and `holder`.
|
|
7
|
+
*/
|
|
8
|
+
async function checkPoolFunding(input) {
|
|
9
|
+
const { sdk, preview, sender, blockNumber } = input;
|
|
10
|
+
const { tokenIn: { token: { address: token }, value: required }, pool, zapper, holder } = preview;
|
|
11
|
+
const isDeposit = preview.operation === "Deposit" || preview.operation === "Mint";
|
|
12
|
+
return require_onchain_validation_bundles_checkWallet.checkWallet({
|
|
13
|
+
sdk,
|
|
14
|
+
token,
|
|
15
|
+
required,
|
|
16
|
+
blockNumber,
|
|
17
|
+
holder: isDeposit || zapper ? sender : holder,
|
|
18
|
+
spender: zapper ?? (isDeposit ? pool : sender)
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
//#endregion
|
|
22
|
+
exports.checkPoolFunding = checkPoolFunding;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_onchain_validation_checks_checkPoolLiquidity = require("../checks/checkPoolLiquidity.js");
|
|
3
|
+
const require_onchain_validation_checks_checkPoolPaused = require("../checks/checkPoolPaused.js");
|
|
4
|
+
const require_onchain_validation_checks_checkPoolSunset = require("../checks/checkPoolSunset.js");
|
|
5
|
+
require("../checks/index.js");
|
|
6
|
+
//#region src/onchain/validation/bundles/checkPoolOperation.ts
|
|
7
|
+
/**
|
|
8
|
+
* What the pool's own state stops, whichever side of it the wallet is on.
|
|
9
|
+
*
|
|
10
|
+
* The liquidity read is the market's rather than the trimmed figure a
|
|
11
|
+
* simulation carries: a withdrawal sized against that figure has to pass the
|
|
12
|
+
* check that follows it.
|
|
13
|
+
*/
|
|
14
|
+
function checkPoolOperation(args) {
|
|
15
|
+
const { sdk, pool, isDeposit, tokenOut } = args;
|
|
16
|
+
const market = sdk.marketRegister.findByPool(pool);
|
|
17
|
+
return [
|
|
18
|
+
...require_onchain_validation_checks_checkPoolPaused.checkPoolPaused({
|
|
19
|
+
isPaused: market.pool.pool.isPaused,
|
|
20
|
+
pool
|
|
21
|
+
}),
|
|
22
|
+
...require_onchain_validation_checks_checkPoolSunset.checkPoolSunset({
|
|
23
|
+
isSunset: market.sunset,
|
|
24
|
+
isDeposit,
|
|
25
|
+
pool
|
|
26
|
+
}),
|
|
27
|
+
...isDeposit ? [] : require_onchain_validation_checks_checkPoolLiquidity.checkPoolLiquidity({
|
|
28
|
+
requested: tokenOut.value,
|
|
29
|
+
available: market.pool.pool.availableLiquidity,
|
|
30
|
+
underlying: tokenOut.token
|
|
31
|
+
})
|
|
32
|
+
];
|
|
33
|
+
}
|
|
34
|
+
//#endregion
|
|
35
|
+
exports.checkPoolOperation = checkPoolOperation;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_onchain_validation_checks_checkQuotaLimit = require("../checks/checkQuotaLimit.js");
|
|
3
|
+
require("../checks/index.js");
|
|
4
|
+
//#region src/onchain/validation/bundles/checkQuotasAsked.ts
|
|
5
|
+
/** Every quota the operation raises, against the room the keeper has left. */
|
|
6
|
+
function checkQuotasAsked(market, preview, underlying) {
|
|
7
|
+
const increases = preview.operation === "AdjustCreditAccount" ? preview.quotasChange : preview.quotas;
|
|
8
|
+
const { pqk } = market.pool;
|
|
9
|
+
return increases.filter((q) => q.value > 0n).flatMap((q) => {
|
|
10
|
+
const quoted = pqk.hasActiveQuota(q.token.address);
|
|
11
|
+
return require_onchain_validation_checks_checkQuotaLimit.checkQuotaLimit({
|
|
12
|
+
token: q.token,
|
|
13
|
+
requested: quoted ? q.value : void 0,
|
|
14
|
+
available: quoted ? pqk.quotaAvailable(q.token.address) : 0n,
|
|
15
|
+
underlying
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
//#endregion
|
|
20
|
+
exports.checkQuotasAsked = checkQuotasAsked;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_model_errors_operation_errors = require("../../../model/errors/operation-errors.js");
|
|
3
|
+
const require_model_errors_prepare_errors = require("../../../model/errors/prepare-errors.js");
|
|
4
|
+
require("../../../model/index.js");
|
|
5
|
+
const require_onchain_validation_helpers_token = require("../helpers/token.js");
|
|
6
|
+
require("../helpers/index.js");
|
|
7
|
+
//#region src/onchain/validation/bundles/checkRWAOpenRequirements.ts
|
|
8
|
+
/**
|
|
9
|
+
* The RWA factory is satisfied that `wallet` may open on `token` with the
|
|
10
|
+
* registration args already on the transaction.
|
|
11
|
+
*/
|
|
12
|
+
async function checkRWAOpenRequirements(input) {
|
|
13
|
+
const { sdk, wallet, creditManager, token, providedArgs } = input;
|
|
14
|
+
try {
|
|
15
|
+
const requirements = await sdk.accounts.getOpenAccountRequirements(wallet, creditManager, { tokenOutAddress: token });
|
|
16
|
+
if (!requirements) return [];
|
|
17
|
+
const { rwaFactory } = sdk.marketRegister.findByCreditManager(creditManager);
|
|
18
|
+
if (!rwaFactory) throw new Error(`no RWA factory for credit manager ${creditManager}`);
|
|
19
|
+
const missing = rwaFactory.getMissingRequirements(requirements, providedArgs);
|
|
20
|
+
if (!missing && requirements.securitizeTokensToRegister.length === 0) return [];
|
|
21
|
+
return [require_model_errors_operation_errors.rwaOpenRequirementsNotMet({
|
|
22
|
+
token: require_onchain_validation_helpers_token.toToken(sdk, token),
|
|
23
|
+
creditManager,
|
|
24
|
+
factory: rwaFactory.address,
|
|
25
|
+
requirements,
|
|
26
|
+
...missing === void 0 ? {} : { missing }
|
|
27
|
+
})];
|
|
28
|
+
} catch (cause) {
|
|
29
|
+
return [require_model_errors_prepare_errors.unexpectedFailure(cause, "read the RWA opening requirements")];
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
//#endregion
|
|
33
|
+
exports.checkRWAOpenRequirements = checkRWAOpenRequirements;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_onchain_utils_AddressSet = require("../../utils/AddressSet.js");
|
|
3
|
+
const require_onchain_validation_bundles_checkRWAOpenRequirements = require("./checkRWAOpenRequirements.js");
|
|
4
|
+
//#region src/onchain/validation/bundles/checkRWAOpening.ts
|
|
5
|
+
/**
|
|
6
|
+
* Per factory-gated token among `collateralAdded ∪ quotas`, whether the
|
|
7
|
+
* borrower still has to register or sign before this opening can land.
|
|
8
|
+
*/
|
|
9
|
+
async function checkRWAOpening(input) {
|
|
10
|
+
const { sdk, preview, sender } = input;
|
|
11
|
+
const { rwaFactory } = sdk.marketRegister.findByCreditManager(preview.creditManager);
|
|
12
|
+
if (!rwaFactory) return [];
|
|
13
|
+
const gated = new require_onchain_utils_AddressSet.AddressSet(rwaFactory.getTokens());
|
|
14
|
+
const candidates = new require_onchain_utils_AddressSet.AddressSet([...preview.collateralAdded.map((a) => a.token.address), ...preview.quotas.map((q) => q.token.address)]);
|
|
15
|
+
return (await Promise.all([...candidates].filter((token) => gated.has(token)).map((token) => require_onchain_validation_bundles_checkRWAOpenRequirements.checkRWAOpenRequirements({
|
|
16
|
+
sdk,
|
|
17
|
+
wallet: sender,
|
|
18
|
+
creditManager: preview.creditManager,
|
|
19
|
+
token,
|
|
20
|
+
providedArgs: preview.rwaArgs
|
|
21
|
+
})))).flat();
|
|
22
|
+
}
|
|
23
|
+
//#endregion
|
|
24
|
+
exports.checkRWAOpening = checkRWAOpening;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
require("../../constants/addresses.js");
|
|
3
|
+
require("../../constants/index.js");
|
|
4
|
+
const require_onchain_validation_bundles_checkWalletAllowance = require("./checkWalletAllowance.js");
|
|
5
|
+
const require_onchain_validation_bundles_checkWalletBalance = require("./checkWalletBalance.js");
|
|
6
|
+
let viem = require("viem");
|
|
7
|
+
//#region src/onchain/validation/bundles/checkWallet.ts
|
|
8
|
+
/**
|
|
9
|
+
* The wallet's whole side for one token: always the balance; the allowance
|
|
10
|
+
* only when it can matter (an ERC-20, with a spender who is not the holder).
|
|
11
|
+
*/
|
|
12
|
+
async function checkWallet(input) {
|
|
13
|
+
const { spender, ...rest } = input;
|
|
14
|
+
const needsAllowance = spender !== void 0 && !(0, viem.isAddressEqual)(rest.token, "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE") && !(0, viem.isAddressEqual)(spender, rest.holder);
|
|
15
|
+
return (await Promise.all([require_onchain_validation_bundles_checkWalletBalance.checkWalletBalance(rest), needsAllowance ? require_onchain_validation_bundles_checkWalletAllowance.checkWalletAllowance({
|
|
16
|
+
...rest,
|
|
17
|
+
owner: rest.holder,
|
|
18
|
+
spender
|
|
19
|
+
}) : []])).flat();
|
|
20
|
+
}
|
|
21
|
+
//#endregion
|
|
22
|
+
exports.checkWallet = checkWallet;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_abi_iERC20 = require("../../../abi/iERC20.js");
|
|
3
|
+
const require_model_errors_operation_errors = require("../../../model/errors/operation-errors.js");
|
|
4
|
+
const require_model_errors_prepare_errors = require("../../../model/errors/prepare-errors.js");
|
|
5
|
+
require("../../../model/index.js");
|
|
6
|
+
const require_onchain_validation_helpers_token = require("../helpers/token.js");
|
|
7
|
+
require("../helpers/index.js");
|
|
8
|
+
//#region src/onchain/validation/bundles/checkWalletAllowance.ts
|
|
9
|
+
/** `owner` has approved `spender` for at least `required` of `token`. */
|
|
10
|
+
async function checkWalletAllowance(input) {
|
|
11
|
+
const { sdk, token, owner, spender, required, blockNumber } = input;
|
|
12
|
+
try {
|
|
13
|
+
const allowed = await sdk.client.readContract({
|
|
14
|
+
address: token,
|
|
15
|
+
abi: require_abi_iERC20.ierc20Abi,
|
|
16
|
+
functionName: "allowance",
|
|
17
|
+
args: [owner, spender],
|
|
18
|
+
blockNumber
|
|
19
|
+
});
|
|
20
|
+
return allowed >= required ? [] : [require_model_errors_operation_errors.insufficientAllowance({
|
|
21
|
+
owner,
|
|
22
|
+
spender,
|
|
23
|
+
required: require_onchain_validation_helpers_token.toTokenAmount(sdk, token, required),
|
|
24
|
+
allowed: require_onchain_validation_helpers_token.toTokenAmount(sdk, token, allowed)
|
|
25
|
+
})];
|
|
26
|
+
} catch (cause) {
|
|
27
|
+
const { symbol } = require_onchain_validation_helpers_token.toToken(sdk, token);
|
|
28
|
+
return [require_model_errors_prepare_errors.unexpectedFailure(cause, `read the ${symbol} allowance`)];
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
//#endregion
|
|
32
|
+
exports.checkWalletAllowance = checkWalletAllowance;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_abi_iERC20 = require("../../../abi/iERC20.js");
|
|
3
|
+
require("../../constants/addresses.js");
|
|
4
|
+
require("../../constants/index.js");
|
|
5
|
+
const require_model_errors_operation_errors = require("../../../model/errors/operation-errors.js");
|
|
6
|
+
const require_model_errors_prepare_errors = require("../../../model/errors/prepare-errors.js");
|
|
7
|
+
require("../../../model/index.js");
|
|
8
|
+
const require_onchain_validation_helpers_amount = require("../helpers/amount.js");
|
|
9
|
+
const require_onchain_validation_helpers_token = require("../helpers/token.js");
|
|
10
|
+
require("../helpers/index.js");
|
|
11
|
+
let viem = require("viem");
|
|
12
|
+
//#region src/onchain/validation/bundles/checkWalletBalance.ts
|
|
13
|
+
/** `holder` holds at least `required` of `token` (ERC-20 or native). */
|
|
14
|
+
async function checkWalletBalance(input) {
|
|
15
|
+
const { sdk, token, holder, required, blockNumber } = input;
|
|
16
|
+
try {
|
|
17
|
+
const held = (0, viem.isAddressEqual)(token, "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE") ? await sdk.client.getBalance({
|
|
18
|
+
address: holder,
|
|
19
|
+
blockNumber
|
|
20
|
+
}) : await sdk.client.readContract({
|
|
21
|
+
address: token,
|
|
22
|
+
abi: require_abi_iERC20.ierc20Abi,
|
|
23
|
+
functionName: "balanceOf",
|
|
24
|
+
args: [holder],
|
|
25
|
+
blockNumber
|
|
26
|
+
});
|
|
27
|
+
if (required <= held) return [];
|
|
28
|
+
const meta = require_onchain_validation_helpers_token.toToken(sdk, token);
|
|
29
|
+
return [require_model_errors_operation_errors.insufficientBalance({
|
|
30
|
+
required: require_onchain_validation_helpers_amount.amountOf(meta, required),
|
|
31
|
+
held: require_onchain_validation_helpers_amount.amountOf(meta, held),
|
|
32
|
+
holderKind: "wallet",
|
|
33
|
+
holder
|
|
34
|
+
})];
|
|
35
|
+
} catch (cause) {
|
|
36
|
+
const { symbol } = require_onchain_validation_helpers_token.toToken(sdk, token);
|
|
37
|
+
return [require_model_errors_prepare_errors.unexpectedFailure(cause, `read the ${symbol} balance`)];
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
//#endregion
|
|
41
|
+
exports.checkWalletBalance = checkWalletBalance;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_onchain_validation_bundles_checkAccountQuotas = require("./checkAccountQuotas.js");
|
|
3
|
+
const require_onchain_validation_bundles_checkWalletAllowance = require("./checkWalletAllowance.js");
|
|
4
|
+
const require_onchain_validation_bundles_checkWalletBalance = require("./checkWalletBalance.js");
|
|
5
|
+
const require_onchain_validation_bundles_checkCollateralFunding = require("./checkCollateralFunding.js");
|
|
6
|
+
const require_onchain_validation_bundles_checkDraw = require("./checkDraw.js");
|
|
7
|
+
const require_onchain_validation_bundles_checkHealthFactors = require("./checkHealthFactors.js");
|
|
8
|
+
const require_onchain_validation_bundles_checkMarket = require("./checkMarket.js");
|
|
9
|
+
const require_onchain_validation_bundles_checkObtained = require("./checkObtained.js");
|
|
10
|
+
const require_onchain_validation_bundles_checkQuotasAsked = require("./checkQuotasAsked.js");
|
|
11
|
+
const require_onchain_validation_bundles_checkRWAOpenRequirements = require("./checkRWAOpenRequirements.js");
|
|
12
|
+
const require_onchain_validation_bundles_checkRWAOpening = require("./checkRWAOpening.js");
|
|
13
|
+
const require_onchain_validation_bundles_checkCreditOperation = require("./checkCreditOperation.js");
|
|
14
|
+
const require_onchain_validation_bundles_checkLiquidationEligibility = require("./checkLiquidationEligibility.js");
|
|
15
|
+
const require_onchain_validation_bundles_checkLiquidationFunding = require("./checkLiquidationFunding.js");
|
|
16
|
+
const require_onchain_validation_bundles_checkWallet = require("./checkWallet.js");
|
|
17
|
+
const require_onchain_validation_bundles_checkPoolFunding = require("./checkPoolFunding.js");
|
|
18
|
+
const require_onchain_validation_bundles_checkPoolOperation = require("./checkPoolOperation.js");
|
|
19
|
+
exports.checkAccountQuotas = require_onchain_validation_bundles_checkAccountQuotas.checkAccountQuotas;
|
|
20
|
+
exports.checkCollateralFunding = require_onchain_validation_bundles_checkCollateralFunding.checkCollateralFunding;
|
|
21
|
+
exports.checkCreditOperation = require_onchain_validation_bundles_checkCreditOperation.checkCreditOperation;
|
|
22
|
+
exports.checkDraw = require_onchain_validation_bundles_checkDraw.checkDraw;
|
|
23
|
+
exports.checkHealthFactors = require_onchain_validation_bundles_checkHealthFactors.checkHealthFactors;
|
|
24
|
+
exports.checkLiquidationEligibility = require_onchain_validation_bundles_checkLiquidationEligibility.checkLiquidationEligibility;
|
|
25
|
+
exports.checkLiquidationFunding = require_onchain_validation_bundles_checkLiquidationFunding.checkLiquidationFunding;
|
|
26
|
+
exports.checkMarket = require_onchain_validation_bundles_checkMarket.checkMarket;
|
|
27
|
+
exports.checkObtained = require_onchain_validation_bundles_checkObtained.checkObtained;
|
|
28
|
+
exports.checkPoolFunding = require_onchain_validation_bundles_checkPoolFunding.checkPoolFunding;
|
|
29
|
+
exports.checkPoolOperation = require_onchain_validation_bundles_checkPoolOperation.checkPoolOperation;
|
|
30
|
+
exports.checkQuotasAsked = require_onchain_validation_bundles_checkQuotasAsked.checkQuotasAsked;
|
|
31
|
+
exports.checkRWAOpenRequirements = require_onchain_validation_bundles_checkRWAOpenRequirements.checkRWAOpenRequirements;
|
|
32
|
+
exports.checkRWAOpening = require_onchain_validation_bundles_checkRWAOpening.checkRWAOpening;
|
|
33
|
+
exports.checkWallet = require_onchain_validation_bundles_checkWallet.checkWallet;
|
|
34
|
+
exports.checkWalletAllowance = require_onchain_validation_bundles_checkWalletAllowance.checkWalletAllowance;
|
|
35
|
+
exports.checkWalletBalance = require_onchain_validation_bundles_checkWalletBalance.checkWalletBalance;
|