@gearbox-protocol/sdk 14.12.0-next.7 → 14.12.0-next.9

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 (180) hide show
  1. package/dist/cjs/dev/AccountOpener.js +7 -13
  2. package/dist/cjs/history/classifyMulticallOperations.js +2 -0
  3. package/dist/cjs/history/mapOperations.js +7 -0
  4. package/dist/cjs/plugins/adapters/abi/iConvexV1BoosterAdapter.js +143 -0
  5. package/dist/cjs/plugins/adapters/abi/index.js +2 -0
  6. package/dist/cjs/plugins/adapters/contracts/AbstractAdapter.js +36 -0
  7. package/dist/cjs/plugins/adapters/contracts/AbstractCurveAdapter.js +66 -0
  8. package/dist/cjs/plugins/adapters/contracts/BalancerV3RouterAdapterContract.js +19 -0
  9. package/dist/cjs/plugins/adapters/contracts/BalancerV3WrapperAdapterContract.js +15 -0
  10. package/dist/cjs/plugins/adapters/contracts/CamelotV3AdapterContract.js +20 -0
  11. package/dist/cjs/plugins/adapters/contracts/ConvexV1BaseRewardPoolAdapterContract.js +18 -0
  12. package/dist/cjs/plugins/adapters/contracts/ConvexV1BoosterAdapterContract.js +28 -2
  13. package/dist/cjs/plugins/adapters/contracts/Curve2AssetsAdapterContract.js +2 -7
  14. package/dist/cjs/plugins/adapters/contracts/Curve3AssetsAdapterContract.js +2 -7
  15. package/dist/cjs/plugins/adapters/contracts/Curve4AssetsAdapterContract.js +2 -7
  16. package/dist/cjs/plugins/adapters/contracts/CurveV1AdapterDeposit.js +2 -2
  17. package/dist/cjs/plugins/adapters/contracts/CurveV1AdapterStETHContract.js +2 -7
  18. package/dist/cjs/plugins/adapters/contracts/CurveV1StableNGAdapterContract.js +2 -7
  19. package/dist/cjs/plugins/adapters/contracts/DaiUsdsAdapterContract.js +14 -0
  20. package/dist/cjs/plugins/adapters/contracts/ERC4626AdapterContract.js +15 -0
  21. package/dist/cjs/plugins/adapters/contracts/ERC4626ReferralAdapterContract.js +14 -0
  22. package/dist/cjs/plugins/adapters/contracts/FluidDexAdapterContract.js +15 -0
  23. package/dist/cjs/plugins/adapters/contracts/InfinifiGatewayAdapterContract.js +21 -0
  24. package/dist/cjs/plugins/adapters/contracts/KelpLRTDepositPoolAdapterContract.js +10 -0
  25. package/dist/cjs/plugins/adapters/contracts/LidoV1AdapterContract.js +11 -0
  26. package/dist/cjs/plugins/adapters/contracts/MellowDVVAdapterContract.js +15 -0
  27. package/dist/cjs/plugins/adapters/contracts/MellowERC4626VaultAdapterContract.js +15 -0
  28. package/dist/cjs/plugins/adapters/contracts/MellowWrapperAdapterContract.js +11 -0
  29. package/dist/cjs/plugins/adapters/contracts/MidasIssuanceVaultAdapterContract.js +10 -0
  30. package/dist/cjs/plugins/adapters/contracts/MidasRedemptionVaultAdapterContract.js +12 -0
  31. package/dist/cjs/plugins/adapters/contracts/PendleRouterAdapterContract.js +58 -0
  32. package/dist/cjs/plugins/adapters/contracts/SecuritizeOnRampAdapterContract.js +11 -0
  33. package/dist/cjs/plugins/adapters/contracts/SecuritizeSwapAdapterContract.js +22 -1
  34. package/dist/cjs/plugins/adapters/contracts/StakingRewardsAdapterContract.js +17 -0
  35. package/dist/cjs/plugins/adapters/contracts/TraderJoeRouterAdapterContract.js +10 -0
  36. package/dist/cjs/plugins/adapters/contracts/UniswapV2AdapterContract.js +10 -0
  37. package/dist/cjs/plugins/adapters/contracts/UniswapV3AdapterContract.js +20 -0
  38. package/dist/cjs/plugins/adapters/contracts/UniswapV4AdapterContract.js +15 -0
  39. package/dist/cjs/plugins/adapters/contracts/UpshiftVaultAdapterContract.js +14 -0
  40. package/dist/cjs/plugins/adapters/contracts/VelodromeV2AdapterContract.js +10 -0
  41. package/dist/cjs/plugins/adapters/contracts/WstETHV1AdapterContract.js +15 -0
  42. package/dist/cjs/preview/parse/classifyInnerOperations.js +14 -1
  43. package/dist/cjs/preview/prerequisites/buildPrerequisites.js +3 -8
  44. package/dist/cjs/preview/preview/errors.js +16 -0
  45. package/dist/cjs/preview/preview/previewOpenCreditAccount.js +56 -25
  46. package/dist/cjs/preview/preview/{extractExpectedBalanceChanges.js → unwrapNativeCollateral.js} +20 -23
  47. package/dist/cjs/sdk/accounts/CreditAccountsServiceV310.js +3 -4
  48. package/dist/cjs/sdk/base/BaseContract.js +4 -2
  49. package/dist/cjs/sdk/base/ChainContractsRegister.js +1 -0
  50. package/dist/cjs/sdk/router/AbstractRouterContract.js +21 -27
  51. package/dist/cjs/sdk/router/RouterV310Contract.js +11 -12
  52. package/dist/cjs/sdk/router/helpers.js +0 -5
  53. package/dist/cjs/sdk/utils/AddressMap.js +6 -0
  54. package/dist/cjs/sdk/utils/AssetsMap.js +61 -0
  55. package/dist/cjs/sdk/utils/index.js +2 -0
  56. package/dist/esm/dev/AccountOpener.js +8 -13
  57. package/dist/esm/history/classifyMulticallOperations.js +2 -0
  58. package/dist/esm/history/mapOperations.js +7 -0
  59. package/dist/esm/plugins/adapters/abi/iConvexV1BoosterAdapter.js +119 -0
  60. package/dist/esm/plugins/adapters/abi/index.js +1 -0
  61. package/dist/esm/plugins/adapters/contracts/AbstractAdapter.js +36 -0
  62. package/dist/esm/plugins/adapters/contracts/AbstractCurveAdapter.js +42 -0
  63. package/dist/esm/plugins/adapters/contracts/BalancerV3RouterAdapterContract.js +22 -1
  64. package/dist/esm/plugins/adapters/contracts/BalancerV3WrapperAdapterContract.js +18 -1
  65. package/dist/esm/plugins/adapters/contracts/CamelotV3AdapterContract.js +23 -1
  66. package/dist/esm/plugins/adapters/contracts/ConvexV1BaseRewardPoolAdapterContract.js +22 -1
  67. package/dist/esm/plugins/adapters/contracts/ConvexV1BoosterAdapterContract.js +30 -2
  68. package/dist/esm/plugins/adapters/contracts/Curve2AssetsAdapterContract.js +2 -7
  69. package/dist/esm/plugins/adapters/contracts/Curve3AssetsAdapterContract.js +2 -7
  70. package/dist/esm/plugins/adapters/contracts/Curve4AssetsAdapterContract.js +2 -7
  71. package/dist/esm/plugins/adapters/contracts/CurveV1AdapterDeposit.js +2 -2
  72. package/dist/esm/plugins/adapters/contracts/CurveV1AdapterStETHContract.js +2 -7
  73. package/dist/esm/plugins/adapters/contracts/CurveV1StableNGAdapterContract.js +2 -7
  74. package/dist/esm/plugins/adapters/contracts/DaiUsdsAdapterContract.js +17 -1
  75. package/dist/esm/plugins/adapters/contracts/ERC4626AdapterContract.js +19 -1
  76. package/dist/esm/plugins/adapters/contracts/ERC4626ReferralAdapterContract.js +17 -1
  77. package/dist/esm/plugins/adapters/contracts/FluidDexAdapterContract.js +18 -1
  78. package/dist/esm/plugins/adapters/contracts/InfinifiGatewayAdapterContract.js +24 -1
  79. package/dist/esm/plugins/adapters/contracts/KelpLRTDepositPoolAdapterContract.js +13 -1
  80. package/dist/esm/plugins/adapters/contracts/LidoV1AdapterContract.js +14 -1
  81. package/dist/esm/plugins/adapters/contracts/MellowDVVAdapterContract.js +18 -1
  82. package/dist/esm/plugins/adapters/contracts/MellowERC4626VaultAdapterContract.js +18 -1
  83. package/dist/esm/plugins/adapters/contracts/MellowWrapperAdapterContract.js +14 -1
  84. package/dist/esm/plugins/adapters/contracts/MidasIssuanceVaultAdapterContract.js +13 -1
  85. package/dist/esm/plugins/adapters/contracts/MidasRedemptionVaultAdapterContract.js +15 -1
  86. package/dist/esm/plugins/adapters/contracts/PendleRouterAdapterContract.js +61 -1
  87. package/dist/esm/plugins/adapters/contracts/SecuritizeOnRampAdapterContract.js +14 -1
  88. package/dist/esm/plugins/adapters/contracts/SecuritizeSwapAdapterContract.js +25 -2
  89. package/dist/esm/plugins/adapters/contracts/StakingRewardsAdapterContract.js +20 -1
  90. package/dist/esm/plugins/adapters/contracts/TraderJoeRouterAdapterContract.js +13 -1
  91. package/dist/esm/plugins/adapters/contracts/UniswapV2AdapterContract.js +10 -0
  92. package/dist/esm/plugins/adapters/contracts/UniswapV3AdapterContract.js +20 -0
  93. package/dist/esm/plugins/adapters/contracts/UniswapV4AdapterContract.js +18 -1
  94. package/dist/esm/plugins/adapters/contracts/UpshiftVaultAdapterContract.js +17 -1
  95. package/dist/esm/plugins/adapters/contracts/VelodromeV2AdapterContract.js +13 -1
  96. package/dist/esm/plugins/adapters/contracts/WstETHV1AdapterContract.js +18 -1
  97. package/dist/esm/preview/parse/classifyInnerOperations.js +14 -1
  98. package/dist/esm/preview/prerequisites/buildPrerequisites.js +4 -8
  99. package/dist/esm/preview/preview/errors.js +15 -0
  100. package/dist/esm/preview/preview/previewOpenCreditAccount.js +59 -26
  101. package/dist/esm/preview/preview/unwrapNativeCollateral.js +21 -0
  102. package/dist/esm/sdk/accounts/CreditAccountsServiceV310.js +4 -5
  103. package/dist/esm/sdk/base/BaseContract.js +4 -2
  104. package/dist/esm/sdk/base/ChainContractsRegister.js +1 -0
  105. package/dist/esm/sdk/router/AbstractRouterContract.js +25 -29
  106. package/dist/esm/sdk/router/RouterV310Contract.js +11 -12
  107. package/dist/esm/sdk/router/helpers.js +0 -4
  108. package/dist/esm/sdk/utils/AddressMap.js +6 -0
  109. package/dist/esm/sdk/utils/AssetsMap.js +37 -0
  110. package/dist/esm/sdk/utils/index.js +1 -0
  111. package/dist/types/common-utils/utils/strategies/assets/assets.d.ts +1 -1
  112. package/dist/types/common-utils/utils/strategies/credit-managers/get-wallet-balances-allowed-on-cm.d.ts +1 -1
  113. package/dist/types/common-utils/utils/strategies/strategy-info/calculate-total-apy.d.ts +1 -1
  114. package/dist/types/common-utils/utils/strategies/strategy-info/calculate-total-points.d.ts +1 -1
  115. package/dist/types/common-utils/utils/strategies/tokens/add-amount-in-target.d.ts +1 -1
  116. package/dist/types/common-utils/utils/strategies/tokens/get-list-with-amount-in-target.d.ts +1 -1
  117. package/dist/types/common-utils/utils/strategies/types/strategy-earnings.d.ts +1 -1
  118. package/dist/types/common-utils/utils/validation/validate-balances.d.ts +1 -1
  119. package/dist/types/common-utils/utils/validation/validate-open-account.d.ts +1 -1
  120. package/dist/types/common-utils/utils/validation/validate-quota.d.ts +1 -1
  121. package/dist/types/common-utils/utils/validation/validate-token-to-obtain.d.ts +1 -1
  122. package/dist/types/plugins/adapters/abi/iConvexV1BoosterAdapter.d.ts +204 -0
  123. package/dist/types/plugins/adapters/abi/index.d.ts +1 -0
  124. package/dist/types/plugins/adapters/contracts/AbstractAdapter.d.ts +21 -3
  125. package/dist/types/plugins/adapters/contracts/AbstractCurveAdapter.d.ts +18 -0
  126. package/dist/types/plugins/adapters/contracts/BalancerV3RouterAdapterContract.d.ts +4 -2
  127. package/dist/types/plugins/adapters/contracts/BalancerV3WrapperAdapterContract.d.ts +4 -2
  128. package/dist/types/plugins/adapters/contracts/CamelotV3AdapterContract.d.ts +4 -2
  129. package/dist/types/plugins/adapters/contracts/ConvexV1BaseRewardPoolAdapterContract.d.ts +4 -2
  130. package/dist/types/plugins/adapters/contracts/ConvexV1BoosterAdapterContract.d.ts +8 -6
  131. package/dist/types/plugins/adapters/contracts/Curve2AssetsAdapterContract.d.ts +3 -6
  132. package/dist/types/plugins/adapters/contracts/Curve3AssetsAdapterContract.d.ts +3 -6
  133. package/dist/types/plugins/adapters/contracts/Curve4AssetsAdapterContract.d.ts +3 -6
  134. package/dist/types/plugins/adapters/contracts/CurveV1AdapterDeposit.d.ts +2 -2
  135. package/dist/types/plugins/adapters/contracts/CurveV1AdapterStETHContract.d.ts +3 -6
  136. package/dist/types/plugins/adapters/contracts/CurveV1StableNGAdapterContract.d.ts +3 -6
  137. package/dist/types/plugins/adapters/contracts/DaiUsdsAdapterContract.d.ts +4 -2
  138. package/dist/types/plugins/adapters/contracts/ERC4626AdapterContract.d.ts +4 -2
  139. package/dist/types/plugins/adapters/contracts/ERC4626ReferralAdapterContract.d.ts +4 -2
  140. package/dist/types/plugins/adapters/contracts/FluidDexAdapterContract.d.ts +4 -2
  141. package/dist/types/plugins/adapters/contracts/InfinifiGatewayAdapterContract.d.ts +4 -2
  142. package/dist/types/plugins/adapters/contracts/KelpLRTDepositPoolAdapterContract.d.ts +4 -2
  143. package/dist/types/plugins/adapters/contracts/LidoV1AdapterContract.d.ts +4 -2
  144. package/dist/types/plugins/adapters/contracts/MellowDVVAdapterContract.d.ts +4 -2
  145. package/dist/types/plugins/adapters/contracts/MellowERC4626VaultAdapterContract.d.ts +4 -2
  146. package/dist/types/plugins/adapters/contracts/MellowWrapperAdapterContract.d.ts +4 -2
  147. package/dist/types/plugins/adapters/contracts/MidasIssuanceVaultAdapterContract.d.ts +4 -2
  148. package/dist/types/plugins/adapters/contracts/MidasRedemptionVaultAdapterContract.d.ts +4 -2
  149. package/dist/types/plugins/adapters/contracts/PendleRouterAdapterContract.d.ts +4 -2
  150. package/dist/types/plugins/adapters/contracts/SecuritizeOnRampAdapterContract.d.ts +4 -2
  151. package/dist/types/plugins/adapters/contracts/SecuritizeSwapAdapterContract.d.ts +15 -3
  152. package/dist/types/plugins/adapters/contracts/StakingRewardsAdapterContract.d.ts +4 -2
  153. package/dist/types/plugins/adapters/contracts/TraderJoeRouterAdapterContract.d.ts +4 -2
  154. package/dist/types/plugins/adapters/contracts/UniswapV2AdapterContract.d.ts +3 -1
  155. package/dist/types/plugins/adapters/contracts/UniswapV3AdapterContract.d.ts +3 -1
  156. package/dist/types/plugins/adapters/contracts/UniswapV4AdapterContract.d.ts +4 -2
  157. package/dist/types/plugins/adapters/contracts/UpshiftVaultAdapterContract.d.ts +4 -2
  158. package/dist/types/plugins/adapters/contracts/VelodromeV2AdapterContract.d.ts +4 -2
  159. package/dist/types/plugins/adapters/contracts/WstETHV1AdapterContract.d.ts +4 -2
  160. package/dist/types/plugins/adapters/types.d.ts +10 -0
  161. package/dist/types/preview/parse/types-adapters.d.ts +5 -1
  162. package/dist/types/preview/parse/types-facades.d.ts +23 -1
  163. package/dist/types/preview/preview/errors.d.ts +12 -0
  164. package/dist/types/preview/preview/types.d.ts +9 -1
  165. package/dist/types/preview/preview/unwrapNativeCollateral.d.ts +20 -0
  166. package/dist/types/sdk/accounts/CreditAccountsServiceV310.d.ts +1 -1
  167. package/dist/types/sdk/accounts/types.d.ts +2 -2
  168. package/dist/types/sdk/base/BaseContract.d.ts +1 -1
  169. package/dist/types/sdk/base/TokensMeta.d.ts +1 -1
  170. package/dist/types/sdk/base/types.d.ts +18 -0
  171. package/dist/types/sdk/pools/types.d.ts +1 -1
  172. package/dist/types/sdk/router/AbstractRouterContract.d.ts +5 -5
  173. package/dist/types/sdk/router/helpers.d.ts +1 -2
  174. package/dist/types/sdk/router/types.d.ts +1 -15
  175. package/dist/types/sdk/utils/AddressMap.d.ts +4 -0
  176. package/dist/types/sdk/utils/AssetsMap.d.ts +26 -0
  177. package/dist/types/sdk/utils/index.d.ts +1 -0
  178. package/package.json +1 -1
  179. package/dist/esm/preview/preview/extractExpectedBalanceChanges.js +0 -24
  180. package/dist/types/preview/preview/extractExpectedBalanceChanges.d.ts +0 -21
