@gearbox-protocol/sdk 16.0.0-next.39 → 16.0.0-next.40

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 (26) hide show
  1. package/dist/cjs/onchain/positions/MultichainPositionsService.js +1 -0
  2. package/dist/cjs/onchain/positions/PositionsService.js +11 -6
  3. package/dist/esm/dev/AccountOpener.js +1 -1
  4. package/dist/esm/dev/withdrawalUtils.js +1 -1
  5. package/dist/esm/onchain/accounts/CreditAccountsServiceV310.js +2 -2
  6. package/dist/esm/onchain/accounts/liquidations/LiquidationsService.js +1 -1
  7. package/dist/esm/onchain/accounts/withdrawal-compressor/RedemptionLoggerV310Contract.js +1 -1
  8. package/dist/esm/onchain/accounts/withdrawal-compressor/WithdrawalCompressorV310Contract.js +1 -1
  9. package/dist/esm/onchain/accounts/withdrawal-compressor/WithdrawalCompressorV311Contract.js +1 -1
  10. package/dist/esm/onchain/accounts/withdrawal-compressor/WithdrawalCompressorV313Contract.js +1 -1
  11. package/dist/esm/onchain/base/TokensMeta.js +3 -3
  12. package/dist/esm/onchain/core/createAddressProvider.js +1 -1
  13. package/dist/esm/onchain/market/adapters/contracts/AccountMigratorAdapterContract.js +1 -1
  14. package/dist/esm/onchain/market/adapters/contracts/ERC4626AdapterContract.js +1 -1
  15. package/dist/esm/onchain/market/credit/CreditFacadeV310BaseContract.js +1 -1
  16. package/dist/esm/onchain/market/pool/PoolV310Contract.js +1 -1
  17. package/dist/esm/onchain/market/zapper/IETHZapperContract.js +1 -1
  18. package/dist/esm/onchain/market/zapper/ZapperContract.js +1 -1
  19. package/dist/esm/onchain/positions/MultichainPositionsService.js +1 -0
  20. package/dist/esm/onchain/positions/PositionsService.js +11 -6
  21. package/dist/esm/onchain/utils/viem/simulateWithPriceUpdates.js +1 -1
  22. package/dist/esm/preview/simulate/simulatePoolOperation.js +1 -1
  23. package/dist/esm/preview/trace/extractTransfers.js +1 -1
  24. package/dist/types/onchain/positions/PositionsService.d.ts +7 -2
  25. package/dist/types/onchain/positions/types.d.ts +5 -0
  26. package/package.json +1 -1
@@ -33,6 +33,7 @@ var MultichainPositionsService = class extends require_onchain_base_MultichainCo
33
33
  block: props.blockNumber ?? "latest",
34
34
  run: (sdk, block) => sdk.positions.getCurrentWithdrawals({
35
35
  creditAccount: props.creditAccount,
36
+ creditManager: props.creditManager,
36
37
  blockNumber: block.blockNumber
37
38
  })
38
39
  });
@@ -70,20 +70,25 @@ var PositionsService = class extends require_onchain_base_SDKConstruct.SDKConstr
70
70
  /**
71
71
  * Returns delayed withdrawals of a strategy position
72
72
  *
73
- * Empty when this chain has no withdrawal compressor, or the account does
74
- * not exist.
73
+ * Empty when this chain has no withdrawal compressor, or when the account's
74
+ * credit manager has no withdrawal config — no config, no withdrawal, and
75
+ * nothing to ask the chain about.
76
+ *
77
+ * The manager comes from the caller. It used to be read off the account
78
+ * here, which cost an uncached read of the whole account to learn one field
79
+ * every caller already knows.
75
80
  **/
76
81
  async getCurrentWithdrawals(props) {
77
- const { creditAccount, blockNumber } = props;
82
+ const { creditAccount, creditManager, blockNumber } = props;
78
83
  const empty = {
79
84
  claimable: [],
80
85
  pending: []
81
86
  };
82
87
  const compressor = this.sdk.withdrawalCompressor;
83
88
  if (!compressor) return empty;
84
- const ca = await this.sdk.accounts.getCreditAccountData(creditAccount, blockNumber);
85
- if (!ca) return empty;
86
- const { priceOracle } = this.sdk.marketRegister.findByCreditManager(ca.creditManager);
89
+ await compressor.loadWithdrawableAssets();
90
+ if (compressor.getWithdrawableAssets(creditManager).length === 0) return empty;
91
+ const { priceOracle } = this.sdk.marketRegister.findByCreditManager(creditManager);
87
92
  return this.#toPositionWithdrawals(await compressor.getCurrentWithdrawals(creditAccount, blockNumber), priceOracle);
88
93
  }
