@gearbox-protocol/sdk 16.3.0-next.5 → 17.0.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.
Files changed (113) hide show
  1. package/dist/cjs/model/errors/operation-errors.js +1 -1
  2. package/dist/cjs/model/index.js +2 -2
  3. package/dist/cjs/model/rwa.js +4 -4
  4. package/dist/cjs/model/rwa.schema.js +4 -4
  5. package/dist/cjs/offchain/opportunities/OffchainOpportunities.js +1 -1
  6. package/dist/cjs/onchain/accounts/CreditAccountsServiceV310.js +3 -1
  7. package/dist/cjs/onchain/accounts/intents/guards.js +4 -4
  8. package/dist/cjs/onchain/accounts/liquidations/LiquidationsService.js +1 -1
  9. package/dist/cjs/onchain/index.js +4 -4
  10. package/dist/cjs/onchain/market/credit/CreditSuite.js +12 -26
  11. package/dist/cjs/onchain/market/rwa/midas/MidasDegenNFT.js +5 -45
  12. package/dist/cjs/onchain/market/rwa/securitize/SecuritizeDegenNFT.js +12 -56
  13. package/dist/cjs/onchain/market/rwa/securitize/SecuritizeRWAFactory.js +37 -0
  14. package/dist/cjs/onchain/opportunities/MultichainOpportunitiesService.js +2 -8
  15. package/dist/cjs/onchain/opportunities/OpportunitiesService.js +4 -16
  16. package/dist/cjs/onchain/preview/parse/parseRWAFactoryOperationCalldata.js +2 -2
  17. package/dist/cjs/onchain/validation/bundles/checkCreditOperation.js +8 -10
  18. package/dist/cjs/onchain/validation/bundles/checkDraw.js +28 -0
  19. package/dist/cjs/onchain/validation/bundles/{checkIncreaseQuota.js → checkQuotasAsked.js} +3 -3
  20. package/dist/cjs/onchain/validation/bundles/checkRWAOpenRequirements.js +9 -9
  21. package/dist/cjs/onchain/validation/bundles/checkRWAOpening.js +5 -6
  22. package/dist/cjs/onchain/validation/bundles/index.js +4 -4
  23. package/dist/cjs/onchain/validation/checkSimulation.js +4 -11
  24. package/dist/cjs/onchain/validation/checks/checkBorrowLimit.js +1 -1
  25. package/dist/cjs/onchain/validation/checks/checkDebtLimits.js +2 -3
  26. package/dist/cjs/onchain/validation/checks/checkPoolLiquidity.js +1 -1
  27. package/dist/cjs/onchain/validation/index.js +4 -4
  28. package/dist/cjs/sdk/execute/ExecuteApi.js +2 -2
  29. package/dist/cjs/sdk/opportunities/OpportunitiesNamespace.js +3 -9
  30. package/dist/esm/dev/AccountOpener.js +1 -1
  31. package/dist/esm/dev/withdrawalUtils.js +1 -1
  32. package/dist/esm/history/trace/extractTransfers.js +1 -1
  33. package/dist/esm/model/errors/operation-errors.js +1 -1
  34. package/dist/esm/model/index.js +3 -3
  35. package/dist/esm/model/rwa.js +4 -4
  36. package/dist/esm/model/rwa.schema.js +5 -5
  37. package/dist/esm/offchain/opportunities/OffchainOpportunities.js +1 -1
  38. package/dist/esm/onchain/accounts/CreditAccountsServiceV310.js +5 -3
  39. package/dist/esm/onchain/accounts/intents/guards.js +4 -4
  40. package/dist/esm/onchain/accounts/liquidations/LiquidationsService.js +2 -2
  41. package/dist/esm/onchain/accounts/withdrawal-compressor/RedemptionLoggerV310Contract.js +1 -1
  42. package/dist/esm/onchain/accounts/withdrawal-compressor/WithdrawalCompressorV310Contract.js +1 -1
  43. package/dist/esm/onchain/accounts/withdrawal-compressor/WithdrawalCompressorV311Contract.js +1 -1
  44. package/dist/esm/onchain/accounts/withdrawal-compressor/WithdrawalCompressorV313Contract.js +1 -1
  45. package/dist/esm/onchain/base/TokensMeta.js +3 -3
  46. package/dist/esm/onchain/core/createAddressProvider.js +1 -1
  47. package/dist/esm/onchain/index.js +3 -3
  48. package/dist/esm/onchain/market/adapters/contracts/AccountMigratorAdapterContract.js +1 -1
  49. package/dist/esm/onchain/market/adapters/contracts/ERC4626AdapterContract.js +1 -1
  50. package/dist/esm/onchain/market/credit/CreditFacadeV310BaseContract.js +1 -1
  51. package/dist/esm/onchain/market/credit/CreditSuite.js +12 -26
  52. package/dist/esm/onchain/market/pool/PoolV310Contract.js +1 -1
  53. package/dist/esm/onchain/market/rwa/createDegenNFT.js +1 -1
  54. package/dist/esm/onchain/market/rwa/midas/MidasDegenNFT.js +5 -45
  55. package/dist/esm/onchain/market/rwa/securitize/SecuritizeDegenNFT.js +10 -55
  56. package/dist/esm/onchain/market/rwa/securitize/SecuritizeRWAFactory.js +37 -0
  57. package/dist/esm/onchain/market/zapper/IETHZapperContract.js +1 -1
  58. package/dist/esm/onchain/market/zapper/ZapperContract.js +1 -1
  59. package/dist/esm/onchain/opportunities/MultichainOpportunitiesService.js +2 -8
  60. package/dist/esm/onchain/opportunities/OpportunitiesService.js +4 -16
  61. package/dist/esm/onchain/preview/parse/parseRWAFactoryOperationCalldata.js +2 -2
  62. package/dist/esm/onchain/preview/preview/previewPoolPositionOperation.js +2 -2
  63. package/dist/esm/onchain/utils/viem/simulateWithPriceUpdates.js +1 -1
  64. package/dist/esm/onchain/validation/bundles/checkCreditOperation.js +8 -10
  65. package/dist/esm/onchain/validation/bundles/checkDraw.js +27 -0
  66. package/dist/esm/onchain/validation/bundles/{checkIncreaseQuota.js → checkQuotasAsked.js} +3 -3
  67. package/dist/esm/onchain/validation/bundles/checkRWAOpenRequirements.js +9 -9
  68. package/dist/esm/onchain/validation/bundles/checkRWAOpening.js +5 -6
  69. package/dist/esm/onchain/validation/bundles/index.js +3 -3
  70. package/dist/esm/onchain/validation/checkSimulation.js +4 -11
  71. package/dist/esm/onchain/validation/checks/checkBorrowLimit.js +1 -1
  72. package/dist/esm/onchain/validation/checks/checkDebtLimits.js +2 -3
  73. package/dist/esm/onchain/validation/checks/checkPoolLiquidity.js +1 -1
  74. package/dist/esm/onchain/validation/index.js +3 -3
  75. package/dist/esm/sdk/execute/ExecuteApi.js +2 -2
  76. package/dist/esm/sdk/opportunities/OpportunitiesNamespace.js +3 -9
  77. package/dist/types/model/errors/operation-errors.d.ts +6 -12
  78. package/dist/types/model/index.d.ts +3 -3
  79. package/dist/types/model/opportunities.d.ts +7 -6
  80. package/dist/types/model/rwa.d.ts +27 -47
  81. package/dist/types/model/rwa.schema.d.ts +3 -3
  82. package/dist/types/offchain/opportunities/OffchainOpportunities.d.ts +2 -1
  83. package/dist/types/offchain/opportunities/types.d.ts +4 -1
  84. package/dist/types/onchain/accounts/types.d.ts +2 -4
  85. package/dist/types/onchain/index.d.ts +4 -4
  86. package/dist/types/onchain/market/credit/CreditSuite.d.ts +3 -8
  87. package/dist/types/onchain/market/credit/types.d.ts +2 -2
  88. package/dist/types/onchain/market/index.d.ts +2 -2
  89. package/dist/types/onchain/market/pool/types.d.ts +1 -1
  90. package/dist/types/onchain/market/rwa/index.d.ts +2 -2
  91. package/dist/types/onchain/market/rwa/midas/MidasDegenNFT.d.ts +4 -19
  92. package/dist/types/onchain/market/rwa/securitize/SecuritizeDegenNFT.d.ts +4 -24
  93. package/dist/types/onchain/market/rwa/securitize/SecuritizeRWAFactory.d.ts +14 -2
  94. package/dist/types/onchain/market/rwa/types.d.ts +37 -39
  95. package/dist/types/onchain/opportunities/MultichainOpportunitiesService.d.ts +1 -5
  96. package/dist/types/onchain/opportunities/OpportunitiesService.d.ts +3 -10
  97. package/dist/types/onchain/opportunities/types.d.ts +1 -6
  98. package/dist/types/onchain/validation/bundles/checkCreditOperation.d.ts +2 -3
  99. package/dist/types/onchain/validation/bundles/{checkIncreaseDebt.d.ts → checkDraw.d.ts} +7 -7
  100. package/dist/types/onchain/validation/bundles/{checkIncreaseQuota.d.ts → checkQuotasAsked.d.ts} +3 -3
  101. package/dist/types/onchain/validation/bundles/checkRWAOpenRequirements.d.ts +2 -2
  102. package/dist/types/onchain/validation/bundles/checkRWAOpening.d.ts +3 -3
  103. package/dist/types/onchain/validation/bundles/index.d.ts +3 -3
  104. package/dist/types/onchain/validation/checkSimulation.d.ts +3 -6
  105. package/dist/types/onchain/validation/checks/checkBorrowLimit.d.ts +1 -1
  106. package/dist/types/onchain/validation/checks/checkDebtLimits.d.ts +0 -4
  107. package/dist/types/onchain/validation/checks/checkPoolLiquidity.d.ts +1 -1
  108. package/dist/types/onchain/validation/index.d.ts +3 -3
  109. package/dist/types/sdk/opportunities/OpportunitiesNamespace.d.ts +1 -5
  110. package/dist/types/sdk/opportunities/types.d.ts +3 -9
  111. package/package.json +1 -1
  112. package/dist/cjs/onchain/validation/bundles/checkIncreaseDebt.js +0 -28
  113. package/dist/esm/onchain/validation/bundles/checkIncreaseDebt.js +0 -27