@@ -1,6 +1,7 @@
1
- import { type Address } from "viem";
2
- import { type ConstructOptions, type ParsedCallV2 } from "../../../sdk/index.js";
1
+ import { type Address, type DecodeFunctionDataReturnType } from "viem";
2
+ import { type AddressMap, type ConstructOptions, type ParsedCallV2 } from "../../../sdk/index.js";
3
3
  import type { LegacyAdapterOperation, Transfers } from "../legacyAdapterOperations.js";
4
+ import type { DiffLeftover } from "../types.js";
4
5
  import type { ConcreteAdapterContractOptions } from "./AbstractAdapter.js";
5
6
  import { AbstractAdapterContract } from "./AbstractAdapter.js";
6
7
  declare const abi: readonly [{
@@ -214,5 +215,6 @@ export declare class LidoV1AdapterContract extends AbstractAdapterContract<abi,
214
215
  };
215
216
  /** @see https://github.com/Gearbox-protocol/charts_server/blob/master/core/operation_type.go#L277-L282 */
216
217
  classifyLegacyOperation(_parsed: ParsedCallV2, transfers: Transfers): LegacyAdapterOperation;
218
+ protected decodeDiffLeftovers(decoded: DecodeFunctionDataReturnType<abi>, balances: AddressMap<bigint>): DiffLeftover[];
217
219
  }
