@gearbox-protocol/sdk 14.12.0-next.26 → 14.12.0-next.27

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 (144) hide show
  1. package/dist/cjs/history/populateContractsRegister.js +14 -11
  2. package/dist/cjs/plugins/adapters/contracts/AbstractAdapter.js +13 -5
  3. package/dist/cjs/plugins/adapters/contracts/AbstractCurveAdapter.js +2 -2
  4. package/dist/cjs/plugins/adapters/contracts/AccountMigratorAdapterContract.js +2 -2
  5. package/dist/cjs/plugins/adapters/contracts/BalancerV3RouterAdapterContract.js +4 -4
  6. package/dist/cjs/plugins/adapters/contracts/BalancerV3WrapperAdapterContract.js +4 -4
  7. package/dist/cjs/plugins/adapters/contracts/CamelotV3AdapterContract.js +4 -4
  8. package/dist/cjs/plugins/adapters/contracts/ConvexV1BaseRewardPoolAdapterContract.js +4 -4
  9. package/dist/cjs/plugins/adapters/contracts/ConvexV1BoosterAdapterContract.js +4 -4
  10. package/dist/cjs/plugins/adapters/contracts/Curve2AssetsAdapterContract.js +2 -2
  11. package/dist/cjs/plugins/adapters/contracts/Curve3AssetsAdapterContract.js +2 -2
  12. package/dist/cjs/plugins/adapters/contracts/Curve4AssetsAdapterContract.js +2 -2
  13. package/dist/cjs/plugins/adapters/contracts/CurveV1AdapterStETHContract.js +2 -2
  14. package/dist/cjs/plugins/adapters/contracts/CurveV1StableNGAdapterContract.js +2 -2
  15. package/dist/cjs/plugins/adapters/contracts/DaiUsdsAdapterContract.js +4 -4
  16. package/dist/cjs/plugins/adapters/contracts/ERC4626AdapterContract.js +13 -6
  17. package/dist/cjs/plugins/adapters/contracts/ERC4626ReferralAdapterContract.js +4 -4
  18. package/dist/cjs/plugins/adapters/contracts/FluidDexAdapterContract.js +4 -4
  19. package/dist/cjs/plugins/adapters/contracts/InfinifiGatewayAdapterContract.js +4 -4
  20. package/dist/cjs/plugins/adapters/contracts/InfinifiUnwindingGatewayAdapterContract.js +2 -2
  21. package/dist/cjs/plugins/adapters/contracts/KelpLRTDepositPoolAdapterContract.js +4 -4
  22. package/dist/cjs/plugins/adapters/contracts/KelpLRTWithdrawalManagerAdapterContract.js +2 -2
  23. package/dist/cjs/plugins/adapters/contracts/LidoV1AdapterContract.js +4 -4
  24. package/dist/cjs/plugins/adapters/contracts/MellowClaimerAdapterContract.js +12 -19
  25. package/dist/cjs/plugins/adapters/contracts/MellowDVVAdapterContract.js +4 -4
  26. package/dist/cjs/plugins/adapters/contracts/MellowERC4626VaultAdapterContract.js +12 -6
  27. package/dist/cjs/plugins/adapters/contracts/MellowWrapperAdapterContract.js +4 -4
  28. package/dist/cjs/plugins/adapters/contracts/MidasGatewayAdapterContract.js +11 -23
  29. package/dist/cjs/plugins/adapters/contracts/MidasIssuanceVaultAdapterContract.js +4 -4
  30. package/dist/cjs/plugins/adapters/contracts/MidasRedemptionVaultAdapterContract.js +4 -4
  31. package/dist/cjs/plugins/adapters/contracts/PendleRouterAdapterContract.js +4 -4
  32. package/dist/cjs/plugins/adapters/contracts/SecuritizeOnRampAdapterContract.js +4 -4
  33. package/dist/cjs/plugins/adapters/contracts/SecuritizeRedemptionGatewayAdapterContract.js +14 -14
  34. package/dist/cjs/plugins/adapters/contracts/StakingRewardsAdapterContract.js +4 -4
  35. package/dist/cjs/plugins/adapters/contracts/TraderJoeRouterAdapterContract.js +4 -4
  36. package/dist/cjs/plugins/adapters/contracts/UniswapV2AdapterContract.js +4 -4
  37. package/dist/cjs/plugins/adapters/contracts/UniswapV3AdapterContract.js +4 -4
  38. package/dist/cjs/plugins/adapters/contracts/UniswapV4AdapterContract.js +4 -4
  39. package/dist/cjs/plugins/adapters/contracts/UpshiftVaultAdapterContract.js +4 -4
  40. package/dist/cjs/plugins/adapters/contracts/VelodromeV2AdapterContract.js +4 -4
  41. package/dist/cjs/plugins/adapters/contracts/WstETHV1AdapterContract.js +4 -4
  42. package/dist/cjs/plugins/adapters/createAdapter.js +40 -40
  43. package/dist/cjs/preview/preview/applyInnerOperations.js +4 -4
  44. package/dist/cjs/preview/preview/previewAdjustCreditAccount.js +1 -1
  45. package/dist/cjs/preview/preview/previewCloseOrRepayCreditAccount.js +1 -1
  46. package/dist/cjs/preview/preview/previewOpenCreditAccount.js +2 -2
  47. package/dist/cjs/sdk/accounts/CreditAccountsServiceV310.js +23 -12
  48. package/dist/cjs/sdk/accounts/withdrawal-compressor/AbstractWithdrawalCompressorContract.js +18 -10
  49. package/dist/esm/history/populateContractsRegister.js +17 -12
  50. package/dist/esm/plugins/adapters/contracts/AbstractAdapter.js +13 -5
  51. package/dist/esm/plugins/adapters/contracts/AbstractCurveAdapter.js +2 -2
  52. package/dist/esm/plugins/adapters/contracts/AccountMigratorAdapterContract.js +2 -2
  53. package/dist/esm/plugins/adapters/contracts/BalancerV3RouterAdapterContract.js +4 -4
  54. package/dist/esm/plugins/adapters/contracts/BalancerV3WrapperAdapterContract.js +4 -4
  55. package/dist/esm/plugins/adapters/contracts/CamelotV3AdapterContract.js +4 -4
  56. package/dist/esm/plugins/adapters/contracts/ConvexV1BaseRewardPoolAdapterContract.js +4 -4
  57. package/dist/esm/plugins/adapters/contracts/ConvexV1BoosterAdapterContract.js +4 -4
  58. package/dist/esm/plugins/adapters/contracts/Curve2AssetsAdapterContract.js +2 -2
  59. package/dist/esm/plugins/adapters/contracts/Curve3AssetsAdapterContract.js +2 -2
  60. package/dist/esm/plugins/adapters/contracts/Curve4AssetsAdapterContract.js +2 -2
  61. package/dist/esm/plugins/adapters/contracts/CurveV1AdapterStETHContract.js +2 -2
  62. package/dist/esm/plugins/adapters/contracts/CurveV1StableNGAdapterContract.js +2 -2
  63. package/dist/esm/plugins/adapters/contracts/DaiUsdsAdapterContract.js +4 -4
  64. package/dist/esm/plugins/adapters/contracts/ERC4626AdapterContract.js +13 -6
  65. package/dist/esm/plugins/adapters/contracts/ERC4626ReferralAdapterContract.js +4 -4
  66. package/dist/esm/plugins/adapters/contracts/FluidDexAdapterContract.js +4 -4
  67. package/dist/esm/plugins/adapters/contracts/InfinifiGatewayAdapterContract.js +4 -4
  68. package/dist/esm/plugins/adapters/contracts/InfinifiUnwindingGatewayAdapterContract.js +2 -2
  69. package/dist/esm/plugins/adapters/contracts/KelpLRTDepositPoolAdapterContract.js +4 -4
  70. package/dist/esm/plugins/adapters/contracts/KelpLRTWithdrawalManagerAdapterContract.js +2 -2
  71. package/dist/esm/plugins/adapters/contracts/LidoV1AdapterContract.js +4 -4
  72. package/dist/esm/plugins/adapters/contracts/MellowClaimerAdapterContract.js +12 -19
  73. package/dist/esm/plugins/adapters/contracts/MellowDVVAdapterContract.js +4 -4
  74. package/dist/esm/plugins/adapters/contracts/MellowERC4626VaultAdapterContract.js +12 -6
  75. package/dist/esm/plugins/adapters/contracts/MellowWrapperAdapterContract.js +4 -4
  76. package/dist/esm/plugins/adapters/contracts/MidasGatewayAdapterContract.js +12 -25
  77. package/dist/esm/plugins/adapters/contracts/MidasIssuanceVaultAdapterContract.js +4 -4
  78. package/dist/esm/plugins/adapters/contracts/MidasRedemptionVaultAdapterContract.js +4 -4
  79. package/dist/esm/plugins/adapters/contracts/PendleRouterAdapterContract.js +4 -4
  80. package/dist/esm/plugins/adapters/contracts/SecuritizeOnRampAdapterContract.js +4 -4
  81. package/dist/esm/plugins/adapters/contracts/SecuritizeRedemptionGatewayAdapterContract.js +14 -14
  82. package/dist/esm/plugins/adapters/contracts/StakingRewardsAdapterContract.js +4 -4
  83. package/dist/esm/plugins/adapters/contracts/TraderJoeRouterAdapterContract.js +4 -4
  84. package/dist/esm/plugins/adapters/contracts/UniswapV2AdapterContract.js +4 -4
  85. package/dist/esm/plugins/adapters/contracts/UniswapV3AdapterContract.js +4 -4
  86. package/dist/esm/plugins/adapters/contracts/UniswapV4AdapterContract.js +4 -4
  87. package/dist/esm/plugins/adapters/contracts/UpshiftVaultAdapterContract.js +4 -4
  88. package/dist/esm/plugins/adapters/contracts/VelodromeV2AdapterContract.js +4 -4
  89. package/dist/esm/plugins/adapters/contracts/WstETHV1AdapterContract.js +4 -4
  90. package/dist/esm/plugins/adapters/createAdapter.js +40 -40
  91. package/dist/esm/preview/preview/applyInnerOperations.js +4 -4
  92. package/dist/esm/preview/preview/previewAdjustCreditAccount.js +1 -1
  93. package/dist/esm/preview/preview/previewCloseOrRepayCreditAccount.js +1 -1
  94. package/dist/esm/preview/preview/previewOpenCreditAccount.js +2 -2
  95. package/dist/esm/sdk/accounts/CreditAccountsServiceV310.js +23 -12
  96. package/dist/esm/sdk/accounts/withdrawal-compressor/AbstractWithdrawalCompressorContract.js +18 -10
  97. package/dist/types/history/populateContractsRegister.d.ts +1 -1
  98. package/dist/types/plugins/adapters/contracts/AbstractAdapter.d.ts +8 -4
  99. package/dist/types/plugins/adapters/contracts/AbstractCurveAdapter.d.ts +1 -1
  100. package/dist/types/plugins/adapters/contracts/AccountMigratorAdapterContract.d.ts +2 -2
  101. package/dist/types/plugins/adapters/contracts/BalancerV3RouterAdapterContract.d.ts +3 -3
  102. package/dist/types/plugins/adapters/contracts/BalancerV3WrapperAdapterContract.d.ts +3 -3
  103. package/dist/types/plugins/adapters/contracts/CamelotV3AdapterContract.d.ts +3 -3
  104. package/dist/types/plugins/adapters/contracts/ConvexV1BaseRewardPoolAdapterContract.d.ts +3 -3
  105. package/dist/types/plugins/adapters/contracts/ConvexV1BoosterAdapterContract.d.ts +3 -3
  106. package/dist/types/plugins/adapters/contracts/Curve2AssetsAdapterContract.d.ts +2 -2
  107. package/dist/types/plugins/adapters/contracts/Curve3AssetsAdapterContract.d.ts +2 -2
  108. package/dist/types/plugins/adapters/contracts/Curve4AssetsAdapterContract.d.ts +2 -2
  109. package/dist/types/plugins/adapters/contracts/CurveV1AdapterStETHContract.d.ts +2 -2
  110. package/dist/types/plugins/adapters/contracts/CurveV1StableNGAdapterContract.d.ts +2 -2
  111. package/dist/types/plugins/adapters/contracts/DaiUsdsAdapterContract.d.ts +3 -3
  112. package/dist/types/plugins/adapters/contracts/ERC4626AdapterContract.d.ts +3 -3
  113. package/dist/types/plugins/adapters/contracts/ERC4626ReferralAdapterContract.d.ts +3 -3
  114. package/dist/types/plugins/adapters/contracts/FluidDexAdapterContract.d.ts +3 -3
  115. package/dist/types/plugins/adapters/contracts/InfinifiGatewayAdapterContract.d.ts +3 -3
  116. package/dist/types/plugins/adapters/contracts/InfinifiUnwindingGatewayAdapterContract.d.ts +2 -2
  117. package/dist/types/plugins/adapters/contracts/KelpLRTDepositPoolAdapterContract.d.ts +3 -3
  118. package/dist/types/plugins/adapters/contracts/KelpLRTWithdrawalManagerAdapterContract.d.ts +2 -2
  119. package/dist/types/plugins/adapters/contracts/LidoV1AdapterContract.d.ts +3 -3
  120. package/dist/types/plugins/adapters/contracts/MellowClaimerAdapterContract.d.ts +3 -3
  121. package/dist/types/plugins/adapters/contracts/MellowDVVAdapterContract.d.ts +3 -3
  122. package/dist/types/plugins/adapters/contracts/MellowERC4626VaultAdapterContract.d.ts +3 -3
  123. package/dist/types/plugins/adapters/contracts/MellowWrapperAdapterContract.d.ts +3 -3
  124. package/dist/types/plugins/adapters/contracts/MidasGatewayAdapterContract.d.ts +3 -3
  125. package/dist/types/plugins/adapters/contracts/MidasIssuanceVaultAdapterContract.d.ts +3 -3
  126. package/dist/types/plugins/adapters/contracts/MidasRedemptionVaultAdapterContract.d.ts +3 -3
  127. package/dist/types/plugins/adapters/contracts/PendleRouterAdapterContract.d.ts +3 -3
  128. package/dist/types/plugins/adapters/contracts/SecuritizeOnRampAdapterContract.d.ts +3 -3
  129. package/dist/types/plugins/adapters/contracts/SecuritizeRedemptionGatewayAdapterContract.d.ts +3 -3
  130. package/dist/types/plugins/adapters/contracts/StakingRewardsAdapterContract.d.ts +3 -3
  131. package/dist/types/plugins/adapters/contracts/TraderJoeRouterAdapterContract.d.ts +3 -3
  132. package/dist/types/plugins/adapters/contracts/UniswapV2AdapterContract.d.ts +3 -3
  133. package/dist/types/plugins/adapters/contracts/UniswapV3AdapterContract.d.ts +3 -3
  134. package/dist/types/plugins/adapters/contracts/UniswapV4AdapterContract.d.ts +3 -3
  135. package/dist/types/plugins/adapters/contracts/UpshiftVaultAdapterContract.d.ts +3 -3
  136. package/dist/types/plugins/adapters/contracts/VelodromeV2AdapterContract.d.ts +3 -3
  137. package/dist/types/plugins/adapters/contracts/WstETHV1AdapterContract.d.ts +3 -3
  138. package/dist/types/plugins/adapters/createAdapter.d.ts +2 -2
  139. package/dist/types/preview/preview/applyInnerOperations.d.ts +1 -1
  140. package/dist/types/preview/preview/previewOpenCreditAccount.d.ts +1 -1
  141. package/dist/types/sdk/accounts/types.d.ts +18 -4
  142. package/dist/types/sdk/accounts/withdrawal-compressor/AbstractWithdrawalCompressorContract.d.ts +4 -0
  143. package/dist/types/sdk/accounts/withdrawal-compressor/types.d.ts +6 -0
  144. package/package.json +1 -1
