@gearbox-protocol/sdk 17.13.0-next.1 → 17.13.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 (28) hide show
  1. package/dist/cjs/dev/ltUtils.js +3 -2
  2. package/dist/cjs/onchain/accounts/liquidations/LiquidationsService.js +5 -2
  3. package/dist/cjs/onchain/accounts/liquidations/partialLiquidation.js +4 -4
  4. package/dist/esm/dev/AccountOpener.js +1 -1
  5. package/dist/esm/dev/ltUtils.js +3 -2
  6. package/dist/esm/dev/withdrawalUtils.js +1 -1
  7. package/dist/esm/history/trace/extractTransfers.js +1 -1
  8. package/dist/esm/onchain/accounts/CreditAccountsServiceV310.js +2 -2
  9. package/dist/esm/onchain/accounts/liquidations/LiquidationsService.js +6 -3
  10. package/dist/esm/onchain/accounts/liquidations/partialLiquidation.js +4 -4
  11. package/dist/esm/onchain/accounts/withdrawal-compressor/RedemptionLoggerV310Contract.js +1 -1
  12. package/dist/esm/onchain/accounts/withdrawal-compressor/WithdrawalCompressorV310Contract.js +1 -1
  13. package/dist/esm/onchain/accounts/withdrawal-compressor/WithdrawalCompressorV311Contract.js +1 -1
  14. package/dist/esm/onchain/accounts/withdrawal-compressor/WithdrawalCompressorV313Contract.js +1 -1
  15. package/dist/esm/onchain/base/TokensMeta.js +3 -3
  16. package/dist/esm/onchain/core/createAddressProvider.js +1 -1
  17. package/dist/esm/onchain/market/adapters/contracts/AccountMigratorAdapterContract.js +1 -1
  18. package/dist/esm/onchain/market/adapters/contracts/ERC4626AdapterContract.js +1 -1
  19. package/dist/esm/onchain/market/credit/CreditFacadeV310BaseContract.js +1 -1
  20. package/dist/esm/onchain/market/pool/PoolV310Contract.js +1 -1
  21. package/dist/esm/onchain/market/rwa/createDegenNFT.js +1 -1
  22. package/dist/esm/onchain/market/zapper/IETHZapperContract.js +1 -1
  23. package/dist/esm/onchain/market/zapper/ZapperContract.js +1 -1
  24. package/dist/esm/onchain/preview/preview/previewPoolPositionOperation.js +2 -2
  25. package/dist/esm/onchain/utils/viem/simulateWithPriceUpdates.js +1 -1
  26. package/dist/types/onchain/accounts/liquidations/LiquidationsService.d.ts +5 -1
  27. package/dist/types/onchain/accounts/liquidations/partialLiquidation.d.ts +9 -1
  28. package/package.json +1 -1
@@ -15,13 +15,14 @@ let viem = require("viem");
15
15
  */