218
220
  export {};
@@ -1,6 +1,7 @@
1
- import { type Address } from "viem";
2
- import { type ConstructOptions, type ParsedCallV2 } from "../../../sdk/index.js";
1
+ import { type Address, type DecodeFunctionDataReturnType } from "viem";
2
+ import { type AddressMap, type ConstructOptions, type ParsedCallV2 } from "../../../sdk/index.js";
3
3
  import type { LegacyAdapterOperation, Transfers } from "../legacyAdapterOperations.js";
4
+ import type { DiffLeftover } from "../types.js";
4
5
  import type { ConcreteAdapterContractOptions } from "./AbstractAdapter.js";
5
6
  import { AbstractAdapterContract } from "./AbstractAdapter.js";
6
7
  declare const abi: readonly [{
@@ -710,5 +711,6 @@ export declare class MellowDVVAdapterContract extends AbstractAdapterContract<ab
710
711
  * @see https://github.com/Gearbox-protocol/charts_server/blob/master/core/operation_type_v3.go#L32-L38
711
712
  */
712
713
  classifyLegacyOperation(parsed: ParsedCallV2, transfers: Transfers): LegacyAdapterOperation;
714
+ protected decodeDiffLeftovers(decoded: DecodeFunctionDataReturnType<abi>, balances: AddressMap<bigint>): DiffLeftover[];
713
715
  }
714
716
  export {};
@@ -1,6 +1,7 @@
1
- import { type Address } from "viem";
2
- import { type ConstructOptions, type ParsedCallV2 } from "../../../sdk/index.js";
1
+ import { type Address, type DecodeFunctionDataReturnType } from "viem";
2
+ import { type AddressMap, type ConstructOptions, type ParsedCallV2 } from "../../../sdk/index.js";
3
3
  import type { LegacyAdapterOperation, Transfers } from "../legacyAdapterOperations.js";
4
+ import type { DiffLeftover } from "../types.js";
4
5
  import type { ConcreteAdapterContractOptions } from "./AbstractAdapter.js";
5
6
  import { AbstractAdapterContract } from "./AbstractAdapter.js";
6
7
  declare const abi: readonly [{
@@ -677,5 +678,6 @@ export declare class MellowERC4626VaultAdapterContract extends AbstractAdapterCo
677
678
  * @see https://github.com/Gearbox-protocol/charts_server/blob/master/core/operation_type_v3.go#L32-L38
678
679
  */
679
680
  classifyLegacyOperation(parsed: ParsedCallV2, transfers: Transfers): LegacyAdapterOperation;
681
+ protected decodeDiffLeftovers(decoded: DecodeFunctionDataReturnType<abi>, balances: AddressMap<bigint>): DiffLeftover[];
680
682
  }
681
683
  export {};
@@ -1,5 +1,6 @@
1
- import { type Address } from "viem";
2
- import { type ConstructOptions } from "../../../sdk/index.js";
1
+ import { type Address, type DecodeFunctionDataReturnType } from "viem";
2
+ import { type AddressMap, type ConstructOptions } from "../../../sdk/index.js";
3
+ import type { DiffLeftover } from "../types.js";
3
4
  import type { ConcreteAdapterContractOptions } from "./AbstractAdapter.js";
4
5
  import { AbstractAdapterContract } from "./AbstractAdapter.js";
5
6
  declare const abi: readonly [{
@@ -208,5 +209,6 @@ export declare class MellowWrapperAdapterContract extends AbstractAdapterContrac
208
209
  version: number;
209
210
  contractType?: string;
210
211
  };
212
+ protected decodeDiffLeftovers(decoded: DecodeFunctionDataReturnType<abi>, balances: AddressMap<bigint>): DiffLeftover[];
211
213
  }
212
214
  export {};
@@ -1,5 +1,6 @@
1
- import { type Address } from "viem";
2
- import { type ConstructOptions } from "../../../sdk/index.js";
1
+ import { type Address, type DecodeFunctionDataReturnType } from "viem";
2
+ import { type AddressMap, type ConstructOptions } from "../../../sdk/index.js";
3
+ import type { DiffLeftover } from "../types.js";
3
4
  import type { ConcreteAdapterContractOptions } from "./AbstractAdapter.js";
4
5
  import { AbstractAdapterContract } from "./AbstractAdapter.js";
5
6
  declare const abi: readonly [{
@@ -233,5 +234,6 @@ export declare class MidasIssuanceVaultAdapterContract extends AbstractAdapterCo
233
234
  version: number;
234
235
  contractType?: string;
235
236
  };
237
+ protected decodeDiffLeftovers(decoded: DecodeFunctionDataReturnType<abi>, balances: AddressMap<bigint>): DiffLeftover[];
236
238
  }
237
239
  export {};
@@ -1,5 +1,6 @@
1
- import { type Address } from "viem";
2
- import { type ConstructOptions } from "../../../sdk/index.js";
1
+ import { type Address, type DecodeFunctionDataReturnType } from "viem";
2
+ import { type AddressMap, type ConstructOptions } from "../../../sdk/index.js";
3
+ import type { DiffLeftover } from "../types.js";
3
4
  import type { ConcreteAdapterContractOptions } from "./AbstractAdapter.js";
4
5
  import { AbstractAdapterContract } from "./AbstractAdapter.js";
5
6
  declare const abi: readonly [{
@@ -479,5 +480,6 @@ export declare class MidasRedemptionVaultAdapterContract extends AbstractAdapter
479
480
  version: number;
480
481
  contractType?: string;
481
482
  };
483
+ protected decodeDiffLeftovers(decoded: DecodeFunctionDataReturnType<abi>, balances: AddressMap<bigint>): DiffLeftover[];
482
484
  }
483
485
  export {};
@@ -1,5 +1,6 @@
1
- import { type Address } from "viem";
2
- import { type ConstructOptions } from "../../../sdk/index.js";
1
+ import { type Address, type DecodeFunctionDataReturnType } from "viem";
2
+ import { type AddressMap, type ConstructOptions } from "../../../sdk/index.js";
3
+ import type { DiffLeftover } from "../types.js";
3
4
  import type { ConcreteAdapterContractOptions } from "./AbstractAdapter.js";
4
5
  import { AbstractAdapterContract } from "./AbstractAdapter.js";
5
6
  export declare enum PendleTokenType {
@@ -2407,5 +2408,6 @@ export declare class PendleRouterAdapterContract extends AbstractAdapterContract
2407
2408
  version: number;
2408
2409
  contractType?: string;
2409
2410
  };
2411
+ protected decodeDiffLeftovers(decoded: DecodeFunctionDataReturnType<abi>, balances: AddressMap<bigint>): DiffLeftover[];
2410
2412
  }
2411
2413
  export {};
@@ -1,5 +1,6 @@
1
- import { type Address } from "viem";
2
- import { type ConstructOptions } from "../../../sdk/index.js";
1
+ import { type Address, type DecodeFunctionDataReturnType } from "viem";
2
+ import { type AddressMap, type ConstructOptions } from "../../../sdk/index.js";
3
+ import type { DiffLeftover } from "../types.js";
3
4
  import type { ConcreteAdapterContractOptions } from "./AbstractAdapter.js";
4
5
  import { AbstractAdapterContract } from "./AbstractAdapter.js";
5
6
  declare const abi: readonly [{
@@ -446,5 +447,6 @@ export declare class SecuritizeOnRampAdapterContract extends AbstractAdapterCont
446
447
  version: number;
447
448
  contractType?: string;
448
449
  };
450
+ protected decodeDiffLeftovers(decoded: DecodeFunctionDataReturnType<abi>, balances: AddressMap<bigint>): DiffLeftover[];
449
451
  }
450
452
  export {};
@@ -1,8 +1,19 @@
1
- import { type Address } from "viem";
2
- import { type ConstructOptions } from "../../../sdk/index.js";
1
+ import { type Address, type DecodeFunctionDataReturnType } from "viem";
2
+ import { type AddressMap, type ConstructOptions } from "../../../sdk/index.js";
3
+ import type { DiffLeftover } from "../types.js";
3
4
  import type { ConcreteAdapterContractOptions } from "./AbstractAdapter.js";
4
5
  import { AbstractAdapterContract } from "./AbstractAdapter.js";
5
- declare const abi: readonly [];
6
+ declare const abi: readonly [{
7
+ readonly type: "function";
8
+ readonly name: "buyExactInDiff";
9
+ readonly inputs: readonly [{
10
+ readonly name: "leftoverAmount";
11
+ readonly type: "uint256";
12
+ readonly internalType: "uint256";
13
+ }];
14
+ readonly outputs: readonly [];
15
+ readonly stateMutability: "nonpayable";
16
+ }];
6
17
  type abi = typeof abi;
7
18
  declare const protocolAbi: readonly [];
8
19
  type protocolAbi = typeof protocolAbi;
@@ -20,5 +31,6 @@ export declare class SecuritizeSwapAdapterContract extends AbstractAdapterContra
20
31
  version: number;
21
32
  contractType?: string;
22
33
  };
