@gearbox-protocol/sdk 13.3.3 → 13.4.0-beta.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 (89) hide show
  1. package/dist/cjs/permissionless/utils/price-update/get-price-update-tx.js +3 -15
  2. package/dist/cjs/sdk/GearboxSDK.js +135 -20
  3. package/dist/cjs/sdk/accounts/AbstractCreditAccountsService.js +196 -340
  4. package/dist/cjs/sdk/accounts/CreditAccountsServiceV310.js +30 -35
  5. package/dist/cjs/sdk/accounts/multicall-utils.js +91 -0
  6. package/dist/cjs/sdk/base/BaseContract.js +26 -6
  7. package/dist/cjs/sdk/base/ChainContractsRegister.js +39 -2
  8. package/dist/cjs/sdk/base/Construct.js +15 -3
  9. package/dist/cjs/sdk/base/TokensMeta.js +23 -0
  10. package/dist/cjs/sdk/constants/address-provider.js +0 -22
  11. package/dist/cjs/sdk/core/AbstractAddressProviderContract.js +15 -0
  12. package/dist/cjs/sdk/market/MarketRegister.js +74 -3
  13. package/dist/cjs/sdk/market/credit/CreditFacadeV310Contract.js +6 -0
  14. package/dist/cjs/sdk/market/oracle/PriceOracleBaseContract.js +31 -50
  15. package/dist/cjs/sdk/market/pricefeeds/PriceFeedRef.js +16 -0
  16. package/dist/cjs/sdk/market/pricefeeds/PriceFeedsRegister.js +55 -12
  17. package/dist/cjs/sdk/options.js +30 -24
  18. package/dist/cjs/sdk/plugins/BasePlugin.js +24 -0
  19. package/dist/cjs/sdk/pools/AbstractPoolService.js +6 -0
  20. package/dist/cjs/sdk/router/AbstractRouterContract.js +4 -1
  21. package/dist/cjs/sdk/router/RouterV310Contract.js +20 -15
  22. package/dist/cjs/sdk/utils/AddressMap.js +53 -17
  23. package/dist/cjs/sdk/utils/AddressSet.js +9 -0
  24. package/dist/esm/permissionless/utils/price-update/get-price-update-tx.js +6 -20
  25. package/dist/esm/sdk/GearboxSDK.js +135 -20
  26. package/dist/esm/sdk/accounts/AbstractCreditAccountsService.js +204 -342
  27. package/dist/esm/sdk/accounts/CreditAccountsServiceV310.js +30 -35
  28. package/dist/esm/sdk/accounts/multicall-utils.js +69 -0
  29. package/dist/esm/sdk/base/BaseContract.js +26 -6
  30. package/dist/esm/sdk/base/ChainContractsRegister.js +39 -2
  31. package/dist/esm/sdk/base/Construct.js +15 -3
  32. package/dist/esm/sdk/base/TokensMeta.js +23 -0
  33. package/dist/esm/sdk/constants/address-provider.js +0 -21
  34. package/dist/esm/sdk/core/AbstractAddressProviderContract.js +15 -0
  35. package/dist/esm/sdk/market/MarketRegister.js +74 -3
  36. package/dist/esm/sdk/market/credit/CreditFacadeV310Contract.js +6 -0
  37. package/dist/esm/sdk/market/oracle/PriceOracleBaseContract.js +31 -50
  38. package/dist/esm/sdk/market/pricefeeds/PriceFeedRef.js +16 -0
  39. package/dist/esm/sdk/market/pricefeeds/PriceFeedsRegister.js +55 -12
  40. package/dist/esm/sdk/options.js +30 -24
  41. package/dist/esm/sdk/plugins/BasePlugin.js +24 -0
  42. package/dist/esm/sdk/pools/AbstractPoolService.js +6 -0
  43. package/dist/esm/sdk/router/AbstractRouterContract.js +4 -1
  44. package/dist/esm/sdk/router/RouterV310Contract.js +20 -15
  45. package/dist/esm/sdk/utils/AddressMap.js +53 -17
  46. package/dist/esm/sdk/utils/AddressSet.js +9 -0
  47. package/dist/types/permissionless/bindings/price-feed-store.d.ts +1 -2
  48. package/dist/types/permissionless/bindings/types.d.ts +0 -4
  49. package/dist/types/permissionless/utils/price-update/get-price-update-tx.d.ts +1 -3
  50. package/dist/types/sdk/GearboxSDK.d.ts +236 -34
  51. package/dist/types/sdk/accounts/AbstractCreditAccountsService.d.ts +92 -147
  52. package/dist/types/sdk/accounts/CreditAccountsServiceV310.d.ts +14 -5
  53. package/dist/types/sdk/accounts/multicall-utils.d.ts +39 -0
  54. package/dist/types/sdk/accounts/types.d.ts +237 -40
  55. package/dist/types/sdk/base/BaseContract.d.ts +67 -6
  56. package/dist/types/sdk/base/ChainContractsRegister.d.ts +51 -2
  57. package/dist/types/sdk/base/Construct.d.ts +31 -0
  58. package/dist/types/sdk/base/PlaceholderContract.d.ts +3 -0
  59. package/dist/types/sdk/base/SDKConstruct.d.ts +10 -0
  60. package/dist/types/sdk/base/TokensMeta.d.ts +59 -2
  61. package/dist/types/sdk/base/types.d.ts +185 -25
  62. package/dist/types/sdk/chain/chains.d.ts +78 -18
  63. package/dist/types/sdk/chain/detectNetwork.d.ts +7 -0
  64. package/dist/types/sdk/constants/address-provider.d.ts +4 -3
  65. package/dist/types/sdk/core/AbstractAddressProviderContract.d.ts +23 -0
  66. package/dist/types/sdk/core/types.d.ts +46 -0
  67. package/dist/types/sdk/market/MarketRegister.d.ts +81 -0
  68. package/dist/types/sdk/market/adapters/PlaceholderAdapterContracts.d.ts +3 -0
  69. package/dist/types/sdk/market/credit/CreditFacadeV310Contract.d.ts +1 -0
  70. package/dist/types/sdk/market/oracle/PriceOracleBaseContract.d.ts +40 -50
  71. package/dist/types/sdk/market/oracle/types.d.ts +78 -59
  72. package/dist/types/sdk/market/pricefeeds/AbstractLPPriceFeed.d.ts +3 -0
  73. package/dist/types/sdk/market/pricefeeds/AbstractPriceFeed.d.ts +3 -0
  74. package/dist/types/sdk/market/pricefeeds/PriceFeedRef.d.ts +22 -2
  75. package/dist/types/sdk/market/pricefeeds/PriceFeedsRegister.d.ts +80 -16
  76. package/dist/types/sdk/market/pricefeeds/getRawPriceUpdates.d.ts +2 -2
  77. package/dist/types/sdk/market/pricefeeds/types.d.ts +75 -11
  78. package/dist/types/sdk/options.d.ts +13 -4
  79. package/dist/types/sdk/plugins/BasePlugin.d.ts +39 -0
  80. package/dist/types/sdk/plugins/types.d.ts +73 -43
  81. package/dist/types/sdk/pools/AbstractPoolService.d.ts +12 -0
  82. package/dist/types/sdk/pools/types.d.ts +75 -6
  83. package/dist/types/sdk/router/AbstractRouterContract.d.ts +21 -2
  84. package/dist/types/sdk/router/RouterV310Contract.d.ts +27 -15
  85. package/dist/types/sdk/router/types.d.ts +47 -70
  86. package/dist/types/sdk/types/state.d.ts +32 -3
  87. package/dist/types/sdk/utils/AddressMap.d.ts +61 -17
  88. package/dist/types/sdk/utils/AddressSet.d.ts +15 -0
  89. package/package.json +4 -2