89
94
  /**
@@ -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,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 { skipLiquidatableAccount } from "./skipLiquidatableAccount.js";
24
24
  //#region src/onchain/accounts/liquidations/LiquidationsService.ts
25
25
  /**
@@ -1,7 +1,7 @@
1
- import { iRedemptionLoggerV310Abi } from "../../../abi/iRedemptionLoggerV310.js";
2
1
  import { BaseContract } from "../../base/BaseContract.js";
3
2
  import "../../base/index.js";
4
3
  import { decodeDelayedIntent } from "./intent-codec.js";
4
+ import { iRedemptionLoggerV310Abi } from "../../../abi/iRedemptionLoggerV310.js";
5
5
  import { InvalidDelayedIntentError } from "./errors.js";
6
6
  //#region src/onchain/accounts/withdrawal-compressor/RedemptionLoggerV310Contract.ts
7
7
  const abi = iRedemptionLoggerV310Abi;
@@ -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: {
@@ -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,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,6 +1,6 @@
1
- import { iZapperAbi } from "../../../abi/iZapper.js";
2
1
  import { BaseContract } from "../../base/BaseContract.js";
3
2
  import "../../base/index.js";
3
+ import { iZapperAbi } from "../../../abi/iZapper.js";
4
4
  import { UnsupportedZapperFunctionError } from "./errors.js";
5
5
  //#region src/onchain/market/zapper/ZapperContract.ts
6
6
  /**
@@ -32,6 +32,7 @@ var MultichainPositionsService = class extends MultichainConstruct {
32
32
  block: props.blockNumber ?? "latest",
33
33
  run: (sdk, block) => sdk.positions.getCurrentWithdrawals({
34
34
  creditAccount: props.creditAccount,
35
+ creditManager: props.creditManager,
35
36
  blockNumber: block.blockNumber
36
37
  })
37
38
  });
@@ -69,20 +69,25 @@ var PositionsService = class extends SDKConstruct {
69
69
  /**
70
70
  * Returns delayed withdrawals of a strategy position
71
71
  *
72
- * Empty when this chain has no withdrawal compressor, or the account does
73
- * not exist.
72
+ * Empty when this chain has no withdrawal compressor, or when the account's
73
+ * credit manager has no withdrawal config — no config, no withdrawal, and
74
+ * nothing to ask the chain about.
75
+ *
76
+ * The manager comes from the caller. It used to be read off the account
77
+ * here, which cost an uncached read of the whole account to learn one field
78
+ * every caller already knows.
74
79
  **/
75
80
  async getCurrentWithdrawals(props) {
76
- const { creditAccount, blockNumber } = props;
81
+ const { creditAccount, creditManager, blockNumber } = props;
77
82
  const empty = {
78
83
  claimable: [],
79
84
  pending: []
80
85
  };
81
86
  const compressor = this.sdk.withdrawalCompressor;
82
87
  if (!compressor) return empty;
83
- const ca = await this.sdk.accounts.getCreditAccountData(creditAccount, blockNumber);
84
- if (!ca) return empty;
85
- const { priceOracle } = this.sdk.marketRegister.findByCreditManager(ca.creditManager);
88
+ await compressor.loadWithdrawableAssets();
89
+ if (compressor.getWithdrawableAssets(creditManager).length === 0) return empty;
90
+ const { priceOracle } = this.sdk.marketRegister.findByCreditManager(creditManager);
86
91
  return this.#toPositionWithdrawals(await compressor.getCurrentWithdrawals(creditAccount, blockNumber), priceOracle);
87
92
  }
88
93
  /**
@@ -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,5 +1,5 @@
1
- import { iZapperAbi } from "../../abi/iZapper.js";
2
1
  import { iPoolV310Abi } from "../../abi/310/generated.js";
2
+ import { iZapperAbi } from "../../abi/iZapper.js";
3
3
  import { asPreviewSimulationError } from "./errors.js";
4
4
  //#region src/preview/simulate/simulatePoolOperation.ts
5
5
  function previewRead(operation) {
@@ -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";
@@ -45,8 +45,13 @@ declare class PositionsService extends SDKConstruct {
45
45
  /**
46
46
  * Returns delayed withdrawals of a strategy position
47
47
  *
48
- * Empty when this chain has no withdrawal compressor, or the account does
49
- * not exist.
48
+ * Empty when this chain has no withdrawal compressor, or when the account's
49
+ * credit manager has no withdrawal config — no config, no withdrawal, and
50
+ * nothing to ask the chain about.
51
+ *
52
+ * The manager comes from the caller. It used to be read off the account
53
+ * here, which cost an uncached read of the whole account to learn one field
54
+ * every caller already knows.
50
55
  **/
51
56
  getCurrentWithdrawals(props: GetCurrentWithdrawalsProps): Promise<PositionWithdrawals>;
52
57
  /**
@@ -46,6 +46,11 @@ interface GetCurrentWithdrawalsPropsBase {
46
46
  * Credit account whose delayed withdrawals to read.
47
47
  **/
48
48
  creditAccount: Address;
49
+ /**
50
+ * Credit manager the account belongs to.
51
+ *
52
+ **/
53
+ creditManager: Address;
49
54
  /**
50
55
  * Block to read at. Defaults to the latest block.
51
56
  **/
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gearbox-protocol/sdk",
3
- "version": "16.0.0-next.39",
3
+ "version": "16.0.0-next.40",
4
4
  "description": "Gearbox SDK",
5
5
  "license": "MIT",
6
6
  "repository": {