@@ -216,11 +216,11 @@ import { checkAccountQuotas } from "./validation/bundles/checkAccountQuotas.js";
216
216
  import { checkWalletAllowance } from "./validation/bundles/checkWalletAllowance.js";
217
217
  import { checkWalletBalance } from "./validation/bundles/checkWalletBalance.js";
218
218
  import { checkCollateralFunding } from "./validation/bundles/checkCollateralFunding.js";
219
+ import { checkDraw } from "./validation/bundles/checkDraw.js";
219
220
  import { checkHealthFactors } from "./validation/bundles/checkHealthFactors.js";
220
- import { checkIncreaseDebt } from "./validation/bundles/checkIncreaseDebt.js";
221
- import { checkIncreaseQuota } from "./validation/bundles/checkIncreaseQuota.js";
222
221
  import { checkMarket } from "./validation/bundles/checkMarket.js";
223
222
  import { checkObtained } from "./validation/bundles/checkObtained.js";
223
+ import { checkQuotasAsked } from "./validation/bundles/checkQuotasAsked.js";
224
224
  import { checkRWAOpenRequirements } from "./validation/bundles/checkRWAOpenRequirements.js";
225
225
  import { checkRWAOpening } from "./validation/bundles/checkRWAOpening.js";
226
226
  import { checkCreditOperation } from "./validation/bundles/checkCreditOperation.js";