16
16
  async function setLTs(anvil, cm, newLTs, logger) {
17
17
  const configuratorAddr = await impresonateCCOwner(anvil, cm);
18
- for (const [t, lt] of Object.entries(newLTs)) await anvil.writeContract({
18
+ for (const [t, lt] of Object.entries(newLTs)) await anvil.writeContractSync({
19
19
  chain: anvil.chain,
20
20
  address: cm.creditConfigurator.baseParams.addr,
21
21
  account: configuratorAddr,
22
22
  abi: require_abi_310_generated.iCreditConfiguratorV310Abi,
23
23
  functionName: "setLiquidationThreshold",
24
- args: [t, lt]
24
+ args: [t, lt],
25
+ throwOnReceiptRevert: true
25
26
  });
26
27
  await anvil.stopImpersonatingAccount({ address: configuratorAddr });
27
28
  await logLTs(anvil, cm, require_onchain_utils_mappers.TypedObjectUtils.keys(newLTs), logger);
@@ -98,14 +98,17 @@ var LiquidationsService = class extends require_onchain_base_SDKConstruct.SDKCon
98
98
  * @param ca - Credit account to partially liquidate.
99
99
  * @param optimalHF - Health factor to aim for, in basis points. Defaults to
100
100
  * {@link CreditSuite.optimalHFForPartialLiquidation}.
101
+ * @param liquidationThresholds - Liquidation thresholds to use instead of
102
+ * the credit manager's cached ones, for example LTs just set on a fork.
101
103
  * @throws If no `tokenOut` can be picked.
102
104
  **/
103
- getOptimalPartialLiquidation(ca, optimalHF) {
105
+ getOptimalPartialLiquidation(ca, optimalHF, liquidationThresholds) {
104
106
  return require_onchain_accounts_liquidations_partialLiquidation.optimalPartialLiquidation({
105
107
  suite: this.sdk.marketRegister.findCreditManager(ca.creditManager),
106
108
  account: ca,
107
109
  optimalHF,
108
- exclude: (token) => this.#isWithdrawalPhantom(token)
110
+ exclude: (token) => this.#isWithdrawalPhantom(token),
111
+ liquidationThresholds
109
112
  });
110
113
  }
111
114
  /**
@@ -12,11 +12,11 @@ require("../../market/index.js");
12
12
  *
13
13
  * @throws If no `tokenOut` can be picked.
14
14
  **/
15
- function optimalPartialLiquidation({ suite, account, optimalHF = suite.optimalHFForPartialLiquidation(account), exclude }) {
15
+ function optimalPartialLiquidation({ suite, account, optimalHF = suite.optimalHFForPartialLiquidation(account), exclude, liquidationThresholds }) {
16
16
  const tokenOut = bestTokenOut(suite, account, exclude);
17
17
  return {
18
18
  tokenOut,
19
- ...optimalAmounts(suite, account, tokenOut, optimalHF)
19
+ ...optimalAmounts(suite, account, tokenOut, optimalHF, liquidationThresholds)
20
20
  };
21
21
  }
22
22
  /**
@@ -45,10 +45,10 @@ function bestTokenOut(suite, account, exclude) {
45
45
  /**
46
46
  * @throws If `tokenOut` is not a collateral token of the credit manager.
47
47
  **/
48
- function optimalAmounts(suite, account, tokenOut, optimalHF) {
48
+ function optimalAmounts(suite, account, tokenOut, optimalHF, liquidationThresholds) {
49
49
  const { creditManager: cm, market } = suite;
50
50
  const { feeLiquidation, liquidationDiscount } = suite.liquidationFees();
51
- const ltTokenOut = cm.liquidationThresholds.get(tokenOut);
51
+ const ltTokenOut = liquidationThresholds?.get(tokenOut) ?? cm.liquidationThresholds.get(tokenOut);
52
52
  if (ltTokenOut === void 0) throw new Error(`token ${suite.register.labelAddress(tokenOut)} is not a collateral token in credit manager ${suite.register.labelAddress(cm.address)}`);
53
53
  return require_onchain_market_math.optimalPartialLiquidationAmounts({
54
54
  totalDebt: account.debt + account.accruedInterest + account.accruedFees,
@@ -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";
@@ -14,13 +14,14 @@ import { erc20Abi, parseEther } from "viem";
14
14
  */
15
15
  async function setLTs(anvil, cm, newLTs, logger) {
16
16
  const configuratorAddr = await impresonateCCOwner(anvil, cm);
17
- for (const [t, lt] of Object.entries(newLTs)) await anvil.writeContract({
17
+ for (const [t, lt] of Object.entries(newLTs)) await anvil.writeContractSync({
18
18
  chain: anvil.chain,
19
19
  address: cm.creditConfigurator.baseParams.addr,
20
20
  account: configuratorAddr,
21
21
  abi: iCreditConfiguratorV310Abi,
22
22
  functionName: "setLiquidationThreshold",
23
- args: [t, lt]
23
+ args: [t, lt],
24
+ throwOnReceiptRevert: true
24
25
  });
25
26
  await anvil.stopImpersonatingAccount({ address: configuratorAddr });
26
27
  await logLTs(anvil, cm, TypedObjectUtils.keys(newLTs), logger);
@@ -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";
@@ -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";
@@ -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";
@@ -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 { optimalPartialLiquidation, partialLiquidationParams } from "./partialLiquidation.js";
24
24
  import { skipLiquidatableAccount } from "./skipLiquidatableAccount.js";
25
25
  //#region src/onchain/accounts/liquidations/LiquidationsService.ts
@@ -97,14 +97,17 @@ var LiquidationsService = class extends SDKConstruct {
97
97
  * @param ca - Credit account to partially liquidate.
98
98
  * @param optimalHF - Health factor to aim for, in basis points. Defaults to
99
99
  * {@link CreditSuite.optimalHFForPartialLiquidation}.
100
+ * @param liquidationThresholds - Liquidation thresholds to use instead of
101
+ * the credit manager's cached ones, for example LTs just set on a fork.
100
102
  * @throws If no `tokenOut` can be picked.
101
103
  **/
102
- getOptimalPartialLiquidation(ca, optimalHF) {
104
+ getOptimalPartialLiquidation(ca, optimalHF, liquidationThresholds) {
103
105
  return optimalPartialLiquidation({
104
106
  suite: this.sdk.marketRegister.findCreditManager(ca.creditManager),
105
107
  account: ca,
106
108
  optimalHF,
107
- exclude: (token) => this.#isWithdrawalPhantom(token)
109
+ exclude: (token) => this.#isWithdrawalPhantom(token),
110
+ liquidationThresholds
108
111
  });
109
112
  }
110
113
  /**
@@ -11,11 +11,11 @@ import "../../market/index.js";
11
11
  *
12
12
  * @throws If no `tokenOut` can be picked.
13
13
  **/
14
- function optimalPartialLiquidation({ suite, account, optimalHF = suite.optimalHFForPartialLiquidation(account), exclude }) {
14
+ function optimalPartialLiquidation({ suite, account, optimalHF = suite.optimalHFForPartialLiquidation(account), exclude, liquidationThresholds }) {
15
15
  const tokenOut = bestTokenOut(suite, account, exclude);
16
16
  return {
17
17
  tokenOut,
18
- ...optimalAmounts(suite, account, tokenOut, optimalHF)
18
+ ...optimalAmounts(suite, account, tokenOut, optimalHF, liquidationThresholds)
19
19
  };
20
20
  }
21
21
  /**
@@ -44,10 +44,10 @@ function bestTokenOut(suite, account, exclude) {
44
44
  /**
45
45
  * @throws If `tokenOut` is not a collateral token of the credit manager.
46
46
  **/
47
- function optimalAmounts(suite, account, tokenOut, optimalHF) {
47
+ function optimalAmounts(suite, account, tokenOut, optimalHF, liquidationThresholds) {
48
48
  const { creditManager: cm, market } = suite;
49
49
  const { feeLiquidation, liquidationDiscount } = suite.liquidationFees();
50
- const ltTokenOut = cm.liquidationThresholds.get(tokenOut);
50
+ const ltTokenOut = liquidationThresholds?.get(tokenOut) ?? cm.liquidationThresholds.get(tokenOut);
51
51
  if (ltTokenOut === void 0) throw new Error(`token ${suite.register.labelAddress(tokenOut)} is not a collateral token in credit manager ${suite.register.labelAddress(cm.address)}`);
52
52
  return optimalPartialLiquidationAmounts({
53
53
  totalDebt: account.debt + account.accruedInterest + account.accruedFees,
@@ -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 "../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 = {};
@@ -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,
@@ -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";
@@ -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.
@@ -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";
@@ -1,7 +1,9 @@
1
1
  import { TxCall } from "../../../model/primitives.js";
2
2
  import { LiquidatableAccount, LiquidationDetails, LiquidationPosition } from "../../../model/liquidations.js";
3
3
  import "../../../model/index.js";
4
+ import { AddressMap } from "../../utils/AddressMap.js";
4
5
  import { CreditAccountData } from "../../base/types.js";
6
+ import "../../utils/index.js";
5
7
  import { SDKConstruct } from "../../base/SDKConstruct.js";
6
8
  import "../../base/index.js";
7
9
  import { BuildLiquidationTxProps, GetLiquidatableAccountsProps, GetLiquidationDetailsProps, GetLiquidationPositionsProps, LoadRWALiquidatorsProps, PartialLiquidationParams } from "./types.js";
@@ -40,9 +42,11 @@ declare class LiquidationsService extends SDKConstruct {
40
42
  * @param ca - Credit account to partially liquidate.
41
43
  * @param optimalHF - Health factor to aim for, in basis points. Defaults to
42
44
  * {@link CreditSuite.optimalHFForPartialLiquidation}.
45
+ * @param liquidationThresholds - Liquidation thresholds to use instead of
46
+ * the credit manager's cached ones, for example LTs just set on a fork.
43
47
  * @throws If no `tokenOut` can be picked.
44
48
  **/
45
- getOptimalPartialLiquidation(ca: CreditAccountData, optimalHF?: bigint): OptimalPartialLiquidation;
49
+ getOptimalPartialLiquidation(ca: CreditAccountData, optimalHF?: bigint, liquidationThresholds?: AddressMap<number>): OptimalPartialLiquidation;
46
50
  /**
47
51
  * Everything a partial liquidation of a credit account needs, with any
48
52
  * parameter the caller pinned down taken as given and the rest derived from
@@ -1,7 +1,9 @@
1
+ import { AddressMap } from "../../utils/AddressMap.js";
1
2
  import { CreditAccountData } from "../../base/types.js";
2
3
  import { CreditSuite } from "../../market/credit/CreditSuite.js";
3
4
  import { OptimalPartialLiquidationAmounts } from "../../market/math.js";
4
5
  import "../../market/index.js";
6
+ import "../../utils/index.js";
5
7
  import "../../base/index.js";
6
8
  import { PartialLiquidationParams } from "./types.js";
7
9
  import { Address } from "viem";
@@ -27,6 +29,12 @@ interface OptimalPartialLiquidationProps {
27
29
  * Tokens that cannot be seized.
28
30
  **/
29
31
  exclude?: (token: Address) => boolean;
32
+ /**
33
+ * Liquidation thresholds to use instead of the credit manager's cached ones,
34
+ * for example LTs just set on a fork. Tokens missing here fall back to the
35
+ * credit manager.
36
+ **/
37
+ liquidationThresholds?: AddressMap<number>;
30
38
  }
31
39
  /**
32
40
  * Partial liquidation that brings the account's health factor close to the
@@ -68,7 +76,7 @@ interface PartialLiquidationParamsProps {
68
76
  *
69
77
  * @throws If no `tokenOut` can be picked.
70
78
  **/
71
- declare function optimalPartialLiquidation({ suite, account, optimalHF, exclude }: OptimalPartialLiquidationProps): OptimalPartialLiquidation;
79
+ declare function optimalPartialLiquidation({ suite, account, optimalHF, exclude, liquidationThresholds }: OptimalPartialLiquidationProps): OptimalPartialLiquidation;
72
80
  /**
73
81
  * Everything a partial liquidation of credit account needs, with any parameter
74
82
  * the caller pinned down taken as given and the rest derived from current state.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gearbox-protocol/sdk",
3
- "version": "17.13.0-next.1",
3
+ "version": "17.13.0-next.2",
4
4
  "description": "Gearbox SDK",
5
5
  "license": "MIT",
6
6
  "repository": {