@@ -27,93 +27,93 @@ var import_contracts = require("./contracts/index.js");
27
27
  var import_SecuritizeOnRampAdapterContract = require("./contracts/SecuritizeOnRampAdapterContract.js");
28
28
  var import_SecuritizeRedemptionGatewayAdapterContract = require("./contracts/SecuritizeRedemptionGatewayAdapterContract.js");
29
29
  var import_UniswapV4AdapterContract = require("./contracts/UniswapV4AdapterContract.js");
30
- function createAdapter(options, data, strict) {
30
+ function createAdapter(sdk, data, strict) {
31
31
  const contractType = data.baseParams.contractType;
32
32
  const adapterType = (0, import_viem.isHex)(contractType) ? (0, import_sdk.bytes32ToString)(contractType) : contractType;
33
33
  switch (adapterType) {
34
34
  case "ADAPTER::ACCOUNT_MIGRATOR":
35
- return new import_contracts.AccountMigratorAdapterContract(options, data);
35
+ return new import_contracts.AccountMigratorAdapterContract(sdk, data);
36
36
  case "ADAPTER::BALANCER_V3_ROUTER":
37
- return new import_contracts.BalancerV3RouterAdapterContract(options, data);
37
+ return new import_contracts.BalancerV3RouterAdapterContract(sdk, data);
38
38
  case "ADAPTER::BALANCER_V3_WRAPPER":
39
- return new import_contracts.BalancerV3WrapperAdapterContract(options, data);
39
+ return new import_contracts.BalancerV3WrapperAdapterContract(sdk, data);
40
40
  case "ADAPTER::CAMELOT_V3_ROUTER":
41
- return new import_contracts.CamelotV3AdapterContract(options, data);
41
+ return new import_contracts.CamelotV3AdapterContract(sdk, data);
42
42
  case "ADAPTER::CURVE_STABLE_NG":
43
- return new import_contracts.CurveV1StableNGAdapterContract(options, data);
43
+ return new import_contracts.CurveV1StableNGAdapterContract(sdk, data);
44
44
  case "ADAPTER::CURVE_V1_2ASSETS":
45
- return new import_contracts.Curve2AssetsAdapterContract(options, data);
45
+ return new import_contracts.Curve2AssetsAdapterContract(sdk, data);
46
46
  case "ADAPTER::CURVE_V1_3ASSETS":
47
- return new import_contracts.Curve3AssetsAdapterContract(options, data);
47
+ return new import_contracts.Curve3AssetsAdapterContract(sdk, data);
48
48
  case "ADAPTER::CURVE_V1_4ASSETS":
49
- return new import_contracts.Curve4AssetsAdapterContract(options, data);
49
+ return new import_contracts.Curve4AssetsAdapterContract(sdk, data);
50
50
  case "ADAPTER::CURVE_V1_STECRV_POOL":
51
- return new import_contracts.CurveV1AdapterStETHContract(options, data);
51
+ return new import_contracts.CurveV1AdapterStETHContract(sdk, data);
52
52
  case "ADAPTER::CVX_V1_BASE_REWARD_POOL":
53
- return new import_contracts.ConvexV1BaseRewardPoolAdapterContract(options, data);
53
+ return new import_contracts.ConvexV1BaseRewardPoolAdapterContract(sdk, data);
54
54
  case "ADAPTER::CVX_V1_BOOSTER":
55
- return new import_contracts.ConvexV1BoosterAdapterContract(options, data);
55
+ return new import_contracts.ConvexV1BoosterAdapterContract(sdk, data);
56
56
  case "ADAPTER::DAI_USDS_EXCHANGE":
57
- return new import_contracts.DaiUsdsAdapterContract(options, data);
57
+ return new import_contracts.DaiUsdsAdapterContract(sdk, data);
58
58
  case "ADAPTER::ERC4626_VAULT":
59
- return new import_contracts.ERC4626AdapterContract(options, data);
59
+ return new import_contracts.ERC4626AdapterContract(sdk, data);
60
60
  case "ADAPTER::ERC4626_VAULT_REFERRAL":
61
- return new import_contracts.ERC4626ReferralAdapterContract(options, data);
61
+ return new import_contracts.ERC4626ReferralAdapterContract(sdk, data);
62
62
  case "ADAPTER::FLUID_DEX":
63
- return new import_contracts.FluidDexAdapterContract(options, data);
63
+ return new import_contracts.FluidDexAdapterContract(sdk, data);
64
64
  case "ADAPTER::INFINIFI_GATEWAY":
65
- return new import_contracts.InfinifiGatewayAdapterContract(options, data);
65
+ return new import_contracts.InfinifiGatewayAdapterContract(sdk, data);
66
66
  case "ADAPTER::INFINIFI_UNWINDING":
67
- return new import_contracts.InfinifiUnwindingGatewayAdapterContract(options, data);
67
+ return new import_contracts.InfinifiUnwindingGatewayAdapterContract(sdk, data);
68
68
  case "ADAPTER::KELP_DEPOSIT_POOL":
69
- return new import_contracts.KelpLRTDepositPoolAdapterContract(options, data);
69
+ return new import_contracts.KelpLRTDepositPoolAdapterContract(sdk, data);
70
70
  case "ADAPTER::KELP_WITHDRAWAL":
71
- return new import_contracts.KelpLRTWithdrawalManagerAdapterContract(options, data);
71
+ return new import_contracts.KelpLRTWithdrawalManagerAdapterContract(sdk, data);
72
72
  case "ADAPTER::LIDO_V1":
73
- return new import_contracts.LidoV1AdapterContract(options, data);
73
+ return new import_contracts.LidoV1AdapterContract(sdk, data);
74
74
  case "ADAPTER::LIDO_WSTETH_V1":
75
- return new import_contracts.WstETHV1AdapterContract(options, data);
75
+ return new import_contracts.WstETHV1AdapterContract(sdk, data);
76
76
  case "ADAPTER::MELLOW_CLAIMER":
77
- return new import_contracts.MellowClaimerAdapterContract(options, data);
77
+ return new import_contracts.MellowClaimerAdapterContract(sdk, data);
78
78
  case "ADAPTER::MELLOW_DVV":
79
- return new import_contracts.MellowDVVAdapterContract(options, data);
79
+ return new import_contracts.MellowDVVAdapterContract(sdk, data);
80
80
  case "ADAPTER::MELLOW_ERC4626_VAULT":
81
- return new import_contracts.MellowERC4626VaultAdapterContract(options, data);
81
+ return new import_contracts.MellowERC4626VaultAdapterContract(sdk, data);
82
82
  case "ADAPTER::MELLOW_WRAPPER":
83
- return new import_contracts.MellowWrapperAdapterContract(options, data);
83
+ return new import_contracts.MellowWrapperAdapterContract(sdk, data);
84
84
  case "ADAPTER::MIDAS_GATEWAY":
85
- return new import_contracts.MidasGatewayAdapterContract(options, data);
85
+ return new import_contracts.MidasGatewayAdapterContract(sdk, data);
86
86
  case "ADAPTER::MIDAS_ISSUANCE_VAULT":
87
- return new import_contracts.MidasIssuanceVaultAdapterContract(options, data);
87
+ return new import_contracts.MidasIssuanceVaultAdapterContract(sdk, data);
88
88
  case "ADAPTER::MIDAS_REDEMPTION_VAULT":
89
- return new import_contracts.MidasRedemptionVaultAdapterContract(options, data);
89
+ return new import_contracts.MidasRedemptionVaultAdapterContract(sdk, data);
90
90
  case "ADAPTER::PENDLE_ROUTER":
91
- return new import_contracts.PendleRouterAdapterContract(options, data);
91
+ return new import_contracts.PendleRouterAdapterContract(sdk, data);
92
92
  case "ADAPTER::SECURITIZE_ONRAMP":
93
- return new import_SecuritizeOnRampAdapterContract.SecuritizeOnRampAdapterContract(options, data);
93
+ return new import_SecuritizeOnRampAdapterContract.SecuritizeOnRampAdapterContract(sdk, data);
94
94
  case "ADAPTER::SECURITIZE_REDEMPTION":
95
- return new import_SecuritizeRedemptionGatewayAdapterContract.SecuritizeRedemptionGatewayAdapterContract(options, data);
95
+ return new import_SecuritizeRedemptionGatewayAdapterContract.SecuritizeRedemptionGatewayAdapterContract(sdk, data);
96
96
  case "ADAPTER::STAKING_REWARDS":
97
- return new import_contracts.StakingRewardsAdapterContract(options, data);
97
+ return new import_contracts.StakingRewardsAdapterContract(sdk, data);
98
98
  case "ADAPTER::TRADERJOE_ROUTER":
99
- return new import_contracts.TraderJoeRouterAdapterContract(options, data);
99
+ return new import_contracts.TraderJoeRouterAdapterContract(sdk, data);
100
100
  case "ADAPTER::UNISWAP_V2_ROUTER":
101
- return new import_contracts.UniswapV2AdapterContract(options, data);
101
+ return new import_contracts.UniswapV2AdapterContract(sdk, data);
102
102
  case "ADAPTER::UNISWAP_V3_ROUTER":
103
- return new import_contracts.UniswapV3AdapterContract(options, data);
103
+ return new import_contracts.UniswapV3AdapterContract(sdk, data);
104
104
  case "ADAPTER::UNISWAP_V4_GATEWAY":
105
- return new import_UniswapV4AdapterContract.UniswapV4AdapterContract(options, data);
105
+ return new import_UniswapV4AdapterContract.UniswapV4AdapterContract(sdk, data);
106
106
  case "ADAPTER::UPSHIFT_VAULT":
107
- return new import_contracts.UpshiftVaultAdapterContract(options, data);
107
+ return new import_contracts.UpshiftVaultAdapterContract(sdk, data);
108
108
  case "ADAPTER::VELODROME_V2_ROUTER":
109
- return new import_contracts.VelodromeV2RouterAdapterContract(options, data);
109
+ return new import_contracts.VelodromeV2RouterAdapterContract(sdk, data);
110
110
  default: {
111
111
  if (strict) {
112
112
  throw new Error(
113
113
  `Adapter type ${adapterType} not supported for adapter at ${data.baseParams.addr}`
114
114
  );
115
115
  }
116
- return new import_contracts.AbstractAdapterContract(options, {
116
+ return new import_contracts.AbstractAdapterContract(sdk, {
117
117
  ...data,
118
118
  abi: [],
119
119
  protocolAbi: []
@@ -36,7 +36,7 @@ function makeInnerOperationsState() {
36
36
  quotaChanges: []
37
37
  };
38
38
  }
39
- function applyInnerOperations(sdk, multicall, state) {
39
+ async function applyInnerOperations(sdk, multicall, state) {
40
40
  let inBracket = false;
41
41
  let storeSeen = false;
42
42
  let error;
@@ -81,7 +81,7 @@ function applyInnerOperations(sdk, multicall, state) {
81
81
  inBracket = false;
82
82
  break;
83
83
  case "Execute":
84
- opError = applyExecute(sdk, op, inBracket, state.balances);
84
+ opError = await applyExecute(sdk, op, inBracket, state.balances);
85
85
  break;
86
86
  }
87
87
  error ??= opError;
@@ -117,7 +117,7 @@ function applyDecreaseDebt(state, op) {
117
117
  state.debt = state.totalDebt;
118
118
  }
119
119
  }
120
- function applyExecute(sdk, op, inBracket, balances) {
120
+ async function applyExecute(sdk, op, inBracket, balances) {
121
121
  const adapter = sdk.getContract(op.adapter);
122
122
  if (!inBracket) {
123
123
  if (!isRWAShare(sdk, adapter)) {
@@ -143,7 +143,7 @@ function applyExecute(sdk, op, inBracket, balances) {
143
143
  };
144
144
  }
145
145
  try {
146
- adapter.previewBalanceChanges(balances, op.calldata);
146
+ await adapter.previewBalanceChanges(balances, op.calldata);
147
147
  return void 0;
148
148
  } catch (e) {
149
149
  return {
@@ -55,7 +55,7 @@ async function previewAdjustCreditAccount(input, operation, options) {
55
55
  state.balances = initialBalances.clone();
56
56
  state.debt = ca.debt;
57
57
  state.totalDebt = ca.debt + ca.accruedInterest + ca.accruedFees;
58
- let error = (0, import_applyInnerOperations.applyInnerOperations)(sdk, operation.multicall, state);
58
+ let error = await (0, import_applyInnerOperations.applyInnerOperations)(sdk, operation.multicall, state);
59
59
  const { assets: collateralAdded, error: unwrapError } = (0, import_unwrapNativeCollateral.unwrapNativeCollateral)(
60
60
  state.collateralAdded.toAssets(),
61
61
  value,
@@ -96,7 +96,7 @@ async function replayMulticall(sdk, operation, options) {
96
96
  }
97
97
  state.debt = ca.debt;
98
98
  state.totalDebt = ca.debt + ca.accruedInterest + ca.accruedFees;
99
- const error = (0, import_applyInnerOperations.applyInnerOperations)(sdk, operation.multicall, state);
99
+ const error = await (0, import_applyInnerOperations.applyInnerOperations)(sdk, operation.multicall, state);
100
100
  return { ca, state, error };
101
101
  }
102
102
  // Annotate the CommonJS export names for ESM import in node:
@@ -25,13 +25,13 @@ var import_sdk = require("../../sdk/index.js");
25
25
  var import_applyInnerOperations = require("./applyInnerOperations.js");
26
26
  var import_types = require("./types.js");
27
27
  var import_unwrapNativeCollateral = require("./unwrapNativeCollateral.js");
28
- function previewOpenCreditAccount(input, operation) {
28
+ async function previewOpenCreditAccount(input, operation) {
29
29
  const { sdk, value = 0n } = input;
30
30
  const market = sdk.marketRegister.findByCreditManager(
31
31
  operation.creditManager
32
32
  );
33
33
  const state = (0, import_applyInnerOperations.makeInnerOperationsState)();
34
- let error = (0, import_applyInnerOperations.applyInnerOperations)(sdk, operation.multicall, state);
34
+ let error = await (0, import_applyInnerOperations.applyInnerOperations)(sdk, operation.multicall, state);
35
35
  let priceError;
36
36
  const collateralValue = state.collateralAdded.sum((token, balance) => {
37
37
  try {
@@ -803,17 +803,21 @@ class CreditAccountsServiceV310 extends import_base.SDKConstruct {
803
803
  return acc;
804
804
  }, {});
805
805
  const balances = Object.entries(record).filter(([, a]) => a > 10n);
806
+ const deltas = balances.map(
807
+ ([token, amount]) => ({
808
+ token,
809
+ amount: amount > 10n ? amount - 10n : 0n
810
+ })
811
+ );
812
+ if (preview.amountIn > 0n) {
813
+ deltas.push({ token: preview.token, amount: -preview.amountIn });
814
+ }
806
815
  const storeExpectedBalances = {
807
816
  target: creditFacade,
808
817
  callData: (0, import_viem.encodeFunctionData)({
809
818
  abi: import_generated.iCreditFacadeMulticallV310Abi,
810
819
  functionName: "storeExpectedBalances",
811
- args: [
812
- balances.map(([token, amount]) => ({
813
- token,
814
- amount: amount > 10n ? amount - 10n : 0n
815
- }))
816
- ]
820
+ args: [deltas]
817
821
  })
818
822
  };
819
823
  const compareBalances = {
@@ -842,17 +846,24 @@ class CreditAccountsServiceV310 extends import_base.SDKConstruct {
842
846
  {}
843
847
  );
844
848
  const balances = Object.entries(record).filter(([, a]) => a > 10n);
849
+ const deltas = balances.map(
850
+ ([token, amount]) => ({
851
+ token,
852
+ amount: amount > 10n ? amount - 10n : 0n
853
+ })
854
+ );
855
+ if (claimableNow.withdrawalTokenSpent > 0n) {
856
+ deltas.push({
857
+ token: claimableNow.withdrawalPhantomToken,
858
+ amount: -claimableNow.withdrawalTokenSpent
859
+ });
860
+ }
845
861
  const storeExpectedBalances = {
846
862
  target: creditFacade,
847
863
  callData: (0, import_viem.encodeFunctionData)({
848
864
  abi: import_generated.iCreditFacadeMulticallV310Abi,
849
865
  functionName: "storeExpectedBalances",
850
- args: [
851
- balances.map(([token, amount]) => ({
852
- token,
853
- amount: amount > 10n ? amount - 10n : 0n
854
- }))
855
- ]
866
+ args: [deltas]
856
867
  })
857
868
  };
858
869
  const compareBalances = {
@@ -82,6 +82,19 @@ class AbstractWithdrawalCompressorContract extends import_base.BaseContract {
82
82
  return r.result.map((a) => toWithdrawableAsset(a, cms[i]));
83
83
  });
84
84
  }
85
+ /**
86
+ * {@inheritDoc IWithdrawalCompressorContract.getWithdrawalPhantomToken}
87
+ **/
88
+ async getWithdrawalPhantomToken(creditManager, token) {
89
+ const assets = await this.getWithdrawableAssets(creditManager);
90
+ const asset = assets.find((a) => (0, import_viem.isAddressEqual)(a.token, token));
91
+ if (!asset) {
92
+ throw new Error(
93
+ `token ${token} is not withdrawable from credit manager ${creditManager}`
94
+ );
95
+ }
96
+ return asset.withdrawalPhantomToken;
97
+ }
85
98
  /**
86
99
  * {@inheritDoc IWithdrawalCompressorContract.getCurrentWithdrawals}
87
100
  **/
@@ -162,19 +175,14 @@ class AbstractWithdrawalCompressorContract extends import_base.BaseContract {
162
175
  abi: iCreditAccountAbi,
163
176
  functionName: "creditManager"
164
177
  });
165
- const assets = await this.common.read.getWithdrawableAssets([
166
- creditManager
167
- ]);
168
- const asset = assets.find((a) => (0, import_viem.isAddressEqual)(a.token, token));
169
- if (!asset) {
170
- throw new Error(
171
- `token ${token} is not withdrawable from credit manager ${creditManager}`
172
- );
173
- }
178
+ const withdrawalPhantomToken = await this.getWithdrawalPhantomToken(
179
+ creditManager,
180
+ token
181
+ );
174
182
  return this.common.read.getWithdrawalRequestResult([
175
183
  creditAccount,
176
184
  token,
177
- asset.withdrawalPhantomToken,
185
+ withdrawalPhantomToken,
178
186
  amount,
179
187
  extraData
180
188
  ]);
@@ -1,17 +1,24 @@
1
1
  import {
2
+ custom,
2
3
  isHex
3
4
  } from "viem";
4
5
  import { createAdapter } from "../plugins/adapters/createAdapter.js";
5
6
  import {
6
7
  bytes32ToString,
7
- ChainContractsRegister,
8
8
  CreditFacadeV310BaseContract,
9
+ getNetworkType,
9
10
  isV310,
11
+ OnchainSDK,
10
12
  TokensMeta
11
13
  } from "../sdk/index.js";
12
14
  function populateContractsRegister(options) {
13
15
  const { client, deployments, tokens, logger, strict } = options;
14
- const register = new ChainContractsRegister(client, logger);
16
+ const network = getNetworkType(client.chain.id);
17
+ const sdk = new OnchainSDK(
18
+ network,
19
+ { transport: custom({ request: client.request }) },
20
+ { logger }
21
+ );
15
22
  for (const d of deployments) {
16
23
  let contractType;
17
24
  if ("contractType" in d) {
@@ -20,16 +27,14 @@ function populateContractsRegister(options) {
20
27
  contractType = [d.contractTypePrefix, d.contractTypeSuffix].filter(Boolean).join("::");
21
28
  }
22
29
  if (contractType === "CREDIT_FACADE" && isV310(d.version)) {
23
- new CreditFacadeV310BaseContract(
24
- { register, logger },
25
- { addr: d.address, version: d.version, contractType }
26
- );
30
+ new CreditFacadeV310BaseContract(sdk, {
31
+ addr: d.address,
32
+ version: d.version,
33
+ contractType
34
+ });
27
35
  } else if (contractType.startsWith("ADAPTER::")) {
28
36
  createAdapter(
29
- {
30
- register,
31
- logger
32
- },
37
+ sdk,
33
38
  {
34
39
  baseParams: {
35
40
  addr: d.address,
@@ -43,9 +48,9 @@ function populateContractsRegister(options) {
43
48
  }
44
49
  const tMetas = tokens instanceof TokensMeta ? tokens.values() : tokens;
45
50
  for (const t of tMetas) {
46
- register.tokensMeta.upsert(t.addr, t);
51
+ sdk.tokensMeta.upsert(t.addr, t);
47
52
  }
48
- return register;
53
+ return sdk;
49
54
  }
50
55
  export {
51
56
  populateContractsRegister
@@ -16,10 +16,12 @@ import { swapFromTransfers } from "../transferHelpers.js";
16
16
  class AbstractAdapterContract extends BaseContract {
17
17
  #targetContract;
18
18
  #creditManager;
19
+ #sdk;
19
20
  protocolAbi;
20
- constructor(options, args) {
21
+ constructor(sdk, args) {
21
22
  const { baseParams, protocolAbi, ...rest } = args;
22
- super(options, { ...rest, ...baseParams });
23
+ super(sdk, { ...rest, ...baseParams });
24
+ this.#sdk = sdk;
23
25
  this.protocolAbi = protocolAbi;
24
26
  if (baseParams.serializedParams) {
25
27
  const [cm, tc] = decodeAbiParameters(
@@ -30,6 +32,12 @@ class AbstractAdapterContract extends BaseContract {
30
32
  this.#targetContract = tc;
31
33
  }
32
34
  }
35
+ /**
36
+ * The SDK instance this adapter belongs to.
37
+ */
38
+ get sdk() {
39
+ return this.#sdk;
40
+ }
33
41
  get targetContract() {
34
42
  if (this.#targetContract === void 0) {
35
43
  throw new MissingSerializedParamsError("targetContract");
@@ -114,7 +122,7 @@ class AbstractAdapterContract extends BaseContract {
114
122
  * @throws When the calldata cannot be decoded or the adapter (or the
115
123
  * specific function) has no balance-changes support.
116
124
  */
117
- previewBalanceChanges(balances, calldata) {
125
+ async previewBalanceChanges(balances, calldata) {
118
126
  let decoded;
119
127
  try {
120
128
  decoded = decodeFunctionData({ abi: this.abi, data: calldata });
@@ -124,7 +132,7 @@ class AbstractAdapterContract extends BaseContract {
124
132
  { cause: e }
125
133
  );
126
134
  }
127
- this.applyBalanceChanges(balances, decoded);
135
+ await this.applyBalanceChanges(balances, decoded);
128
136
  }
129
137
  /**
130
138
  * Applies the balance changes of a decoded adapter call to the running
@@ -137,7 +145,7 @@ class AbstractAdapterContract extends BaseContract {
137
145
  * @param decoded - The viem-decoded adapter call
138
146
  * @throws When the adapter (or the specific function) has no balance-changes support
139
147
  */
140
- applyBalanceChanges(_balances, decoded) {
148
+ async applyBalanceChanges(_balances, decoded) {
141
149
  throw new Error(
142
150
  `previewBalanceChanges is not supported for ${decoded.functionName} on ${this.contractType} adapter at ${this.address}`
143
151
  );
@@ -5,7 +5,7 @@ class AbstractCurveAdapterContract extends AbstractAdapterContract {
5
5
  classifyLegacyOperation(parsed, transfers) {
6
6
  return classifyCurveOperation(parsed.functionName, transfers) ?? super.classifyLegacyOperation(parsed, transfers);
7
7
  }
8
- applyBalanceChanges(balances, decoded) {
8
+ async applyBalanceChanges(balances, decoded) {
9
9
  const { functionName, args } = decoded;
10
10
  switch (functionName) {
11
11
  case "exchange_diff": {
@@ -24,7 +24,7 @@ class AbstractCurveAdapterContract extends AbstractAdapterContract {
24
24
  break;
25
25
  }
26
26
  default:
27
- super.applyBalanceChanges(balances, decoded);
27
+ await super.applyBalanceChanges(balances, decoded);
28
28
  }
29
29
  }
30
30
  /**
@@ -3,8 +3,8 @@ import { AbstractAdapterContract } from "./AbstractAdapter.js";
3
3
  const abi = accountMigratorAbi;
4
4
  const protocolAbi = accountMigratorAbi;
5
5
  class AccountMigratorAdapterContract extends AbstractAdapterContract {
6
- constructor(options, args) {
7
- super(options, { ...args, abi, protocolAbi });
6
+ constructor(sdk, args) {
7
+ super(sdk, { ...args, abi, protocolAbi });
8
8
  }
9
9
  /** Legacy adapter not present in integrations-v3. */
10
10
  classifyLegacyOperation(_parsed, _transfers) {
@@ -17,8 +17,8 @@ const abi = iBalancerV3RouterAdapterAbi;
17
17
  const protocolAbi = iBalancerV3RouterAbi;
18
18
  class BalancerV3RouterAdapterContract extends AbstractAdapterContract {
19
19
  #allowedPools;
20
- constructor(options, args) {
21
- super(options, { ...args, abi, protocolAbi });
20
+ constructor(sdk, args) {
21
+ super(sdk, { ...args, abi, protocolAbi });
22
22
  if (args.baseParams.serializedParams) {
23
23
  const version = Number(args.baseParams.version);
24
24
  if (version <= 310) {
@@ -71,7 +71,7 @@ class BalancerV3RouterAdapterContract extends AbstractAdapterContract {
71
71
  }))
72
72
  };
73
73
  }
74
- applyBalanceChanges(balances, decoded) {
74
+ async applyBalanceChanges(balances, decoded) {
75
75
  switch (decoded.functionName) {
76
76
  case "swapSingleTokenDiffIn": {
77
77
  const [, tokenIn, , leftoverAmount] = decoded.args;
@@ -89,7 +89,7 @@ class BalancerV3RouterAdapterContract extends AbstractAdapterContract {
89
89
  `previewBalanceChanges cannot resolve pool tokens for addLiquidityUnbalancedDiff on ${this.contractType} adapter at ${this.address}`
90
90
  );
91
91
  default:
92
- super.applyBalanceChanges(balances, decoded);
92
+ await super.applyBalanceChanges(balances, decoded);
93
93
  }
94
94
  }
95
95
  }
@@ -9,8 +9,8 @@ const abi = iBalancerV3WrapperAdapterAbi;
9
9
  const protocolAbi = iBalancerV3WrapperAbi;
10
10
  class BalancerV3WrapperAdapterContract extends AbstractAdapterContract {
11
11
  #balancerPoolToken;
12
- constructor(options, args) {
13
- super(options, { ...args, abi, protocolAbi });
12
+ constructor(sdk, args) {
13
+ super(sdk, { ...args, abi, protocolAbi });
14
14
  if (args.baseParams.serializedParams) {
15
15
  const decoded = decodeAbiParameters(
16
16
  [
@@ -34,7 +34,7 @@ class BalancerV3WrapperAdapterContract extends AbstractAdapterContract {
34
34
  balancerPoolToken: this.#balancerPoolToken ? this.labelAddress(this.#balancerPoolToken) : void 0
35
35
  };
36
36
  }
37
- applyBalanceChanges(balances, decoded) {
37
+ async applyBalanceChanges(balances, decoded) {
38
38
  switch (decoded.functionName) {
39
39
  // mint spends the pool token, burn spends the wrapper (target contract)
40
40
  case "mintDiff": {
@@ -48,7 +48,7 @@ class BalancerV3WrapperAdapterContract extends AbstractAdapterContract {
48
48
  break;
49
49
  }
50
50
  default:
51
- super.applyBalanceChanges(balances, decoded);
51
+ await super.applyBalanceChanges(balances, decoded);
52
52
  }
53
53
  }
54
54
  }
@@ -9,8 +9,8 @@ const abi = iCamelotV3AdapterAbi;
9
9
  const protocolAbi = iCamelotV3RouterAbi;
10
10
  class CamelotV3AdapterContract extends AbstractAdapterContract {
11
11
  #supportedPools;
12
- constructor(options, args) {
13
- super(options, { ...args, abi, protocolAbi });
12
+ constructor(sdk, args) {
13
+ super(sdk, { ...args, abi, protocolAbi });
14
14
  if (args.baseParams.serializedParams) {
15
15
  const decoded = decodeAbiParameters(
16
16
  [
@@ -47,7 +47,7 @@ class CamelotV3AdapterContract extends AbstractAdapterContract {
47
47
  }))
48
48
  };
49
49
  }
50
- applyBalanceChanges(balances, decoded) {
50
+ async applyBalanceChanges(balances, decoded) {
51
51
  switch (decoded.functionName) {
52
52
  case "exactDiffInputSingle": {
53
53
  const [params] = decoded.args;
@@ -61,7 +61,7 @@ class CamelotV3AdapterContract extends AbstractAdapterContract {
61
61
  break;
62
62
  }
63
63
  default:
64
- super.applyBalanceChanges(balances, decoded);
64
+ await super.applyBalanceChanges(balances, decoded);
65
65
  }
66
66
  }
67
67
  }
@@ -22,8 +22,8 @@ class ConvexV1BaseRewardPoolAdapterContract extends AbstractAdapterContract {
22
22
  #stakingToken;
23
23
  #stakedPhantomToken;
24
24
  #extraRewards;
25
- constructor(options, args) {
26
- super(options, { ...args, abi, protocolAbi });
25
+ constructor(sdk, args) {
26
+ super(sdk, { ...args, abi, protocolAbi });
27
27
  if (args.baseParams.serializedParams) {
28
28
  const decoded = decodeAbiParameters(
29
29
  [
@@ -116,7 +116,7 @@ class ConvexV1BaseRewardPoolAdapterContract extends AbstractAdapterContract {
116
116
  withdrawAmount: swap.toAmount
117
117
  };
118
118
  }
119
- applyBalanceChanges(balances, decoded) {
119
+ async applyBalanceChanges(balances, decoded) {
120
120
  switch (decoded.functionName) {
121
121
  case "stakeDiff": {
122
122
  const [leftoverAmount] = decoded.args;
@@ -133,7 +133,7 @@ class ConvexV1BaseRewardPoolAdapterContract extends AbstractAdapterContract {
133
133
  case "getReward":
134
134
  break;
135
135
  default:
136
- super.applyBalanceChanges(balances, decoded);
136
+ await super.applyBalanceChanges(balances, decoded);
137
137
  }
138
138
  }
139
139
  }
@@ -12,8 +12,8 @@ const abi = iConvexV1BoosterAdapterAbi;
12
12
  const protocolAbi = iBoosterAbi;
13
13
  class ConvexV1BoosterAdapterContract extends AbstractAdapterContract {
14
14
  #supportedPools;
15
- constructor(options, args) {
16
- super(options, { ...args, abi, protocolAbi });
15
+ constructor(sdk, args) {
16
+ super(sdk, { ...args, abi, protocolAbi });
17
17
  if (args.baseParams.serializedParams) {
18
18
  const decoded = decodeAbiParameters(
19
19
  [
@@ -83,7 +83,7 @@ class ConvexV1BoosterAdapterContract extends AbstractAdapterContract {
83
83
  }
84
84
  return super.classifyLegacyOperation(parsed, transfers);
85
85
  }
86
- applyBalanceChanges(balances, decoded) {
86
+ async applyBalanceChanges(balances, decoded) {
87
87
  switch (decoded.functionName) {
88
88
  // deposit spends the curve LP token, withdraw spends the convex token
89
89
  case "depositDiff": {
@@ -99,7 +99,7 @@ class ConvexV1BoosterAdapterContract extends AbstractAdapterContract {
99
99
  break;
100
100
  }
101
101
  default:
102
- super.applyBalanceChanges(balances, decoded);
102
+ await super.applyBalanceChanges(balances, decoded);
103
103
  }
104
104
  }
105
105
  #mustFindPool(pid) {
@@ -14,8 +14,8 @@ class Curve2AssetsAdapterContract extends AbstractCurveAdapterContract {
14
14
  #use256;
15
15
  #tokens;
16
16
  #underlyings;
17
- constructor(options, args) {
18
- super(options, { ...args, abi, protocolAbi });
17
+ constructor(sdk, args) {
18
+ super(sdk, { ...args, abi, protocolAbi });
19
19
  if (args.baseParams.serializedParams) {
20
20
  const decoded = decodeAbiParameters(
21
21
  [
@@ -14,8 +14,8 @@ class Curve3AssetsAdapterContract extends AbstractCurveAdapterContract {
14
14
  #use256;
15
15
  #tokens;
16
16
  #underlyings;
17
- constructor(options, args) {
18
- super(options, { ...args, abi, protocolAbi });
17
+ constructor(sdk, args) {
18
+ super(sdk, { ...args, abi, protocolAbi });
19
19
  if (args.baseParams.serializedParams) {
20
20
  const decoded = decodeAbiParameters(
21
21
  [
@@ -14,8 +14,8 @@ class Curve4AssetsAdapterContract extends AbstractCurveAdapterContract {
14
14
  #use256;
15
15
  #tokens;
16
16
  #underlyings;
17
- constructor(options, args) {
18
- super(options, { ...args, abi, protocolAbi });
17
+ constructor(sdk, args) {
18
+ super(sdk, { ...args, abi, protocolAbi });
19
19
  if (args.baseParams.serializedParams) {
20
20
  const decoded = decodeAbiParameters(
21
21
  [
@@ -14,8 +14,8 @@ class CurveV1AdapterStETHContract extends AbstractCurveAdapterContract {
14
14
  #nCoins;
15
15
  #use256;
16
16
  #tokens;
17
- constructor(options, args) {
18
- super(options, { ...args, abi, protocolAbi });
17
+ constructor(sdk, args) {
18
+ super(sdk, { ...args, abi, protocolAbi });
19
19
  if (args.baseParams.serializedParams) {
20
20
  const decoded = decodeAbiParameters(
21
21
  [