@@ -2,47 +2,47 @@ import type { Address } from "viem";
2
2
  import type { CreditAccountData } from "../base/index.js";
3
3
  import { SDKConstruct } from "../base/index.js";
4
4
  import type { GearboxSDK } from "../GearboxSDK.js";
5
- import type { OnDemandPriceUpdates, UpdatePriceFeedsResult } from "../market/index.js";
5
+ import { type PriceUpdate, type UpdatePriceFeedsResult } from "../market/index.js";
6
6
  import { type Asset, type RouterCASlice } from "../router/index.js";
7
- import type { MultiCall } from "../types/index.js";
8
- import type { AccountToCheck, AddCollateralProps, ChangeDeptProps, ClaimDelayedProps, CloseCreditAccountProps, CloseCreditAccountResult, CreditAccountOperationResult, ExecuteSwapProps, FullyLiquidateProps, FullyLiquidateResult, GetConnectedBotsResult, GetConnectedMigrationBotsResult, GetCreditAccountsOptions, GetPendingWithdrawalsProps, GetPendingWithdrawalsResult, OpenCAProps, PermitResult, PrepareUpdateQuotasProps, PreviewDelayedWithdrawalProps, PreviewDelayedWithdrawalResult, PriceUpdatesOptions, Rewards, StartDelayedWithdrawalProps, UpdateQuotasProps } from "./types.js";
7
+ import type { MultiCall, RawTx } from "../types/index.js";
8
+ import type { AccountToCheck, AddCollateralProps, ChangeDeptProps, ClaimDelayedProps, CloseCreditAccountProps, CloseCreditAccountResult, CreditAccountOperationResult, CreditAccountTokensSlice, ExecuteSwapProps, FullyLiquidateProps, FullyLiquidateResult, GetConnectedBotsResult, GetConnectedMigrationBotsResult, GetCreditAccountsOptions, GetPendingWithdrawalsProps, GetPendingWithdrawalsResult, OpenCAProps, PermitResult, PrepareUpdateQuotasProps, PreviewDelayedWithdrawalProps, PreviewDelayedWithdrawalResult, Rewards, StartDelayedWithdrawalProps, UpdateQuotasProps } from "./types.js";
9
+ /**
10
+ * Options for configuring the credit account service.
11
+ **/
9
12
  export interface CreditAccountServiceOptions {
13
+ /**
14
+ * Maximum number of credit accounts to fetch per compressor call.
15
+ * When set, accounts are loaded in batches of this size until all are fetched.
16
+ **/
10
17
  batchSize?: number;
11
18
  }
