@gearbox-protocol/sdk 16.3.0-next.5 → 17.0.0-next.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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 -9
  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 -10
  24. package/dist/cjs/onchain/validation/checks/checkBorrowLimit.js +1 -1
  25. package/dist/cjs/onchain/validation/checks/checkDebtLimits.js +5 -2
  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 -9
  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 -10
  71. package/dist/esm/onchain/validation/checks/checkBorrowLimit.js +1 -1
  72. package/dist/esm/onchain/validation/checks/checkDebtLimits.js +5 -2
  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 +10 -11
  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 +1 -1
  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
@@ -0,0 +1,28 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_onchain_validation_checks_checkBorrowLimit = require("../checks/checkBorrowLimit.js");
3
+ require("../checks/index.js");
4
+ //#region src/onchain/validation/bundles/checkDraw.ts
5
+ /**
6
+ * What the transaction draws, against what the market can lend right now.
7
+ *
8
+ * Only a draw is weighed: repaying, or leaving the debt alone, can never exceed
9
+ * a ceiling. Opening borrows the whole debt; adjusting borrows
10
+ * `totalDebtChange`.
11
+ *
12
+ * The engine holds every simulation to this already (`assertCanBorrow`), so
13
+ * this is here for the transactions it never saw — a pasted calldata reaches
14
+ * the confirm screen with nothing else standing between it and a revert.
15
+ */
16
+ function checkDraw(suite, preview, underlying) {
17
+ const drawn = preview.operation === "AdjustCreditAccount" ? preview.totalDebtChange.value : preview.totalDebt.value;
18
+ if (drawn <= 0n) return [];
19
+ const { value, limit } = suite.maxBorrowAmount();
20
+ return require_onchain_validation_checks_checkBorrowLimit.checkBorrowLimit({
21
+ requested: drawn,
22
+ available: value,
23
+ limit,
24
+ underlying
25
+ });
26
+ }
27
+ //#endregion
28
+ exports.checkDraw = checkDraw;
@@ -1,9 +1,9 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_onchain_validation_checks_checkQuotaLimit = require("../checks/checkQuotaLimit.js");
3
3
  require("../checks/index.js");
4
- //#region src/onchain/validation/bundles/checkIncreaseQuota.ts
4
+ //#region src/onchain/validation/bundles/checkQuotasAsked.ts
5
5
  /** Every quota the operation raises, against the room the keeper has left. */