34
+ protected decodeDiffLeftovers(decoded: DecodeFunctionDataReturnType<abi>, balances: AddressMap<bigint>): DiffLeftover[];
23
35
  }
24
36
  export {};
@@ -1,5 +1,6 @@
1
- import { type Address } from "viem";
2
- import { type ConstructOptions } from "../../../sdk/index.js";
1
+ import { type Address, type DecodeFunctionDataReturnType } from "viem";
2
+ import { type AddressMap, type ConstructOptions } from "../../../sdk/index.js";
3
+ import type { DiffLeftover } from "../types.js";
3
4
  import type { ConcreteAdapterContractOptions } from "./AbstractAdapter.js";
4
5
  import { AbstractAdapterContract } from "./AbstractAdapter.js";
5
6
  declare const abi: readonly [{
@@ -280,5 +281,6 @@ export declare class StakingRewardsAdapterContract extends AbstractAdapterContra
280
281
  version: number;
281
282
  contractType?: string;
282
283
  };
284
+ protected decodeDiffLeftovers(decoded: DecodeFunctionDataReturnType<abi>, balances: AddressMap<bigint>): DiffLeftover[];
283
285
  }
284
286
  export {};
@@ -1,5 +1,6 @@
1
- import { type Address } from "viem";
2
- import type { ConstructOptions } from "../../../sdk/index.js";
1
+ import { type Address, type DecodeFunctionDataReturnType } from "viem";
2
+ import type { AddressMap, ConstructOptions } from "../../../sdk/index.js";
3
+ import type { DiffLeftover } from "../types.js";
3
4
  import type { ConcreteAdapterContractOptions } from "./AbstractAdapter.js";