19
+ /**
20
+ * Returns the withdrawal compressor contract address for the given chain, or `undefined` if none is configured.
21
+ * @param chainId - Numeric chain ID.
22
+ * @returns Withdrawal compressor address, or `undefined`.
23
+ **/
12
24
  export declare function getWithdrawalCompressorAddress(chainId: number): `0x${string}`;
25
+ /**
26
+ * @internal
27
+ */
13
28
  export declare abstract class AbstractCreditAccountService extends SDKConstruct {
14
29
  #private;
15
30
  constructor(sdk: GearboxSDK, options?: CreditAccountServiceOptions);
16
31
  /**
17
- * Returns single credit account data, or undefined if it's not found
18
- * Performs all necessary price feed updates under the hood
19
- * @param account
20
- * @param blockNumber
21
- * @returns
22
- */
32
+ * {@inheritDoc ICreditAccountsService.getCreditAccountData}
33
+ **/
23
34
  getCreditAccountData(account: Address, blockNumber?: bigint): Promise<CreditAccountData | undefined>;
24
35
  /**
25
- * Methods to get all credit accounts with some optional filtering
26
- * Performs all necessary price feed updates under the hood
27
- *
28
- * @param options
29
- * @param blockNumber
30
- * @returns returned credit accounts are sorted by health factor in ascending order
31
- */
36
+ * {@inheritDoc ICreditAccountsService.getCreditAccounts}
37
+ **/
32
38
  getCreditAccounts(options?: GetCreditAccountsOptions, blockNumber?: bigint): Promise<Array<CreditAccountData>>;
33
39
  /**
34
- * Method to get all claimable rewards for credit account (ex. stkUSDS SKY rewards)
35
- Assosiates rewards by adapter + stakedPhantomToken
36
- * @param {Address} creditAccount - address of credit account to get rewards for
37
- * @returns {Array<Rewards>} list of {@link Rewards} that can be claimed
38
- */
40
+ * {@inheritDoc ICreditAccountsService.getRewards}
41
+ **/
39
42
  getRewards(creditAccount: Address): Promise<Array<Rewards>>;
40
43
  /**
41
- * Method to get all connected bots for credit account
42
- * @param {Array<AccountToCheck>} accountsToCheck - list of credit accounts
43
- and their credit managers to check connected bots on
44
- * @returns call result of getConnectedBots for each credit account
45
- */
44
+ * {@inheritDoc ICreditAccountsService.getConnectedBots}
45
+ **/
46
46
  getConnectedBots(accountsToCheck: Array<AccountToCheck>, legacyMigrationBot: Address | undefined, additionalBots: Array<Address>): Promise<{
47
47
  legacy: GetConnectedBotsResult;
48
48
  legacyMigration: GetConnectedMigrationBotsResult;
@@ -51,156 +51,101 @@ export declare abstract class AbstractCreditAccountService extends SDKConstruct
51
51
  private getActiveBots;
52
52
  private getActiveMigrationBots;
53
53
  /**
54
- * Generates transaction to liquidate credit account
55
- * @param props - {@link FullyLiquidateProps}
56
- * @returns
57
- */
54
+ * {@inheritDoc ICreditAccountsService.fullyLiquidate}
55
+ **/
58
56
  fullyLiquidate(props: FullyLiquidateProps): Promise<FullyLiquidateResult>;
59
57
  /**
60
- * Closes credit account or closes credit account and keeps it open with zero debt.
61
- - Ca is closed in the following order: price update -> close path to swap all tokens into underlying ->
62
- -> disable quotas of exiting tokens -> decrease debt -> disable exiting tokens tokens -> withdraw underlying tokenz
63
- * @param {CloseOptions} operation - {@link CloseOptions}: close or zeroDebt
64
- * @param {RouterCASlice} creditAccount - minimal credit account data {@link RouterCASlice} on which operation is performed
65
- * @param {Array<Address>} assetsToWithdraw - tokens to withdraw from credit account.
66
- For credit account closing this is the underlying token, because during the closure,
67
- all tokens on account are swapped into the underlying,
68
- and only the underlying token will remain on the credit account
69
- * @param {Address} to - Wallet address to withdraw underlying to
70
- * @param {number} slippage - Slippage in PERCENTAGE_FORMAT (100% = 10_000) per operation
71
- * @default 50n
72
- * @param {RouterCloseResult | undefined} closePath - result of findBestClosePath method from router; if omited, calls marketRegister.findCreditManager {@link RouterCloseResult}
73
- * @returns All necessary data to execute the transaction (call, credit facade)
74
- */
58
+ * {@inheritDoc ICreditAccountsService.closeCreditAccount}
59
+ **/
75
60
  closeCreditAccount({ operation, assetsToWithdraw, creditAccount: ca, to, slippage, closePath, }: CloseCreditAccountProps): Promise<CloseCreditAccountResult>;
76
61
  /**
77
- * Updates quota of credit account.
78
- - CA quota updated in the following order: price update -> update quotas
79
- * @param {RouterCASlice} creditAccount - minimal credit account data {@link RouterCASlice} on which operation is performed
80
- * @param {Array<Asset>} averageQuota - average quota for desired tokens {@link Asset}
81
- * @param {Array<Asset>} minQuota - minimum quota for desired tokens {@link Asset}
82
- * @returns All necessary data to execute the transaction (call, credit facade)
83
- */
62
+ * {@inheritDoc ICreditAccountsService.updateQuotas}
63
+ **/
84
64
  updateQuotas({ minQuota, averageQuota, creditAccount, }: UpdateQuotasProps): Promise<CreditAccountOperationResult>;
85
65
  /**
86
- * Adds a single collateral to credit account and updates quotas
87
- - Collateral is added in the following order: price update -> add collateral (with permit) -> update quotas
88
- * @param {RouterCASlice} creditAccount - minimal credit account data {@link RouterCASlice} on which operation is performed
89
- * @param {Array<Asset>} averageQuota - average quota for desired token {@link Asset}
90
- * @param {Array<Asset>} minQuota - minimum quota for desired token {@link Asset}
91
- * @param {Asset} asset - asset to add as collateral {@link Asset}
92
- * @param {PermitResult | undefined} permits - permits of collateral asset if it is permittable {@link PermitResult}
93
- * @param {bigint} ethAmount - native token amount to attach to tx
94
- * @returns All necessary data to execute the transaction (call, credit facade)
95
- */
66
+ * {@inheritDoc ICreditAccountsService.addCollateral}
67
+ **/
96
68
  addCollateral({ creditAccount, asset, permit, ethAmount, minQuota, averageQuota, }: AddCollateralProps): Promise<CreditAccountOperationResult>;
97
69
  /**
98
- * Increases or decreases debt of credit account; debt decrease uses token ON CREDIT ACCOUNT
99
- - Debt is changed in the following order: price update -> (enables underlying if it was disabled) -> change debt
100
- * @param {RouterCASlice} creditAccount - minimal credit account data {@link RouterCASlice} on which operation is performed
101
- * @param {bigint} amount - amount to change debt by;
102
- 0 - prohibited value;
103
- negative value for debt decrease;
104
- positive value for debt increase.
105
- * @returns All necessary data to execute the transaction (call, credit facade)
106
- */
70
+ * {@inheritDoc ICreditAccountsService.changeDebt}
71
+ **/
107
72
  changeDebt({ creditAccount, amount, addCollateral, }: ChangeDeptProps): Promise<CreditAccountOperationResult>;
108
73
  /**
109
- * Executes swap specified by given calls, update quotas of affected tokens
110
- - Swap is executed in the following order: price update -> execute swap path -> update quotas
111
- * @param {RouterCASlice} creditAccount - minimal credit account data {@link RouterCASlice} on which operation is performed
112
- * @param {Array<Asset>} averageQuota - average quota for desired token {@link Asset}
113
- * @param {Array<Asset>} minQuota - minimum quota for desired token {@link Asset}
114
- * @param {Array<MultiCall>} calls - array of MultiCall from router methods getSingleSwap or getAllSwaps {@link MultiCall}
115
- * @returns All necessary data to execute the transaction (call, credit facade)
116
- */
74
+ * {@inheritDoc ICreditAccountsService.executeSwap}
75
+ **/
117
76
  executeSwap({ creditAccount, calls: swapCalls, minQuota, averageQuota, }: ExecuteSwapProps): Promise<CreditAccountOperationResult>;
118
77
  /**
119
- * Preview delayed withdrawal for given token
120
- * @param props - {@link PreviewDelayedWithdrawalProps}
121
- * @returns
122
- */
78
+ * {@inheritDoc ICreditAccountsService.previewDelayedWithdrawal}
79
+ **/
123
80
  previewDelayedWithdrawal({ creditAccount, amount, token, }: PreviewDelayedWithdrawalProps): Promise<PreviewDelayedWithdrawalResult>;
124
81
  /**
125
- * Get claimable and pending withdrawals of an account
126
- * @param props - {@link GetPendingWithdrawalsProps}
127
- * @returns
128
- */
82
+ * {@inheritDoc ICreditAccountsService.getPendingWithdrawals}
83
+ **/
129
84
  getPendingWithdrawals({ creditAccount, }: GetPendingWithdrawalsProps): Promise<GetPendingWithdrawalsResult>;
130
85
  /**
131
- * Start delayed withdrawal for given token
132
- - Withdrawal is executed in the following order: price update -> execute withdraw calls -> update quotas
133
- * @param props - {@link StartDelayedWithdrawalProps}
134
- * @returns
135
- */
86
+ * {@inheritDoc ICreditAccountsService.startDelayedWithdrawal}
87
+ **/
136
88
  startDelayedWithdrawal({ creditAccount, minQuota, averageQuota, preview, }: StartDelayedWithdrawalProps): Promise<CreditAccountOperationResult>;
137
89
  /**
138
- * Claim tokens with delayed withdrawal
139
- - Claim is executed in the following order: price update -> execute claim calls -> update quotas
140
- * @param props - {@link ClaimDelayedProps}
141
- * @returns
142
- */
90
+ * {@inheritDoc ICreditAccountsService.claimDelayed}
91
+ **/
143
92
  claimDelayed({ creditAccount, minQuota, averageQuota, claimableNow, }: ClaimDelayedProps): Promise<CreditAccountOperationResult>;
144
93
  /**
145
- * Executes swap specified by given calls, update quotas of affected tokens
146
- - Open credit account is executed in the following order: price update -> increase debt -> add collateral ->
147
- -> update quotas -> (optionally: execute swap path for trading/strategy) ->
148
- -> (optionally: withdraw debt for lending)
149
- - Basic open credit account: price update -> increase debt -> add collateral -> update quotas
150
- - Lending: price update -> increase debt -> add collateral -> update quotas -> withdraw debt
151
- - Strategy/trading: price update -> increase debt -> add collateral -> update quotas -> execute swap path
152
- - In strategy is possible situation when collateral is added, but not swapped; the only swapped value in this case will be debt
153
- * @param {bigint} ethAmount - native token amount to attach to tx
154
- * @param {Address} creditManager - address of credit manager to open credit account on
155
- * @param {Array<Asset>} collateral - array of collateral which can be just directly added or swapped using the path {@link Asset}
156
- * @param {Record<Address, PermitResult>} permits - permits of collateral tokens (in any permittable token is present) {@link PermitResult}
157
- * @param {bigint} debt - debt to open credit account with
158
- * @param {boolean} withdrawDebt - flag to withdraw debt to wallet after opening credit account;
159
- used for borrowing functionality
160
- * @param {bigint} referralCode - referral code to open credit account with
161
- * @param {Address} to - wallet address to transfer credit account to\
162
- * @param {Array<MultiCall>} calls - array of MultiCall from router methods findOpenStrategyPath {@link MultiCall}.
163
- Used for trading and strategy functionality
164
- * @param {Array<Asset>} averageQuota - average quota for tokens after open {@link Asset}
165
- * @param {Array<Asset>} minQuota - minimum quota for tokens after open {@link Asset}
166
- * @returns All necessary data to execute the transaction (call, credit facade)
167
- */
94
+ * {@inheritDoc ICreditAccountsService.openCA}
95
+ **/
168
96
  openCA({ ethAmount, creditManager, collateral, permits, debt, withdrawDebt, referralCode, to, calls: openPathCalls, minQuota, averageQuota, }: OpenCAProps): Promise<CreditAccountOperationResult>;
169
97
  /**
170
- * Returns borrow rate with 4 digits precision (10000 = 100%)
171
- * @param ca
172
- * @returns
173
- */
98
+ * {@inheritDoc ICreditAccountsService.getBorrowRate}
99
+ **/
174
100
  getBorrowRate(ca: CreditAccountData): bigint;
175
101
  /**
176
- * Returns optimal HF for partial liquidation with 4 digits precision (10000 = 100%)
177
- * @param ca
178
- */
102
+ * {@inheritDoc ICreditAccountsService.getOptimalHFForPartialLiquidation}
103
+ **/
179
104
  getOptimalHFForPartialLiquidation(ca: CreditAccountData): bigint;
180
105
  /**
181
- * Returns raw txs that are needed to update all price feeds so that all credit accounts (possibly from different markets) compute
106
+ * {@inheritDoc ICreditAccountsService.getOnDemandPriceUpdates}
107
+ **/
108
+ getOnDemandPriceUpdates(account: CreditAccountTokensSlice, ignoreReservePrices?: boolean): Promise<PriceUpdate[]>;
109
+ /**
110
+ * Analyzes a multicall array and prepends necessary on-demand price feed updates.
182
111
  *
183
- * This can be used by batch liquidator
184
- * @param accounts
185
- * @returns
112
+ * Deduplicates existing `onDemandPriceUpdates` calls
113
+ *
114
+ * @param creditManager - Address of the credit manager
115
+ * @param calls - The multicall array to prepend price updates to
116
+ * @param ca - Credit account slice, undefined when opening a new account
117
+ * @param options - Optional settings for price update generation
118
+ * @returns A new array with a single consolidated price update call prepended,
119
+ * followed by the non-price-update calls in their original order
120
+ */
121
+ protected prependPriceUpdates(creditManager: Address, calls: MultiCall[], ca?: RouterCASlice, options?: {
122
+ ignoreReservePrices?: boolean;
123
+ }): Promise<MultiCall[]>;
124
+ protected getUpdateForAccount(account: CreditAccountTokensSlice, ignoreReservePrices?: boolean): Promise<UpdatePriceFeedsResult>;
125
+ /**
126
+ * Executes a multicall on a credit account, automatically prepending
127
+ * necessary on-demand price feed updates.
128
+ *
129
+ * @param creditAccount - Credit account to execute multicall on
130
+ * @param calls - Array of multicall operations (price updates will be inferred)
131
+ * @param options - Optional settings for price update generation
132
+ * @returns Raw transaction ready to be signed and sent
186
133
  */
187
- getUpdateForAccounts(accounts: Array<RouterCASlice>): Promise<UpdatePriceFeedsResult>;
188
- protected getUpdateForAccount(options: PriceUpdatesOptions): Promise<UpdatePriceFeedsResult>;
134
+ multicall(creditAccount: RouterCASlice, calls: MultiCall[], options?: {
135
+ ignoreReservePrices?: boolean;
136
+ }): Promise<RawTx>;
189
137
  /**
190
- * Returns account price updates that can be used in credit facade multicall or liquidator calls
191
- * @param options
192
- * @returns
193
- */
194
- getOnDemandPriceUpdates(options: PriceUpdatesOptions): Promise<OnDemandPriceUpdates>;
195
- /**
196
- * Returns price updates in format that is accepted by various credit facade methods (multicall, close/liquidate, etc...).
197
- * - If there are desiredQuotas and creditAccount update quotaBalance > 0 || (balance > 10n && isEnabled). Is used when account has both: balances and quota buys.
198
- * - If there is creditAccount update balance > 10n && isEnabled. Is used in credit account actions when quota is not being bought.
199
- * - If there is desiredQuotas update quotaBalance > 0. Is used on credit account opening, when quota is bought for the first time.
200
- * @param acc
201
- * @returns
202
- */
203
- getPriceUpdatesForFacade(options: PriceUpdatesOptions): Promise<Array<MultiCall>>;
138
+ * Executes a bot multicall on a credit account, automatically prepending
139
+ * necessary on-demand price feed updates.
140
+ *
141
+ * @param creditAccount - Credit account to execute bot multicall on
142
+ * @param calls - Array of multicall operations (price updates will be inferred)
143
+ * @param options - Optional settings for price update generation
144
+ * @returns Raw transaction ready to be signed and sent
145
+ */
146
+ botMulticall(creditAccount: RouterCASlice, calls: MultiCall[], options?: {
147
+ ignoreReservePrices?: boolean;
148
+ }): Promise<RawTx>;
204
149
  protected prepareDisableQuotas(ca: RouterCASlice): Array<MultiCall>;
205
150
  protected prepareUpdateQuotas(creditFacade: Address, { averageQuota, minQuota }: PrepareUpdateQuotasProps): Array<MultiCall>;
206
151
  protected prepareDecreaseDebt(ca: RouterCASlice): Array<MultiCall>;
@@ -1,24 +1,33 @@
1
1
  import { AbstractCreditAccountService } from "./AbstractCreditAccountsService.js";
2
2
  import type { ClaimFarmRewardsProps, CreditAccountOperationResult, CreditManagerOperationResult, ICreditAccountsService, LlamathenaProportionalWithdrawProps, PreviewWithdrawLlamathenaProportionallyProps, PreviewWithdrawLlamathenaProportionallyResult, RepayAndLiquidateCreditAccountProps, RepayCreditAccountProps, SetBotProps, WithdrawCollateralProps } from "./types.js";
3
+ /**
4
+ * Service for querying and operating on Gearbox credit accounts.
5
+ *
6
+ * Provides methods to fetch account data, build transactions for common operations
7
+ * (open, close, liquidate, swap, manage collateral/debt/quotas), and generate
8
+ * the price feed updates required by the credit facade.
9
+ *
10
+ * @see {@link ICreditAccountsService}
11
+ **/
3
12
  export declare class CreditAccountServiceV310 extends AbstractCreditAccountService implements ICreditAccountsService {
4
13
  /**
5
- * Implements {@link ICreditAccountsService.setBot}
14
+ * {@inheritDoc ICreditAccountsService.setBot}
6
15
  */
7
16
  setBot({ botAddress, permissions: defaultPermissions, targetContract, }: SetBotProps): Promise<CreditAccountOperationResult | CreditManagerOperationResult>;
8
17
  /**
9
- * Implements {@link ICreditAccountsService.withdrawCollateral}
18
+ * {@inheritDoc ICreditAccountsService.withdrawCollateral}
10
19
  */
11
20
  withdrawCollateral({ creditAccount, assetsToWithdraw, to, minQuota, averageQuota, }: WithdrawCollateralProps): Promise<CreditAccountOperationResult>;
12
21
  /**
13
- * Implements {@link ICreditAccountsService.repayCreditAccount}
22
+ * {@inheritDoc ICreditAccountsService.repayCreditAccount}
14
23
  */
15
24
  repayCreditAccount({ operation, collateralAssets, assetsToWithdraw, creditAccount: ca, permits, to, tokensToClaim, }: RepayCreditAccountProps): Promise<CreditAccountOperationResult>;
16
25
  /**
17
- * Implements {@link ICreditAccountsService.repayAndLiquidateCreditAccount}
26
+ * {@inheritDoc ICreditAccountsService.repayAndLiquidateCreditAccount}
18
27
  */
19
28
  repayAndLiquidateCreditAccount({ collateralAssets, assetsToWithdraw, creditAccount: ca, permits, to, tokensToClaim, }: RepayAndLiquidateCreditAccountProps): Promise<CreditAccountOperationResult>;
20
29
  /**
21
- * Implements {@link ICreditAccountsService.claimFarmRewards}
30
+ * {@inheritDoc ICreditAccountsService.claimFarmRewards}
22
31
  */
23
32
  claimFarmRewards({ calls: externalCalls, creditAccount: ca, minQuota, averageQuota, tokensToClaim, }: ClaimFarmRewardsProps): Promise<CreditAccountOperationResult>;
24
33
  previewWithdrawLlamathenaProportionally(_: PreviewWithdrawLlamathenaProportionallyProps): Promise<PreviewWithdrawLlamathenaProportionallyResult>;
@@ -0,0 +1,39 @@
1
+ import type { PriceUpdate } from "../market/pricefeeds/types.js";
2
+ import type { MultiCall } from "../types/index.js";
3
+ import { AddressSet } from "../utils/AddressSet.js";
4
+ /**
5
+ * Splits a multicall array into existing price-update data and remaining calls.
6
+ *
7
+ * All `onDemandPriceUpdates` entries are decoded and their {@link PriceUpdate}
8
+ * tuples are collected into a flat array. The remaining (non-price-update)
9
+ * calls are returned in their original order.
10
+ *
11
+ * @param calls - Array of multicall entries to split
12
+ * @returns Object with `priceUpdates` (decoded price update tuples) and
13
+ * `remainingCalls` (everything else, preserving order)
14
+ */
15
+ export declare function extractPriceUpdates(calls: MultiCall[]): {
16
+ priceUpdates: PriceUpdate[];
17
+ remainingCalls: MultiCall[];
18
+ };
19
+ /**
20
+ * Extracts token addresses from `updateQuota` calls that have a positive `quotaChange`.
21
+ *
22
+ * Only tokens whose quota is being increased (i.e. `quotaChange > 0`) are
23
+ * returned, since those are the tokens that require fresh price feed data.
24
+ *
25
+ * @param calls - Array of multicall entries to scan
26
+ * @returns Unique token addresses from positive-change quota updates
27
+ */
28
+ export declare function extractQuotaTokens(calls: MultiCall[]): AddressSet;
29
+ /**
30
+ * Merges two {@link PriceUpdate} arrays, deduplicating by `priceFeed` address.
31
+ *
32
+ * When both arrays contain an update for the same price feed, the entry from
33
+ * `existing` takes priority (the caller explicitly included it).
34
+ *
35
+ * @param existing - Price updates already present in the multicall
36
+ * @param generated - Newly generated price updates to merge in
37
+ * @returns Merged array with no duplicate `priceFeed` addresses
38
+ */
39
+ export declare function mergePriceUpdates(existing: PriceUpdate[], generated: PriceUpdate[]): PriceUpdate[];