@@ -298,4 +298,4 @@ import { replayMulticall } from "./preview/preview/replayMulticall.js";
298
298
  import { previewOperation } from "./preview/preview/previewOperation.js";
299
299
  import "./preview/index.js";
300
300
  import "./types/index.js";
301
- 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, 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 };
301
+ 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, checkDraw, checkEmergencyLiquidator, checkForbiddenToken, checkHealthFactors, checkLeverage, checkLiquidation, checkLiquidationEligibility, checkLiquidationFunding, checkLiquidatorEligible, checkMarket, checkMarketExpired, checkObtained, checkOperation, checkPoolFunding, checkPoolLiquidity, checkPoolOperation, checkPoolPaused, checkPoolSunset, checkQuotaCount, checkQuotaLimit, checkQuotasAsked, checkRWAOpenRequirements, checkRWAOpening, 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 };
@@ -1,5 +1,5 @@
1
- import { accountMigratorAbi } from "../../../../abi/AccountMigrator.js";
2
1
  import { AbstractAdapterContract } from "./AbstractAdapter.js";
2
+ import { accountMigratorAbi } from "../../../../abi/AccountMigrator.js";
3
3
  //#region src/onchain/market/adapters/contracts/AccountMigratorAdapterContract.ts
4
4
  const abi = accountMigratorAbi;
5
5
  const protocolAbi = accountMigratorAbi;
@@ -1,6 +1,6 @@
1
- import { ierc4626AdapterAbi } from "../../../../abi/ierc4626Adapter.js";
2
1
  import { MissingSerializedParamsError } from "../../../base/errors.js";
3
2
  import "../../../base/index.js";
3
+ import { ierc4626AdapterAbi } from "../../../../abi/ierc4626Adapter.js";
4
4
  import { iERC4626Abi } from "../abi/targetContractAbi.js";
5
5
  import { fnSigToName, swapFromTransfers } from "../transferHelpers.js";
6
6
  import { AbstractAdapterContract } from "./AbstractAdapter.js";
@@ -1,7 +1,7 @@
1
- import { iPausableAbi } from "../../../abi/iPausable.js";
2
1
  import { iCreditFacadeMulticallV310Abi, iCreditFacadeV310Abi } from "../../../abi/310/generated.js";
3
2
  import { BaseContract } from "../../base/BaseContract.js";
4
3
  import "../../base/index.js";
4
+ import { iPausableAbi } from "../../../abi/iPausable.js";
5
5
  //#region src/onchain/market/credit/CreditFacadeV310BaseContract.ts
