@gearbox-protocol/sdk 16.4.0-next.1 → 16.4.0-next.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/dev/index.js +3 -2
- package/dist/cjs/dev/kycUtils.js +18 -35
- package/dist/cjs/dev/midasUtils.js +80 -16
- package/dist/cjs/dev/securitizeUtils.js +14 -10
- package/dist/cjs/dev/withdrawalUtils.js +3 -6
- package/dist/cjs/model/errors/index.js +1 -0
- package/dist/cjs/model/errors/operation-errors.js +9 -0
- package/dist/cjs/model/index.js +1 -0
- package/dist/cjs/onchain/accounts/CreditAccountsServiceV310.js +0 -1
- package/dist/cjs/onchain/accounts/intents/borrow.js +139 -0
- package/dist/cjs/onchain/accounts/intents/{collateral-money.js → collateral-valuation.js} +7 -7
- package/dist/cjs/onchain/accounts/intents/index.js +86 -2
- package/dist/cjs/onchain/accounts/intents/leverage-band.js +2 -12
- package/dist/cjs/onchain/accounts/intents/maxBorrow.js +89 -0
- package/dist/cjs/onchain/accounts/intents/maxWithdrawCollateral.js +14 -14
- package/dist/cjs/onchain/accounts/intents/open-strategy.js +6 -45
- package/dist/cjs/onchain/accounts/intents/realize.js +44 -0
- package/dist/cjs/onchain/accounts/intents/testing/sdk-mock.js +1 -0
- package/dist/cjs/onchain/accounts/intents/utils/common.js +19 -0
- package/dist/cjs/onchain/accounts/intents/utils/credit-account-slice.js +21 -0
- package/dist/cjs/onchain/accounts/intents/utils/index.js +2 -0
- package/dist/cjs/onchain/accounts/intents/utils/price-impact.js +3 -3
- package/dist/cjs/onchain/accounts/intents/withdraw-limits.js +8 -8
- package/dist/cjs/onchain/core/createAddressProvider.js +2 -5
- package/dist/cjs/onchain/index.js +4 -0
- package/dist/cjs/onchain/market/adapters/contracts/MidasGatewayAdapterContract.js +11 -3
- package/dist/cjs/onchain/positions/calcHealthFactor.js +3 -3
- package/dist/cjs/onchain/preview/index.js +2 -0
- package/dist/cjs/onchain/preview/preview/index.js +2 -0
- package/dist/cjs/onchain/preview/preview/midasGreenlistsAccount.js +17 -0
- package/dist/cjs/onchain/preview/preview/previewOpenStrategyPosition.js +5 -2
- package/dist/cjs/onchain/validation/bundles/checkCreditOperation.js +2 -1
- package/dist/cjs/onchain/validation/bundles/checkMidasAccountGreenlist.js +44 -0
- package/dist/cjs/onchain/validation/bundles/checkRWAOpening.js +15 -5
- package/dist/cjs/onchain/validation/bundles/index.js +2 -0
- package/dist/cjs/onchain/validation/index.js +2 -0
- package/dist/cjs/sdk/execute/ExecuteApi.js +65 -5
- package/dist/cjs/sdk/prepare/PrepareApi.js +86 -12
- package/dist/esm/dev/index.js +3 -3
- package/dist/esm/dev/kycUtils.js +17 -33
- package/dist/esm/dev/midasUtils.js +80 -18
- package/dist/esm/dev/securitizeUtils.js +15 -11
- package/dist/esm/dev/withdrawalUtils.js +3 -6
- package/dist/esm/model/errors/index.js +2 -2
- package/dist/esm/model/errors/operation-errors.js +9 -1
- package/dist/esm/model/index.js +2 -2
- package/dist/esm/onchain/accounts/CreditAccountsServiceV310.js +0 -1
- package/dist/esm/onchain/accounts/intents/borrow.js +137 -0
- package/dist/esm/onchain/accounts/intents/{collateral-money.js → collateral-valuation.js} +7 -7
- package/dist/esm/onchain/accounts/intents/index.js +86 -2
- package/dist/esm/onchain/accounts/intents/leverage-band.js +2 -12
- package/dist/esm/onchain/accounts/intents/maxBorrow.js +87 -0
- package/dist/esm/onchain/accounts/intents/maxWithdrawCollateral.js +14 -14
- package/dist/esm/onchain/accounts/intents/open-strategy.js +6 -45
- package/dist/esm/onchain/accounts/intents/realize.js +44 -0
- package/dist/esm/onchain/accounts/intents/testing/sdk-mock.js +1 -0
- package/dist/esm/onchain/accounts/intents/utils/common.js +19 -1
- package/dist/esm/onchain/accounts/intents/utils/credit-account-slice.js +21 -1
- package/dist/esm/onchain/accounts/intents/utils/index.js +3 -3
- package/dist/esm/onchain/accounts/intents/utils/price-impact.js +3 -3
- package/dist/esm/onchain/accounts/intents/withdraw-limits.js +8 -8
- package/dist/esm/onchain/core/createAddressProvider.js +2 -5
- package/dist/esm/onchain/index.js +3 -1
- package/dist/esm/onchain/market/adapters/contracts/MidasGatewayAdapterContract.js +11 -3
- package/dist/esm/onchain/positions/calcHealthFactor.js +3 -3
- package/dist/esm/onchain/preview/index.js +2 -1
- package/dist/esm/onchain/preview/preview/index.js +2 -1
- package/dist/esm/onchain/preview/preview/midasGreenlistsAccount.js +16 -0
- package/dist/esm/onchain/preview/preview/previewOpenStrategyPosition.js +5 -2
- package/dist/esm/onchain/validation/bundles/checkCreditOperation.js +2 -1
- package/dist/esm/onchain/validation/bundles/checkMidasAccountGreenlist.js +43 -0
- package/dist/esm/onchain/validation/bundles/checkRWAOpening.js +15 -5
- package/dist/esm/onchain/validation/bundles/index.js +2 -1
- package/dist/esm/onchain/validation/index.js +2 -1
- package/dist/esm/sdk/execute/ExecuteApi.js +65 -5
- package/dist/esm/sdk/prepare/PrepareApi.js +86 -12
- package/dist/types/dev/index.d.ts +3 -3
- package/dist/types/dev/kycUtils.d.ts +1 -5
- package/dist/types/dev/midasUtils.d.ts +15 -4
- package/dist/types/model/errors/index.d.ts +2 -2
- package/dist/types/model/errors/operation-errors.d.ts +14 -1
- package/dist/types/model/index.d.ts +2 -2
- package/dist/types/model/previews.d.ts +17 -2
- package/dist/types/onchain/accounts/index.d.ts +4 -3
- package/dist/types/onchain/accounts/intents/borrow.d.ts +141 -0
- package/dist/types/onchain/accounts/intents/{collateral-money.d.ts → collateral-valuation.d.ts} +8 -8
- package/dist/types/onchain/accounts/intents/index.d.ts +81 -2
- package/dist/types/onchain/accounts/intents/maxBorrow.d.ts +54 -0
- package/dist/types/onchain/accounts/intents/maxWithdrawCollateral.d.ts +3 -3
- package/dist/types/onchain/accounts/intents/open-strategy.d.ts +3 -17
- package/dist/types/onchain/accounts/intents/testing/sdk-mock.d.ts +2 -0
- package/dist/types/onchain/accounts/intents/tests/open-strategy.fixtures.d.ts +2 -2
- package/dist/types/onchain/accounts/intents/types.d.ts +15 -1
- package/dist/types/onchain/accounts/intents/utils/common.d.ts +15 -1
- package/dist/types/onchain/accounts/intents/utils/credit-account-slice.d.ts +14 -1
- package/dist/types/onchain/accounts/intents/utils/index.d.ts +3 -3
- package/dist/types/onchain/accounts/intents/withdraw-limits.d.ts +1 -1
- package/dist/types/onchain/index.d.ts +7 -4
- package/dist/types/onchain/market/adapters/contracts/MidasGatewayAdapterContract.d.ts +8 -2
- package/dist/types/onchain/preview/index.d.ts +2 -1
- package/dist/types/onchain/preview/preview/index.d.ts +2 -1
- package/dist/types/onchain/preview/preview/midasGreenlistsAccount.d.ts +13 -0
- package/dist/types/onchain/validation/bundles/checkCreditOperation.d.ts +2 -2
- package/dist/types/onchain/validation/bundles/checkMidasAccountGreenlist.d.ts +22 -0
- package/dist/types/onchain/validation/bundles/checkRWAOpening.d.ts +6 -4
- package/dist/types/onchain/validation/bundles/index.d.ts +3 -2
- package/dist/types/onchain/validation/checks/checkDebtLimits.d.ts +2 -2
- package/dist/types/onchain/validation/index.d.ts +3 -2
- package/dist/types/sdk/execute/index.d.ts +2 -2
- package/dist/types/sdk/execute/types.d.ts +48 -6
- package/dist/types/sdk/index.d.ts +5 -4
- package/dist/types/sdk/prepare/PrepareApi.d.ts +15 -3
- package/dist/types/sdk/prepare/index.d.ts +4 -3
- package/dist/types/sdk/prepare/types.d.ts +176 -49
- package/package.json +1 -1
|
@@ -222,6 +222,7 @@ import { checkIncreaseDebt } from "./validation/bundles/checkIncreaseDebt.js";
|
|
|
222
222
|
import { checkIncreaseQuota } from "./validation/bundles/checkIncreaseQuota.js";
|
|
223
223
|
import { checkMarket } from "./validation/bundles/checkMarket.js";
|
|
224
224
|
import { checkObtained } from "./validation/bundles/checkObtained.js";
|
|
225
|
+
import { checkMidasAccountGreenlist } from "./validation/bundles/checkMidasAccountGreenlist.js";
|
|
225
226
|
import { checkRWAOpenRequirements } from "./validation/bundles/checkRWAOpenRequirements.js";
|
|
226
227
|
import { checkRWAOpening } from "./validation/bundles/checkRWAOpening.js";
|
|
227
228
|
import { checkCreditOperation } from "./validation/bundles/checkCreditOperation.js";
|
|
@@ -292,6 +293,7 @@ import { classifyCloseOrRepay, isCloseOrRepay } from "./preview/preview/detectCl
|
|
|
292
293
|
import { detectDelayedClaim, resolveDelayedClaimIntent } from "./preview/preview/detectDelayedClaim.js";
|
|
293
294
|
import { detectDelayedOperation } from "./preview/preview/detectDelayedOperation.js";
|
|
294
295
|
import { estimateClaimableAt } from "./preview/preview/estimateClaimableAt.js";
|
|
296
|
+
import { midasGreenlistsAccount } from "./preview/preview/midasGreenlistsAccount.js";
|
|
295
297
|
import { previewAdjustStrategyPosition } from "./preview/preview/previewAdjustStrategyPosition.js";
|
|
296
298
|
import { previewExitOrRepayStrategyPosition } from "./preview/preview/previewExitOrRepayStrategyPosition.js";
|
|
297
299
|
import { makeReplayState, replayInnerOperations } from "./preview/preview/replayInnerOperations.js";
|
|
@@ -299,4 +301,4 @@ import { replayMulticall } from "./preview/preview/replayMulticall.js";
|
|
|
299
301
|
import { previewOperation } from "./preview/preview/previewOperation.js";
|
|
300
302
|
import "./preview/index.js";
|
|
301
303
|
import "./types/index.js";
|
|
302
|
-
export { ADDRESS_0X0, ADDRESS_PROVIDER_V310, AP_ACCOUNT_FACTORY, AP_ACL, AP_BOT_LIST, AP_BYTECODE_REPOSITORY, AP_CONTRACTS_REGISTER, AP_CONTROLLER_TIMELOCK, AP_CREDIT_ACCOUNT_COMPRESSOR, AP_CREDIT_SUITE_COMPRESSOR, AP_DATA_COMPRESSOR, AP_DELEVERAGE_BOT_HV, AP_DELEVERAGE_BOT_LV, AP_DELEVERAGE_BOT_PEGGED, AP_GAUGE_COMPRESSOR, AP_GEAR_STAKING, AP_GEAR_TOKEN, AP_INFLATION_ATTACK_BLOCKER, AP_INSOLVENCY_CHECKER, AP_MARKET_COMPRESSOR, AP_MARKET_CONFIGURATOR, AP_PARTIAL_LIQUIDATION_BOT, AP_PERIPHERY_COMPRESSOR, AP_PRICE_FEED_COMPRESSOR, AP_PRICE_FEED_STORE, AP_PRICE_ORACLE, AP_REDEMPTION_LOGGER, AP_REWARDS_COMPRESSOR, AP_ROUTER, AP_RWA_COMPRESSOR, AP_TOKEN_COMPRESSOR, AP_TREASURY, AP_WETH_GATEWAY, AP_WETH_TOKEN, AP_ZAPPER_REGISTER, AP_ZERO_PRICE_FEED, AbstractAdapterContract, AbstractLPPriceFeedContract, AbstractPriceFeedContract, AbstractWithdrawalCompressorContract, AccountBotsService, AccountMigratorAdapterContract, AdapterType, AddressMap, AddressProviderV310Contract, AddressSet, AssetsMap, BLOCKS_PER_WEEK_BY_NETWORK, BalancerStablePriceFeedContract, BalancerV3PoolStatus, BalancerV3RouterAdapterContract, BalancerV3WrapperAdapterContract, BalancerWeightedPriceFeedContract, BaseContract, BasePlugin, BigIntMath, BotPermissions, BoundedPriceFeedContract, CamelotV3AdapterContract, ChainContractsRegister, ChainNotConfiguredError, CompositePriceFeedContract, Construct, ContractParseError, ConvexV1BaseRewardPoolAdapterContract, ConvexV1BoosterAdapterContract, CreditAccountCompressor, CreditAccountCompressorV310Contract, CreditAccountOperationsService, CreditAccountState, CreditAccountsServiceV310, CreditConfiguratorV310Contract, CreditFacadeV310BaseContract, CreditFacadeV310Contract, CreditManagerV310Contract, CreditSuite, Curve2AssetsAdapterContract, Curve3AssetsAdapterContract, Curve4AssetsAdapterContract, CurveCryptoPriceFeedContract, CurveStablePriceFeedContract, CurveUSDPriceFeedContract, CurveV1AdapterStETHContract, CurveV1StableNGAdapterContract, DEFAULT_QUOTA_BUFFER_BPS, DEGEN_NFT_MIDAS, DEGEN_NFT_SECURITIZE, DELAYED_INTENT_TYPES, DELAYED_INTENT_VERSION, DUST_THRESHOLD, DaiUsdsAdapterContract, ERC4626AdapterContract, ERC4626ReferralAdapterContract, EXECUTE_BYTES_SELECTOR, Erc4626PriceFeedContract, ExternalPriceFeedContract, FluidDexAdapterContract, GaugeContract, IERC20ZapperContract, IETHZapperContract, InfinifiGatewayAdapterContract, InfinifiUnwindingGatewayAdapterContract, KelpLRTDepositPoolAdapterContract, KelpLRTWithdrawalManagerAdapterContract, LEVERAGE_DECIMALS, LIQUIDATION_APPROVAL_BUFFER, LIQUIDATION_COMPRESSOR_V313_ADDRESS, LidoV1AdapterContract, LinearInterestRateModelContract, LiquidationsService, MAX_INT, MAX_LEVERAGE_BUFFER_BPS, MAX_UINT16, MAX_UINT256, MIN_HEALTH_FACTOR_FACADE, MIN_HEALTH_FACTOR_FORM, MIN_HF_LIMITED, MIN_INT96, MIN_SAFE_HEALTH_FACTOR_FORM, MULTICALL_ADDRESS, MarketRegister, MarketSuite, MellowClaimerAdapterContract, MellowDVVAdapterContract, MellowERC4626VaultAdapterContract, MellowLRTPriceFeedContract, MellowWrapperAdapterContract, MidasDegenNFT, MidasGatewayAdapterContract, MidasIssuanceVaultAdapterContract, MidasLiquidatorContract, MidasRedemptionVaultAdapterContract, MissingSerializedParamsError, MultichainConstruct, MultichainLiquidationsService, MultichainOpportunitiesService, MultichainPositionsService, MultichainSDK, NATIVE_ADDRESS, NON_STRATEGY_PHANTOM_TOKEN_TYPES, NOT_DEPLOYED, NO_VERSION, NetworkType, OnchainSDK, OpportunitiesService, PARTIAL_LIQUIDATION_BUFFER_BPS, PERCENTAGE_DECIMALS, PERCENTAGE_FACTOR, PERCENTAGE_FACTOR_1KK, PERIPHERY_CONTRACTS, PHANTOM_TOKEN_CONTRACT_TYPES, PHANTOM_TOKEN_MIDAS_REDEMPTION, PHANTOM_TOKEN_SECURITIZE_REDEMPTION, PRICE_DECIMALS, PRICE_DECIMALS_POW, PartialPriceFeedInitError, PendlePairStatus, PendleRouterAdapterContract, PendleTWAPPTPriceFeed, PendleTokenType, PeripheryCompressorV310Contract, PluginStateVersionError, PoolService, PoolSuite, PoolV310Contract, PositionsService, PriceFeedRef, PriceFeedRegister, PriceOracleV310Contract, PythPriceFeed, RAMP_DURATION_BY_NETWORK, RAY, RAY_DECIMALS_POW, RWARegistry, RWA_LIQUIDATOR_MIDAS, RWA_LIQUIDATOR_SECURITIZE, RWA_ON_DEMAND_LP_MONOPOLIZED, RWA_UNDERLYING_DEFAULT, RWA_UNDERLYING_ON_DEMAND, RedemptionLoggerV310Contract, RedstonePriceFeedContract, RouterV310Contract, SDKConstruct, SECONDS_PER_YEAR, SLIPPAGE_DECIMALS, STATE_VERSION, SUPPORTED_NETWORKS, SdkAlreadyAttachedError, SdkChainMismatchError, SdkMissingChainStateError, SdkNotAttachedError, SdkRWADataNotLoadedError, SdkStateVersionMismatchError, SdkSyncFailedError, SecuritizeDegenNFT, SecuritizeLiquidatorContract, SecuritizeOnRampAdapterContract, SecuritizeRWAFactory, SecuritizeRedemptionGatewayAdapterContract, SimulateWithPriceUpdatesError, SimulationError, StakingRewardsAdapterContract, TokensMeta, TraderJoePoolVersion, TraderJoeRouterAdapterContract, TypedObjectUtils, UniswapV2AdapterContract, UniswapV3AdapterContract, UniswapV4AdapterContract, UpshiftVaultAdapterContract, VERSION_RANGE_310, VelodromeV2RouterAdapterContract, VotingContractStatus, WAD, WAD_DECIMALS_POW, WithdrawalCompressorV310Contract, WithdrawalCompressorV311Contract, WithdrawalCompressorV313Contract, WstETHPriceFeedContract, WstETHV1AdapterContract, YearnPriceFeedContract, ZapperContract, ZeroPriceFeedContract, ZodAddress, ZodBigInt, ZodHex, accountSnapshotFromCreditAccountData, adapterActionAbi, adapterActionSelectors, adapterActionSignatures, adapterConstructorAbi, allTransfersAsTokenAmounts, amountOf, assetsMap, attachOptionsSchema, botPermissionsToString, bpsToRay, buildDelayedStrategyPositionOperationPreview, bytes32ToString, calcBorrowApy, calcBorrowRate, calcDefaultQuota, calcEffectiveBorrowApy, calcHealthFactor, calcLiquidationPrice, calcLiquidationPriceForTarget, calcMaxLeverage, calcNetStrategyApy, calcPositionLeverage, calcQuotaRate, calcQuotaUpdate, calcRecommendedQuota, calcTimeToLiquidationMs, calcUtilization, calcUtilizationRaw, chains, checkAccountQuotas, checkBorrowLimit, checkCollateralFunding, checkCollateralised, checkCreditAccountFrozen, checkCreditManagerPaused, checkCreditOperation, checkDebtLimits, checkEmergencyLiquidator, checkForbiddenToken, checkHealthFactors, checkIncreaseDebt, checkIncreaseQuota, checkLeverage, checkLiquidation, checkLiquidationEligibility, checkLiquidationFunding, checkLiquidatorEligible, checkMarket, checkMarketExpired, checkObtained, checkOperation, checkPoolFunding, checkPoolLiquidity, checkPoolOperation, checkPoolPaused, checkPoolSunset, checkQuotaCount, checkQuotaLimit, checkRWAOpenRequirements, checkRWAOpening, checkReservePriceLimited, checkSimulation, checkWallet, checkWalletAllowance, checkWalletBalance, childLogger, classifyCloseOrRepay, classifyCurveOperation, classifyInnerOperations, collateralPriceInUnderlying, collectTraces, createAdapter, createAddressProvider, createPriceOracle, createRawTx, createRedemptionLogger, createRouter, createWithdrawalCompressor, createZapper, abi as creditFacadeV310Abi, curveAddLiquidityFromTransfers, curveRemoveLiquidityFromTransfers, decodeDelayedIntent, detectDelayedClaim, detectDelayedOperation, detectNetwork, dominantCollateral, encodeDelayedIntent, erc4626ReferralAdapterAbi, estimateClaimableAt, estimateRawTxGas, etherscanApiUrl, etherscanUrl, executeDelegatedMulticalls, executeMulticallBatches, expectedBalanceDeltas, fetchCreditAccountSlice, fetchRedstonePayloads, filterDust, filterDustUSD, findCallTo, findCallWithInput, findCuratorMarketConfigurator, findExecuteBytes, fmtBinaryMask, fnSigToName, formatBN, formatBNvalue, formatDuration, formatLeverage, formatNumberToString_, formatPercentage, formatTimestamp, functionArgsToMap, functionArgsToRecord, generateCastTraceCall, getAccountTargetCollateral, getAdapterActionAbi, getAdapterDeployParamsAbi, getAdapterType, getAssetType, getCastTraceArgs, getChain, getCuratorName, getFunctionSignature, getLegacyStrategyTarget, getNetworkType, getRawPriceUpdates, getSimulateWithPriceUpdatesError, getWithdrawalCompressorAddress, halfRAY, hasAdapterDeployParamsAbi, healthFactorBps, hexEq, hydrateAddressProvider, iBalancerV3RouterAbi, iBalancerV3RouterAdapterAbi, iBalancerV3WrapperAbi, iBalancerV3WrapperAdapterAbi, iBaseOnRampAbi, iBaseRewardPoolAbi, iBoosterAbi, iCamelotV3AdapterAbi, iCamelotV3RouterAbi, iConvexV1BaseRewardPoolAdapterAbi, iConvexV1BoosterAdapterAbi, iCreditAccountAbi, iCurvePoolAbi, iCurvePoolStableNGAbi, iCurvePool_2Abi, iCurvePool_3Abi, iCurvePool_4Abi, iCurveV1StableNgAdapterAbi, iCurveV1_2AssetsAdapterAbi, iCurveV1_3AssetsAdapterAbi, iCurveV1_4AssetsAdapterAbi, iDaiUsdsAbi, iDaiUsdsAdapterAbi, iERC4626Abi, iERC4626ReferralAbi, iFluidDexAbi, iFluidDexAdapterAbi, iInfinifiGatewayAbi, iInfinifiGatewayAdapterAbi, iInfinifiUnwindingGatewayAbi, iInfinifiUnwindingGatewayAdapterAbi, iKelpLRTDepositPoolGatewayAbi, iKelpLRTWithdrawalManagerGatewayAbi, iKelpLrtDepositPoolAdapterAbi, iKelpLrtDepositPoolGatewayAbi, iKelpLrtWithdrawalManagerAdapterAbi, iKelpLrtWithdrawalManagerGatewayAbi, iLidoV1AdapterAbi, iMellow4626VaultAdapterAbi, iMellowClaimerAbi, iMellowClaimerAdapterAbi, iMellowWrapperAbi, iMellowWrapperAdapterAbi, iMidasGatewayAdapterV311Abi, iMidasGatewayV311Abi, iMidasIssuanceVaultAdapterV310Abi, iMidasIssuanceVaultV310Abi, iMidasRedemptionVaultAdapterV310Abi, iMidasRedemptionVaultGatewayV310Abi, iPendleRouterAbi, iPendleRouterAdapterAbi, iSecuritizeOnRampAbi, iSecuritizeOnRampAdapterV310Abi, iSecuritizeRedemptionGatewayAdapterV311Abi, iSecuritizeRedemptionGatewayV311Abi, iStakingRewardsAbi, iStakingRewardsAdapterAbi, iTraderJoeRouterAbi, iTraderJoeRouterAdapterAbi, iUniswapV2AdapterAbi, iUniswapV2Router02Abi, iUniswapV3Abi, iUniswapV3AdapterAbi, iUniswapV4AdapterAbi, iUniswapV4GatewayAbi, iUpshiftVaultAdapterAbi, iUpshiftVaultGatewayAbi, iVelodromeV2RouterAbi, iVelodromeV2RouterAdapterAbi, isCloseOrRepay, isDust, isLPPriceFeed, isPhantomToken, isPoolOperation, isPublicNetwork, isRWAFactory, isRWAOperation, isRWAToken, isStrategyCollateral, isSunsetPool, isSunsetStrategy, isSupportedNetwork, isUpdatablePriceFeed, isV310, isVersionRange, isZeroBalance, iwstETHAbi, iwstEthv1AdapterAbi, json_parse, json_stringify, lidoV1_WETHGatewayAbi, makeReplayState, mellowDvvAdapterAbi, minSeizedAmount, numberWithCommas, onchainSDKOptionsSchema, optimalHFForPartialLiquidation, optimalRepaidAmount, parseAdapterAction, parseAdapterDeployParams, parseFacadeOperationCalldata, parseOperationCalldata, parsePoolOperationCalldata, parsePosNegAmount, parseRWAFactoryOperationCalldata, percentFmt, pickStrategyTargetCollateral, previewAdjustStrategyPosition, previewExitOrRepayStrategyPosition, previewOperation, raise, rayToBps, rayToNumber, replayInnerOperations, replayMulticall, resolveDelayedClaimIntent, resolveProtocolCall, retry, rewardsFromTransfers, roundUpQuota, sendRawTx, shortAddress, shortHash, simulateCall, simulateMulticall, simulateWithPriceUpdates, soleNonUnderlyingCollateral, strategyName, swapFromTransfers, toAddress, toBN, toBigInt, toChainIds, toClaimableWithdrawal, toCreditAccountSlice, toNetTransfers, toPendingWithdrawal, toRequestableWithdrawal, toSignificant, toToken, toTokenAmount, toWithdrawalStatus, usdToNumber, watchBlocksAsync };
|
|
304
|
+
export { ADDRESS_0X0, ADDRESS_PROVIDER_V310, AP_ACCOUNT_FACTORY, AP_ACL, AP_BOT_LIST, AP_BYTECODE_REPOSITORY, AP_CONTRACTS_REGISTER, AP_CONTROLLER_TIMELOCK, AP_CREDIT_ACCOUNT_COMPRESSOR, AP_CREDIT_SUITE_COMPRESSOR, AP_DATA_COMPRESSOR, AP_DELEVERAGE_BOT_HV, AP_DELEVERAGE_BOT_LV, AP_DELEVERAGE_BOT_PEGGED, AP_GAUGE_COMPRESSOR, AP_GEAR_STAKING, AP_GEAR_TOKEN, AP_INFLATION_ATTACK_BLOCKER, AP_INSOLVENCY_CHECKER, AP_MARKET_COMPRESSOR, AP_MARKET_CONFIGURATOR, AP_PARTIAL_LIQUIDATION_BOT, AP_PERIPHERY_COMPRESSOR, AP_PRICE_FEED_COMPRESSOR, AP_PRICE_FEED_STORE, AP_PRICE_ORACLE, AP_REDEMPTION_LOGGER, AP_REWARDS_COMPRESSOR, AP_ROUTER, AP_RWA_COMPRESSOR, AP_TOKEN_COMPRESSOR, AP_TREASURY, AP_WETH_GATEWAY, AP_WETH_TOKEN, AP_ZAPPER_REGISTER, AP_ZERO_PRICE_FEED, AbstractAdapterContract, AbstractLPPriceFeedContract, AbstractPriceFeedContract, AbstractWithdrawalCompressorContract, AccountBotsService, AccountMigratorAdapterContract, AdapterType, AddressMap, AddressProviderV310Contract, AddressSet, AssetsMap, BLOCKS_PER_WEEK_BY_NETWORK, BalancerStablePriceFeedContract, BalancerV3PoolStatus, BalancerV3RouterAdapterContract, BalancerV3WrapperAdapterContract, BalancerWeightedPriceFeedContract, BaseContract, BasePlugin, BigIntMath, BotPermissions, BoundedPriceFeedContract, CamelotV3AdapterContract, ChainContractsRegister, ChainNotConfiguredError, CompositePriceFeedContract, Construct, ContractParseError, ConvexV1BaseRewardPoolAdapterContract, ConvexV1BoosterAdapterContract, CreditAccountCompressor, CreditAccountCompressorV310Contract, CreditAccountOperationsService, CreditAccountState, CreditAccountsServiceV310, CreditConfiguratorV310Contract, CreditFacadeV310BaseContract, CreditFacadeV310Contract, CreditManagerV310Contract, CreditSuite, Curve2AssetsAdapterContract, Curve3AssetsAdapterContract, Curve4AssetsAdapterContract, CurveCryptoPriceFeedContract, CurveStablePriceFeedContract, CurveUSDPriceFeedContract, CurveV1AdapterStETHContract, CurveV1StableNGAdapterContract, DEFAULT_QUOTA_BUFFER_BPS, DEGEN_NFT_MIDAS, DEGEN_NFT_SECURITIZE, DELAYED_INTENT_TYPES, DELAYED_INTENT_VERSION, DUST_THRESHOLD, DaiUsdsAdapterContract, ERC4626AdapterContract, ERC4626ReferralAdapterContract, EXECUTE_BYTES_SELECTOR, Erc4626PriceFeedContract, ExternalPriceFeedContract, FluidDexAdapterContract, GaugeContract, IERC20ZapperContract, IETHZapperContract, InfinifiGatewayAdapterContract, InfinifiUnwindingGatewayAdapterContract, KelpLRTDepositPoolAdapterContract, KelpLRTWithdrawalManagerAdapterContract, LEVERAGE_DECIMALS, LIQUIDATION_APPROVAL_BUFFER, LIQUIDATION_COMPRESSOR_V313_ADDRESS, LidoV1AdapterContract, LinearInterestRateModelContract, LiquidationsService, MAX_INT, MAX_LEVERAGE_BUFFER_BPS, MAX_UINT16, MAX_UINT256, MIN_HEALTH_FACTOR_FACADE, MIN_HEALTH_FACTOR_FORM, MIN_HF_LIMITED, MIN_INT96, MIN_SAFE_HEALTH_FACTOR_FORM, MULTICALL_ADDRESS, MarketRegister, MarketSuite, MellowClaimerAdapterContract, MellowDVVAdapterContract, MellowERC4626VaultAdapterContract, MellowLRTPriceFeedContract, MellowWrapperAdapterContract, MidasDegenNFT, MidasGatewayAdapterContract, MidasIssuanceVaultAdapterContract, MidasLiquidatorContract, MidasRedemptionVaultAdapterContract, MissingSerializedParamsError, MultichainConstruct, MultichainLiquidationsService, MultichainOpportunitiesService, MultichainPositionsService, MultichainSDK, NATIVE_ADDRESS, NON_STRATEGY_PHANTOM_TOKEN_TYPES, NOT_DEPLOYED, NO_VERSION, NetworkType, OnchainSDK, OpportunitiesService, PARTIAL_LIQUIDATION_BUFFER_BPS, PERCENTAGE_DECIMALS, PERCENTAGE_FACTOR, PERCENTAGE_FACTOR_1KK, PERIPHERY_CONTRACTS, PHANTOM_TOKEN_CONTRACT_TYPES, PHANTOM_TOKEN_MIDAS_REDEMPTION, PHANTOM_TOKEN_SECURITIZE_REDEMPTION, PRICE_DECIMALS, PRICE_DECIMALS_POW, PartialPriceFeedInitError, PendlePairStatus, PendleRouterAdapterContract, PendleTWAPPTPriceFeed, PendleTokenType, PeripheryCompressorV310Contract, PluginStateVersionError, PoolService, PoolSuite, PoolV310Contract, PositionsService, PriceFeedRef, PriceFeedRegister, PriceOracleV310Contract, PythPriceFeed, RAMP_DURATION_BY_NETWORK, RAY, RAY_DECIMALS_POW, RWARegistry, RWA_LIQUIDATOR_MIDAS, RWA_LIQUIDATOR_SECURITIZE, RWA_ON_DEMAND_LP_MONOPOLIZED, RWA_UNDERLYING_DEFAULT, RWA_UNDERLYING_ON_DEMAND, RedemptionLoggerV310Contract, RedstonePriceFeedContract, RouterV310Contract, SDKConstruct, SECONDS_PER_YEAR, SLIPPAGE_DECIMALS, STATE_VERSION, SUPPORTED_NETWORKS, SdkAlreadyAttachedError, SdkChainMismatchError, SdkMissingChainStateError, SdkNotAttachedError, SdkRWADataNotLoadedError, SdkStateVersionMismatchError, SdkSyncFailedError, SecuritizeDegenNFT, SecuritizeLiquidatorContract, SecuritizeOnRampAdapterContract, SecuritizeRWAFactory, SecuritizeRedemptionGatewayAdapterContract, SimulateWithPriceUpdatesError, SimulationError, StakingRewardsAdapterContract, TokensMeta, TraderJoePoolVersion, TraderJoeRouterAdapterContract, TypedObjectUtils, UniswapV2AdapterContract, UniswapV3AdapterContract, UniswapV4AdapterContract, UpshiftVaultAdapterContract, VERSION_RANGE_310, VelodromeV2RouterAdapterContract, VotingContractStatus, WAD, WAD_DECIMALS_POW, WithdrawalCompressorV310Contract, WithdrawalCompressorV311Contract, WithdrawalCompressorV313Contract, WstETHPriceFeedContract, WstETHV1AdapterContract, YearnPriceFeedContract, ZapperContract, ZeroPriceFeedContract, ZodAddress, ZodBigInt, ZodHex, accountSnapshotFromCreditAccountData, adapterActionAbi, adapterActionSelectors, adapterActionSignatures, adapterConstructorAbi, allTransfersAsTokenAmounts, amountOf, assetsMap, attachOptionsSchema, botPermissionsToString, bpsToRay, buildDelayedStrategyPositionOperationPreview, bytes32ToString, calcBorrowApy, calcBorrowRate, calcDefaultQuota, calcEffectiveBorrowApy, calcHealthFactor, calcLiquidationPrice, calcLiquidationPriceForTarget, calcMaxLeverage, calcNetStrategyApy, calcPositionLeverage, calcQuotaRate, calcQuotaUpdate, calcRecommendedQuota, calcTimeToLiquidationMs, calcUtilization, calcUtilizationRaw, chains, checkAccountQuotas, checkBorrowLimit, checkCollateralFunding, checkCollateralised, checkCreditAccountFrozen, checkCreditManagerPaused, checkCreditOperation, checkDebtLimits, checkEmergencyLiquidator, checkForbiddenToken, checkHealthFactors, checkIncreaseDebt, checkIncreaseQuota, checkLeverage, checkLiquidation, checkLiquidationEligibility, checkLiquidationFunding, checkLiquidatorEligible, checkMarket, checkMarketExpired, checkMidasAccountGreenlist, checkObtained, checkOperation, checkPoolFunding, checkPoolLiquidity, checkPoolOperation, checkPoolPaused, checkPoolSunset, checkQuotaCount, checkQuotaLimit, checkRWAOpenRequirements, checkRWAOpening, checkReservePriceLimited, checkSimulation, checkWallet, checkWalletAllowance, checkWalletBalance, childLogger, classifyCloseOrRepay, classifyCurveOperation, classifyInnerOperations, collateralPriceInUnderlying, collectTraces, createAdapter, createAddressProvider, createPriceOracle, createRawTx, createRedemptionLogger, createRouter, createWithdrawalCompressor, createZapper, abi as creditFacadeV310Abi, curveAddLiquidityFromTransfers, curveRemoveLiquidityFromTransfers, decodeDelayedIntent, detectDelayedClaim, detectDelayedOperation, detectNetwork, dominantCollateral, encodeDelayedIntent, erc4626ReferralAdapterAbi, estimateClaimableAt, estimateRawTxGas, etherscanApiUrl, etherscanUrl, executeDelegatedMulticalls, executeMulticallBatches, expectedBalanceDeltas, fetchCreditAccountSlice, fetchRedstonePayloads, filterDust, filterDustUSD, findCallTo, findCallWithInput, findCuratorMarketConfigurator, findExecuteBytes, fmtBinaryMask, fnSigToName, formatBN, formatBNvalue, formatDuration, formatLeverage, formatNumberToString_, formatPercentage, formatTimestamp, functionArgsToMap, functionArgsToRecord, generateCastTraceCall, getAccountTargetCollateral, getAdapterActionAbi, getAdapterDeployParamsAbi, getAdapterType, getAssetType, getCastTraceArgs, getChain, getCuratorName, getFunctionSignature, getLegacyStrategyTarget, getNetworkType, getRawPriceUpdates, getSimulateWithPriceUpdatesError, getWithdrawalCompressorAddress, halfRAY, hasAdapterDeployParamsAbi, healthFactorBps, hexEq, hydrateAddressProvider, iBalancerV3RouterAbi, iBalancerV3RouterAdapterAbi, iBalancerV3WrapperAbi, iBalancerV3WrapperAdapterAbi, iBaseOnRampAbi, iBaseRewardPoolAbi, iBoosterAbi, iCamelotV3AdapterAbi, iCamelotV3RouterAbi, iConvexV1BaseRewardPoolAdapterAbi, iConvexV1BoosterAdapterAbi, iCreditAccountAbi, iCurvePoolAbi, iCurvePoolStableNGAbi, iCurvePool_2Abi, iCurvePool_3Abi, iCurvePool_4Abi, iCurveV1StableNgAdapterAbi, iCurveV1_2AssetsAdapterAbi, iCurveV1_3AssetsAdapterAbi, iCurveV1_4AssetsAdapterAbi, iDaiUsdsAbi, iDaiUsdsAdapterAbi, iERC4626Abi, iERC4626ReferralAbi, iFluidDexAbi, iFluidDexAdapterAbi, iInfinifiGatewayAbi, iInfinifiGatewayAdapterAbi, iInfinifiUnwindingGatewayAbi, iInfinifiUnwindingGatewayAdapterAbi, iKelpLRTDepositPoolGatewayAbi, iKelpLRTWithdrawalManagerGatewayAbi, iKelpLrtDepositPoolAdapterAbi, iKelpLrtDepositPoolGatewayAbi, iKelpLrtWithdrawalManagerAdapterAbi, iKelpLrtWithdrawalManagerGatewayAbi, iLidoV1AdapterAbi, iMellow4626VaultAdapterAbi, iMellowClaimerAbi, iMellowClaimerAdapterAbi, iMellowWrapperAbi, iMellowWrapperAdapterAbi, iMidasGatewayAdapterV311Abi, iMidasGatewayV311Abi, iMidasIssuanceVaultAdapterV310Abi, iMidasIssuanceVaultV310Abi, iMidasRedemptionVaultAdapterV310Abi, iMidasRedemptionVaultGatewayV310Abi, iPendleRouterAbi, iPendleRouterAdapterAbi, iSecuritizeOnRampAbi, iSecuritizeOnRampAdapterV310Abi, iSecuritizeRedemptionGatewayAdapterV311Abi, iSecuritizeRedemptionGatewayV311Abi, iStakingRewardsAbi, iStakingRewardsAdapterAbi, iTraderJoeRouterAbi, iTraderJoeRouterAdapterAbi, iUniswapV2AdapterAbi, iUniswapV2Router02Abi, iUniswapV3Abi, iUniswapV3AdapterAbi, iUniswapV4AdapterAbi, iUniswapV4GatewayAbi, iUpshiftVaultAdapterAbi, iUpshiftVaultGatewayAbi, iVelodromeV2RouterAbi, iVelodromeV2RouterAdapterAbi, isCloseOrRepay, isDust, isLPPriceFeed, isPhantomToken, isPoolOperation, isPublicNetwork, isRWAFactory, isRWAOperation, isRWAToken, isStrategyCollateral, isSunsetPool, isSunsetStrategy, isSupportedNetwork, isUpdatablePriceFeed, isV310, isVersionRange, isZeroBalance, iwstETHAbi, iwstEthv1AdapterAbi, json_parse, json_stringify, lidoV1_WETHGatewayAbi, makeReplayState, mellowDvvAdapterAbi, midasGreenlistsAccount, minSeizedAmount, numberWithCommas, onchainSDKOptionsSchema, optimalHFForPartialLiquidation, optimalRepaidAmount, parseAdapterAction, parseAdapterDeployParams, parseFacadeOperationCalldata, parseOperationCalldata, parsePoolOperationCalldata, parsePosNegAmount, parseRWAFactoryOperationCalldata, percentFmt, pickStrategyTargetCollateral, previewAdjustStrategyPosition, previewExitOrRepayStrategyPosition, previewOperation, raise, rayToBps, rayToNumber, replayInnerOperations, replayMulticall, resolveDelayedClaimIntent, resolveProtocolCall, retry, rewardsFromTransfers, roundUpQuota, sendRawTx, shortAddress, shortHash, simulateCall, simulateMulticall, simulateWithPriceUpdates, soleNonUnderlyingCollateral, strategyName, swapFromTransfers, toAddress, toBN, toBigInt, toChainIds, toClaimableWithdrawal, toCreditAccountSlice, toNetTransfers, toPendingWithdrawal, toRequestableWithdrawal, toSignificant, toToken, toTokenAmount, toWithdrawalStatus, usdToNumber, watchBlocksAsync };
|
|
@@ -169,13 +169,21 @@ var MidasGatewayAdapterContract = class extends AbstractAdapterContract {
|
|
|
169
169
|
return { redeemer };
|
|
170
170
|
}
|
|
171
171
|
/**
|
|
172
|
+
* Whether `calldata` is `receiveGreenlist()`, the call that grants the
|
|
173
|
+
* Midas greenlisted role to the credit account.
|
|
174
|
+
*/
|
|
175
|
+
isReceiveGreenlist(calldata) {
|
|
176
|
+
return calldata === receiveGreenlistCalldata;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
172
179
|
* `receiveGreenlist()` is prepended by `prependMidasReceiveGreenlist`
|
|
173
180
|
* before the balance bracket when the multicall mints a permissioned
|
|
174
|
-
* mToken: it only
|
|
175
|
-
* so it is legal outside a bracket and
|
|
181
|
+
* mToken: it only grants the Midas greenlisted role to the credit
|
|
182
|
+
* account and is balance-neutral, so it is legal outside a bracket and
|
|
183
|
+
* leaves balances untouched.
|
|
176
184
|
*/
|
|
177
185
|
replayOutOfBracketCall(_balances, calldata) {
|
|
178
|
-
return calldata
|
|
186
|
+
return this.isReceiveGreenlist(calldata);
|
|
179
187
|
}
|
|
180
188
|
applyBalanceChanges(balances, decoded) {
|
|
181
189
|
switch (decoded.functionName) {
|
|
@@ -35,7 +35,7 @@ function calcHealthFactor(props) {
|
|
|
35
35
|
const scale = 10n ** BigInt(decimalsByToken.get(token) ?? 18);
|
|
36
36
|
return amount * price / scale;
|
|
37
37
|
};
|
|
38
|
-
const
|
|
38
|
+
const assetValue = snapshot.assets.reduce((acc, { token, balance }) => {
|
|
39
39
|
if (balance <= 10n) return acc;
|
|
40
40
|
const lt = BigInt(lts.get(token) ?? 0);
|
|
41
41
|
const tokenLtWeighted = (convertToUSD(token, balance, true) ?? 0n) * lt;
|
|
@@ -44,8 +44,8 @@ function calcHealthFactor(props) {
|
|
|
44
44
|
const quotaWeighted = (convertToUSD(underlying, quotaBalance) ?? 0n) * PERCENTAGE_FACTOR;
|
|
45
45
|
return acc + (quota ? BigIntMath.min(quotaWeighted, tokenLtWeighted) : tokenLtWeighted);
|
|
46
46
|
}, 0n);
|
|
47
|
-
const
|
|
48
|
-
const hf =
|
|
47
|
+
const borrowedValue = convertToUSD(underlying, snapshot.totalDebt) ?? 0n;
|
|
48
|
+
const hf = borrowedValue > 0n ? assetValue / borrowedValue : 0n;
|
|
49
49
|
return Number(hf);
|
|
50
50
|
}
|
|
51
51
|
//#endregion
|
|
@@ -11,10 +11,11 @@ import { classifyCloseOrRepay, isCloseOrRepay } from "./preview/detectCloseOrRep
|
|
|
11
11
|
import { detectDelayedClaim, resolveDelayedClaimIntent } from "./preview/detectDelayedClaim.js";
|
|
12
12
|
import { detectDelayedOperation } from "./preview/detectDelayedOperation.js";
|
|
13
13
|
import { estimateClaimableAt } from "./preview/estimateClaimableAt.js";
|
|
14
|
+
import { midasGreenlistsAccount } from "./preview/midasGreenlistsAccount.js";
|
|
14
15
|
import { previewAdjustStrategyPosition } from "./preview/previewAdjustStrategyPosition.js";
|
|
15
16
|
import { previewExitOrRepayStrategyPosition } from "./preview/previewExitOrRepayStrategyPosition.js";
|
|
16
17
|
import { makeReplayState, replayInnerOperations } from "./preview/replayInnerOperations.js";
|
|
17
18
|
import { replayMulticall } from "./preview/replayMulticall.js";
|
|
18
19
|
import { previewOperation } from "./preview/previewOperation.js";
|
|
19
20
|
import "./preview/index.js";
|
|
20
|
-
export { CreditAccountState, buildDelayedStrategyPositionOperationPreview, classifyCloseOrRepay, classifyInnerOperations, detectDelayedClaim, detectDelayedOperation, estimateClaimableAt, isCloseOrRepay, isPoolOperation, isRWAOperation, makeReplayState, parseFacadeOperationCalldata, parseOperationCalldata, parsePoolOperationCalldata, parseRWAFactoryOperationCalldata, previewAdjustStrategyPosition, previewExitOrRepayStrategyPosition, previewOperation, replayInnerOperations, replayMulticall, resolveDelayedClaimIntent };
|
|
21
|
+
export { CreditAccountState, buildDelayedStrategyPositionOperationPreview, classifyCloseOrRepay, classifyInnerOperations, detectDelayedClaim, detectDelayedOperation, estimateClaimableAt, isCloseOrRepay, isPoolOperation, isRWAOperation, makeReplayState, midasGreenlistsAccount, parseFacadeOperationCalldata, parseOperationCalldata, parsePoolOperationCalldata, parseRWAFactoryOperationCalldata, previewAdjustStrategyPosition, previewExitOrRepayStrategyPosition, previewOperation, replayInnerOperations, replayMulticall, resolveDelayedClaimIntent };
|
|
@@ -4,9 +4,10 @@ import { classifyCloseOrRepay, isCloseOrRepay } from "./detectCloseOrRepay.js";
|
|
|
4
4
|
import { detectDelayedClaim, resolveDelayedClaimIntent } from "./detectDelayedClaim.js";
|
|
5
5
|
import { detectDelayedOperation } from "./detectDelayedOperation.js";
|
|
6
6
|
import { estimateClaimableAt } from "./estimateClaimableAt.js";
|
|
7
|
+
import { midasGreenlistsAccount } from "./midasGreenlistsAccount.js";
|
|
7
8
|
import { previewAdjustStrategyPosition } from "./previewAdjustStrategyPosition.js";
|
|
8
9
|
import { previewExitOrRepayStrategyPosition } from "./previewExitOrRepayStrategyPosition.js";
|
|
9
10
|
import { makeReplayState, replayInnerOperations } from "./replayInnerOperations.js";
|
|
10
11
|
import { replayMulticall } from "./replayMulticall.js";
|
|
11
12
|
import { previewOperation } from "./previewOperation.js";
|
|
12
|
-
export { CreditAccountState, buildDelayedStrategyPositionOperationPreview, classifyCloseOrRepay, detectDelayedClaim, detectDelayedOperation, estimateClaimableAt, isCloseOrRepay, makeReplayState, previewAdjustStrategyPosition, previewExitOrRepayStrategyPosition, previewOperation, replayInnerOperations, replayMulticall, resolveDelayedClaimIntent };
|
|
13
|
+
export { CreditAccountState, buildDelayedStrategyPositionOperationPreview, classifyCloseOrRepay, detectDelayedClaim, detectDelayedOperation, estimateClaimableAt, isCloseOrRepay, makeReplayState, midasGreenlistsAccount, previewAdjustStrategyPosition, previewExitOrRepayStrategyPosition, previewOperation, replayInnerOperations, replayMulticall, resolveDelayedClaimIntent };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { MidasGatewayAdapterContract } from "../../market/adapters/contracts/MidasGatewayAdapterContract.js";
|
|
2
|
+
//#region src/onchain/preview/preview/midasGreenlistsAccount.ts
|
|
3
|
+
/**
|
|
4
|
+
* Whether the multicall grants the Midas greenlisted role to the credit
|
|
5
|
+
* account via `receiveGreenlist()`.
|
|
6
|
+
*/
|
|
7
|
+
function midasGreenlistsAccount(sdk, multicall) {
|
|
8
|
+
for (const op of multicall) {
|
|
9
|
+
if (op.operation !== "Execute") continue;
|
|
10
|
+
const adapter = sdk.getContract(op.adapter);
|
|
11
|
+
if (adapter instanceof MidasGatewayAdapterContract && adapter.isReceiveGreenlist(op.calldata)) return true;
|
|
12
|
+
}
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
//#endregion
|
|
16
|
+
export { midasGreenlistsAccount };
|
|
@@ -2,6 +2,7 @@ import { AP_WETH_TOKEN } from "../../constants/address-provider.js";
|
|
|
2
2
|
import { asEstimated } from "../../../model/previews.js";
|
|
3
3
|
import { sdkOk } from "../../../model/result.js";
|
|
4
4
|
import "../../../model/index.js";
|
|
5
|
+
import { midasGreenlistsAccount } from "./midasGreenlistsAccount.js";
|
|
5
6
|
import { unwrapNativeCollateral } from "./unwrapNativeCollateral.js";
|
|
6
7
|
//#region src/onchain/preview/preview/previewOpenStrategyPosition.ts
|
|
7
8
|
function previewOpenStrategyPosition(sdk, input, operation, replay) {
|
|
@@ -16,7 +17,7 @@ function previewOpenStrategyPosition(sdk, input, operation, replay) {
|
|
|
16
17
|
warning ??= priced.error;
|
|
17
18
|
return priced.value;
|
|
18
19
|
};
|
|
19
|
-
const netValue = before.balances.sum(price) + after.collateralAdded.sum(price);
|
|
20
|
+
const netValue = before.balances.sum(price) + after.collateralAdded.sum(price) - after.collateralWithdrawn.sum(price);
|
|
20
21
|
const unwrapped = unwrapNativeCollateral(after.collateralAdded.toAssets(), value, sdk.addressProvider.getAddress(AP_WETH_TOKEN, 0));
|
|
21
22
|
if (!unwrapped.ok) return unwrapped;
|
|
22
23
|
const collateral = unwrapped.data;
|
|
@@ -26,13 +27,15 @@ function previewOpenStrategyPosition(sdk, input, operation, replay) {
|
|
|
26
27
|
...asEstimated(sdk.positions.projection(snap, { availableLiquidityChange: -account.totalDebt })),
|
|
27
28
|
targetCollateral: targetAsset ? oracle.toTokenAmount(targetAsset.token, targetAsset.balance) : void 0,
|
|
28
29
|
collateralAdded: collateral.map((a) => oracle.toTokenAmount(a.token, a.balance)),
|
|
30
|
+
collateralWithdrawn: after.collateralWithdrawn.toAssets().map((a) => oracle.toTokenAmount(a.token, a.balance)),
|
|
29
31
|
warning
|
|
30
32
|
};
|
|
31
33
|
return sdkOk({
|
|
32
34
|
...projection,
|
|
33
35
|
operation: "OpenCreditAccount",
|
|
34
36
|
...operation.operation === "MultiCall" || operation.operation === "BotMulticall" || operation.operation === "RWAMulticall" ? { creditAccount: operation.creditAccount } : {},
|
|
35
|
-
..."args" in operation ? { rwaArgs: operation.args } : {}
|
|
37
|
+
..."args" in operation ? { rwaArgs: operation.args } : {},
|
|
38
|
+
midasGreenlistsAccount: midasGreenlistsAccount(sdk, operation.multicall)
|
|
36
39
|
});
|
|
37
40
|
}
|
|
38
41
|
/**
|
|
@@ -26,6 +26,7 @@ async function checkCreditOperation(args) {
|
|
|
26
26
|
const market = suite.market;
|
|
27
27
|
const underlying = toToken(sdk, market.pool.underlying);
|
|
28
28
|
const isOpening = preview.operation === "OpenCreditAccount";
|
|
29
|
+
const isEmptyOpening = preview.operation === "OpenCreditAccount" && preview.totalDebt.value === 0n && preview.collateralAdded.length === 0 && preview.quotas.length === 0;
|
|
29
30
|
const protocol = [
|
|
30
31
|
...checkMarket(suite),
|
|
31
32
|
...checkDebtLimits({
|
|
@@ -33,7 +34,7 @@ async function checkCreditOperation(args) {
|
|
|
33
34
|
minDebt: suite.creditFacade.minDebt,
|
|
34
35
|
maxDebt: suite.creditFacade.maxDebt,
|
|
35
36
|
underlying,
|
|
36
|
-
allowZero: !isOpening,
|
|
37
|
+
allowZero: !isOpening || isEmptyOpening,
|
|
37
38
|
maxBorrowAmount: suite.maxBorrowAmount()
|
|
38
39
|
}),
|
|
39
40
|
...checkIncreaseDebt(suite, preview, underlying),
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { accountNotMidasGreenlisted } from "../../../model/errors/operation-errors.js";
|
|
2
|
+
import { unexpectedFailure } from "../../../model/errors/prepare-errors.js";
|
|
3
|
+
import "../../../model/index.js";
|
|
4
|
+
import { toToken } from "../helpers/token.js";
|
|
5
|
+
import "../helpers/index.js";
|
|
6
|
+
//#region src/onchain/validation/bundles/checkMidasAccountGreenlist.ts
|
|
7
|
+
/**
|
|
8
|
+
* Whether the credit account already holds the Midas greenlisted role
|
|
9
|
+
* this permissioned mToken requires of its holder.
|
|
10
|
+
*/
|
|
11
|
+
async function checkMidasAccountGreenlist(input) {
|
|
12
|
+
const { sdk, preview, nft, tokens } = input;
|
|
13
|
+
if (nft.protocol !== "midas") return [];
|
|
14
|
+
if (tokens.length === 0) return [];
|
|
15
|
+
const account = preview.creditAccount;
|
|
16
|
+
if (!account) return tokens.map((token) => accountNotMidasGreenlisted({
|
|
17
|
+
token: toToken(sdk, token),
|
|
18
|
+
creditManager: preview.creditManager
|
|
19
|
+
}));
|
|
20
|
+
return (await Promise.all(tokens.map((token) => checkAccountRole({
|
|
21
|
+
sdk,
|
|
22
|
+
nft,
|
|
23
|
+
account,
|
|
24
|
+
token,
|
|
25
|
+
preview
|
|
26
|
+
})))).flat();
|
|
27
|
+
}
|
|
28
|
+
async function checkAccountRole(input) {
|
|
29
|
+
const { sdk, nft, account, token, preview } = input;
|
|
30
|
+
try {
|
|
31
|
+
const requirements = await nft.getOpenAccountRequirements(account, { tokenOutAddress: token });
|
|
32
|
+
if (nft.isRegistered(requirements)) return [];
|
|
33
|
+
return [accountNotMidasGreenlisted({
|
|
34
|
+
token: toToken(sdk, token),
|
|
35
|
+
creditManager: preview.creditManager,
|
|
36
|
+
creditAccount: account
|
|
37
|
+
})];
|
|
38
|
+
} catch (cause) {
|
|
39
|
+
return [unexpectedFailure(cause, "read the Midas account greenlist")];
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//#endregion
|
|
43
|
+
export { checkMidasAccountGreenlist };
|
|
@@ -1,23 +1,33 @@
|
|
|
1
1
|
import { AddressSet } from "../../utils/AddressSet.js";
|
|
2
|
+
import { checkMidasAccountGreenlist } from "./checkMidasAccountGreenlist.js";
|
|
2
3
|
import { checkRWAOpenRequirements } from "./checkRWAOpenRequirements.js";
|
|
3
4
|
//#region src/onchain/validation/bundles/checkRWAOpening.ts
|
|
4
5
|
/**
|
|
5
6
|
* Per KYC-gated token among `collateralAdded ∪ quotas`, whether the
|
|
6
|
-
* borrower still has to register or sign before this opening can land
|
|
7
|
+
* borrower still has to register or sign before this opening can land,
|
|
8
|
+
* and whether a Midas credit account may hold the mToken.
|
|
7
9
|
*/
|
|
8
10
|
async function checkRWAOpening(input) {
|
|
9
11
|
const { sdk, preview, sender } = input;
|
|
10
12
|
const nft = await sdk.marketRegister.findCreditManager(preview.creditManager).degenNFT();
|
|
11
13
|
if (!nft) return [];
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
|
|
14
|
+
const nftTokens = new AddressSet(await nft.getTokens());
|
|
15
|
+
let candidates = new AddressSet([...preview.collateralAdded.map((a) => a.token.address), ...preview.quotas.map((q) => q.token.address)]).asArray();
|
|
16
|
+
candidates = candidates.filter((token) => nftTokens.has(token));
|
|
17
|
+
let tokensToCheck = candidates;
|
|
18
|
+
if (tokensToCheck.length === 0 && !preview.creditAccount && nft.protocol === "midas") tokensToCheck = nftTokens.asArray();
|
|
19
|
+
return (await Promise.all([...tokensToCheck.map((token) => checkRWAOpenRequirements({
|
|
15
20
|
sdk,
|
|
16
21
|
wallet: sender,
|
|
17
22
|
creditManager: preview.creditManager,
|
|
18
23
|
token,
|
|
19
24
|
providedArgs: preview.rwaArgs
|
|
20
|
-
}))
|
|
25
|
+
})), checkMidasAccountGreenlist({
|
|
26
|
+
sdk,
|
|
27
|
+
preview,
|
|
28
|
+
nft,
|
|
29
|
+
tokens: candidates
|
|
30
|
+
})])).flat();
|
|
21
31
|
}
|
|
22
32
|
//#endregion
|
|
23
33
|
export { checkRWAOpening };
|
|
@@ -7,6 +7,7 @@ import { checkIncreaseDebt } from "./checkIncreaseDebt.js";
|
|
|
7
7
|
import { checkIncreaseQuota } from "./checkIncreaseQuota.js";
|
|
8
8
|
import { checkMarket } from "./checkMarket.js";
|
|
9
9
|
import { checkObtained } from "./checkObtained.js";
|
|
10
|
+
import { checkMidasAccountGreenlist } from "./checkMidasAccountGreenlist.js";
|
|
10
11
|
import { checkRWAOpenRequirements } from "./checkRWAOpenRequirements.js";
|
|
11
12
|
import { checkRWAOpening } from "./checkRWAOpening.js";
|
|
12
13
|
import { checkCreditOperation } from "./checkCreditOperation.js";
|
|
@@ -15,4 +16,4 @@ import { checkLiquidationFunding } from "./checkLiquidationFunding.js";
|
|
|
15
16
|
import { checkWallet } from "./checkWallet.js";
|
|
16
17
|
import { checkPoolFunding } from "./checkPoolFunding.js";
|
|
17
18
|
import { checkPoolOperation } from "./checkPoolOperation.js";
|
|
18
|
-
export { checkAccountQuotas, checkCollateralFunding, checkCreditOperation, checkHealthFactors, checkIncreaseDebt, checkIncreaseQuota, checkLiquidationEligibility, checkLiquidationFunding, checkMarket, checkObtained, checkPoolFunding, checkPoolOperation, checkRWAOpenRequirements, checkRWAOpening, checkWallet, checkWalletAllowance, checkWalletBalance };
|
|
19
|
+
export { checkAccountQuotas, checkCollateralFunding, checkCreditOperation, checkHealthFactors, checkIncreaseDebt, checkIncreaseQuota, checkLiquidationEligibility, checkLiquidationFunding, checkMarket, checkMidasAccountGreenlist, checkObtained, checkPoolFunding, checkPoolOperation, checkRWAOpenRequirements, checkRWAOpening, checkWallet, checkWalletAllowance, checkWalletBalance };
|
|
@@ -28,6 +28,7 @@ import { checkIncreaseDebt } from "./bundles/checkIncreaseDebt.js";
|
|
|
28
28
|
import { checkIncreaseQuota } from "./bundles/checkIncreaseQuota.js";
|
|
29
29
|
import { checkMarket } from "./bundles/checkMarket.js";
|
|
30
30
|
import { checkObtained } from "./bundles/checkObtained.js";
|
|
31
|
+
import { checkMidasAccountGreenlist } from "./bundles/checkMidasAccountGreenlist.js";
|
|
31
32
|
import { checkRWAOpenRequirements } from "./bundles/checkRWAOpenRequirements.js";
|
|
32
33
|
import { checkRWAOpening } from "./bundles/checkRWAOpening.js";
|
|
33
34
|
import { checkCreditOperation } from "./bundles/checkCreditOperation.js";
|
|
@@ -41,4 +42,4 @@ import { checkLiquidation } from "./checkLiquidation.js";
|
|
|
41
42
|
import { checkOperation } from "./checkOperation.js";
|
|
42
43
|
import { checkSimulation } from "./checkSimulation.js";
|
|
43
44
|
import { raise } from "./raise.js";
|
|
44
|
-
export { MIN_HEALTH_FACTOR_FACADE, MIN_HEALTH_FACTOR_FORM, MIN_HF_LIMITED, MIN_SAFE_HEALTH_FACTOR_FORM, amountOf, checkAccountQuotas, checkBorrowLimit, checkCollateralFunding, checkCollateralised, checkCreditAccountFrozen, checkCreditManagerPaused, checkCreditOperation, checkDebtLimits, checkEmergencyLiquidator, checkForbiddenToken, checkHealthFactors, checkIncreaseDebt, checkIncreaseQuota, checkLeverage, checkLiquidation, checkLiquidationEligibility, checkLiquidationFunding, checkLiquidatorEligible, checkMarket, checkMarketExpired, checkObtained, checkOperation, checkPoolFunding, checkPoolLiquidity, checkPoolOperation, checkPoolPaused, checkPoolSunset, checkQuotaCount, checkQuotaLimit, checkRWAOpenRequirements, checkRWAOpening, checkReservePriceLimited, checkSimulation, checkWallet, checkWalletAllowance, checkWalletBalance, raise, toToken, toTokenAmount };
|
|
45
|
+
export { MIN_HEALTH_FACTOR_FACADE, MIN_HEALTH_FACTOR_FORM, MIN_HF_LIMITED, MIN_SAFE_HEALTH_FACTOR_FORM, amountOf, checkAccountQuotas, checkBorrowLimit, checkCollateralFunding, checkCollateralised, checkCreditAccountFrozen, checkCreditManagerPaused, checkCreditOperation, checkDebtLimits, checkEmergencyLiquidator, checkForbiddenToken, checkHealthFactors, checkIncreaseDebt, checkIncreaseQuota, checkLeverage, checkLiquidation, checkLiquidationEligibility, checkLiquidationFunding, checkLiquidatorEligible, checkMarket, checkMarketExpired, checkMidasAccountGreenlist, checkObtained, checkOperation, checkPoolFunding, checkPoolLiquidity, checkPoolOperation, checkPoolPaused, checkPoolSunset, checkQuotaCount, checkQuotaLimit, checkRWAOpenRequirements, checkRWAOpening, checkReservePriceLimited, checkSimulation, checkWallet, checkWalletAllowance, checkWalletBalance, raise, toToken, toTokenAmount };
|
|
@@ -16,6 +16,8 @@ var ExecuteApi = class {
|
|
|
16
16
|
switch (request.kind) {
|
|
17
17
|
case "pool": return poolTx(sdk, request);
|
|
18
18
|
case "open": return openTx(sdk, request);
|
|
19
|
+
case "openEmpty": return openEmptyTx(sdk, request);
|
|
20
|
+
case "borrow": return borrowTx(sdk, request);
|
|
19
21
|
case "account": return accountTx(sdk, request);
|
|
20
22
|
}
|
|
21
23
|
}
|
|
@@ -62,17 +64,75 @@ async function openTx(sdk, request) {
|
|
|
62
64
|
reopenCreditAccount: state.creditAccount,
|
|
63
65
|
permits: {},
|
|
64
66
|
referralCode: 0n,
|
|
65
|
-
rwaOptions: await openRwaOptions(sdk, request)
|
|
67
|
+
rwaOptions: await openRwaOptions(sdk, request, request.targetToken)
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* The opening with nothing in it: no debt to draw, no collateral to take, no
|
|
72
|
+
* path to run and no quota to buy, so `openCA` is left with the price updates
|
|
73
|
+
* the market demands and the facade's own `openCreditAccount`.
|
|
74
|
+
*
|
|
75
|
+
* Nothing is read off the preparation because there is nothing on it. The
|
|
76
|
+
* account holds no token, so an RWA market has none to gate on either.
|
|
77
|
+
**/
|
|
78
|
+
function openEmptyTx(sdk, request) {
|
|
79
|
+
return sdk.accounts.openCA({
|
|
80
|
+
creditManager: request.creditManager,
|
|
81
|
+
to: request.wallet,
|
|
82
|
+
collateral: [],
|
|
83
|
+
ethAmount: 0n,
|
|
84
|
+
debt: 0n,
|
|
85
|
+
calls: [],
|
|
86
|
+
averageQuota: [],
|
|
87
|
+
minQuota: [],
|
|
88
|
+
permits: {},
|
|
89
|
+
referralCode: 0n
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* A loan is an opening whose debt leaves again, so it is the same `openCA`
|
|
94
|
+
* with `withdrawToken` set: the facade draws the debt, takes the collateral,
|
|
95
|
+
* runs whatever path buys the payout, and sweeps that payout to the wallet.
|
|
96
|
+
*
|
|
97
|
+
* Both quota branches are the one the state carries. An opening has two
|
|
98
|
+
* because the balances it lands on are a router quote; here the account is
|
|
99
|
+
* left holding the collateral the caller named, and a named amount has no
|
|
100
|
+
* floor to differ from.
|
|
101
|
+
**/
|
|
102
|
+
async function borrowTx(sdk, request) {
|
|
103
|
+
const { creditManager, wallet, ethAmount, sim } = request;
|
|
104
|
+
const { state } = sim.data;
|
|
105
|
+
const collateral = {
|
|
106
|
+
token: state.collateral.token.address,
|
|
107
|
+
balance: state.collateral.value
|
|
108
|
+
};
|
|
109
|
+
return sdk.accounts.openCA({
|
|
110
|
+
creditManager,
|
|
111
|
+
to: wallet,
|
|
112
|
+
collateral: [collateral],
|
|
113
|
+
ethAmount,
|
|
114
|
+
debt: state.totalDebt.value,
|
|
115
|
+
calls: state.calls,
|
|
116
|
+
withdrawToken: state.borrowed.token.address,
|
|
117
|
+
averageQuota: state.quotaIncrease,
|
|
118
|
+
minQuota: state.quotaIncrease,
|
|
119
|
+
reopenCreditAccount: state.creditAccount,
|
|
120
|
+
permits: {},
|
|
121
|
+
referralCode: 0n,
|
|
122
|
+
rwaOptions: await openRwaOptions(sdk, request, collateral.token)
|
|
66
123
|
});
|
|
67
124
|
}
|
|
68
125
|
/**
|
|
69
126
|
* The documented `openCA` contract: ask the market for its open requirements
|
|
70
127
|
* and hand them back as operation args, with the caller's cached signatures
|
|
71
|
-
* attached. `undefined` on non-RWA markets and when no
|
|
128
|
+
* attached. `undefined` on non-RWA markets and when no token is named.
|
|
129
|
+
*
|
|
130
|
+
* `token` is the one the account ends up holding, which is what an RWA market
|
|
131
|
+
* gates on: the opening's target, and the borrow's collateral.
|
|
72
132
|
**/
|
|
73
|
-
async function openRwaOptions(sdk, request) {
|
|
74
|
-
if (!
|
|
75
|
-
const requirements = await sdk.accounts.getOpenAccountRequirements(request.wallet, request.creditManager, { tokenOutAddress:
|
|
133
|
+
async function openRwaOptions(sdk, request, token) {
|
|
134
|
+
if (!token) return;
|
|
135
|
+
const requirements = await sdk.accounts.getOpenAccountRequirements(request.wallet, request.creditManager, { tokenOutAddress: token });
|
|
76
136
|
if (requirements?.protocol !== "securitize") return;
|
|
77
137
|
return {
|
|
78
138
|
protocol: "securitize",
|
|
@@ -195,26 +195,33 @@ var PrepareApi = class extends MultichainConstruct {
|
|
|
195
195
|
}
|
|
196
196
|
}
|
|
197
197
|
/**
|
|
198
|
+
* {@inheritDoc IOpportunitiesPrepare.openEmptyCreditAccount}
|
|
199
|
+
**/
|
|
200
|
+
async openEmptyCreditAccount(strategy) {
|
|
201
|
+
try {
|
|
202
|
+
const sdk = await this.#chain(strategy.chainId);
|
|
203
|
+
const at = stateBlock(sdk);
|
|
204
|
+
const result = await service(sdk).openEmptyAccountIntent({
|
|
205
|
+
sdk,
|
|
206
|
+
creditManager: strategy.creditManager
|
|
207
|
+
});
|
|
208
|
+
return result.ok ? sdkOk(at) : methodError(result);
|
|
209
|
+
} catch (e) {
|
|
210
|
+
return sdkErr(unexpectedFailure(e));
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
198
214
|
* {@inheritDoc IOpportunitiesPrepare.openNewStrategy}
|
|
199
215
|
**/
|
|
200
216
|
async openNewStrategy(strategy, params) {
|
|
201
217
|
try {
|
|
202
218
|
const sdk = await this.#chain(strategy.chainId);
|
|
203
219
|
const at = stateBlock(sdk);
|
|
204
|
-
if (params.empty) return opened(await service(sdk).openStrategyIntent({
|
|
205
|
-
sdk,
|
|
206
|
-
creditManager: strategy.creditManager,
|
|
207
|
-
empty: true
|
|
208
|
-
}), at);
|
|
209
220
|
const targetToken = params.targetToken ?? sdk.marketRegister.findCreditManager(strategy.creditManager).strategyTargetCollateral;
|
|
210
221
|
if (!targetToken) return sdkErr(noStrategyTargetCollateral(strategy.creditManager));
|
|
211
|
-
|
|
212
|
-
if (
|
|
213
|
-
|
|
214
|
-
if (!reused || !isAddressEqual(reused.creditManager, strategy.creditManager)) return sdkErr(creditAccountNotFound(params.creditAccount));
|
|
215
|
-
if (reused.totalDebt > 0n || reused.tokens.some((t) => t.quota > 0n)) return sdkErr(creditAccountNotEmpty(params.creditAccount));
|
|
216
|
-
creditAccount = reused;
|
|
217
|
-
}
|
|
222
|
+
const reused = await reusable(sdk, strategy, params.creditAccount);
|
|
223
|
+
if (reused && "error" in reused) return reused;
|
|
224
|
+
const creditAccount = reused?.account;
|
|
218
225
|
return opened(await service(sdk).openStrategyIntent({
|
|
219
226
|
sdk,
|
|
220
227
|
creditManager: strategy.creditManager,
|
|
@@ -231,6 +238,30 @@ var PrepareApi = class extends MultichainConstruct {
|
|
|
231
238
|
}
|
|
232
239
|
}
|
|
233
240
|
/**
|
|
241
|
+
* {@inheritDoc IOpportunitiesPrepare.borrow}
|
|
242
|
+
**/
|
|
243
|
+
async borrow(strategy, params) {
|
|
244
|
+
try {
|
|
245
|
+
const sdk = await this.#chain(strategy.chainId);
|
|
246
|
+
const at = stateBlock(sdk);
|
|
247
|
+
const reused = await reusable(sdk, strategy, params.creditAccount);
|
|
248
|
+
if (reused && "error" in reused) return reused;
|
|
249
|
+
return borrowed(await service(sdk).borrowIntent({
|
|
250
|
+
sdk,
|
|
251
|
+
creditManager: strategy.creditManager,
|
|
252
|
+
collateralToken: params.collateralToken,
|
|
253
|
+
collateralAmount: params.collateralAmount,
|
|
254
|
+
borrowToken: params.borrowToken,
|
|
255
|
+
borrowAmount: params.borrowAmount,
|
|
256
|
+
slippage: params.slippage,
|
|
257
|
+
quotaReserve: params.quotaReserve,
|
|
258
|
+
creditAccount: reused?.account
|
|
259
|
+
}), at);
|
|
260
|
+
} catch (e) {
|
|
261
|
+
return sdkErr(unexpectedFailure(e));
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
234
265
|
* {@inheritDoc IOpportunitiesPrepare.depositStrategy}
|
|
235
266
|
**/
|
|
236
267
|
async depositStrategy(position, params) {
|
|
@@ -353,6 +384,21 @@ var PrepareApi = class extends MultichainConstruct {
|
|
|
353
384
|
});
|
|
354
385
|
}
|
|
355
386
|
/**
|
|
387
|
+
* {@inheritDoc IOpportunitiesPrepare.maxBorrow}
|
|
388
|
+
**/
|
|
389
|
+
maxBorrow(strategy, params) {
|
|
390
|
+
const sdk = this.sdk.chain(strategy.chainId);
|
|
391
|
+
return service(sdk).maxBorrow({
|
|
392
|
+
sdk,
|
|
393
|
+
creditManager: strategy.creditManager,
|
|
394
|
+
collateralToken: params.collateralToken,
|
|
395
|
+
collateralAmount: params.collateralAmount,
|
|
396
|
+
borrowToken: params.borrowToken,
|
|
397
|
+
targetHF: params.targetHF,
|
|
398
|
+
quotaReserve: params.quotaReserve
|
|
399
|
+
});
|
|
400
|
+
}
|
|
401
|
+
/**
|
|
356
402
|
* The account a bare `max*` read weighs. These reads answer a number, not
|
|
357
403
|
* an envelope, so an account the markets do not hold is thrown rather than
|
|
358
404
|
* described, see {@link IOpportunitiesPrepare.maxWithdraw}.
|
|
@@ -438,6 +484,25 @@ async function slice(sdk, creditAccount) {
|
|
|
438
484
|
return data && toCreditAccountSlice(data);
|
|
439
485
|
}
|
|
440
486
|
/**
|
|
487
|
+
* The pre-opened account a request asks to be run on, held to what "pre-opened"
|
|
488
|
+
* means: this manager's, owing nothing and holding no quota.
|
|
489
|
+
*
|
|
490
|
+
* Shared by the two flows that put something on a fresh account — an opening
|
|
491
|
+
* and a borrow — so both hold a reused one to the same terms. Whatever
|
|
492
|
+
* balances sit on it are left to the flow: an opening routes them, a borrow
|
|
493
|
+
* leaves them where they are.
|
|
494
|
+
*
|
|
495
|
+
* @returns Nothing when the request named no account, the refusal to answer
|
|
496
|
+
* with when it named one that does not qualify, and the slice otherwise
|
|
497
|
+
**/
|
|
498
|
+
async function reusable(sdk, strategy, creditAccount) {
|
|
499
|
+
if (!creditAccount) return;
|
|
500
|
+
const account = await slice(sdk, creditAccount);
|
|
501
|
+
if (!account || !isAddressEqual(account.creditManager, strategy.creditManager)) return sdkErr(creditAccountNotFound(creditAccount));
|
|
502
|
+
if (account.totalDebt > 0n || account.tokens.some((t) => t.quota > 0n)) return sdkErr(creditAccountNotEmpty(creditAccount));
|
|
503
|
+
return { account };
|
|
504
|
+
}
|
|
505
|
+
/**
|
|
441
506
|
* The operation a claim resumes, or `undefined` when there is none to resume:
|
|
442
507
|
* a withdrawal requested without an intent, or one read through a compressor
|
|
443
508
|
* too old to report it. Every intent the engine records can be finished,
|
|
@@ -537,6 +602,15 @@ function opened(result, at) {
|
|
|
537
602
|
}
|
|
538
603
|
/**
|
|
539
604
|
* {@inheritDoc planned}
|
|
605
|
+
**/
|
|
606
|
+
function borrowed(result, at) {
|
|
607
|
+
return result.ok ? sdkOk({
|
|
608
|
+
state: result.state,
|
|
609
|
+
...at
|
|
610
|
+
}) : methodError(result);
|
|
611
|
+
}
|
|
612
|
+
/**
|
|
613
|
+
* {@inheritDoc planned}
|
|
540
614
|
*
|
|
541
615
|
* Both routes are payload, error and all: `errors` says why a missing one is
|
|
542
616
|
* missing, and it stays on the error when neither route answered, since that is
|
|
@@ -11,10 +11,10 @@ import { detectChain } from "./detectChain.js";
|
|
|
11
11
|
import { isOutOfSyncError } from "./isOutOfSyncError.js";
|
|
12
12
|
import { isRateLimitError } from "./isRateLimitError.js";
|
|
13
13
|
import { isTransientError } from "./isTransientError.js";
|
|
14
|
-
import { GreenlistMidasGatewayProps, RWAKycFailure, RegisterMidasInvestorProps, RegisterRWAInvestorProps, RegisterRWAInvestorResult, RegisterSecuritizeInvestorProps, greenlistMidasGateway, registerMidasInvestor, registerRWAInvestor, registerSecuritizeInvestor
|
|
14
|
+
import { GreenlistMidasGatewayProps, RWAKycFailure, RegisterMidasInvestorProps, RegisterRWAInvestorProps, RegisterRWAInvestorResult, RegisterSecuritizeInvestorProps, greenlistMidasGateway, registerMidasInvestor, registerRWAInvestor, registerSecuritizeInvestor } from "./kycUtils.js";
|
|
15
15
|
import { LogSplitterTransportOptions, isRangeError, logSplitterTransport } from "./logSplitterTransport.js";
|
|
16
16
|
import { setLTZero, setLTs } from "./ltUtils.js";
|
|
17
|
-
import { RestoreMidasIssuanceVaultPause, UnpauseMidasIssuanceVaultProps, unpauseMidasIssuanceVault } from "./midasUtils.js";
|
|
17
|
+
import { RestoreMidasIssuanceVaultPause, UnpauseMidasIssuanceVaultProps, collectMidasGateways, collectMidasMTokens, unpauseMidasIssuanceVault } from "./midasUtils.js";
|
|
18
18
|
import { migrateFaucet } from "./migrateFaucet.js";
|
|
19
19
|
import { IMinter } from "./mint/types.js";
|
|
20
20
|
import { createMinter } from "./mint/factory.js";
|
|
@@ -26,4 +26,4 @@ import { EnableDSTokenBackDatingProps, RestoreDSTokenBackDating, claimDSToken, c
|
|
|
26
26
|
import { httpTransportOptionsSchema } from "./transports.js";
|
|
27
27
|
import { ONCHAIN_EXECUTION_ID_ADDRESS, VerifyTestnetParams, verifyTestnet } from "./verifyTestnet.js";
|
|
28
28
|
import { MakePendingWithdrawalsClaimableOptions, makePendingWithdrawalsClaimable } from "./withdrawalUtils.js";
|
|
29
|
-
export { AccountOpener, AccountOpenerOptions, AnvilActions, AnvilClient, AnvilClientConfig, AnvilDealParameters, AnvilNodeInfo, AnvilRPCSchema, CheckMulticallFn, Create2Deployer, Create2Parameters, DEFAULT_CREATE2_SALT, DetectedCall, EnableDSTokenBackDatingProps, EnsureExistsUsingPublicCreate2ReturnType, EthCallMethod, EthCallRequest, EthCallSpy, GetCreate2AddressParameters, GreenlistMidasGatewayProps, IMinter, type LogSplitterTransportOptions, MakePendingWithdrawalsClaimableOptions, NoAvailableTransportsError, ONCHAIN_EXECUTION_ID_ADDRESS, OpenAccountHumanizedPreview, OpenAccountResult, OpenAccountsResult, OpenTxRevertedError, PUBLIC_CREATE2_FACTORY, PoolDepositResult, ProviderConfig, ProviderStatus, RWAKycFailure, RegisterMidasInvestorProps, RegisterRWAInvestorProps, RegisterRWAInvestorResult, RegisterSecuritizeInvestorProps, ReplaceStorageParams, ResilientTransportOptions, RestoreDSTokenBackDating, RestoreMidasIssuanceVaultPause, RevolverTransport, RevolverTransportConfig, RevolverTransportValue, RpcErrorResult, RpcProvider, RpcResponse, RpcSuccessResult, SUPPORTED_RPC_PROVIDERS, SelectionStrategy, TargetAccount, UnpauseMidasIssuanceVaultProps, VerifyTestnetParams, anvilNodeInfo, calcLiquidatableLTs, claimDSToken, claimDSTokens, claimFromFaucet, createAnvilClient, createMinter, deployUsingPublicCreate2, detectChain, enableDSTokenBackDating, evmMineDetailed, extendAnvilClient, getAlchemyUrl, getAnkrUrl, getDrpcUrl, getErpcKey, getPublicCreate2Address, getRpcProviderUrl, getThirdWebUrl, greenlistMidasGateway, httpTransportOptionsSchema, iDegenNftv2Abi, iFaucetAbi, iOnchainExecutionIdAbi, iOwnableAbi, iaclTraitAbi, isAnvil, isDeployedUsingPublicCreate2, isOutOfSyncError, isRangeError, isRateLimitError, isTransientError, logSplitterTransport, makePendingWithdrawalsClaimable, migrateFaucet, providerConfigSchema, registerMidasInvestor, registerRWAInvestor, registerSecuritizeInvestor, replaceStorage, resilientTransport, resilientTransportOptionsSchema, revolverTransportConfigBaseSchema, revolverTransportConfigSchema, rpcProvidersSchema, setLTZero, setLTs, unpauseMidasIssuanceVault, verifyTestnet
|
|
29
|
+
export { AccountOpener, AccountOpenerOptions, AnvilActions, AnvilClient, AnvilClientConfig, AnvilDealParameters, AnvilNodeInfo, AnvilRPCSchema, CheckMulticallFn, Create2Deployer, Create2Parameters, DEFAULT_CREATE2_SALT, DetectedCall, EnableDSTokenBackDatingProps, EnsureExistsUsingPublicCreate2ReturnType, EthCallMethod, EthCallRequest, EthCallSpy, GetCreate2AddressParameters, GreenlistMidasGatewayProps, IMinter, type LogSplitterTransportOptions, MakePendingWithdrawalsClaimableOptions, NoAvailableTransportsError, ONCHAIN_EXECUTION_ID_ADDRESS, OpenAccountHumanizedPreview, OpenAccountResult, OpenAccountsResult, OpenTxRevertedError, PUBLIC_CREATE2_FACTORY, PoolDepositResult, ProviderConfig, ProviderStatus, RWAKycFailure, RegisterMidasInvestorProps, RegisterRWAInvestorProps, RegisterRWAInvestorResult, RegisterSecuritizeInvestorProps, ReplaceStorageParams, ResilientTransportOptions, RestoreDSTokenBackDating, RestoreMidasIssuanceVaultPause, RevolverTransport, RevolverTransportConfig, RevolverTransportValue, RpcErrorResult, RpcProvider, RpcResponse, RpcSuccessResult, SUPPORTED_RPC_PROVIDERS, SelectionStrategy, TargetAccount, UnpauseMidasIssuanceVaultProps, VerifyTestnetParams, anvilNodeInfo, calcLiquidatableLTs, claimDSToken, claimDSTokens, claimFromFaucet, collectMidasGateways, collectMidasMTokens, createAnvilClient, createMinter, deployUsingPublicCreate2, detectChain, enableDSTokenBackDating, evmMineDetailed, extendAnvilClient, getAlchemyUrl, getAnkrUrl, getDrpcUrl, getErpcKey, getPublicCreate2Address, getRpcProviderUrl, getThirdWebUrl, greenlistMidasGateway, httpTransportOptionsSchema, iDegenNftv2Abi, iFaucetAbi, iOnchainExecutionIdAbi, iOwnableAbi, iaclTraitAbi, isAnvil, isDeployedUsingPublicCreate2, isOutOfSyncError, isRangeError, isRateLimitError, isTransientError, logSplitterTransport, makePendingWithdrawalsClaimable, migrateFaucet, providerConfigSchema, registerMidasInvestor, registerRWAInvestor, registerSecuritizeInvestor, replaceStorage, resilientTransport, resilientTransportOptionsSchema, revolverTransportConfigBaseSchema, revolverTransportConfigSchema, rpcProvidersSchema, setLTZero, setLTs, unpauseMidasIssuanceVault, verifyTestnet };
|
|
@@ -4,10 +4,6 @@ import "../onchain/index.js";
|
|
|
4
4
|
import { AnvilClient } from "./createAnvilClient.js";
|
|
5
5
|
import { Address, Hex } from "viem";
|
|
6
6
|
//#region src/dev/kycUtils.d.ts
|
|
7
|
-
/**
|
|
8
|
-
* Writes to a contract, mines a block and waits for the receipt
|
|
9
|
-
*/
|
|
10
|
-
declare function writeAndWait(anvil: AnvilClient, params: Parameters<AnvilClient["writeContract"]>[0]): Promise<Hex>;
|
|
11
7
|
interface RegisterSecuritizeInvestorProps {
|
|
12
8
|
anvil: AnvilClient;
|
|
13
9
|
/**
|
|
@@ -138,4 +134,4 @@ interface RegisterRWAInvestorResult {
|
|
|
138
134
|
*/
|
|
139
135
|
declare function registerRWAInvestor(props: RegisterRWAInvestorProps): Promise<RegisterRWAInvestorResult>;
|
|
140
136
|
//#endregion
|
|
141
|
-
export { GreenlistMidasGatewayProps, RWAKycFailure, RegisterMidasInvestorProps, RegisterRWAInvestorProps, RegisterRWAInvestorResult, RegisterSecuritizeInvestorProps, greenlistMidasGateway, registerMidasInvestor, registerRWAInvestor, registerSecuritizeInvestor
|
|
137
|
+
export { GreenlistMidasGatewayProps, RWAKycFailure, RegisterMidasInvestorProps, RegisterRWAInvestorProps, RegisterRWAInvestorResult, RegisterSecuritizeInvestorProps, greenlistMidasGateway, registerMidasInvestor, registerRWAInvestor, registerSecuritizeInvestor };
|