@gearbox-protocol/sdk 17.6.1 → 17.6.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.
@@ -55,7 +55,7 @@ async function buildBorrowState(props) {
55
55
  totalDebt: market.toUnderlyingAmount(debt),
56
56
  netValue: market.toUnderlyingAmount(margin - debt)
57
57
  });
58
- require_onchain_accounts_intents_math.assertDebtLimits(sdk, debt, suite.creditFacade, underlying, suite.maxBorrowAmount());
58
+ require_onchain_accounts_intents_math.assertDebtLimits(sdk, debt, suite.creditFacade, underlying);
59
59
  require_onchain_accounts_intents_guards.assertCanBorrow(sdk, suite, debt);
60
60
  const account = existing ?? require_onchain_accounts_intents_utils_credit_account_slice.unopenedAccountSlice({
61
61
  creditManager,
@@ -56,14 +56,13 @@ function assertLeverageAtLeastOne(leverage) {
56
56
  * Rejects a debt the facade would revert on: zero is always fine (no loan at
57
57
  * all), anything else has to sit inside `[minDebt, maxDebt]`.
58
58
  */
59
- function assertDebtLimits(sdk, debt, debtLimits, underlying, maxBorrowAmount) {
59
+ function assertDebtLimits(sdk, debt, debtLimits, underlying) {
60
60
  require_onchain_validation_raise.raise(require_onchain_validation_checks_checkDebtLimits.checkDebtLimits({
61
61
  debt,
62
62
  minDebt: debtLimits.minDebt,
63
63
  maxDebt: debtLimits.maxDebt,
64
64
  underlying: require_onchain_validation_helpers_token.toToken(sdk, underlying),
65
- allowZero: true,
66
- maxBorrowAmount
65
+ allowZero: true
67
66
  }), debt > debtLimits.maxDebt ? `debt ${debt} exceeds maxDebt ${debtLimits.maxDebt}` : `debt ${debt} is below minDebt ${debtLimits.minDebt}`);
68
67
  }
69
68
  //#endregion
@@ -45,7 +45,7 @@ async function buildOpenStrategyState(props) {
45
45
  creditFacade: suite.creditFacade.address,
46
46
  underlying
47
47
  });
48
- require_onchain_accounts_intents_math.assertDebtLimits(sdk, debt, suite.creditFacade, underlying, suite.maxBorrowAmount());
48
+ require_onchain_accounts_intents_math.assertDebtLimits(sdk, debt, suite.creditFacade, underlying);
49
49
  require_onchain_accounts_intents_guards.assertCanBorrow(sdk, suite, debt);
50
50
  const paths = require_onchain_accounts_intents_utils_router_path.createRouterPaths({
51
51
  sdk,
@@ -43,7 +43,7 @@ function planDeposit(intent, view) {
43
43
  const aU = view.price(intent.token, U, intent.amount);
44
44
  const debtDelta = intent.targetLeverage === void 0 ? require_onchain_accounts_intents_math.proportionalDebt(view, aU) : require_onchain_accounts_intents_math.debtForLeverage(view.collateral + aU, intent.targetLeverage) - view.debt;
45
45
  if (debtDelta < 0n) throw new require_onchain_validation_raise.IntentPreviewError(require_model_errors_operation_errors.leverageOutOfRange(), `deposit: target leverage ${intent.targetLeverage} would require repaying debt`);
46
- require_onchain_accounts_intents_math.assertDebtLimits(view.sdk, view.debt + debtDelta, view.debtLimits, U, view.maxBorrowAmount);
46
+ require_onchain_accounts_intents_math.assertDebtLimits(view.sdk, view.debt + debtDelta, view.debtLimits, U);
47
47
  const T = intent.positionToken ?? positionToken(view, "deposit");
48
48
  const depositStays = require_onchain_accounts_intents_utils_common.eq(intent.token, T);
49
49
  return [
@@ -74,12 +74,11 @@ function planRepay(intent, view) {
74
74
  if (view.debt <= 0n) throw new require_onchain_validation_raise.IntentPreviewError(require_model_errors_operation_errors.debtOutOfRange({
75
75
  requested: require_onchain_validation_helpers_token.toTokenAmount(view.sdk, U, view.debt),
76
76
  minDebt: require_onchain_validation_helpers_token.toTokenAmount(view.sdk, U, view.debtLimits.minDebt),
77
- maxDebt: require_onchain_validation_helpers_token.toTokenAmount(view.sdk, U, view.debtLimits.maxDebt),
78
- maxBorrowAmount: view.maxBorrowAmount
77
+ maxDebt: require_onchain_validation_helpers_token.toTokenAmount(view.sdk, U, view.debtLimits.maxDebt)
79
78
  }), "repay: the account owes nothing");
80
79
  const funding = everything(intent.amount) ? view.price(U, intent.token, withMargin(view.debt)) : intent.amount;
81
80
  const repaid = min(view.price(intent.token, U, funding), view.debt);
82
- require_onchain_accounts_intents_math.assertDebtLimits(view.sdk, view.debt - repaid, view.debtLimits, view.underlying, view.maxBorrowAmount);
81
+ require_onchain_accounts_intents_math.assertDebtLimits(view.sdk, view.debt - repaid, view.debtLimits, view.underlying);
83
82
  return [
84
83
  add(intent.token, funding, intent.value),
85
84
  ...fundsInU ? [] : [convert(intent.token, U, funding)],
@@ -308,7 +307,7 @@ function withdrawShape(intent, view) {
308
307
  };
309
308
  }
310
309
  const dD = require_onchain_accounts_intents_math.proportionalDebt(view, WU);
311
- require_onchain_accounts_intents_math.assertDebtLimits(view.sdk, view.debt - dD, view.debtLimits, view.underlying, view.maxBorrowAmount);
310
+ require_onchain_accounts_intents_math.assertDebtLimits(view.sdk, view.debt - dD, view.debtLimits, view.underlying);
312
311
  return {
313
312
  U,
314
313
  T,
@@ -327,7 +326,7 @@ function leverageShape(intent, view) {
327
326
  require_onchain_accounts_intents_math.assertLeverageAtLeastOne(intent.targetLeverage);
328
327
  if (view.collateral <= 0n) throw new require_onchain_validation_raise.IntentPreviewError(require_model_errors_operation_errors.insufficientBalance(), "adjustLeverage: account has no collateral to lever");
329
328
  const target = require_onchain_accounts_intents_math.debtForLeverage(view.collateral, intent.targetLeverage);
330
- require_onchain_accounts_intents_math.assertDebtLimits(view.sdk, target, view.debtLimits, view.underlying, view.maxBorrowAmount);
329
+ require_onchain_accounts_intents_math.assertDebtLimits(view.sdk, target, view.debtLimits, view.underlying);
331
330
  return {
332
331
  U: view.underlying,
333
332
  delta: target - view.debt
@@ -13,7 +13,7 @@ function accountView(creditAccount, sdk) {
13
13
  const { underlying, creditManager } = creditAccount;
14
14
  const oracle = sdk.marketRegister.findByCreditManager(creditManager).priceOracle;
15
15
  const price = (from, to, amount) => oracle.safeConvert(from, to, amount).value;
16
- const creditSuite = sdk.marketRegister.findCreditManager(creditManager);
16
+ const { creditFacade } = sdk.marketRegister.findCreditManager(creditManager);
17
17
  let totalValue = 0n;
18
18
  for (const t of creditAccount.tokens) totalValue += price(t.token, underlying, t.balance);
19
19
  return {
@@ -23,10 +23,9 @@ function accountView(creditAccount, sdk) {
23
23
  debt: creditAccount.totalDebt,
24
24
  collateral: totalValue - creditAccount.totalDebt,
25
25
  debtLimits: {
26
- minDebt: creditSuite.creditFacade.minDebt,
27
- maxDebt: creditSuite.creditFacade.maxDebt
26
+ minDebt: creditFacade.minDebt,
27
+ maxDebt: creditFacade.maxDebt
28
28
  },
29
- maxBorrowAmount: creditSuite.maxBorrowAmount(),
30
29
  balanceOf: (token) => creditAccount.tokens.find((t) => require_onchain_accounts_intents_utils_common.eq(t.token, token))?.balance ?? 0n,
31
30
  price,
32
31
  fattest: (exclude) => require_onchain_accounts_intents_utils_pick_token.pickFattestNonPhantomToken({
@@ -54,7 +54,7 @@ async function buildBorrowState(props) {
54
54
  totalDebt: market.toUnderlyingAmount(debt),
55
55
  netValue: market.toUnderlyingAmount(margin - debt)
56
56
  });
57
- assertDebtLimits(sdk, debt, suite.creditFacade, underlying, suite.maxBorrowAmount());
57
+ assertDebtLimits(sdk, debt, suite.creditFacade, underlying);
58
58
  assertCanBorrow(sdk, suite, debt);
59
59
  const account = existing ?? unopenedAccountSlice({
60
60
  creditManager,
@@ -55,14 +55,13 @@ function assertLeverageAtLeastOne(leverage) {
55
55
  * Rejects a debt the facade would revert on: zero is always fine (no loan at
56
56
  * all), anything else has to sit inside `[minDebt, maxDebt]`.
57
57
  */
58
- function assertDebtLimits(sdk, debt, debtLimits, underlying, maxBorrowAmount) {
58
+ function assertDebtLimits(sdk, debt, debtLimits, underlying) {
59
59
  raise(checkDebtLimits({
60
60
  debt,
61
61
  minDebt: debtLimits.minDebt,
62
62
  maxDebt: debtLimits.maxDebt,
63
63
  underlying: toToken(sdk, underlying),
64
- allowZero: true,
65
- maxBorrowAmount
64
+ allowZero: true
66
65
  }), debt > debtLimits.maxDebt ? `debt ${debt} exceeds maxDebt ${debtLimits.maxDebt}` : `debt ${debt} is below minDebt ${debtLimits.minDebt}`);
67
66
  }
68
67
  //#endregion
@@ -44,7 +44,7 @@ async function buildOpenStrategyState(props) {
44
44
  creditFacade: suite.creditFacade.address,
45
45
  underlying
46
46
  });
47
- assertDebtLimits(sdk, debt, suite.creditFacade, underlying, suite.maxBorrowAmount());
47
+ assertDebtLimits(sdk, debt, suite.creditFacade, underlying);
48
48
  assertCanBorrow(sdk, suite, debt);
49
49
  const paths = createRouterPaths({
50
50
  sdk,
@@ -42,7 +42,7 @@ function planDeposit(intent, view) {
42
42
  const aU = view.price(intent.token, U, intent.amount);
43
43
  const debtDelta = intent.targetLeverage === void 0 ? proportionalDebt(view, aU) : debtForLeverage(view.collateral + aU, intent.targetLeverage) - view.debt;
44
44
  if (debtDelta < 0n) throw new IntentPreviewError(leverageOutOfRange(), `deposit: target leverage ${intent.targetLeverage} would require repaying debt`);
45
- assertDebtLimits(view.sdk, view.debt + debtDelta, view.debtLimits, U, view.maxBorrowAmount);
45
+ assertDebtLimits(view.sdk, view.debt + debtDelta, view.debtLimits, U);
46
46
  const T = intent.positionToken ?? positionToken(view, "deposit");
47
47
  const depositStays = eq(intent.token, T);
48
48
  return [
@@ -73,12 +73,11 @@ function planRepay(intent, view) {
73
73
  if (view.debt <= 0n) throw new IntentPreviewError(debtOutOfRange({
74
74
  requested: toTokenAmount(view.sdk, U, view.debt),
75
75
  minDebt: toTokenAmount(view.sdk, U, view.debtLimits.minDebt),
76
- maxDebt: toTokenAmount(view.sdk, U, view.debtLimits.maxDebt),
77
- maxBorrowAmount: view.maxBorrowAmount
76
+ maxDebt: toTokenAmount(view.sdk, U, view.debtLimits.maxDebt)
78
77
  }), "repay: the account owes nothing");
79
78
  const funding = everything(intent.amount) ? view.price(U, intent.token, withMargin(view.debt)) : intent.amount;
80
79
  const repaid = min(view.price(intent.token, U, funding), view.debt);
81
- assertDebtLimits(view.sdk, view.debt - repaid, view.debtLimits, view.underlying, view.maxBorrowAmount);
80
+ assertDebtLimits(view.sdk, view.debt - repaid, view.debtLimits, view.underlying);
82
81
  return [
83
82
  add(intent.token, funding, intent.value),
84
83
  ...fundsInU ? [] : [convert(intent.token, U, funding)],
@@ -307,7 +306,7 @@ function withdrawShape(intent, view) {
307
306
  };
308
307
  }
309
308
  const dD = proportionalDebt(view, WU);
310
- assertDebtLimits(view.sdk, view.debt - dD, view.debtLimits, view.underlying, view.maxBorrowAmount);
309
+ assertDebtLimits(view.sdk, view.debt - dD, view.debtLimits, view.underlying);
311
310
  return {
312
311
  U,
313
312
  T,
@@ -326,7 +325,7 @@ function leverageShape(intent, view) {
326
325
  assertLeverageAtLeastOne(intent.targetLeverage);
327
326
  if (view.collateral <= 0n) throw new IntentPreviewError(insufficientBalance(), "adjustLeverage: account has no collateral to lever");
328
327
  const target = debtForLeverage(view.collateral, intent.targetLeverage);
329
- assertDebtLimits(view.sdk, target, view.debtLimits, view.underlying, view.maxBorrowAmount);
328
+ assertDebtLimits(view.sdk, target, view.debtLimits, view.underlying);
330
329
  return {
331
330
  U: view.underlying,
332
331
  delta: target - view.debt
@@ -12,7 +12,7 @@ function accountView(creditAccount, sdk) {
12
12
  const { underlying, creditManager } = creditAccount;
13
13
  const oracle = sdk.marketRegister.findByCreditManager(creditManager).priceOracle;
14
14
  const price = (from, to, amount) => oracle.safeConvert(from, to, amount).value;
15
- const creditSuite = sdk.marketRegister.findCreditManager(creditManager);
15
+ const { creditFacade } = sdk.marketRegister.findCreditManager(creditManager);
16
16
  let totalValue = 0n;
17
17
  for (const t of creditAccount.tokens) totalValue += price(t.token, underlying, t.balance);
18
18
  return {
@@ -22,10 +22,9 @@ function accountView(creditAccount, sdk) {
22
22
  debt: creditAccount.totalDebt,
23
23
  collateral: totalValue - creditAccount.totalDebt,
24
24
  debtLimits: {
25
- minDebt: creditSuite.creditFacade.minDebt,
26
- maxDebt: creditSuite.creditFacade.maxDebt
25
+ minDebt: creditFacade.minDebt,
26
+ maxDebt: creditFacade.maxDebt
27
27
  },
28
- maxBorrowAmount: creditSuite.maxBorrowAmount(),
29
28
  balanceOf: (token) => creditAccount.tokens.find((t) => eq(t.token, token))?.balance ?? 0n,
30
29
  price,
31
30
  fattest: (exclude) => pickFattestNonPhantomToken({
@@ -1,5 +1,3 @@
1
- import { MaxBorrowAmount } from "../../market/credit/types.js";
2
- import "../../market/index.js";
3
1
  import { OnchainSDK } from "../../OnchainSDK.js";
4
2
  import { Address } from "viem";
5
3
  //#region src/onchain/accounts/intents/math.d.ts
@@ -46,6 +44,6 @@ declare function assertLeverageAtLeastOne(leverage: bigint): void;
46
44
  * Rejects a debt the facade would revert on: zero is always fine (no loan at
47
45
  * all), anything else has to sit inside `[minDebt, maxDebt]`.
48
46
  */
49
- declare function assertDebtLimits(sdk: OnchainSDK, debt: bigint, debtLimits: DebtLimits, underlying: Address, maxBorrowAmount: MaxBorrowAmount): void;
47
+ declare function assertDebtLimits(sdk: OnchainSDK, debt: bigint, debtLimits: DebtLimits, underlying: Address): void;
50
48
  //#endregion
51
49
  export { DebtLimits, Position, assertDebtLimits, assertLeverageAtLeastOne, debtForLeverage, maxProportionalWithdrawal, proportionalDebt };
@@ -1,8 +1,6 @@
1
1
  import { DelayedIntent } from "../../../model/delayed-intents.js";
2
2
  import "../../../model/index.js";
3
3
  import { ClaimableWithdrawal } from "../withdrawal-compressor/types.js";
4
- import { MaxBorrowAmount } from "../../market/credit/types.js";
5
- import "../../market/index.js";
6
4
  import { OnchainSDK } from "../../OnchainSDK.js";
7
5
  import { AddCollateralIntent, AdjustLeverageIntent, DepositStrategyIntent, RepayStrategyIntent, WithdrawAssetIntent, WithdrawStrategyIntent } from "./types.js";
8
6
  import { DebtLimits } from "./math.js";
@@ -111,7 +109,6 @@ interface AccountView {
111
109
  /** TVL − debt, in underlying. */
112
110
  collateral: bigint;
113
111
  debtLimits: DebtLimits;
114
- maxBorrowAmount: MaxBorrowAmount;
115
112
  balanceOf(token: Address): bigint;
116
113
  /** Oracle conversion; unpriceable tokens contribute 0n. */
117
114
  price(from: Address, to: Address, amount: bigint): bigint;
@@ -17,7 +17,7 @@ interface DebtLimitsArgs {
17
17
  */
18
18
  allowZero: boolean;
19
19
  /** From the caller's suite; a caller that raises to throw advises nobody. */
20
- maxBorrowAmount: MaxBorrowAmount;
20
+ maxBorrowAmount?: MaxBorrowAmount;
21
21
  }
22
22
  /** A debt the facade would revert on. */
23
23
  declare function checkDebtLimits(args: DebtLimitsArgs): DebtOutOfRangeError[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gearbox-protocol/sdk",
3
- "version": "17.6.1",
3
+ "version": "17.6.2",
4
4
  "description": "Gearbox SDK",
5
5
  "license": "MIT",
6
6
  "repository": {