6
6
  const abi = [
7
7
  ...iCreditFacadeV310Abi,
@@ -7,6 +7,8 @@ import "../../utils/index.js";
7
7
  import { SDKConstruct } from "../../base/SDKConstruct.js";
8
8
  import "../../base/index.js";
9
9
  import { calcBorrowApy, calcQuotaRate, minSeizedAmount, optimalHFForPartialLiquidation, optimalRepaidAmount } from "../math.js";
10
+ import { KYC_REGISTRATION_LINKS } from "../../../model/rwa.js";
11
+ import "../../../model/index.js";
10
12
  import { createDegenNFT } from "../rwa/createDegenNFT.js";
11
13
  import { strategyName } from "../strategyName.js";
12
14
  import { dominantCollateral, isStrategyCollateral, pickStrategyTargetCollateral } from "./collateralUtils.js";
@@ -123,37 +125,25 @@ var CreditSuite = class extends SDKConstruct {
123
125
  degenNFT() {
124
126
  const address = this.creditFacade.degenNFT;
125
127
  if (isAddressEqual(address, "0x0000000000000000000000000000000000000000")) return Promise.resolve(void 0);
126
- const factoryNft = this.rwaFactory?.degenNFT;
127
- if (factoryNft && isAddressEqual(factoryNft.address, address)) return Promise.resolve(factoryNft);
128
128
  if (!this.#degenNFT) this.#degenNFT = createDegenNFT(this.sdk, address);
129
129
  return this.#degenNFT;
130
130
  }
131
131
  /**
132
- * The KYC gate of this suite's strategy; `null` when there is none.
133
- * Wallet-independent.
132
+ * What `wallet` still has to do before the facade lets it open an account;
133
+ * `null` when nothing (no degen NFT, not a KYC gate, or already eligible).
134
134
  */
135
- async kycRequirement(targetCollateral) {
135
+ async kycRequirement(wallet, targetCollateral) {
136
136
  const nft = await this.degenNFT();
137
137
  if (!nft) return null;
138
- const tokens = await nft.getTokens();
139
- const token = tokens.find((t) => isAddressEqual(t, targetCollateral)) ?? tokens[0];
138
+ const { eligible, token } = await nft.checkKyc(wallet, targetCollateral);
139
+ if (eligible) return null;
140
140
  return {
141
141
  protocol: nft.protocol,
142
- token: token ? this.tokensMeta.getToken(token) : void 0,
143
- registrationLink: nft.registrationLink
142
+ token: this.tokensMeta.getToken(token),
143
+ registrationLink: KYC_REGISTRATION_LINKS[nft.protocol]
144
144
  };
145
145
  }
146
146
  /**
147
- * Whether `wallet` may open this suite's strategy today; `true` when there
148
- * is no KYC gate.
149
- */
150
- async isEligibleForStrategy(wallet, targetCollateral) {
151
- const nft = await this.degenNFT();
152
- if (!nft) return true;
153
- const requirements = await nft.getOpenAccountRequirements(wallet, { tokenOutAddress: targetCollateral });
154
- return nft.isRegistered(requirements);
155
- }
156
- /**
157
147
  * Builds a transaction that executes a multicall on one of this suite's
158
148
  * credit accounts.
159
149
  *
@@ -288,11 +278,11 @@ var CreditSuite = class extends SDKConstruct {
288
278
  const { pool } = this.market.pool;
289
279
  const { maxDebtPerBlockMultiplier, maxDebt } = this.creditFacade;
290
280
  if (maxDebtPerBlockMultiplier === 0) return {
291
- amount: this.market.toUnderlyingAmount(0n),
281
+ value: 0n,
292
282
  limit: "debtPerBlockLimit"
293
283
  };
294
284
  const available = pool.creditManagerDebtParams.get(this.creditManager.address)?.available;
295
- const { value, limit } = [
285
+ return [
296
286
  {
297
287
  value: pool.availableLiquidity,
298
288
  limit: "poolAvailableLiquidity"
@@ -306,10 +296,6 @@ var CreditSuite = class extends SDKConstruct {
306
296
  limit: "maxDebt"
307
297
  }
308
298
  ].reduce((a, b) => b.value < a.value ? b : a);
309
- return {
310
- amount: this.market.toUnderlyingAmount(value),
311
- limit
312
- };
313
299
  }
314
300
  /**
315
301
  * The single target collateral of this suite's strategy, or `undefined` when
@@ -368,7 +354,7 @@ var CreditSuite = class extends SDKConstruct {
368
354
  * or `undefined` when credit suite does not offer a strategy opportunity.
369
355
  */
370
356
  strategyOpportunity() {
371
- const maxBorrowAmount = this.maxBorrowAmount().amount.value;
357
+ const maxBorrowAmount = this.maxBorrowAmount().value;
372
358
  if (maxBorrowAmount <= MIN_STRATEGY_BORROW_AMOUNT) return;
373
359
  const collateral = this.strategyTargetCollateral;
374
360
  if (!collateral) return;
@@ -1,4 +1,3 @@
1
- import { iPausableAbi } from "../../../abi/iPausable.js";
2
1
  import { iPoolV310Abi } from "../../../abi/310/generated.js";
3
2
  import { AddressMap } from "../../utils/AddressMap.js";
4
3
  import { RAY } from "../../constants/math.js";
@@ -8,6 +7,7 @@ import "../../utils/index.js";
8
7
  import { SdkRWADataNotLoadedError } from "../../core/errors.js";
9
8
  import { BaseContract } from "../../base/BaseContract.js";
10
9
  import "../../base/index.js";
10
+ import { iPausableAbi } from "../../../abi/iPausable.js";
11
11
  //#region src/onchain/market/pool/PoolV310Contract.ts
12
12
  const abi = [...iPoolV310Abi, ...iPausableAbi];
13
13
  var PoolV310Contract = class extends BaseContract {
@@ -1,6 +1,6 @@
1
- import { iVersionAbi } from "../../../abi/iVersion.js";
2
1
  import { bytes32ToString } from "../../utils/bytes32ToString.js";
3
2
  import "../../utils/index.js";
3
+ import { iVersionAbi } from "../../../abi/iVersion.js";
4
4
  import { iMidasDegenNFTAbi } from "../../../abi/rwa/iMidasDegenNFT.js";
5
5
  import { DEGEN_NFT_MIDAS } from "./midas/constants.js";
6
6
  import { MidasDegenNFT } from "./midas/MidasDegenNFT.js";
@@ -5,23 +5,14 @@ import "../../adapters/abi/index.js";
5
5
  import { iMidasDegenNFTAbi } from "../../../../abi/rwa/iMidasDegenNFT.js";
6
6
  import "./constants.js";
7
7
  import { iMidasAccessControlAbi } from "../../../../abi/rwa/iMidasAccessControl.js";
8
- import { KYC_REGISTRATION_LINKS } from "../../../../model/rwa.js";
9
- import "../../../../model/index.js";
10
8
  import { decodeAbiParameters } from "viem";
11
9
  //#region src/onchain/market/rwa/midas/MidasDegenNFT.ts
12
10
  const abi = iMidasDegenNFTAbi;
13
- /**
14
- * Midas is an RWA protocol without a factory: accounts open through the plain
15
- * facade. Only a Permissioned-mode gateway deploys a degen NFT, so a Midas
16
- * strategy that does not require KYC has no NFT at all.
17
- */
18
11
  var MidasDegenNFT = class extends BaseContract {
19
12
  protocol = "midas";
20
- registrationLink = KYC_REGISTRATION_LINKS.midas;
21
13
  gateway;
22
14
  accessControl;
23
15
  greenlistedRole;
24
- #mToken;
25
16
  constructor(sdk, baseParams) {
26
17
  super(sdk, {
27
18
  ...baseParams,
@@ -39,26 +30,9 @@ var MidasDegenNFT = class extends BaseContract {
39
30
  this.accessControl = accessControl;
40
31
  this.greenlistedRole = greenlistedRole;
41
32
  }
42
- async getTokens() {
43
- return [await this.#mTokenAddress()];
44
- }
45
- /**
46
- * Same predicate `MidasDegenNFT.burn` reverts on; the mToken rides along in
47
- * the batch until it is cached.
48
- */
49
- async getOpenAccountRequirements(wallet, _props) {
50
- const token = this.#mToken;
51
- if (token !== void 0) return {
52
- protocol: "midas",
53
- token,
54
- greenlisted: await this.client.readContract({
55
- abi: iMidasAccessControlAbi,
56
- address: this.accessControl,
57
- functionName: "hasRole",
58
- args: [this.greenlistedRole, wallet]
59
- })
60
- };
61
- const [greenlisted, mToken] = await this.client.multicall({
33
+ /** Same predicate `MidasDegenNFT.burn` reverts on; the mToken rides along in the batch. */
34
+ async checkKyc(wallet, _targetCollateral) {
35
+ const [eligible, token] = await this.client.multicall({
62
36
  allowFailure: false,
63
37
  contracts: [{
64
38
  abi: iMidasAccessControlAbi,
@@ -71,25 +45,11 @@ var MidasDegenNFT = class extends BaseContract {
71
45
  functionName: "mToken"
72
46
  }]
73
47
  });
74
- this.#mToken = mToken;
75
48
  return {
76
- protocol: "midas",
77
- token: mToken,
78
- greenlisted
49
+ eligible,
50
+ token
79
51
  };
80
52
  }
81
- isRegistered(requirements) {
82
- return requirements.greenlisted;
83
- }
84
- getMissingRequirements() {}
85
- async #mTokenAddress() {
86
- if (this.#mToken === void 0) this.#mToken = await this.client.readContract({
87
- abi: iMidasGatewayV311Abi,
88
- address: this.gateway,
89
- functionName: "mToken"
90
- });
91
- return this.#mToken;
92
- }
93
53
  };
94
54
  //#endregion
95
55
  export { MidasDegenNFT };
@@ -1,23 +1,13 @@
1
- import { AddressSet } from "../../../utils/AddressSet.js";
2
- import "../../../utils/index.js";
3
1
  import { BaseContract } from "../../../base/BaseContract.js";
4
2
  import "../../../base/index.js";
5
- import { KYC_REGISTRATION_LINKS } from "../../../../model/rwa.js";
6
- import "../../../../model/index.js";
7
3
  import { DEGEN_NFT_SECURITIZE } from "./constants.js";
8
4
  import { iSecuritizeDegenNFTAbi } from "../../../../abi/rwa/iSecuritizeDegenNFT.js";
5
+ import { isAddressEqual } from "viem";
9
6
  //#region src/onchain/market/rwa/securitize/SecuritizeDegenNFT.ts
10
7
  const abi = iSecuritizeDegenNFTAbi;
11
- /**
12
- * Securitize always has a factory, which deploys this NFT. DS-token data,
13
- * registrars and cached signatures live here; the factory only builds txs
14
- * and looks up investor/wallet addresses.
15
- */
16
8
  var SecuritizeDegenNFT = class extends BaseContract {
17
9
  protocol = "securitize";
18
- registrationLink = KYC_REGISTRATION_LINKS.securitize;
19
10
  factory;
20
- #sdk;
21
11
  constructor(sdk, address, factory) {
22
12
  super(sdk, {
23
13
  addr: address,
@@ -26,54 +16,19 @@ var SecuritizeDegenNFT = class extends BaseContract {
26
16
  name: "SecuritizeDegenNFT",
27
17
  abi
28
18
  });
29
- this.#sdk = sdk;
30
19
  this.factory = factory;
31
20
  }
32
- async getTokens() {
33
- return this.factory.getTokens();
34
- }
35
- /**
36
- * Registration on Securitize is the protocol-side KYC step; pending
37
- * EIP-712 signatures are tx-side leftover, not KYC.
38
- */
39
- async getOpenAccountRequirements(wallet, props) {
40
- const tokensToRegister = new AddressSet(this.factory.getTokens()).has(props.tokenOutAddress) ? new AddressSet([props.tokenOutAddress]) : new AddressSet();
41
- if (tokensToRegister.size === 0) return {
42
- protocol: "securitize",
43
- factory: this.factory.address,
44
- securitizeTokensToRegister: [],
45
- tokensToRegister: [],
46
- requiredSignatures: []
47
- };
48
- const [investorData] = await this.#sdk.rwa.getInvestorData(wallet, [this.factory.address]);
49
- const registredTokens = new AddressSet(investorData.registeredTokens);
50
- const signedTokens = new AddressSet(investorData.cachedSignatures.map((s) => s.token));
51
- const unsignedTokens = tokensToRegister.difference(signedTokens);
52
- const securitizeTokensToRegister = tokensToRegister.difference(registredTokens);
53
- const requiredSignatures = investorData.registerVaultMessages.filter((m) => unsignedTokens.has(m.message.token));
54
- return {
55
- protocol: "securitize",
56
- factory: this.factory.address,
57
- securitizeTokensToRegister: Array.from(securitizeTokensToRegister),
58
- tokensToRegister: Array.from(tokensToRegister),
59
- requiredSignatures
21
+ /** Registration on Securitize is the only KYC step; pending EIP-712 signatures are not. */
22
+ async checkKyc(wallet, targetCollateral) {
23
+ const { factory } = this;
24
+ if (!factory.getTokens().some((t) => isAddressEqual(t, targetCollateral))) return {
25
+ eligible: true,
26
+ token: targetCollateral
60
27
  };
61
- }
62
- isRegistered(requirements) {
63
- return requirements.securitizeTokensToRegister.length === 0;
64
- }
65
- /**
66
- * A required signature is omitted when `providedArgs.signaturesToCache`
67
- * already carries a signature for the same token: the transaction caches it
68
- * on-chain as part of the operation.
69
- */
70
- getMissingRequirements(requirements, providedArgs) {
71
- const providedTokens = new AddressSet((providedArgs?.signaturesToCache ?? []).map((s) => s.token));
72
- const requiredSignatures = requirements.requiredSignatures.filter((message) => !providedTokens.has(message.message.token));
73
- if (requiredSignatures.length === 0) return;
28
+ const req = await factory.getOpenAccountRequirements(wallet, { tokenOutAddress: targetCollateral });
74
29
  return {
75
- protocol: "securitize",
76
- requiredSignatures
30
+ eligible: !req || req.securitizeTokensToRegister.length === 0,
31
+ token: req?.securitizeTokensToRegister[0] ?? targetCollateral
77
32
  };
78
33
  }
79
34
  };
@@ -1,4 +1,5 @@
1
1
  import { AddressMap } from "../../../utils/AddressMap.js";
2
+ import { AddressSet } from "../../../utils/AddressSet.js";
2
3
  import "../../../utils/index.js";
3
4
  import { BaseContract } from "../../../base/BaseContract.js";
4
5
  import "../../../base/index.js";
@@ -10,6 +11,7 @@ import { decodeAbiParameters } from "viem";
10
11
  //#region src/onchain/market/rwa/securitize/SecuritizeRWAFactory.ts
11
12
  const abi = iSecuritizeRWAFactoryAbi;
12
13
  var SecuritizeRWAFactory = class extends BaseContract {
14
+ #sdk;
13
15
  #investorCache = new AddressMap();
14
16
  degenNFT;
15
17
  owner;
@@ -21,6 +23,7 @@ var SecuritizeRWAFactory = class extends BaseContract {
21
23
  name: "SecuritizeRWAFactory",
22
24
  abi
23
25
  });
26
+ this.#sdk = sdk;
24
27
  const decoded = decodeAbiParameters([
25
28
  {
26
29
  name: "owner",
@@ -181,6 +184,40 @@ var SecuritizeRWAFactory = class extends BaseContract {
181
184
  });
182
185
  }
183
186
  /**
187
+ * {@inheritDoc IRWAFactory.getOpenAccountRequirements}
188
+ */
189
+ async getOpenAccountRequirements(investor, props) {
190
+ const [investorData] = await this.#sdk.rwa.getInvestorData(investor, [this.address]);
191
+ const tokensToRegister = new AddressSet([props.tokenOutAddress]);
192
+ const registredTokens = new AddressSet(investorData.registeredTokens);
193
+ const signedTokens = new AddressSet(investorData.cachedSignatures.map((s) => s.token));
194
+ const unsignedTokens = tokensToRegister.difference(signedTokens);
195
+ const securitizeTokensToRegister = tokensToRegister.difference(registredTokens);
196
+ const requiredSignatures = investorData.registerVaultMessages.filter((m) => unsignedTokens.has(m.message.token));
197
+ return {
198
+ type: RWA_FACTORY_SECURITIZE,
199
+ securitizeTokensToRegister: Array.from(securitizeTokensToRegister),
200
+ tokensToRegister: Array.from(tokensToRegister),
201
+ requiredSignatures
202
+ };
203
+ }
204
+ /**
205
+ * {@inheritDoc IRWAFactory.getMissingRequirements}
206
+ *
207
+ * A required signature is omitted when `providedArgs.signaturesToCache`
208
+ * already carries a signature for the same token: the transaction caches it
209
+ * on-chain as part of the operation.
210
+ */
211
+ getMissingRequirements(requirements, providedArgs) {
212
+ const providedTokens = new AddressSet((providedArgs?.signaturesToCache ?? []).map((s) => s.token));
213
+ const requiredSignatures = requirements.requiredSignatures.filter((message) => !providedTokens.has(message.message.token));
214
+ if (requiredSignatures.length === 0) return;
215
+ return {
216
+ type: RWA_FACTORY_SECURITIZE,
217
+ requiredSignatures
218
+ };
219
+ }
220
+ /**
184
221
  * {@inheritDoc IRWAFactory.openCreditAccount}
185
222
  */
186
223
  openCreditAccount(creditManager, calls, args) {
@@ -1,5 +1,5 @@
1
- import { iethZapperAbi } from "../../../abi/iETHZapper.js";
2
1
  import { ZapperContract } from "./ZapperContract.js";
2
+ import { iethZapperAbi } from "../../../abi/iETHZapper.js";
3
3
  //#region src/onchain/market/zapper/IETHZapperContract.ts
4
4
  const abi = iethZapperAbi;
5
5
  var IETHZapperContract = class extends ZapperContract {
@@ -1,8 +1,8 @@
1
- import { iZapperAbi } from "../../../abi/iZapper.js";
2
1
  import { BaseContract } from "../../base/BaseContract.js";
3
2
  import "../../base/index.js";
4
3
  import { sdkErr, sdkOk } from "../../../model/result.js";
5
4
  import "../../../model/index.js";
5
+ import { iZapperAbi } from "../../../abi/iZapper.js";
6
6
  //#region src/onchain/market/zapper/ZapperContract.ts
7
7
  /**
8
8
  * Base contract for every Gearbox zapper. Specialized zappers (e.g.
@@ -37,18 +37,12 @@ var MultichainOpportunitiesService = class extends MultichainConstruct {
37
37
  *
38
38
  * See {@link MultichainOpportunitiesService.getPool}.
39
39
  **/
40
- async getStrategy(key) {
40
+ async getStrategy(key, wallet) {
41
41
  return this.queryChain({
42
42
  network: key.chainId,
43
- run: (sdk) => sdk.opportunities.getStrategy(key)
43
+ run: (sdk) => sdk.opportunities.getStrategy(key, wallet)
44
44
  });
45
45
  }
46
- /**
47
- * {@inheritDoc OpportunitiesService.isEligibleForStrategy}
48
- **/
49
- async isEligibleForStrategy(key, wallet) {
50
- return this.sdk.chain(key.chainId).opportunities.isEligibleForStrategy(key, wallet);
51
- }
52
46
  };
53
47
  //#endregion
54
48
  export { MultichainOpportunitiesService };
@@ -36,34 +36,22 @@ var OpportunitiesService = class extends SDKConstruct {
36
36
  * A single strategy opportunity plus the rate curve of the pool it borrows
37
37
  * from and the price feeds its liquidation price depends on.
38
38
  *
39
- * `kyc` is the strategy's KYC gate, independent of any wallet.
39
+ * @param wallet - When given, `kyc` says whether this wallet must register
40
+ * with the strategy's KYC provider first; `null` otherwise.
40
41
  *
41
42
  * @throws If the credit manager is unknown, or does not currently offer a
42
43
  * strategy.
43
44
  **/
44
- async getStrategy(key) {
45
+ async getStrategy(key, wallet) {
45
46
  const suite = this.sdk.marketRegister.findCreditManager(key.creditManager);
46
47
  const detail = suite.strategyOpportunityDetail();
47
48
  if (!detail) throw new Error(`credit manager ${key.creditManager} does not currently offer a strategy`);
48
- const kyc = await suite.kycRequirement(detail.targetCollateral.address);
49
+ const kyc = wallet ? await suite.kycRequirement(wallet, detail.targetCollateral.address) : null;
49
50
  return {
50
51
  ...detail,
51
52
  kyc
52
53
  };
53
54
  }
54
- /**
55
- * Whether `wallet` may open this strategy today: `true` when it is not
56
- * KYC-gated or the wallet already passed the gate.
57
- *
58
- * @throws If the credit manager is unknown, or does not currently offer a
59
- * strategy.
60
- **/
61
- async isEligibleForStrategy(key, wallet) {
62
- const suite = this.sdk.marketRegister.findCreditManager(key.creditManager);
63
- const opportunity = suite.strategyOpportunity();
64
- if (!opportunity) throw new Error(`credit manager ${key.creditManager} does not currently offer a strategy`);
65
- return suite.isEligibleForStrategy(wallet, opportunity.targetCollateral.address);
66
- }
67
55
  };
68
56
  //#endregion
69
57
  export { OpportunitiesService };
@@ -1,7 +1,7 @@
1
1
  import { hexEq } from "../../utils/hex.js";
2
2
  import { AbstractAdapterContract } from "../../market/adapters/contracts/AbstractAdapter.js";
3
3
  import { CreditFacadeV310Contract } from "../../market/credit/CreditFacadeV310Contract.js";
4
- import "../../../model/rwa.js";
4
+ import { RWA_FACTORY_SECURITIZE } from "../../../model/rwa.js";
5
5
  import "../../../model/index.js";
6
6
  import { isRWAFactory } from "../../market/rwa/types.js";
7
7
  import { classifyInnerOperations } from "./classifyInnerOperations.js";
@@ -32,7 +32,7 @@ function parseSecuritizeOperationCalldata(sdk, factory, calldata) {
32
32
  const { rawArgs } = parsed;
33
33
  const innerCalls = rawArgs.calls ?? [];
34
34
  const args = {
35
- protocol: "securitize",
35
+ type: RWA_FACTORY_SECURITIZE,
36
36
  tokensToRegister: [...rawArgs.tokensToRegister ?? []],
37
37
  signaturesToCache: [...rawArgs.signaturesToCache ?? []]
38
38
  };
@@ -1,8 +1,8 @@
1
- import { ierc20Abi } from "../../../abi/iERC20.js";
2
- import { iZapperAbi } from "../../../abi/iZapper.js";
3
1
  import { iPoolV310Abi } from "../../../abi/310/generated.js";
2
+ import { ierc20Abi } from "../../../abi/iERC20.js";
4
3
  import { sdkErr, sdkOk } from "../../../model/result.js";
5
4
  import "../../../model/index.js";
5
+ import { iZapperAbi } from "../../../abi/iZapper.js";
6
6
  //#region src/onchain/preview/preview/previewPoolPositionOperation.ts
7
7
  function previewRead(operation) {
8
8
  switch (operation.operation) {
@@ -1,6 +1,6 @@
1
1
  import { errorAbis } from "../../../abi/errors.js";
2
- import { iUpdatablePriceFeedAbi } from "../../../abi/iUpdatablePriceFeed.js";
3
2
  import { generateCastTraceCall } from "./cast.js";
3
+ import { iUpdatablePriceFeedAbi } from "../../../abi/iUpdatablePriceFeed.js";
4
4
  import { simulateMulticall } from "./simulateMulticall.js";
5
5
  import { BaseError, CallExecutionError, ContractFunctionRevertedError, decodeFunctionData, decodeFunctionResult, encodeFunctionData, parseAbi } from "viem";
6
6
  import { getAction, parseAccount } from "viem/utils";
@@ -4,11 +4,11 @@ import { checkDebtLimits } from "../checks/checkDebtLimits.js";
4
4
  import "../checks/index.js";
5
5
  import { checkAccountQuotas } from "./checkAccountQuotas.js";
6
6
  import { checkCollateralFunding } from "./checkCollateralFunding.js";
7
+ import { checkDraw } from "./checkDraw.js";
7
8
  import { checkHealthFactors } from "./checkHealthFactors.js";
8
- import { checkIncreaseDebt } from "./checkIncreaseDebt.js";
9
- import { checkIncreaseQuota } from "./checkIncreaseQuota.js";
10
9
  import { checkMarket } from "./checkMarket.js";
11
10
  import { checkObtained } from "./checkObtained.js";
11
+ import { checkQuotasAsked } from "./checkQuotasAsked.js";
12
12
  import { checkRWAOpening } from "./checkRWAOpening.js";
13
13
  //#region src/onchain/validation/bundles/checkCreditOperation.ts
14
14
  /**
@@ -16,9 +16,8 @@ import { checkRWAOpening } from "./checkRWAOpening.js";
16
16
  * has to hold, approve or sign.
17
17
  *
18
18
  * The array is in check order, most fundamental first: the market's own state,
19
- * then what the facade would revert on, then what the operation borrows and the
20
- * quota it increases, then the account it leaves behind, and last the wallet's
21
- * side.
19
+ * then what the facade would revert on, then what the operation asks the
20
+ * market for, then the account it leaves behind, and last the wallet's side.
22
21
  */
23
22
  async function checkCreditOperation(args) {
24
23
  const { sdk, preview, sender, blockNumber, ...thresholds } = args;
@@ -33,13 +32,12 @@ async function checkCreditOperation(args) {
33
32
  minDebt: suite.creditFacade.minDebt,
34
33
  maxDebt: suite.creditFacade.maxDebt,
35
34
  underlying,
36
- allowZero: !isOpening,
37
- maxBorrowAmount: suite.maxBorrowAmount()
35
+ allowZero: !isOpening
38
36
  }),
39
- ...checkIncreaseDebt(suite, preview, underlying),
37
+ ...checkDraw(suite, preview, underlying),
40
38
  ...checkObtained(suite, preview),
41
39
  ...checkAccountQuotas(suite, preview),
42
- ...checkIncreaseQuota(market, preview, underlying),
40
+ ...checkQuotasAsked(market, preview, underlying),
43
41
  ...checkHealthFactors({
44
42
  totalDebt: preview.totalDebt,
45
43
  healthFactor: preview.estHealthFactor,
@@ -51,7 +49,7 @@ async function checkCreditOperation(args) {
51
49
  preview,
52
50
  sender,
53
51
  blockNumber
54
- }), preview.operation === "OpenCreditAccount" || preview.operation === "RWAOpenCreditAccount" ? checkRWAOpening({
52
+ }), preview.operation === "RWAOpenCreditAccount" ? checkRWAOpening({
55
53
  sdk,
56
54
  preview,
57
55
  sender
@@ -0,0 +1,27 @@
1
+ import { checkBorrowLimit } from "../checks/checkBorrowLimit.js";
2
+ import "../checks/index.js";
3
+ //#region src/onchain/validation/bundles/checkDraw.ts
4
+ /**
5
+ * What the transaction draws, against what the market can lend right now.
6
+ *
7
+ * Only a draw is weighed: repaying, or leaving the debt alone, can never exceed
8
+ * a ceiling. Opening borrows the whole debt; adjusting borrows
9
+ * `totalDebtChange`.
10
+ *
11
+ * The engine holds every simulation to this already (`assertCanBorrow`), so
12
+ * this is here for the transactions it never saw — a pasted calldata reaches
13
+ * the confirm screen with nothing else standing between it and a revert.
14
+ */
15
+ function checkDraw(suite, preview, underlying) {
16
+ const drawn = preview.operation === "AdjustCreditAccount" ? preview.totalDebtChange.value : preview.totalDebt.value;
17
+ if (drawn <= 0n) return [];
18
+ const { value, limit } = suite.maxBorrowAmount();
19
+ return checkBorrowLimit({
20
+ requested: drawn,
21
+ available: value,
22
+ limit,
23
+ underlying
24
+ });
25
+ }
26
+ //#endregion
27
+ export { checkDraw };