4
5
  import { AbstractAdapterContract } from "./AbstractAdapter.js";
5
6
  export declare enum TraderJoePoolVersion {
@@ -483,5 +484,6 @@ export declare class TraderJoeRouterAdapterContract extends AbstractAdapterContr
483
484
  version: number;
484
485
  contractType?: string;
485
486
  };
487
+ protected decodeDiffLeftovers(decoded: DecodeFunctionDataReturnType<abi>, balances: AddressMap<bigint>): DiffLeftover[];
486
488
  }
487
489
  export {};
@@ -1,6 +1,7 @@
1
1
  import { type Address, type DecodeFunctionDataReturnType } from "viem";
2
- import type { ConstructOptions, ParsedCallV2 } from "../../../sdk/index.js";
2
+ import type { AddressMap, ConstructOptions, ParsedCallV2 } from "../../../sdk/index.js";
3
3
  import type { LegacyAdapterOperation, Transfers } from "../legacyAdapterOperations.js";
4
+ import type { DiffLeftover } from "../types.js";
4
5
  import type { ConcreteAdapterContractOptions } from "./AbstractAdapter.js";
5
6
  import { AbstractAdapterContract } from "./AbstractAdapter.js";
6
7
  declare const abi: readonly [{
@@ -965,5 +966,6 @@ export declare class UniswapV2AdapterContract extends AbstractAdapterContract<ab
965
966
  protected stringifyFunctionParams(params: DecodeFunctionDataReturnType<abi>): string[];
966
967
  /** @see https://github.com/Gearbox-protocol/charts_server/blob/master/core/operation_type.go#L81-L91 */
967
968
  classifyLegacyOperation(_parsed: ParsedCallV2, transfers: Transfers): LegacyAdapterOperation;
969
+ protected decodeDiffLeftovers(decoded: DecodeFunctionDataReturnType<abi>, balances: AddressMap<bigint>): DiffLeftover[];
968
970
  }
969
971
  export {};
@@ -1,5 +1,6 @@
1
1
  import { type Address, type DecodeFunctionDataReturnType } from "viem";
2
- import type { ConstructOptions } from "../../../sdk/index.js";
2
+ import type { AddressMap, ConstructOptions } from "../../../sdk/index.js";
3
+ import type { DiffLeftover } from "../types.js";
3
4
  import type { ConcreteAdapterContractOptions } from "./AbstractAdapter.js";
4
5
  import { AbstractAdapterContract } from "./AbstractAdapter.js";
5
6
  declare const abi: readonly [{
@@ -556,6 +557,7 @@ export declare class UniswapV3AdapterContract extends AbstractAdapterContract<ab
556
557
  version: number;
557
558
  contractType?: string;
558
559
  };
560
+ protected decodeDiffLeftovers(decoded: DecodeFunctionDataReturnType<abi>, balances: AddressMap<bigint>): DiffLeftover[];
559
561
  protected stringifyFunctionParams(params: DecodeFunctionDataReturnType<abi>): string[];
560
562
  private trackInputPath;
561
563
  private trackOutputPath;
@@ -1,6 +1,7 @@
1
- import { type Address } from "viem";
2
- import type { ConstructOptions, ParsedCallV2 } from "../../../sdk/index.js";
1
+ import { type Address, type DecodeFunctionDataReturnType } from "viem";
2
+ import type { AddressMap, ConstructOptions, ParsedCallV2 } from "../../../sdk/index.js";
3
3
  import type { LegacyAdapterOperation, Transfers } from "../legacyAdapterOperations.js";
4
+ import type { DiffLeftover } from "../types.js";
4
5
  import type { ConcreteAdapterContractOptions } from "./AbstractAdapter.js";
5
6
  import { AbstractAdapterContract } from "./AbstractAdapter.js";
6
7
  declare const abi: readonly [{
@@ -421,5 +422,6 @@ export declare class UniswapV4AdapterContract extends AbstractAdapterContract<ab
421
422
  };
422
423
  /** @see https://github.com/Gearbox-protocol/charts_server/blob/master/core/operation_type.go#L81-L91 */
423
424
  classifyLegacyOperation(_parsed: ParsedCallV2, transfers: Transfers): LegacyAdapterOperation;
425
+ protected decodeDiffLeftovers(decoded: DecodeFunctionDataReturnType<abi>, balances: AddressMap<bigint>): DiffLeftover[];
424
426
  }
425
427
  export {};
@@ -1,5 +1,6 @@
1
- import { type Address } from "viem";
2
- import { type ConstructOptions } from "../../../sdk/index.js";
1
+ import { type Address, type DecodeFunctionDataReturnType } from "viem";
2
+ import { type AddressMap, type ConstructOptions } from "../../../sdk/index.js";
3
+ import type { DiffLeftover } from "../types.js";
3
4
  import type { ConcreteAdapterContractOptions } from "./AbstractAdapter.js";
4
5
  import { AbstractAdapterContract } from "./AbstractAdapter.js";
5
6
  declare const abi: readonly [{
@@ -356,5 +357,6 @@ export declare class UpshiftVaultAdapterContract extends AbstractAdapterContract
356
357
  version: number;
357
358
  contractType?: string;
358
359
  };
360
+ protected decodeDiffLeftovers(decoded: DecodeFunctionDataReturnType<abi>, balances: AddressMap<bigint>): DiffLeftover[];
359
361
  }
360
362
  export {};
@@ -1,5 +1,6 @@
1
- import { type Address } from "viem";
2
- import type { ConstructOptions } from "../../../sdk/index.js";
1
+ import { type Address, type DecodeFunctionDataReturnType } from "viem";
2
+ import type { AddressMap, ConstructOptions } from "../../../sdk/index.js";
3
+ import type { DiffLeftover } from "../types.js";
3
4
  import type { ConcreteAdapterContractOptions } from "./AbstractAdapter.js";
4
5
  import { AbstractAdapterContract } from "./AbstractAdapter.js";
5
6
  declare const abi: readonly [{
@@ -361,5 +362,6 @@ export declare class VelodromeV2RouterAdapterContract extends AbstractAdapterCon
361
362
  version: number;
362
363
  contractType?: string;
363
364
  };
365
+ protected decodeDiffLeftovers(decoded: DecodeFunctionDataReturnType<abi>, balances: AddressMap<bigint>): DiffLeftover[];
364
366
  }
365
367
  export {};
@@ -1,6 +1,7 @@
1
- import { type Address } from "viem";
2
- import { type ConstructOptions, type ParsedCallV2 } from "../../../sdk/index.js";
1
+ import { type Address, type DecodeFunctionDataReturnType } from "viem";
2
+ import { type AddressMap, type ConstructOptions, type ParsedCallV2 } from "../../../sdk/index.js";
3
3
  import type { LegacyAdapterOperation, Transfers } from "../legacyAdapterOperations.js";
4
+ import type { DiffLeftover } from "../types.js";
4
5
  import type { ConcreteAdapterContractOptions } from "./AbstractAdapter.js";
5
6
  import { AbstractAdapterContract } from "./AbstractAdapter.js";
6
7
  declare const abi: readonly [{
@@ -393,5 +394,6 @@ export declare class WstETHV1AdapterContract extends AbstractAdapterContract<abi
393
394
  };
394
395
  /** @see https://github.com/Gearbox-protocol/charts_server/blob/master/core/operation_type.go#L264-L275 */
395
396
  classifyLegacyOperation(parsed: ParsedCallV2, transfers: Transfers): LegacyAdapterOperation;
397
+ protected decodeDiffLeftovers(decoded: DecodeFunctionDataReturnType<abi>, balances: AddressMap<bigint>): DiffLeftover[];
396
398
  }
397
399
  export {};
@@ -51,6 +51,16 @@ export declare enum AdapterType {
51
51
  VELODROME_V2_ROUTER = "VELODROME_V2_ROUTER",
52
52
  YEARN_V2 = "YEARN_V2"
53
53
  }
54
+ /**
55
+ * Diff-call semantics of a diff-style adapter call: the call spends the
56
+ * consumed token down to the exact `leftoverAmount` encoded in its calldata,
57
+ * so the post-call balance of `tokenIn` is `leftoverAmount` regardless of the
58
+ * actual amount spent.
59
+ */
60
+ export interface DiffLeftover {
61
+ tokenIn: Address;
62
+ leftoverAmount: bigint;
63
+ }
54
64
  export interface AdapterContractStateHuman extends BaseContractStateHuman {
55
65
  creditManager?: string;
56
66
  targetContract?: string;
@@ -1,4 +1,4 @@
1
- import type { Address } from "viem";
1
+ import type { Address, Hex } from "viem";
2
2
  import type { AdapterProtocolOperation } from "../../plugins/adapters/index.js";
3
3
  /**
4
4
  * A single ERC-20 Transfer event captured between Execute boundaries.
@@ -43,6 +43,10 @@ export interface AdapterOperationBase {
43
43
  * Arguments of adapter contract
44
44
  */
45
45
  adapterArgs: Record<string, unknown>;
46
+ /**
47
+ * Raw ABI-encoded adapter calldata
48
+ */
49
+ calldata: Hex;
46
50
  }
47
51
  /**
48
52
  * Adapter `Execute` operation, generic over the extra data added by consumers.
@@ -1,4 +1,5 @@
1
1
  import type { Address, Hex } from "viem";
2
+ import type { Asset } from "../../sdk/index.js";
2
3
  import type { AdapterOperation } from "./types-adapters.js";
3
4
  /**
4
5
  * Increase debt (borrow more).
@@ -46,11 +47,32 @@ export interface UpdateQuotaOp {
46
47
  token: Address;
47
48
  change: bigint;
48
49
  }
50
+ /**
51
+ * Router-generated slippage-control call that declares expected minimal
52
+ * balance changes for the adapter calls that follow, up to the matching
53
+ * {@link CompareBalancesOp}.
54
+ */
55
+ export interface StoreExpectedBalancesOp {
56
+ operation: "StoreExpectedBalances";
57
+ /**
58
+ * Declared minimal balance changes (relative to balances at
59
+ * `storeExpectedBalances` time).
60
+ */
61
+ deltas: Asset[];
62
+ }
63
+ /**
64
+ * Router-generated slippage-control call that validates the balance changes
65
+ * declared by the preceding {@link StoreExpectedBalancesOp}. Pure validation
66
+ * marker, carries no data.
67
+ */
68
+ export interface CompareBalancesOp {
69
+ operation: "CompareBalances";
70
+ }
49
71
  /**
50
72
  * Union of facade inner-call operation types (non-adapter credit account operations).
51
73
  * Discriminated on the `operation` field.
52
74
  */
53
- export type InnerFacadeOperation = IncreaseDebtOp | DecreaseDebtOp | AddCollateralOp | WithdrawCollateralOp | UpdateQuotaOp;
75
+ export type InnerFacadeOperation = IncreaseDebtOp | DecreaseDebtOp | AddCollateralOp | WithdrawCollateralOp | UpdateQuotaOp | StoreExpectedBalancesOp | CompareBalancesOp;
54
76
  /**
55
77
  * All operations that can happen within a CreditFacade's multicall and that we're interested in.
56
78
  *
@@ -1,3 +1,15 @@
1
+ /**
2
+ * Thrown when a transaction's attached native value (`msg.value`) does not fit
3
+ * into the WETH collateral declared by the multicall: such a transaction is
4
+ * malformed and would not execute successfully.
5
+ */
6
+ export declare class InvalidTransactionValueError extends Error {
7
+ /** Transaction `msg.value`. */
8
+ readonly value: bigint;
9
+ /** Amount of wrapped native token added as collateral. */
10
+ readonly wethCollateral: bigint;
11
+ constructor(value: bigint, wethCollateral: bigint);
12
+ }
1
13
  /**
2
14
  * Thrown by `previewOperation` for parsed operations it cannot preview yet.
3
15
  * Currently only pool operations and credit account opening are supported.
@@ -69,13 +69,21 @@ export interface PoolOperationPreview {
69
69
  }
70
70
  export interface OpenCreditAccountPreview {
71
71
  operation: "OpenCreditAccount" | "SecuritizeOpenCreditAccount";
72
+ /**
73
+ * Credit manager the account is opened in
74
+ */
75
+ creditManager: Address;
72
76
  /**
73
77
  * Target token of strategy: the first quoted token, with its balance taken
74
78
  * from `assets`. Undefined when nothing is quoted.
75
79
  */
76
80
  target?: Asset;
77
81
  /**
78
- * Tokens that were added as collateral during account opening
82
+ * Tokens that were added as collateral during account opening.
83
+ *
84
+ * When the transaction has native value attached, it is represented as a
85
+ * `NATIVE_ADDRESS` entry, with the wrapped native token amount reduced
86
+ * accordingly (omitted entirely when it reaches zero).
79
87
  */
80
88
  collateral: Asset[];
81
89
  /**
@@ -0,0 +1,20 @@
1
+ import type { Address } from "viem";
2
+ import { type Asset } from "../../sdk/index.js";
3
+ /**
4
+ * Represents the transaction's attached native value as a `NATIVE_ADDRESS`
5
+ * entry in the collateral list.
6
+ *
7
+ * The credit facade wraps `msg.value` into WETH before `AddCollateral(WETH)`
8
+ * pulls it, so the WETH collateral amount already includes the attached native
9
+ * value. This helper splits the WETH entry back: the native amount is shown as
10
+ * `NATIVE_ADDRESS` and the WETH entry is reduced accordingly (dropped when it
11
+ * reaches zero). Other entries are preserved.
12
+ *
13
+ * @param collateral - Collateral assets as declared by the multicall.
14
+ * @param nativeAmount - Transaction `msg.value`.
15
+ * @param wethToken - Wrapped native token address.
16
+ * @returns Collateral with the native amount unwrapped from the WETH entry.
17
+ * @throws InvalidTransactionValueError when `nativeAmount` is positive but the
18
+ * WETH collateral is missing or smaller than it.
19
+ */
20
+ export declare function unwrapNativeCollateral(collateral: Asset[], nativeAmount: bigint, wethToken: Address): Asset[];
@@ -4,7 +4,7 @@ import { SDKConstruct } from "../base/index.js";
4
4
  import { type PriceUpdate } from "../market/index.js";
5
5
  import type { RWAOpenAccountRequirements } from "../market/rwa/index.js";
6
6
  import type { OnchainSDK } from "../OnchainSDK.js";
7
- import { type RouterCASlice } from "../router/index.js";
7
+ import type { RouterCASlice } from "../router/index.js";
8
8
  import type { MultiCall, RawTx } from "../types/index.js";
9
9
  import type { AccountToCheck, AddCollateralProps, AssembleCaUpdateCallsProps, ChangeDeptProps, ClaimDelayedProps, ClaimFarmRewardsProps, CloseCreditAccountProps, CloseCreditAccountResult, CreditAccountOperationResult, CreditAccountTokensSlice, CreditManagerOperationResult, DefaultPartialLiquidationParams, ExecuteSwapProps, FullyLiquidateProps, FullyLiquidateResult, GetApprovalAddressProps, GetConnectedBotsResult, GetConnectedMigrationBotsResult, GetCreditAccountsOptions, GetOpenAccountRequirementsProps, GetPendingWithdrawalsProps, GetPendingWithdrawalsResult, ICreditAccountsService, OpenCAProps, PartiallyLiquidateProps, PreviewDelayedWithdrawalProps, PreviewDelayedWithdrawalResult, RepayAndLiquidateCreditAccountProps, RepayCreditAccountProps, Rewards, SetBotProps, StartDelayedWithdrawalProps, UpdateQuotasProps, WithdrawCollateralProps } from "./types.js";
10
10
  /**
@@ -1,11 +1,11 @@
1
1
  import type { Address, ContractFunctionArgs, GetContractReturnType, Hex, PublicClient } from "viem";
2
2
  import type { creditAccountCompressorAbi } from "../../abi/compressors/creditAccountCompressor.js";
3
3
  import type { iWithdrawalCompressorV310Abi } from "../../abi/IWithdrawalCompressorV310.js";
4
- import type { ConnectedBotData, Construct, CreditAccountData } from "../base/index.js";
4
+ import type { Asset, ConnectedBotData, Construct, CreditAccountData } from "../base/index.js";
5
5
  import type { CreditSuite, PriceUpdate, RWAOperationParams } from "../market/index.js";
6
6
  import type { RWAOpenAccountRequirements } from "../market/rwa/index.js";
7
7
  import type { OnchainSDK } from "../OnchainSDK.js";
8
- import type { Asset, RouterCASlice, RouterCloseResult } from "../router/index.js";
8
+ import type { RouterCASlice, RouterCloseResult } from "../router/index.js";
9
9
  import type { MultiCall, RawTx } from "../types/index.js";
10
10
  /**
11
11
  * @internal
@@ -151,7 +151,7 @@ export declare class BaseContract<abi extends Abi | readonly unknown[]> extends
151
151
  * @param strict - propagated from parseFunctionDataV2 for recursive parsing
152
152
  */
153
153
  protected parseFunctionParamsV2(params: DecodeFunctionDataReturnType<abi>, _strict?: boolean): Record<string, unknown>;
154
- protected wrapParseCallV2(functionName: string, rawArgs: Record<string, unknown>): ParsedCallV2;
154
+ protected wrapParseCallV2(functionName: string, calldata: Hex, rawArgs: Record<string, unknown>): ParsedCallV2;
155
155
  /**
156
156
  * Creates a raw transaction for a function in this contract
157
157
  * @param parameters
@@ -1,5 +1,5 @@
1
1
  import type { Address, Chain, PublicClient, Transport } from "viem";
2
- import type { Asset } from "../router/index.js";
2
+ import type { Asset } from "../index.js";
3
3
  import type { ILogger } from "../types/logger.js";
4
4
  import { AddressMap } from "../utils/index.js";
5
5
  import type { PhantomTokenMeta, RWATokenMeta, TokenMetaData } from "./token-types.js";
@@ -87,6 +87,20 @@ export interface TokenInfo {
87
87
  **/
88
88
  success: boolean;
89
89
  }
90
+ /**
91
+ * A token address paired with a balance, used throughout the SDK to
92
+ * represent holdings, collateral inputs, and leftover targets.
93
+ **/
94
+ export interface Asset {
95
+ /**
96
+ * ERC-20 token address.
97
+ **/
98
+ token: Address;
99
+ /**
100
+ * Token amount in the token's native decimals.
101
+ **/
102
+ balance: bigint;
103
+ }
90
104
  /**
91
105
  * Compile-time assertion: `U` must be assignable to `T`.
92
106
  *
@@ -337,6 +351,10 @@ export interface ParsedCallV2 {
337
351
  * For unknown selectors: `"unknown function 0x1a2b3c4d"`
338
352
  */
339
353
  functionName: string;
354
+ /**
355
+ * Raw ABI-encoded calldata this call was parsed from.
356
+ **/
357
+ calldata: Hex;
340
358
  /**
341
359
  * Named arguments with their original types (bigint, Address, etc.).
342
360
  **/
@@ -1,6 +1,6 @@
1
1
  import type { Abi, Address, ContractFunctionArgs, ContractFunctionName } from "viem";
2
+ import type { Asset } from "../base/index.js";
2
3
  import type { IZapperContract } from "../market/index.js";
3
- import type { Asset } from "../router/index.js";
4
4
  import type { MultiCall, RawTx } from "../types/transactions.js";
5
5
  interface PermitResult {
6
6
  r: Address;
@@ -2,17 +2,17 @@ import type { Abi, Address } from "viem";
2
2
  import { BaseContract, type BaseContractArgs } from "../base/index.js";
3
3
  import type { IPriceOracleContract } from "../market/index.js";
4
4
  import type { OnchainSDK } from "../OnchainSDK.js";
5
- import { AddressMap, AddressSet } from "../utils/index.js";
6
- import type { Asset, RouterCASlice, RouterCMSlice } from "./types.js";
5
+ import { AddressSet, AssetsMap } from "../utils/index.js";
6
+ import type { RouterCASlice, RouterCMSlice } from "./types.js";
7
7
  export interface ExpectedAndLeftoverOptions {
8
8
  balances?: Leftovers;
9
9
  keepAssets?: Address[];
10
10
  debtOnly?: boolean;
11
11
  }
12
12
  export interface Leftovers {
13
- expectedBalances: AddressMap<Asset>;
14
- leftoverBalances: AddressMap<Asset>;
15
- tokensToClaim: AddressMap<Asset>;
13
+ expectedBalances: AssetsMap;
14
+ leftoverBalances: AssetsMap;
15
+ tokensToClaim: AssetsMap;
16
16
  }
17
17
  /**
18
18
  * @internal
@@ -1,7 +1,6 @@
1
1
  import type { Address } from "viem";
2
+ import type { Asset } from "../base/types.js";
2
3
  import { AddressMap } from "../utils/index.js";
3
- import type { Asset } from "./types.js";
4
- export declare function balancesMap(assets: Array<Asset>): AddressMap<bigint>;
5
4
  export declare function assetsMap<T extends Asset>(assets: Array<T> | readonly T[]): AddressMap<T>;
6
5
  /**
7
6
  * TODO: is this weird workaround still needed?
@@ -1,5 +1,5 @@
1
1
  import type { Address } from "viem";
2
- import type { CreditAccountData, IBaseContract } from "../base/index.js";
2
+ import type { Asset, CreditAccountData, IBaseContract } from "../base/index.js";
3
3
  import type { MultiCall } from "../types/index.js";
4
4
  /**
5
5
  * Type of swap the router should perform.
@@ -65,20 +65,6 @@ export interface RouterCloseResult extends RouterResult {
65
65
  */
66
66
  underlyingBalance: bigint;
67
67
  }
68
- /**
69
- * A token address paired with a balance, used throughout the router to
70
- * represent holdings, collateral inputs, and leftover targets.
71
- **/
72
- export interface Asset {
73
- /**
74
- * ERC-20 token address.
75
- **/
76
- token: Address;
77
- /**
78
- * Token amount in the token's native decimals.
79
- **/
80
- balance: bigint;
81
- }
82
68
  /**
83
69
  * Slice of credit manager data required for router operations
84
70
  */
@@ -66,6 +66,10 @@ export declare class AddressMap<T> {
66
66
  * Returns all checksummed addresses in insertion order.
67
67
  **/
68
68
  keys(): Address[];
69
+ /**
70
+ * Returns an unfrozen shallow copy of the map.
71
+ **/
72
+ clone(): AddressMap<T>;
69
73
  /**
70
74
  * Converts the map to a plain `Record<Address, T>` object.
71
75
  **/
@@ -0,0 +1,26 @@
1
+ import type { Asset } from "../base/types.js";
2
+ import { AddressMap } from "./AddressMap.js";
3
+ /**
4
+ * Case-insensitive map from EVM token addresses to bigint balances.
5
+ * Missing keys are treated as `0n`.
6
+ */
7
+ export declare class AssetsMap extends AddressMap<bigint> {
8
+ /**
9
+ * @param entries - Optional initial entries as `[address, balance]` tuples or {@link Asset} objects.
10
+ * @param name - Optional label used in error messages when a lookup fails.
11
+ */
12
+ constructor(entries?: Array<[string, bigint] | Asset>, name?: string);
13
+ /**
14
+ * Adds `amount` to the token balance, treating a missing key as `0n`.
15
+ */
16
+ inc(address: string, amount: bigint): void;
17
+ /**
18
+ * Subtracts `amount` from the token balance, treating a missing key as `0n`.
19
+ */
20
+ dec(address: string, amount: bigint): void;
21
+ /**
22
+ * Converts the map to an array of {@link Asset} objects.
23
+ */
24
+ toAssets(): Asset[];
25
+ clone(): AssetsMap;
26
+ }