6
- function checkIncreaseQuota(market, preview, underlying) {
6
+ function checkQuotasAsked(market, preview, underlying) {
7
7
  const increases = preview.operation === "AdjustCreditAccount" ? preview.quotasChange : preview.quotas;
8
8
  const { pqk } = market.pool;
9
9
  return increases.filter((q) => q.value > 0n).flatMap((q) => {
@@ -17,4 +17,4 @@ function checkIncreaseQuota(market, preview, underlying) {
17
17
  });
18
18
  }
19
19
  //#endregion
20
- exports.checkIncreaseQuota = checkIncreaseQuota;
20
+ exports.checkQuotasAsked = checkQuotasAsked;
@@ -6,24 +6,24 @@ const require_onchain_validation_helpers_token = require("../helpers/token.js");
6
6
  require("../helpers/index.js");
7
7
  //#region src/onchain/validation/bundles/checkRWAOpenRequirements.ts
8
8
  /**
9
- * The degen NFT is satisfied that `wallet` may open on `token` with the
9
+ * The RWA factory is satisfied that `wallet` may open on `token` with the
10
10
  * registration args already on the transaction.
11
11
  */
12
12
  async function checkRWAOpenRequirements(input) {
13
13
  const { sdk, wallet, creditManager, token, providedArgs } = input;
14
14
  try {
15
- const nft = await sdk.marketRegister.findCreditManager(creditManager).degenNFT();
16
- if (!nft) return [];
17
- const requirements = await nft.getOpenAccountRequirements(wallet, { tokenOutAddress: token });
18
- const missing = nft.getMissingRequirements(requirements, providedArgs);
19
- if (!missing && nft.isRegistered(requirements)) return [];
15
+ const requirements = await sdk.accounts.getOpenAccountRequirements(wallet, creditManager, { tokenOutAddress: token });
16
+ if (!requirements) return [];
17
+ const { rwaFactory } = sdk.marketRegister.findByCreditManager(creditManager);
18
+ if (!rwaFactory) throw new Error(`no RWA factory for credit manager ${creditManager}`);
19
+ const missing = rwaFactory.getMissingRequirements(requirements, providedArgs);
20
+ if (!missing && requirements.securitizeTokensToRegister.length === 0) return [];
20
21
  return [require_model_errors_operation_errors.rwaOpenRequirementsNotMet({
21
22
  token: require_onchain_validation_helpers_token.toToken(sdk, token),
22
23
  creditManager,
23
- protocol: nft.protocol,
24
- registrationLink: nft.registrationLink,
24
+ factory: rwaFactory.address,
25
25
  requirements,
26
- missing
26
+ ...missing === void 0 ? {} : { missing }
27
27
  })];
28
28
  } catch (cause) {
29
29
  return [require_model_errors_prepare_errors.unexpectedFailure(cause, "read the RWA opening requirements")];
@@ -3,22 +3,21 @@ const require_onchain_utils_AddressSet = require("../../utils/AddressSet.js");
3
3
  const require_onchain_validation_bundles_checkRWAOpenRequirements = require("./checkRWAOpenRequirements.js");
4
4
  //#region src/onchain/validation/bundles/checkRWAOpening.ts
5
5
  /**
6
- * Per KYC-gated token among `collateralAdded ∪ quotas`, whether the
6
+ * Per factory-gated token among `collateralAdded ∪ quotas`, whether the
7
7
  * borrower still has to register or sign before this opening can land.
8
8
  */
9
9
  async function checkRWAOpening(input) {
10
10
  const { sdk, preview, sender } = input;
11
- const nft = await sdk.marketRegister.findCreditManager(preview.creditManager).degenNFT();
12
- if (!nft) return [];
13
- const gated = new require_onchain_utils_AddressSet.AddressSet(await nft.getTokens());
11
+ const { rwaFactory } = sdk.marketRegister.findByCreditManager(preview.creditManager);
12
+ if (!rwaFactory) return [];
13
+ const gated = new require_onchain_utils_AddressSet.AddressSet(rwaFactory.getTokens());
14
14
  const candidates = new require_onchain_utils_AddressSet.AddressSet([...preview.collateralAdded.map((a) => a.token.address), ...preview.quotas.map((q) => q.token.address)]);
15
- const providedArgs = preview.operation === "RWAOpenCreditAccount" ? preview.rwaArgs : void 0;
16
15
  return (await Promise.all([...candidates].filter((token) => gated.has(token)).map((token) => require_onchain_validation_bundles_checkRWAOpenRequirements.checkRWAOpenRequirements({
17
16
  sdk,
18
17
  wallet: sender,
19
18
  creditManager: preview.creditManager,
20
19
  token,
21
- providedArgs
20
+ providedArgs: preview.rwaArgs
22
21
  })))).flat();
23
22
  }
24
23
  //#endregion
@@ -3,11 +3,11 @@ const require_onchain_validation_bundles_checkAccountQuotas = require("./checkAc
3
3
  const require_onchain_validation_bundles_checkWalletAllowance = require("./checkWalletAllowance.js");
4
4
  const require_onchain_validation_bundles_checkWalletBalance = require("./checkWalletBalance.js");
5
5
  const require_onchain_validation_bundles_checkCollateralFunding = require("./checkCollateralFunding.js");
6
+ const require_onchain_validation_bundles_checkDraw = require("./checkDraw.js");
6
7
  const require_onchain_validation_bundles_checkHealthFactors = require("./checkHealthFactors.js");
7
- const require_onchain_validation_bundles_checkIncreaseDebt = require("./checkIncreaseDebt.js");
8
- const require_onchain_validation_bundles_checkIncreaseQuota = require("./checkIncreaseQuota.js");
9
8
  const require_onchain_validation_bundles_checkMarket = require("./checkMarket.js");
10
9
  const require_onchain_validation_bundles_checkObtained = require("./checkObtained.js");
10
+ const require_onchain_validation_bundles_checkQuotasAsked = require("./checkQuotasAsked.js");
11
11
  const require_onchain_validation_bundles_checkRWAOpenRequirements = require("./checkRWAOpenRequirements.js");
12
12
  const require_onchain_validation_bundles_checkRWAOpening = require("./checkRWAOpening.js");
13
13
  const require_onchain_validation_bundles_checkCreditOperation = require("./checkCreditOperation.js");
@@ -19,15 +19,15 @@ const require_onchain_validation_bundles_checkPoolOperation = require("./checkPo
19
19
  exports.checkAccountQuotas = require_onchain_validation_bundles_checkAccountQuotas.checkAccountQuotas;
20
20
  exports.checkCollateralFunding = require_onchain_validation_bundles_checkCollateralFunding.checkCollateralFunding;
21
21
  exports.checkCreditOperation = require_onchain_validation_bundles_checkCreditOperation.checkCreditOperation;
22
+ exports.checkDraw = require_onchain_validation_bundles_checkDraw.checkDraw;
22
23
  exports.checkHealthFactors = require_onchain_validation_bundles_checkHealthFactors.checkHealthFactors;
23
- exports.checkIncreaseDebt = require_onchain_validation_bundles_checkIncreaseDebt.checkIncreaseDebt;
24
- exports.checkIncreaseQuota = require_onchain_validation_bundles_checkIncreaseQuota.checkIncreaseQuota;
25
24
  exports.checkLiquidationEligibility = require_onchain_validation_bundles_checkLiquidationEligibility.checkLiquidationEligibility;
26
25
  exports.checkLiquidationFunding = require_onchain_validation_bundles_checkLiquidationFunding.checkLiquidationFunding;
27
26
  exports.checkMarket = require_onchain_validation_bundles_checkMarket.checkMarket;
28
27
  exports.checkObtained = require_onchain_validation_bundles_checkObtained.checkObtained;
29
28
  exports.checkPoolFunding = require_onchain_validation_bundles_checkPoolFunding.checkPoolFunding;
30
29
  exports.checkPoolOperation = require_onchain_validation_bundles_checkPoolOperation.checkPoolOperation;
30
+ exports.checkQuotasAsked = require_onchain_validation_bundles_checkQuotasAsked.checkQuotasAsked;
31
31
  exports.checkRWAOpenRequirements = require_onchain_validation_bundles_checkRWAOpenRequirements.checkRWAOpenRequirements;
32
32
  exports.checkRWAOpening = require_onchain_validation_bundles_checkRWAOpening.checkRWAOpening;
33
33
  exports.checkWallet = require_onchain_validation_bundles_checkWallet.checkWallet;
@@ -2,7 +2,6 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_onchain_validation_helpers_token = require("./helpers/token.js");
3
3
  require("./helpers/index.js");
4
4
  const require_onchain_validation_checks_checkDebtLimits = require("./checks/checkDebtLimits.js");
5
- const require_onchain_validation_checks_checkQuotaCount = require("./checks/checkQuotaCount.js");
6
5
  require("./checks/index.js");
7
6
  const require_onchain_validation_bundles_checkAccountQuotas = require("./bundles/checkAccountQuotas.js");
8
7
  const require_onchain_validation_bundles_checkHealthFactors = require("./bundles/checkHealthFactors.js");
@@ -28,10 +27,8 @@ const require_onchain_validation_bundles_checkMarket = require("./bundles/checkM
28
27
  * touched. The engine performed all three during the walk, so a simulation that
29
28
  * came back `ok` has already passed them.
30
29
  *
31
- * A credit account only, opened or adjusted: a pool operation has no account
32
- * to weigh, and the three things its own state decides are read by `prepare`
33
- * before it answers. An opening names its quotas `averageQuota` — the branch
34
- * the planner already weighed it as.
30
+ * A credit account only: a pool operation has no account to weigh, and the
31
+ * three things its own state decides are read by `prepare` before it answers.
35
32
  */
36
33
  function checkSimulation(sdk, input, options = {}) {
37
34
  const { state } = input;
@@ -44,12 +41,9 @@ function checkSimulation(sdk, input, options = {}) {
44
41
  maxDebt: suite.creditFacade.maxDebt,
45
42
  underlying: require_onchain_validation_helpers_token.toToken(sdk, suite.market.pool.underlying),
46
43
  allowZero: true,
47
- maxBorrowAmount: suite.maxBorrowAmount()
44
+ ceiling: suite.maxBorrowAmount()
48
45
  }),
49
- ..."averageQuota" in state ? require_onchain_validation_checks_checkQuotaCount.checkQuotaCount({
50
- count: state.averageQuota.filter((q) => q.balance > 0n).length,
51
- max: suite.creditManager.maxEnabledTokens
52
- }) : require_onchain_validation_bundles_checkAccountQuotas.checkAccountQuotas(suite, state),
46
+ ...require_onchain_validation_bundles_checkAccountQuotas.checkAccountQuotas(suite, state),
53
47
  ...require_onchain_validation_bundles_checkHealthFactors.checkHealthFactors(state, options)
54
48
  ];
55
49
  }
@@ -5,7 +5,7 @@ const require_onchain_validation_helpers_amount = require("../helpers/amount.js"
5
5
  require("../helpers/index.js");
6
6
  //#region src/onchain/validation/checks/checkBorrowLimit.ts
7
7
  /**
8
- * What the pool will hand over, against the amount requested.
8
+ * What the pool will hand over, against what is asked for.
9
9
  *
10
10
  * `available` and `limit` are the caller's reading of which limit is in the
11
11
  * way; this check only compares. `maxBorrowAmount` is the largest debt still
@@ -6,13 +6,16 @@ require("../helpers/index.js");
6
6
  //#region src/onchain/validation/checks/checkDebtLimits.ts
7
7
  /** A debt the facade would revert on. */
8
8
  function checkDebtLimits(args) {
9
- const { debt, minDebt, maxDebt, underlying, allowZero, maxBorrowAmount } = args;
9
+ const { debt, minDebt, maxDebt, underlying, allowZero, ceiling } = args;
10
10
  if (!(debt > maxDebt || debt < minDebt && !(allowZero && debt === 0n))) return [];
11
11
  return [require_model_errors_operation_errors.debtOutOfRange({
12
12
  requested: require_onchain_validation_helpers_amount.amountOf(underlying, debt),
13
13
  minDebt: require_onchain_validation_helpers_amount.amountOf(underlying, minDebt),
14
14
  maxDebt: require_onchain_validation_helpers_amount.amountOf(underlying, maxDebt),
15
- maxBorrowAmount
15
+ ceiling: ceiling && {
16
+ amount: require_onchain_validation_helpers_amount.amountOf(underlying, ceiling.value),
17
+ limit: ceiling.limit
18
+ }
16
19
  })];
17
20
  }
18
21
  //#endregion
@@ -8,7 +8,7 @@ require("../helpers/index.js");
8
8
  * What the pool holds, against what is being taken out of it.
9
9
  *
10
10
  * The operator is not `checkBorrowLimit`'s: a pool holding exactly the amount
11
- * requested still cannot serve it, so equality is already a refusal. That is
11
+ * asked for still cannot serve it, so equality is already a refusal. That is
12
12
  * the rule the legacy withdrawal validator enforced and it is preserved to the
13
13
  * unit.
14
14
  */
@@ -23,11 +23,11 @@ const require_onchain_validation_bundles_checkAccountQuotas = require("./bundles
23
23
  const require_onchain_validation_bundles_checkWalletAllowance = require("./bundles/checkWalletAllowance.js");
24
24
  const require_onchain_validation_bundles_checkWalletBalance = require("./bundles/checkWalletBalance.js");
25
25
  const require_onchain_validation_bundles_checkCollateralFunding = require("./bundles/checkCollateralFunding.js");
26
+ const require_onchain_validation_bundles_checkDraw = require("./bundles/checkDraw.js");
26
27
  const require_onchain_validation_bundles_checkHealthFactors = require("./bundles/checkHealthFactors.js");
27
- const require_onchain_validation_bundles_checkIncreaseDebt = require("./bundles/checkIncreaseDebt.js");
28
- const require_onchain_validation_bundles_checkIncreaseQuota = require("./bundles/checkIncreaseQuota.js");
29
28
  const require_onchain_validation_bundles_checkMarket = require("./bundles/checkMarket.js");
30
29
  const require_onchain_validation_bundles_checkObtained = require("./bundles/checkObtained.js");
30
+ const require_onchain_validation_bundles_checkQuotasAsked = require("./bundles/checkQuotasAsked.js");
31
31
  const require_onchain_validation_bundles_checkRWAOpenRequirements = require("./bundles/checkRWAOpenRequirements.js");
32
32
  const require_onchain_validation_bundles_checkRWAOpening = require("./bundles/checkRWAOpening.js");
33
33
  const require_onchain_validation_bundles_checkCreditOperation = require("./bundles/checkCreditOperation.js");
@@ -54,11 +54,10 @@ exports.checkCreditAccountFrozen = require_onchain_validation_checks_checkCredit
54
54
  exports.checkCreditManagerPaused = require_onchain_validation_checks_checkCreditManagerPaused.checkCreditManagerPaused;
55
55
  exports.checkCreditOperation = require_onchain_validation_bundles_checkCreditOperation.checkCreditOperation;
56
56
  exports.checkDebtLimits = require_onchain_validation_checks_checkDebtLimits.checkDebtLimits;
57
+ exports.checkDraw = require_onchain_validation_bundles_checkDraw.checkDraw;
57
58
  exports.checkEmergencyLiquidator = require_onchain_validation_checks_checkEmergencyLiquidator.checkEmergencyLiquidator;
58
59
  exports.checkForbiddenToken = require_onchain_validation_checks_checkForbiddenToken.checkForbiddenToken;
59
60
  exports.checkHealthFactors = require_onchain_validation_bundles_checkHealthFactors.checkHealthFactors;
60
- exports.checkIncreaseDebt = require_onchain_validation_bundles_checkIncreaseDebt.checkIncreaseDebt;
61
- exports.checkIncreaseQuota = require_onchain_validation_bundles_checkIncreaseQuota.checkIncreaseQuota;
62
61
  exports.checkLeverage = require_onchain_validation_checks_checkLeverage.checkLeverage;
63
62
  exports.checkLiquidation = require_onchain_validation_checkLiquidation.checkLiquidation;
64
63
  exports.checkLiquidationEligibility = require_onchain_validation_bundles_checkLiquidationEligibility.checkLiquidationEligibility;
@@ -75,6 +74,7 @@ exports.checkPoolPaused = require_onchain_validation_checks_checkPoolPaused.chec
75
74
  exports.checkPoolSunset = require_onchain_validation_checks_checkPoolSunset.checkPoolSunset;
76
75
  exports.checkQuotaCount = require_onchain_validation_checks_checkQuotaCount.checkQuotaCount;
77
76
  exports.checkQuotaLimit = require_onchain_validation_checks_checkQuotaLimit.checkQuotaLimit;
77
+ exports.checkQuotasAsked = require_onchain_validation_bundles_checkQuotasAsked.checkQuotasAsked;
78
78
  exports.checkRWAOpenRequirements = require_onchain_validation_bundles_checkRWAOpenRequirements.checkRWAOpenRequirements;
79
79
  exports.checkRWAOpening = require_onchain_validation_bundles_checkRWAOpening.checkRWAOpening;
80
80
  exports.checkSimulation = require_onchain_validation_checkSimulation.checkSimulation;
@@ -74,9 +74,9 @@ async function openTx(sdk, request) {
74
74
  async function openRwaOptions(sdk, request) {
75
75
  if (!request.targetToken) return;
76
76
  const requirements = await sdk.accounts.getOpenAccountRequirements(request.wallet, request.creditManager, { tokenOutAddress: request.targetToken });
77
- if (requirements?.protocol !== "securitize") return;
77
+ if (!requirements) return;
78
78
  return {
79
- protocol: "securitize",
79
+ type: requirements.type,
80
80
  tokensToRegister: requirements.tokensToRegister,
81
81
  signaturesToCache: request.signaturesToCache ?? []
82
82
  };
@@ -71,21 +71,15 @@ var OpportunitiesNamespace = class extends require_sdk_AbstractNamespace.Abstrac
71
71
  /**
72
72
  * {@inheritDoc IOpportunitiesBase.getStrategy}
73
73
  **/
74
- async getStrategy(key) {
74
+ async getStrategy(key, wallet) {
75
75
  return this.merged("get strategy opportunity", {
76
76
  chainIds: [key.chainId],
77
- fromChain: (source) => source.getStrategy(key),
78
- fromBackend: (source) => source.getStrategy(key),
77
+ fromChain: (source) => source.getStrategy(key, wallet),
78
+ fromBackend: (source) => source.getStrategy(key, wallet),
79
79
  merge: this.merge.strategy
80
80
  });
81
81
  }
82
82
  /**
83
- * {@inheritDoc IOpportunitiesOnchainOnly.isEligibleForStrategy}
84
- **/
85
- async isEligibleForStrategy(key, wallet) {
86
- return this.onchain.isEligibleForStrategy(key, wallet);
87
- }
88
- /**
89
83
  * {@inheritDoc IOpportunitiesBase.filter}
90
84
  **/
91
85
  filter(response, filter) {
@@ -1,5 +1,5 @@
1
- import { ierc20Abi } from "../abi/iERC20.js";
2
1
  import { iCreditFacadeV310Abi } from "../abi/310/generated.js";
2
+ import { ierc20Abi } from "../abi/iERC20.js";
3
3
  import { AddressMap } from "../onchain/utils/AddressMap.js";
4
4
  import { AddressSet } from "../onchain/utils/AddressSet.js";
5
5
  import { AssetsMap } from "../onchain/utils/AssetsMap.js";
@@ -1,6 +1,6 @@
1
- import { iWithdrawalCompressorV313Abi } from "../abi/IWithdrawalCompressorV313.js";
2
1
  import { getNetworkType } from "../onchain/chain/chains.js";
3
2
  import { getWithdrawalCompressorAddress } from "../onchain/accounts/withdrawal-compressor/addresses.js";
3
+ import { iWithdrawalCompressorV313Abi } from "../abi/IWithdrawalCompressorV313.js";
4
4
  import "../onchain/index.js";
5
5
  import { iMidasDataFeedAbi, iMidasRedemptionVaultAbi, midasGatewayAbi, midasRedeemerAbi, midasRedemptionVaultPhantomTokenAbi, securitizeRedeemerAbi, securitizeRedemptionGatewayAbi, securitizeRedemptionPhantomTokenAbi } from "./withdrawalAbi.js";
6
6
  import { erc20Abi, hexToString, parseAbi, parseEther } from "viem";
@@ -1,5 +1,5 @@
1
- import { ierc20Abi } from "../../abi/iERC20.js";
2
1
  import { iCreditFacadeV310Abi } from "../../abi/310/generated.js";
2
+ import { ierc20Abi } from "../../abi/iERC20.js";
3
3
  import { AddressMap } from "../../onchain/utils/AddressMap.js";
4
4
  import "../../onchain/index.js";
5
5
  import { UnexpectedFacadeEventOrderError } from "./errors.js";
@@ -113,7 +113,7 @@ function insufficientAllowance(args) {
113
113
  function rwaOpenRequirementsNotMet(args) {
114
114
  return {
115
115
  code: "rwaOpenRequirementsNotMet",
116
- message: `${args.protocol} still wants something from the borrower before ${args.token.symbol} can be opened on.`,
116
+ message: `The RWA factory still wants something from the borrower before ${args.token.symbol} can be opened on.`,
117
117
  ...args
118
118
  };
119
119
  }
@@ -7,8 +7,8 @@ import { FILTER_ALL, isFilterSet } from "./filters.js";
7
7
  import { booleanParamSchema, encodeFlag, filterAllSchema, filterable } from "./filters.schema.js";
8
8
  import { curatorNameSchema, curatorSchema } from "./curators.schema.js";
9
9
  import { delayedReceivedAssetSchema, instantReceivedAssetSchema, liquidatableAccountFilterSchema, liquidatableAccountSchema, liquidationApprovalSchema, liquidationDetailsSchema, liquidationPositionSchema, receivedAssetSchema } from "./liquidations.schema.js";
10
- import { KYC_REGISTRATION_LINKS, RWA_FACTORY_SECURITIZE, RWA_FACTORY_TYPES, RWA_PROTOCOLS, SECURITIZE_REGISTER_VAULT_TYPES } from "./rwa.js";
11
- import { kycRequirementSchema, rwaProtocolSchema } from "./rwa.schema.js";
10
+ import { KYC_PROTOCOLS, KYC_REGISTRATION_LINKS, RWA_FACTORY_SECURITIZE, RWA_FACTORY_TYPES, SECURITIZE_REGISTER_VAULT_TYPES } from "./rwa.js";
11
+ import { kycProtocolSchema, kycRequirementSchema } from "./rwa.schema.js";
12
12
  import { apyBreakdownSchema, opportunityBaseSchema, opportunityDetailSchema, opportunityFilterQueryParamsSchema, opportunityFilterQuerySchema, opportunityFilterSchema, opportunityKeySchema, opportunityKindSchema, opportunitySchema, opportunityTotalsSchema, pointRewardsSchema, pointsProgramSchema, poolOpportunityDetailSchema, poolOpportunityKeySchema, poolOpportunitySchema, priceFeedDataSchema, priceFeedSummarySchema, quotaAssetSchema, rateCurvePointSchema, rateCurveSchema, rewardsSchema, strategyOpportunityDetailSchema, strategyOpportunityKeySchema, strategyOpportunitySchema, tokenRewardsSchema } from "./opportunities.schema.js";
13
13
  import { borrowRateBreakdownSchema, pnlBreakdownSchema, pointsProgramPnLSchema, pointsRewardsPnLSchema, poolPositionKeySchema, poolPositionSchema, positionCollateralSchema, positionFilterQueryParamsSchema, positionFilterQuerySchema, positionFilterSchema, positionKeySchema, positionKindSchema, positionSchema, positionTransactionKindSchema, positionTransactionSchema, positionsTotalsSchema, rewardsPnLSchema, strategyPositionKeySchema, strategyPositionSchema, tokenQuotaRateSchema, tokenRewardsPnLSchema } from "./positions.schema.js";
14
14
  import { ANALYTICS_POSITIONS_DEFAULT_LIMIT, ANALYTICS_POSITIONS_MAX_LIMIT, analyticsChartQueryOptionsSchema, analyticsChartQueryParamsSchema, analyticsChartQuerySchema, analyticsPositionListOptionsSchema, analyticsPositionListQueryParamsSchema, analyticsPositionListQuerySchema, analyticsPositionPageSchema, analyticsPositionSchema, analyticsPositionSortFieldSchema, analyticsSortDirectionSchema } from "./analytics.schema.js";
@@ -32,4 +32,4 @@ import { chainFailedSchema, chainMetadataSchema, chainSucceededSchema, dataSourc
32
32
  import { safeValue, sdkErr, sdkOk } from "./result.js";
33
33
  import "./withdrawals.js";
34
34
  import { positionClaimableWithdrawalSchema, positionPendingWithdrawalSchema, positionWithdrawalsSchema, withdrawalOutputAmountSchema } from "./withdrawals.schema.js";
35
- export { ANALYTICS_POSITIONS_DEFAULT_LIMIT, ANALYTICS_POSITIONS_MAX_LIMIT, CHART_METRIC_UNITS, CHART_RANGES, CHART_UNAVAILABLE_CODES, FILTER_ALL, KYC_REGISTRATION_LINKS, POOL_OPPORTUNITY_CHART_METRICS, POOL_POSITION_CHART_METRICS, PROTOCOL_CHART_METRICS, RWA_FACTORY_SECURITIZE, RWA_FACTORY_TYPES, RWA_PROTOCOLS, SECURITIZE_REGISTER_VAULT_TYPES, STRATEGY_OPPORTUNITY_CHART_METRICS, STRATEGY_POSITION_CHART_METRICS, STRATEGY_POSITION_COLLATERAL_ERROR, amountSchema, analyticsChartQueryOptionsSchema, analyticsChartQueryParamsSchema, analyticsChartQuerySchema, analyticsPositionListOptionsSchema, analyticsPositionListQueryParamsSchema, analyticsPositionListQuerySchema, analyticsPositionPageSchema, analyticsPositionSchema, analyticsPositionSortFieldSchema, analyticsSortDirectionSchema, apyBreakdownSchema, asEstimated, assetTypeSchema, backendPreferred, booleanParamSchema, borrowRateBreakdownSchema, bpsSchema, chainFailedSchema, chainIdSchema, chainMetadataSchema, chainSucceededSchema, chartBundleSchemaFor, chartDenominationSchema, chartMetricSchema, chartQueryCodec, chartQueryParamsSchema, chartQuerySchema, chartRangeSchema, chartSeriesSchema, chartValueSchema, chartWindowSchema, compareTagOf, creditAccountFrozen, creditAccountNotEmpty, creditAccountNotFound, creditManagerPaused, curatorNameSchema, curatorSchema, dataSourceSchema, debtOutOfRange, delayedReceivedAssetSchema, encodeFlag, filterAllSchema, filterable, forbiddenToken, instantReceivedAssetSchema, insufficientAllowance, insufficientBalance, insufficientCollateral, insufficientPoolLiquidity, isFilterSet, kycRequirementSchema, leverageOutOfRange, leverageSchema, liquidatableAccountFilterSchema, liquidatableAccountSchema, liquidationApprovalSchema, liquidationDetailsSchema, liquidationPositionId, liquidationPositionSchema, liquidatorNotEligible, malformedTransaction, marketExpired, matchesLiquidatableAccountFilter, matchesOpportunityFilter, matchesPositionFilter, multipleDelayedWithdrawals, noDelayedRoute, noRecordedIntent, noStrategyTargetCollateral, notEmergencyLiquidator, noticeKindSchema, noticeSchema, offchainOnly, onchainOnly, opportunityBaseSchema, opportunityDetailSchema, opportunityFilterQueryParamsSchema, opportunityFilterQuerySchema, opportunityFilterSchema, opportunityId, opportunityKeySchema, opportunityKindSchema, opportunitySchema, opportunityTotalsSchema, pnlBreakdownSchema, pointRewardsSchema, pointsProgramPnLSchema, pointsProgramSchema, pointsRewardsPnLSchema, poolOpportunityChartMetricSchema, poolOpportunityDetailSchema, poolOpportunityId, poolOpportunityKeySchema, poolOpportunitySchema, poolPaused, poolPositionChartMetricSchema, poolPositionId, poolPositionKeySchema, poolPositionSchema, poolSunset, positionClaimableWithdrawalSchema, positionCollateralSchema, positionFilterQueryParamsSchema, positionFilterQuerySchema, positionFilterSchema, positionId, positionKeySchema, positionKindSchema, positionPendingWithdrawalSchema, positionSchema, positionTransactionKindSchema, positionTransactionSchema, positionWithdrawalsSchema, positionsTotalsSchema, priceFeedDataSchema, priceFeedSummarySchema, protocolChartMetricSchema, quotaAssetSchema, quotaCountExceeded, quotaLimitReached, rateCurvePointSchema, rateCurveSchema, receivedAssetSchema, responseMetadataSchema, responseSchema, rewardsPnLSchema, rewardsSchema, rwaOpenRequirementsNotMet, rwaProtocolSchema, safeValue, sdkErr, sdkOk, strategyOpportunityChartMetricSchema, strategyOpportunityDetailSchema, strategyOpportunityId, strategyOpportunityKeySchema, strategyOpportunitySchema, strategyPositionChartMetricSchema, strategyPositionId, strategyPositionKeySchema, strategyPositionSchema, timestampSchema, tokenAmountSchema, tokenQuotaRateSchema, tokenRewardsPnLSchema, tokenRewardsSchema, tokenSchema, tolerance, txCallSchema, underlyingTokenSchema, unexpectedFailure, unpriceableTokenError, unsupportedCollateralToken, unsupportedTokenPair, withdrawalInProgress, withdrawalOutputAmountSchema };
35
+ export { ANALYTICS_POSITIONS_DEFAULT_LIMIT, ANALYTICS_POSITIONS_MAX_LIMIT, CHART_METRIC_UNITS, CHART_RANGES, CHART_UNAVAILABLE_CODES, FILTER_ALL, KYC_PROTOCOLS, KYC_REGISTRATION_LINKS, POOL_OPPORTUNITY_CHART_METRICS, POOL_POSITION_CHART_METRICS, PROTOCOL_CHART_METRICS, RWA_FACTORY_SECURITIZE, RWA_FACTORY_TYPES, SECURITIZE_REGISTER_VAULT_TYPES, STRATEGY_OPPORTUNITY_CHART_METRICS, STRATEGY_POSITION_CHART_METRICS, STRATEGY_POSITION_COLLATERAL_ERROR, amountSchema, analyticsChartQueryOptionsSchema, analyticsChartQueryParamsSchema, analyticsChartQuerySchema, analyticsPositionListOptionsSchema, analyticsPositionListQueryParamsSchema, analyticsPositionListQuerySchema, analyticsPositionPageSchema, analyticsPositionSchema, analyticsPositionSortFieldSchema, analyticsSortDirectionSchema, apyBreakdownSchema, asEstimated, assetTypeSchema, backendPreferred, booleanParamSchema, borrowRateBreakdownSchema, bpsSchema, chainFailedSchema, chainIdSchema, chainMetadataSchema, chainSucceededSchema, chartBundleSchemaFor, chartDenominationSchema, chartMetricSchema, chartQueryCodec, chartQueryParamsSchema, chartQuerySchema, chartRangeSchema, chartSeriesSchema, chartValueSchema, chartWindowSchema, compareTagOf, creditAccountFrozen, creditAccountNotEmpty, creditAccountNotFound, creditManagerPaused, curatorNameSchema, curatorSchema, dataSourceSchema, debtOutOfRange, delayedReceivedAssetSchema, encodeFlag, filterAllSchema, filterable, forbiddenToken, instantReceivedAssetSchema, insufficientAllowance, insufficientBalance, insufficientCollateral, insufficientPoolLiquidity, isFilterSet, kycProtocolSchema, kycRequirementSchema, leverageOutOfRange, leverageSchema, liquidatableAccountFilterSchema, liquidatableAccountSchema, liquidationApprovalSchema, liquidationDetailsSchema, liquidationPositionId, liquidationPositionSchema, liquidatorNotEligible, malformedTransaction, marketExpired, matchesLiquidatableAccountFilter, matchesOpportunityFilter, matchesPositionFilter, multipleDelayedWithdrawals, noDelayedRoute, noRecordedIntent, noStrategyTargetCollateral, notEmergencyLiquidator, noticeKindSchema, noticeSchema, offchainOnly, onchainOnly, opportunityBaseSchema, opportunityDetailSchema, opportunityFilterQueryParamsSchema, opportunityFilterQuerySchema, opportunityFilterSchema, opportunityId, opportunityKeySchema, opportunityKindSchema, opportunitySchema, opportunityTotalsSchema, pnlBreakdownSchema, pointRewardsSchema, pointsProgramPnLSchema, pointsProgramSchema, pointsRewardsPnLSchema, poolOpportunityChartMetricSchema, poolOpportunityDetailSchema, poolOpportunityId, poolOpportunityKeySchema, poolOpportunitySchema, poolPaused, poolPositionChartMetricSchema, poolPositionId, poolPositionKeySchema, poolPositionSchema, poolSunset, positionClaimableWithdrawalSchema, positionCollateralSchema, positionFilterQueryParamsSchema, positionFilterQuerySchema, positionFilterSchema, positionId, positionKeySchema, positionKindSchema, positionPendingWithdrawalSchema, positionSchema, positionTransactionKindSchema, positionTransactionSchema, positionWithdrawalsSchema, positionsTotalsSchema, priceFeedDataSchema, priceFeedSummarySchema, protocolChartMetricSchema, quotaAssetSchema, quotaCountExceeded, quotaLimitReached, rateCurvePointSchema, rateCurveSchema, receivedAssetSchema, responseMetadataSchema, responseSchema, rewardsPnLSchema, rewardsSchema, rwaOpenRequirementsNotMet, safeValue, sdkErr, sdkOk, strategyOpportunityChartMetricSchema, strategyOpportunityDetailSchema, strategyOpportunityId, strategyOpportunityKeySchema, strategyOpportunitySchema, strategyPositionChartMetricSchema, strategyPositionId, strategyPositionKeySchema, strategyPositionSchema, timestampSchema, tokenAmountSchema, tokenQuotaRateSchema, tokenRewardsPnLSchema, tokenRewardsSchema, tokenSchema, tolerance, txCallSchema, underlyingTokenSchema, unexpectedFailure, unpriceableTokenError, unsupportedCollateralToken, unsupportedTokenPair, withdrawalInProgress, withdrawalOutputAmountSchema };
@@ -34,15 +34,15 @@ const SECURITIZE_REGISTER_VAULT_TYPES = { RegisterVault: [
34
34
  }
35
35
  ] };
36
36
  /**
37
- * RWA protocols that require dedicated flows
37
+ * KYC providers a strategy may be gated by
38
38
  **/
39
- const RWA_PROTOCOLS = ["securitize", "midas"];
39
+ const KYC_PROTOCOLS = ["securitize", "midas"];
40
40
  /**
41
- * Hardcoded registration URLs for each {@link RWAProtocol}.
41
+ * Hardcoded registration URLs for each {@link KycProtocol}.
42
42
  **/
43
43
  const KYC_REGISTRATION_LINKS = {
44
44
  securitize: "https://securitize.io/",
45
45
  midas: "https://form.typeform.com/to/DqZaw6kr"
46
46
  };
47
47
  //#endregion
48
- export { KYC_REGISTRATION_LINKS, RWA_FACTORY_SECURITIZE, RWA_FACTORY_TYPES, RWA_PROTOCOLS, SECURITIZE_REGISTER_VAULT_TYPES };
48
+ export { KYC_PROTOCOLS, KYC_REGISTRATION_LINKS, RWA_FACTORY_SECURITIZE, RWA_FACTORY_TYPES, SECURITIZE_REGISTER_VAULT_TYPES };
@@ -1,18 +1,18 @@
1
1
  import { tokenSchema } from "./primitives.schema.js";
2
- import { RWA_PROTOCOLS } from "./rwa.js";
2
+ import { KYC_PROTOCOLS } from "./rwa.js";
3
3
  import { z } from "zod/v4";
4
4
  //#region src/model/rwa.schema.ts
5
5
  /**
6
- * {@link ./rwa.js#RWAProtocol}
6
+ * {@link ./rwa.js#KycProtocol}
7
7
  **/
8
- const rwaProtocolSchema = z.enum(RWA_PROTOCOLS);
8
+ const kycProtocolSchema = z.enum(KYC_PROTOCOLS);
9
9
  /**
10
10
  * {@link ./rwa.js#KycRequirement}
11
11
  **/
12
12
  const kycRequirementSchema = z.object({
13
- protocol: rwaProtocolSchema,
13
+ protocol: kycProtocolSchema,
14
14
  token: tokenSchema.optional(),
15
15
  registrationLink: z.string()
16
16
  });
17
17
  //#endregion
18
- export { kycRequirementSchema, rwaProtocolSchema };
18
+ export { kycProtocolSchema, kycRequirementSchema };
@@ -35,7 +35,7 @@ var OffchainOpportunities = class extends AbstractOffchainNamespace {
35
35
  /**
36
36
  * {@inheritDoc IOffchainOpportunities.getStrategy}
37
37
  **/
38
- async getStrategy(key) {
38
+ async getStrategy(key, _wallet) {
39
39
  return this.get({
40
40
  path: this.#strategyPath(key),
41
41
  schema: strategyOpportunityDetailSchema
@@ -1,5 +1,3 @@
1
- import { iBaseRewardPoolAbi } from "../../abi/iBaseRewardPool.js";
2
- import { ierc4626AdapterAbi } from "../../abi/ierc4626Adapter.js";
3
1
  import { AP_REWARDS_COMPRESSOR } from "../constants/address-provider.js";
4
2
  import { ADDRESS_0X0 } from "../constants/addresses.js";
5
3
  import { MAX_UINT256 } from "../constants/math.js";
@@ -10,6 +8,8 @@ import "../base/index.js";
10
8
  import { AccountBotsService } from "./bots/AccountBotsService.js";
11
9
  import "./bots/index.js";
12
10
  import { rewardsCompressorAbi } from "../../abi/compressors/rewardsCompressor.js";
11
+ import { iBaseRewardPoolAbi } from "../../abi/iBaseRewardPool.js";
12
+ import { ierc4626AdapterAbi } from "../../abi/ierc4626Adapter.js";
13
13
  import { expectedBalanceDeltas } from "../market/credit/expectedBalanceDeltas.js";
14
14
  import "../market/index.js";
15
15
  import { CreditAccountCompressor } from "./credit-account-compressor/CreditAccountCompressor.js";
@@ -188,7 +188,9 @@ var CreditAccountsServiceV310 = class extends SDKConstruct {
188
188
  * {@inheritDoc ICreditAccountsService.getOpenAccountRequirements}
189
189
  */
190
190
  async getOpenAccountRequirements(borrower, creditManager, props) {
191
- return (await this.sdk.marketRegister.findCreditManager(creditManager).degenNFT())?.getOpenAccountRequirements(borrower, props);
191
+ const { rwaFactory } = this.sdk.marketRegister.findCreditManager(creditManager);
192
+ if (!rwaFactory) return;
193
+ return rwaFactory.getOpenAccountRequirements(borrower, props);
192
194
  }
193
195
  /**
194
196
  * {@inheritDoc ICreditAccountsService.openCA}
@@ -43,13 +43,13 @@ function assertMarketOperable(suite) {
43
43
  }
44
44
  /** The pool has to be able to lend what the plan means to draw. */
45
45
  function assertCanBorrow(sdk, suite, amount) {
46
- const maxBorrowAmount = suite.maxBorrowAmount();
46
+ const { value, limit } = suite.maxBorrowAmount();
47
47
  raise(checkBorrowLimit({
48
48
  requested: amount,
49
- available: maxBorrowAmount.amount.value,
50
- limit: maxBorrowAmount.limit,
49
+ available: value,
50
+ limit,
51
51
  underlying: toToken(sdk, suite.market.pool.underlying)
52
- }), `borrow: ${amount} exceeds what the pool can lend now (${maxBorrowAmount.amount.value})`);
52
+ }), `borrow: ${amount} exceeds what the pool can lend now (${value})`);
53
53
  }
54
54
  /**
55
55
  * What the account is allowed to end up holding more of than it started with.
@@ -1,4 +1,3 @@
1
- import { iLiquidationCompressorV313Abi } from "../../../abi/ILiquidationCompressorV313.js";
2
1
  import { AddressSet } from "../../utils/AddressSet.js";
3
2
  import { bytes32ToString } from "../../utils/bytes32ToString.js";
4
3
  import { ADDRESS_0X0 } from "../../constants/addresses.js";
@@ -9,9 +8,9 @@ import "../../utils/index.js";
9
8
  import { SDKConstruct } from "../../base/SDKConstruct.js";
10
9
  import "../../base/index.js";
11
10
  import { usdToNumber } from "../../market/math.js";
12
- import { RWA_LIQUIDATOR_MIDAS } from "../../market/rwa/midas/constants.js";
13
11
  import { matchesLiquidatableAccountFilter } from "../../../model/liquidations.js";
14
12
  import "../../../model/index.js";
13
+ import { RWA_LIQUIDATOR_MIDAS } from "../../market/rwa/midas/constants.js";
15
14
  import { RWA_LIQUIDATOR_SECURITIZE } from "../../market/rwa/securitize/constants.js";
16
15
  import { dominantCollateral } from "../../market/credit/collateralUtils.js";
17
16
  import { MidasLiquidatorContract } from "../../market/rwa/midas/MidasLiquidatorContract.js";
@@ -20,6 +19,7 @@ import { SecuritizeLiquidatorContract } from "../../market/rwa/securitize/Securi
20
19
  import "../../market/rwa/securitize/index.js";
21
20
  import "../../market/index.js";
22
21
  import { LIQUIDATION_APPROVAL_BUFFER, LIQUIDATION_COMPRESSOR_V313_ADDRESS } from "./constants.js";
22
+ import { iLiquidationCompressorV313Abi } from "../../../abi/ILiquidationCompressorV313.js";
23
23
  import { skipLiquidatableAccount } from "./skipLiquidatableAccount.js";
24
24
  //#region src/onchain/accounts/liquidations/LiquidationsService.ts
25
25
  /**
@@ -1,9 +1,9 @@
1
- import { iRedemptionLoggerV310Abi } from "../../../abi/iRedemptionLoggerV310.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";
6
5
  import { decodeDelayedIntent } from "./intent-codec.js";
6
+ import { iRedemptionLoggerV310Abi } from "../../../abi/iRedemptionLoggerV310.js";
7
7
  //#region src/onchain/accounts/withdrawal-compressor/RedemptionLoggerV310Contract.ts
8
8
  const abi = iRedemptionLoggerV310Abi;
9
9
  /**
@@ -1,5 +1,5 @@
1
- import { iWithdrawalCompressorV310Abi } from "../../../abi/IWithdrawalCompressorV310.js";
2
1
  import { AbstractWithdrawalCompressorContract } from "./AbstractWithdrawalCompressorContract.js";
2
+ import { iWithdrawalCompressorV310Abi } from "../../../abi/IWithdrawalCompressorV310.js";
3
3
  //#region src/onchain/accounts/withdrawal-compressor/WithdrawalCompressorV310Contract.ts
4
4
  const abi = iWithdrawalCompressorV310Abi;
5
5
  /**
@@ -1,5 +1,5 @@
1
- import { iWithdrawalCompressorV311Abi } from "../../../abi/IWithdrawalCompressorV311.js";
2
1
  import { AbstractWithdrawalCompressorContract } from "./AbstractWithdrawalCompressorContract.js";
2
+ import { iWithdrawalCompressorV311Abi } from "../../../abi/IWithdrawalCompressorV311.js";
3
3
  //#region src/onchain/accounts/withdrawal-compressor/WithdrawalCompressorV311Contract.ts
4
4
  const abi = iWithdrawalCompressorV311Abi;
5
5
  /**
@@ -1,6 +1,6 @@
1
- import { iWithdrawalCompressorV313Abi } from "../../../abi/IWithdrawalCompressorV313.js";
2
1
  import { encodeDelayedIntent } from "./intent-codec.js";
3
2
  import { AbstractWithdrawalCompressorContract, iCreditAccountAbi, toClaimableWithdrawal, toPendingWithdrawal, toRequestableWithdrawal } from "./AbstractWithdrawalCompressorContract.js";
3
+ import { iWithdrawalCompressorV313Abi } from "../../../abi/IWithdrawalCompressorV313.js";
4
4
  import { toWithdrawalStatus } from "./types.js";
5
5
  //#region src/onchain/accounts/withdrawal-compressor/WithdrawalCompressorV313Contract.ts
6
6
  const abi = iWithdrawalCompressorV313Abi;
@@ -1,12 +1,12 @@
1
- import { iExpirableAbi } from "../../abi/iExpirable.js";
2
- import { iStateSerializerAbi } from "../../abi/iStateSerializer.js";
3
- import { iVersionAbi } from "../../abi/iVersion.js";
4
1
  import { AddressMap } from "../utils/AddressMap.js";
5
2
  import { AddressSet } from "../utils/AddressSet.js";
6
3
  import { bytes32ToString } from "../utils/bytes32ToString.js";
7
4
  import { getAssetType } from "../chain/chains.js";
8
5
  import { formatBN } from "../utils/formatter.js";
9
6
  import "../utils/index.js";
7
+ import { iExpirableAbi } from "../../abi/iExpirable.js";
8
+ import { iStateSerializerAbi } from "../../abi/iStateSerializer.js";
9
+ import { iVersionAbi } from "../../abi/iVersion.js";
10
10
  import { SdkRWADataNotLoadedError } from "../core/errors.js";
11
11
  import { executeMulticallBatches } from "../utils/viem/executeMulticallBatches.js";
12
12
  //#region src/onchain/base/TokensMeta.ts
@@ -1,8 +1,8 @@
1
- import { iVersionAbi } from "../../abi/iVersion.js";
2
1
  import { AP_MARKET_COMPRESSOR, AP_PRICE_FEED_COMPRESSOR } from "../constants/address-provider.js";
3
2
  import { isV310 } from "../constants/versions.js";
4
3
  import "../constants/index.js";
5
4
  import { hexEq } from "../utils/hex.js";
5
+ import { iVersionAbi } from "../../abi/iVersion.js";
6
6
  import { AddressProviderV310Contract } from "./AddressProviderV310Contract.js";
7
7
  //#region src/onchain/core/createAddressProvider.ts
8
8
  const OVERRIDE_ADDRESSES = { Mainnet: {