@gearbox-protocol/sdk 14.11.0-next.1 → 14.11.0-next.10

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 (165) hide show
  1. package/dist/cjs/common-utils/utils/index.js +2 -0
  2. package/dist/cjs/{history/trace-utils.js → common-utils/utils/trace.js} +62 -5
  3. package/dist/cjs/dev/index.js +3 -1
  4. package/dist/cjs/dev/verifyTestnet.js +124 -0
  5. package/dist/cjs/history/assembleOperations.js +6 -6
  6. package/dist/cjs/history/classifyMulticallOperations.js +31 -25
  7. package/dist/cjs/history/index.js +0 -2
  8. package/dist/cjs/history/parseCreditAccountTransaction.js +5 -6
  9. package/dist/cjs/history/toLegacyOperation.js +5 -1
  10. package/dist/cjs/plugins/adapters/contracts/AbstractAdapter.js +25 -37
  11. package/dist/cjs/plugins/adapters/contracts/AccountMigratorAdapterContract.js +9 -0
  12. package/dist/cjs/{history/internal-types.js → plugins/adapters/transfers.js} +2 -2
  13. package/dist/cjs/preview/index.js +3 -1
  14. package/dist/cjs/preview/parse/classifyInnerOperations.js +5 -43
  15. package/dist/cjs/preview/parse/extractExpectedBalanceChanges.js +48 -0
  16. package/dist/cjs/preview/parse/index.js +8 -6
  17. package/dist/cjs/preview/parse/{parseCreditFacadeOperation.js → parseFacadeOperationCalldata.js} +19 -15
  18. package/dist/cjs/preview/parse/{parseTransaction.js → parseOperationCalldata.js} +10 -10
  19. package/dist/cjs/preview/parse/{parsePoolOperation.js → parsePoolOperationCalldata.js} +27 -12
  20. package/dist/cjs/{history/inner-operations.js → preview/parse/types-adapters.js} +2 -2
  21. package/dist/cjs/preview/parse/types-facades.js +16 -0
  22. package/dist/cjs/preview/parse/types-pools.js +16 -0
  23. package/dist/cjs/preview/parse/types.js +9 -2
  24. package/dist/cjs/preview/prerequisites/buildPrerequisites.js +46 -0
  25. package/dist/cjs/preview/prerequisites/index.js +2 -0
  26. package/dist/cjs/preview/prerequisites/prepareAction.js +48 -0
  27. package/dist/cjs/preview/simulate/constants.js +28 -0
  28. package/dist/cjs/preview/simulate/{decodeSimulationError.js → errors.js} +37 -3
  29. package/dist/cjs/preview/simulate/holders.js +45 -0
  30. package/dist/cjs/preview/simulate/index.js +21 -9
  31. package/dist/cjs/preview/simulate/simulateFacadeOperation.js +30 -0
  32. package/dist/cjs/preview/simulate/simulateOperation.js +37 -0
  33. package/dist/cjs/preview/simulate/simulatePoolOpMulticall.js +155 -0
  34. package/dist/cjs/preview/simulate/simulatePoolOpV1.js +106 -0
  35. package/dist/cjs/preview/simulate/simulatePoolOperation.js +30 -62
  36. package/dist/cjs/{history → preview/trace}/errors.js +0 -26
  37. package/dist/cjs/preview/trace/extractAdapterCallTraces.js +58 -0
  38. package/dist/cjs/{history → preview/trace}/extractTransfers.js +10 -13
  39. package/dist/cjs/{history → preview/trace}/findFacadeCalls.js +3 -3
  40. package/dist/cjs/preview/trace/index.js +30 -0
  41. package/dist/cjs/preview/trace/types.js +16 -0
  42. package/dist/cjs/rewards/rewards/api.js +4 -2
  43. package/dist/cjs/rewards/rewards/merkl-api.js +9 -3
  44. package/dist/cjs/sdk/accounts/CreditAccountsServiceV310.js +154 -0
  45. package/dist/esm/common-utils/utils/index.js +1 -0
  46. package/dist/esm/common-utils/utils/trace.js +93 -0
  47. package/dist/esm/dev/index.js +1 -0
  48. package/dist/esm/dev/verifyTestnet.js +98 -0
  49. package/dist/esm/history/assembleOperations.js +8 -6
  50. package/dist/esm/history/classifyMulticallOperations.js +29 -23
  51. package/dist/esm/history/index.js +0 -1
  52. package/dist/esm/history/parseCreditAccountTransaction.js +3 -4
  53. package/dist/esm/history/toLegacyOperation.js +5 -1
  54. package/dist/esm/plugins/adapters/contracts/AbstractAdapter.js +28 -38
  55. package/dist/esm/plugins/adapters/contracts/AccountMigratorAdapterContract.js +9 -0
  56. package/dist/esm/preview/index.js +1 -0
  57. package/dist/esm/preview/parse/classifyInnerOperations.js +6 -46
  58. package/dist/esm/preview/parse/extractExpectedBalanceChanges.js +24 -0
  59. package/dist/esm/preview/parse/index.js +4 -3
  60. package/dist/esm/preview/parse/{parseCreditFacadeOperation.js → parseFacadeOperationCalldata.js} +16 -16
  61. package/dist/esm/preview/parse/{parseTransaction.js → parseOperationCalldata.js} +6 -6
  62. package/dist/esm/preview/parse/{parsePoolOperation.js → parsePoolOperationCalldata.js} +23 -8
  63. package/dist/esm/preview/parse/types-facades.js +0 -0
  64. package/dist/esm/preview/parse/types-pools.js +0 -0
  65. package/dist/esm/preview/parse/types.js +4 -1
  66. package/dist/esm/preview/prerequisites/buildPrerequisites.js +46 -0
  67. package/dist/esm/preview/prerequisites/index.js +1 -0
  68. package/dist/esm/preview/prerequisites/prepareAction.js +23 -0
  69. package/dist/esm/preview/simulate/constants.js +4 -0
  70. package/dist/esm/preview/simulate/{decodeSimulationError.js → errors.js} +31 -0
  71. package/dist/esm/preview/simulate/holders.js +21 -0
  72. package/dist/esm/preview/simulate/index.js +12 -4
  73. package/dist/esm/preview/simulate/simulateFacadeOperation.js +6 -0
  74. package/dist/esm/preview/simulate/simulateOperation.js +13 -0
  75. package/dist/esm/preview/simulate/simulatePoolOpMulticall.js +130 -0
  76. package/dist/esm/preview/simulate/simulatePoolOpV1.js +82 -0
  77. package/dist/esm/preview/simulate/simulatePoolOperation.js +33 -62
  78. package/dist/esm/{history → preview/trace}/errors.js +0 -24
  79. package/dist/esm/preview/trace/extractAdapterCallTraces.js +40 -0
  80. package/dist/esm/{history → preview/trace}/extractTransfers.js +10 -13
  81. package/dist/esm/{history → preview/trace}/findFacadeCalls.js +4 -2
  82. package/dist/esm/preview/trace/index.js +5 -0
  83. package/dist/esm/preview/trace/types.js +0 -0
  84. package/dist/esm/rewards/rewards/api.js +4 -2
  85. package/dist/esm/rewards/rewards/merkl-api.js +9 -3
  86. package/dist/esm/sdk/accounts/CreditAccountsServiceV310.js +154 -0
  87. package/dist/types/common-utils/utils/index.d.ts +1 -0
  88. package/dist/types/common-utils/utils/trace.d.ts +73 -0
  89. package/dist/types/dev/index.d.ts +1 -0
  90. package/dist/types/dev/verifyTestnet.d.ts +82 -0
  91. package/dist/types/history/assembleOperations.d.ts +11 -6
  92. package/dist/types/history/classifyMulticallOperations.d.ts +21 -9
  93. package/dist/types/history/index.d.ts +0 -1
  94. package/dist/types/history/mapOperations.d.ts +7 -9
  95. package/dist/types/history/types.d.ts +22 -65
  96. package/dist/types/plugins/adapters/contracts/AbstractAdapter.d.ts +16 -17
  97. package/dist/types/plugins/adapters/contracts/AccountMigratorAdapterContract.d.ts +10 -1
  98. package/dist/types/plugins/adapters/contracts/ConvexV1BaseRewardPoolAdapterContract.d.ts +1 -1
  99. package/dist/types/plugins/adapters/contracts/ConvexV1BoosterAdapterContract.d.ts +1 -1
  100. package/dist/types/plugins/adapters/contracts/Curve2AssetsAdapterContract.d.ts +1 -1
  101. package/dist/types/plugins/adapters/contracts/Curve3AssetsAdapterContract.d.ts +1 -1
  102. package/dist/types/plugins/adapters/contracts/Curve4AssetsAdapterContract.d.ts +1 -1
  103. package/dist/types/plugins/adapters/contracts/CurveV1AdapterDeposit.d.ts +1 -1
  104. package/dist/types/plugins/adapters/contracts/CurveV1AdapterStETHContract.d.ts +1 -1
  105. package/dist/types/plugins/adapters/contracts/CurveV1StableNGAdapterContract.d.ts +1 -1
  106. package/dist/types/plugins/adapters/contracts/DaiUsdsAdapterContract.d.ts +1 -1
  107. package/dist/types/plugins/adapters/contracts/ERC4626AdapterContract.d.ts +1 -1
  108. package/dist/types/plugins/adapters/contracts/ERC4626ReferralAdapterContract.d.ts +1 -1
  109. package/dist/types/plugins/adapters/contracts/LidoV1AdapterContract.d.ts +1 -1
  110. package/dist/types/plugins/adapters/contracts/MellowDVVAdapterContract.d.ts +1 -1
  111. package/dist/types/plugins/adapters/contracts/MellowERC4626VaultAdapterContract.d.ts +1 -1
  112. package/dist/types/plugins/adapters/contracts/UniswapV2AdapterContract.d.ts +1 -1
  113. package/dist/types/plugins/adapters/contracts/UniswapV4AdapterContract.d.ts +1 -1
  114. package/dist/types/plugins/adapters/contracts/WstETHV1AdapterContract.d.ts +1 -1
  115. package/dist/types/plugins/adapters/transferHelpers.d.ts +1 -1
  116. package/dist/types/plugins/adapters/transfers.d.ts +17 -0
  117. package/dist/types/plugins/adapters/types.d.ts +8 -46
  118. package/dist/types/preview/index.d.ts +1 -0
  119. package/dist/types/preview/parse/classifyInnerOperations.d.ts +8 -8
  120. package/dist/types/preview/parse/extractExpectedBalanceChanges.d.ts +22 -0
  121. package/dist/types/preview/parse/index.d.ts +4 -3
  122. package/dist/types/preview/parse/parseFacadeOperationCalldata.d.ts +19 -0
  123. package/dist/types/preview/parse/{parseTransaction.d.ts → parseOperationCalldata.d.ts} +4 -4
  124. package/dist/types/preview/parse/parsePoolOperationCalldata.d.ts +17 -0
  125. package/dist/types/preview/parse/types-adapters.d.ts +69 -0
  126. package/dist/types/preview/parse/types-facades.d.ts +157 -0
  127. package/dist/types/preview/parse/types-pools.d.ts +55 -0
  128. package/dist/types/preview/parse/types.d.ts +16 -50
  129. package/dist/types/preview/prerequisites/buildPrerequisites.d.ts +3 -3
  130. package/dist/types/preview/prerequisites/index.d.ts +1 -0
  131. package/dist/types/preview/prerequisites/prepareAction.d.ts +52 -0
  132. package/dist/types/preview/simulate/constants.d.ts +6 -0
  133. package/dist/types/preview/simulate/errors.d.ts +51 -0
  134. package/dist/types/preview/simulate/extractERC20Transfers.d.ts +1 -1
  135. package/dist/types/preview/simulate/holders.d.ts +7 -0
  136. package/dist/types/preview/simulate/index.d.ts +9 -4
  137. package/dist/types/preview/simulate/simulateFacadeOperation.d.ts +25 -0
  138. package/dist/types/preview/simulate/simulateOperation.d.ts +20 -0
  139. package/dist/types/preview/simulate/simulatePoolOpMulticall.d.ts +28 -0
  140. package/dist/types/preview/simulate/simulatePoolOpV1.d.ts +14 -0
  141. package/dist/types/preview/simulate/simulatePoolOperation.d.ts +5 -27
  142. package/dist/types/preview/simulate/types.d.ts +54 -18
  143. package/dist/types/{history → preview/trace}/errors.d.ts +0 -10
  144. package/dist/types/preview/trace/extractAdapterCallTraces.d.ts +23 -0
  145. package/dist/types/{history → preview/trace}/extractTransfers.d.ts +14 -5
  146. package/dist/types/{history → preview/trace}/findFacadeCalls.d.ts +3 -2
  147. package/dist/types/preview/trace/index.d.ts +5 -0
  148. package/dist/types/preview/trace/types.d.ts +21 -0
  149. package/dist/types/rewards/rewards/api.d.ts +2 -1
  150. package/dist/types/rewards/rewards/merkl-api.d.ts +2 -1
  151. package/dist/types/sdk/accounts/CreditAccountsServiceV310.d.ts +21 -1
  152. package/dist/types/sdk/accounts/types.d.ts +82 -0
  153. package/package.json +1 -1
  154. package/dist/cjs/history/extractProtocolCalls.js +0 -53
  155. package/dist/esm/history/extractProtocolCalls.js +0 -32
  156. package/dist/esm/history/trace-utils.js +0 -36
  157. package/dist/types/history/extractProtocolCalls.d.ts +0 -8
  158. package/dist/types/history/inner-operations.d.ts +0 -57
  159. package/dist/types/history/internal-types.d.ts +0 -47
  160. package/dist/types/history/trace-utils.d.ts +0 -12
  161. package/dist/types/preview/parse/parseCreditFacadeOperation.d.ts +0 -18
  162. package/dist/types/preview/parse/parsePoolOperation.d.ts +0 -15
  163. package/dist/types/preview/simulate/decodeSimulationError.d.ts +0 -18
  164. /package/dist/esm/{history/inner-operations.js → plugins/adapters/transfers.js} +0 -0
  165. /package/dist/esm/{history/internal-types.js → preview/parse/types-adapters.js} +0 -0
@@ -21,57 +21,28 @@ __export(classifyInnerOperations_exports, {
21
21
  classifyInnerOperations: () => classifyInnerOperations
22
22
  });
23
23
  module.exports = __toCommonJS(classifyInnerOperations_exports);
24
- var import_viem = require("viem");
25
24
  var import_adapters = require("../../plugins/adapters/index.js");
26
25
  function classifyInnerOperations(calls, props) {
27
26
  const { sdk, underlying } = props;
28
27
  const result = [];
29
28
  for (const call of calls) {
30
29
  const contract = sdk.getContract(call.target);
31
- if (contract instanceof import_adapters.AbstractAdapterContract) {
30
+ if (contract instanceof import_adapters.AbstractAdapterContract || contract === void 0) {
32
31
  result.push({
33
32
  operation: "Execute",
34
33
  adapter: call.target,
35
- protocol: contract.targetContract,
36
34
  adapterType: call.contractType,
37
35
  version: call.version,
38
36
  label: call.label,
39
37
  adapterFunctionName: call.functionName,
40
- adapterArgs: call.rawArgs,
41
- // TODO: mirror the adapter call into the protocol fields for now. The
42
- // real protocol-level call (adapter -> target contract) only exists in
43
- // the execution call trace, which is not available from raw calldata.
44
- // Recovering the actual protocol function/args requires a call trace.
45
- protocolFunctionName: call.functionName,
46
- protocolArgs: call.rawArgs,
47
- transfers: [],
48
- legacy: mockLegacyOperation()
38
+ adapterArgs: call.rawArgs
49
39
  });
50
40
  continue;
51
41
  }
52
- if (contract !== void 0) {
53
- const op = classifyFacadeInnerCall(call, underlying);
54
- if (op) result.push(op);
55
- continue;
42
+ const op = classifyFacadeInnerCall(call, underlying);
43
+ if (op) {
44
+ result.push(op);
56
45
  }
57
- result.push({
58
- operation: "Execute",
59
- adapter: call.target,
60
- protocol: call.target,
61
- adapterType: call.contractType,
62
- version: call.version,
63
- label: call.label,
64
- adapterFunctionName: call.functionName,
65
- adapterArgs: call.rawArgs,
66
- // TODO: mirror the adapter call into the protocol fields for now. The
67
- // real protocol-level call (adapter -> target contract) only exists in
68
- // the execution call trace, which is not available from raw calldata.
69
- // Recovering the actual protocol function/args requires a call trace.
70
- protocolFunctionName: call.functionName,
71
- protocolArgs: call.rawArgs,
72
- transfers: [],
73
- legacy: mockLegacyOperation()
74
- });
75
46
  }
76
47
  return result;
77
48
  }
@@ -115,15 +86,6 @@ function classifyFacadeInnerCall(call, underlying) {
115
86
  return null;
116
87
  }
117
88
  }
118
- function mockLegacyOperation() {
119
- return {
120
- operation: "Swap",
121
- from: import_viem.zeroAddress,
122
- fromAmount: "0",
123
- to: import_viem.zeroAddress,
124
- toAmount: "0"
125
- };
126
- }
127
89
  // Annotate the CommonJS export names for ESM import in node:
128
90
  0 && (module.exports = {
129
91
  classifyInnerOperations
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var extractExpectedBalanceChanges_exports = {};
20
+ __export(extractExpectedBalanceChanges_exports, {
21
+ extractExpectedBalanceChanges: () => extractExpectedBalanceChanges
22
+ });
23
+ module.exports = __toCommonJS(extractExpectedBalanceChanges_exports);
24
+ function extractExpectedBalanceChanges(innerCalls) {
25
+ const calls = innerCalls.filter(
26
+ (call) => functionName(call) !== "onDemandPriceUpdates"
27
+ );
28
+ if (calls.length === 0) {
29
+ return void 0;
30
+ }
31
+ const first = calls[0];
32
+ const last = calls[calls.length - 1];
33
+ if (functionName(first) !== "storeExpectedBalances" || functionName(last) !== "compareBalances") {
34
+ return void 0;
35
+ }
36
+ const balanceDeltas = first.rawArgs.balanceDeltas;
37
+ if (!balanceDeltas) {
38
+ return void 0;
39
+ }
40
+ return balanceDeltas.map(({ token, amount }) => ({ token, delta: amount }));
41
+ }
42
+ function functionName(call) {
43
+ return call.functionName.split("(")[0];
44
+ }
45
+ // Annotate the CommonJS export names for ESM import in node:
46
+ 0 && (module.exports = {
47
+ extractExpectedBalanceChanges
48
+ });
@@ -17,16 +17,18 @@ var parse_exports = {};
17
17
  module.exports = __toCommonJS(parse_exports);
18
18
  __reExport(parse_exports, require("./classifyInnerOperations.js"), module.exports);
19
19
  __reExport(parse_exports, require("./errors.js"), module.exports);
20
- __reExport(parse_exports, require("./parseCreditFacadeOperation.js"), module.exports);
21
- __reExport(parse_exports, require("./parsePoolOperation.js"), module.exports);
22
- __reExport(parse_exports, require("./parseTransaction.js"), module.exports);
20
+ __reExport(parse_exports, require("./extractExpectedBalanceChanges.js"), module.exports);
21
+ __reExport(parse_exports, require("./parseFacadeOperationCalldata.js"), module.exports);
22
+ __reExport(parse_exports, require("./parseOperationCalldata.js"), module.exports);
23
+ __reExport(parse_exports, require("./parsePoolOperationCalldata.js"), module.exports);
23
24
  __reExport(parse_exports, require("./types.js"), module.exports);
24
25
  // Annotate the CommonJS export names for ESM import in node:
25
26
  0 && (module.exports = {
26
27
  ...require("./classifyInnerOperations.js"),
27
28
  ...require("./errors.js"),
28
- ...require("./parseCreditFacadeOperation.js"),
29
- ...require("./parsePoolOperation.js"),
30
- ...require("./parseTransaction.js"),
29
+ ...require("./extractExpectedBalanceChanges.js"),
30
+ ...require("./parseFacadeOperationCalldata.js"),
31
+ ...require("./parseOperationCalldata.js"),
32
+ ...require("./parsePoolOperationCalldata.js"),
31
33
  ...require("./types.js")
32
34
  });
@@ -16,14 +16,15 @@ var __copyProps = (to, from, except, desc) => {
16
16
  return to;
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var parseCreditFacadeOperation_exports = {};
20
- __export(parseCreditFacadeOperation_exports, {
21
- parseCreditFacadeOperation: () => parseCreditFacadeOperation
19
+ var parseFacadeOperationCalldata_exports = {};
20
+ __export(parseFacadeOperationCalldata_exports, {
21
+ parseFacadeOperationCalldata: () => parseFacadeOperationCalldata
22
22
  });
23
- module.exports = __toCommonJS(parseCreditFacadeOperation_exports);
23
+ module.exports = __toCommonJS(parseFacadeOperationCalldata_exports);
24
24
  var import_viem = require("viem");
25
25
  var import_classifyInnerOperations = require("./classifyInnerOperations.js");
26
- function parseCreditFacadeOperation(props) {
26
+ var import_extractExpectedBalanceChanges = require("./extractExpectedBalanceChanges.js");
27
+ function parseFacadeOperationCalldata(props) {
27
28
  const { sdk, facade, calldata } = props;
28
29
  const parsed = sdk.parseFunctionDataV2(facade.address, calldata);
29
30
  const functionName = parsed.functionName.split("(")[0];
@@ -36,30 +37,30 @@ function parseCreditFacadeOperation(props) {
36
37
  }
37
38
  const metadata = {
38
39
  creditManager: suite.creditManager.address,
39
- creditFacade: facade.address,
40
- blockNumber: Number(sdk.currentBlock),
41
- txHash: import_viem.zeroHash,
42
- timestamp: 0
40
+ creditFacade: facade.address
43
41
  };
44
42
  const innerCalls = rawArgs.calls ?? [];
45
43
  const multicall = (0, import_classifyInnerOperations.classifyInnerOperations)(innerCalls, {
46
44
  sdk,
47
45
  underlying: suite.underlying
48
46
  });
47
+ const expectedBalanceChanges = (0, import_extractExpectedBalanceChanges.extractExpectedBalanceChanges)(innerCalls);
49
48
  switch (functionName) {
50
49
  case "multicall":
51
50
  return {
52
51
  ...metadata,
53
52
  operation: "MultiCall",
54
53
  creditAccount: rawArgs.creditAccount,
55
- multicall
54
+ multicall,
55
+ expectedBalanceChanges
56
56
  };
57
57
  case "botMulticall":
58
58
  return {
59
59
  ...metadata,
60
60
  operation: "BotMulticall",
61
61
  creditAccount: rawArgs.creditAccount,
62
- multicall
62
+ multicall,
63
+ expectedBalanceChanges
63
64
  };
64
65
  case "openCreditAccount":
65
66
  return {
@@ -68,14 +69,16 @@ function parseCreditFacadeOperation(props) {
68
69
  creditAccount: import_viem.zeroAddress,
69
70
  onBehalfOf: rawArgs.onBehalfOf,
70
71
  referralCode: rawArgs.referralCode,
71
- multicall
72
+ multicall,
73
+ expectedBalanceChanges
72
74
  };
73
75
  case "closeCreditAccount":
74
76
  return {
75
77
  ...metadata,
76
78
  operation: "CloseCreditAccount",
77
79
  creditAccount: rawArgs.creditAccount,
78
- multicall
80
+ multicall,
81
+ expectedBalanceChanges
79
82
  };
80
83
  case "liquidateCreditAccount":
81
84
  return {
@@ -87,7 +90,8 @@ function parseCreditFacadeOperation(props) {
87
90
  // liquidation, so they are not recoverable from raw calldata.
88
91
  token: import_viem.zeroAddress,
89
92
  remainingFunds: 0n,
90
- multicall
93
+ multicall,
94
+ expectedBalanceChanges
91
95
  };
92
96
  case "partiallyLiquidateCreditAccount":
93
97
  return {
@@ -107,5 +111,5 @@ function parseCreditFacadeOperation(props) {
107
111
  }
108
112
  // Annotate the CommonJS export names for ESM import in node:
109
113
  0 && (module.exports = {
110
- parseCreditFacadeOperation
114
+ parseFacadeOperationCalldata
111
115
  });
@@ -16,23 +16,23 @@ var __copyProps = (to, from, except, desc) => {
16
16
  return to;
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var parseTransaction_exports = {};
20
- __export(parseTransaction_exports, {
21
- parseTransaction: () => parseTransaction
19
+ var parseOperationCalldata_exports = {};
20
+ __export(parseOperationCalldata_exports, {
21
+ parseOperationCalldata: () => parseOperationCalldata
22
22
  });
23
- module.exports = __toCommonJS(parseTransaction_exports);
23
+ module.exports = __toCommonJS(parseOperationCalldata_exports);
24
24
  var import_sdk = require("../../sdk/index.js");
25
25
  var import_errors = require("./errors.js");
26
- var import_parseCreditFacadeOperation = require("./parseCreditFacadeOperation.js");
27
- var import_parsePoolOperation = require("./parsePoolOperation.js");
28
- function parseTransaction(input) {
26
+ var import_parseFacadeOperationCalldata = require("./parseFacadeOperationCalldata.js");
27
+ var import_parsePoolOperationCalldata = require("./parsePoolOperationCalldata.js");
28
+ function parseOperationCalldata(input) {
29
29
  const { sdk, to, calldata } = input;
30
30
  const contract = sdk.getContract(to);
31
31
  if (contract instanceof import_sdk.PoolV310Contract) {
32
- return (0, import_parsePoolOperation.parsePoolOperation)({ sdk, pool: contract, calldata });
32
+ return (0, import_parsePoolOperationCalldata.parsePoolOperationCalldata)({ sdk, pool: contract, calldata });
33
33
  }
34
34
  if (contract instanceof import_sdk.CreditFacadeV310Contract) {
35
- return (0, import_parseCreditFacadeOperation.parseCreditFacadeOperation)({
35
+ return (0, import_parseFacadeOperationCalldata.parseFacadeOperationCalldata)({
36
36
  sdk,
37
37
  facade: contract,
38
38
  calldata
@@ -42,5 +42,5 @@ function parseTransaction(input) {
42
42
  }
43
43
  // Annotate the CommonJS export names for ESM import in node:
44
44
  0 && (module.exports = {
45
- parseTransaction
45
+ parseOperationCalldata
46
46
  });
@@ -16,13 +16,13 @@ var __copyProps = (to, from, except, desc) => {
16
16
  return to;
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var parsePoolOperation_exports = {};
20
- __export(parsePoolOperation_exports, {
21
- parsePoolOperation: () => parsePoolOperation
19
+ var parsePoolOperationCalldata_exports = {};
20
+ __export(parsePoolOperationCalldata_exports, {
21
+ parsePoolOperationCalldata: () => parsePoolOperationCalldata
22
22
  });
23
- module.exports = __toCommonJS(parsePoolOperation_exports);
23
+ module.exports = __toCommonJS(parsePoolOperationCalldata_exports);
24
24
  var import_errors = require("./errors.js");
25
- function parsePoolOperation(props) {
25
+ function parsePoolOperationCalldata(props) {
26
26
  const { sdk, pool, calldata } = props;
27
27
  const parsed = sdk.parseFunctionDataV2(pool.address, calldata);
28
28
  const functionName = parsed.functionName.split("(")[0];
@@ -37,9 +37,26 @@ function parsePoolOperation(props) {
37
37
  receiver: rawArgs.receiver,
38
38
  assets: rawArgs.assets,
39
39
  underlying,
40
- referralCode: functionName === "depositWithReferral" ? rawArgs.referralCode : void 0,
41
- // Calldata-only parse: transfers are recovered later by simulation.
42
- transfers: []
40
+ referralCode: functionName === "depositWithReferral" ? rawArgs.referralCode : void 0
41
+ };
42
+ case "mint":
43
+ case "mintWithReferral":
44
+ return {
45
+ operation: "Mint",
46
+ pool: pool.address,
47
+ receiver: rawArgs.receiver,
48
+ shares: rawArgs.shares,
49
+ underlying,
50
+ referralCode: functionName === "mintWithReferral" ? rawArgs.referralCode : void 0
51
+ };
52
+ case "withdraw":
53
+ return {
54
+ operation: "Withdraw",
55
+ pool: pool.address,
56
+ receiver: rawArgs.receiver,
57
+ owner: rawArgs.owner,
58
+ assets: rawArgs.assets,
59
+ underlying
43
60
  };
44
61
  case "redeem":
45
62
  return {
@@ -48,9 +65,7 @@ function parsePoolOperation(props) {
48
65
  receiver: rawArgs.receiver,
49
66
  owner: rawArgs.owner,
50
67
  shares: rawArgs.shares,
51
- underlying,
52
- // Calldata-only parse: transfers are recovered later by simulation.
53
- transfers: []
68
+ underlying
54
69
  };
55
70
  default:
56
71
  throw new import_errors.UnsupportedPoolFunctionError(pool.address, parsed.functionName);
@@ -58,5 +73,5 @@ function parsePoolOperation(props) {
58
73
  }
59
74
  // Annotate the CommonJS export names for ESM import in node:
60
75
  0 && (module.exports = {
61
- parsePoolOperation
76
+ parsePoolOperationCalldata
62
77
  });
@@ -12,5 +12,5 @@ var __copyProps = (to, from, except, desc) => {
12
12
  return to;
13
13
  };
14
14
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
15
- var inner_operations_exports = {};
16
- module.exports = __toCommonJS(inner_operations_exports);
15
+ var types_adapters_exports = {};
16
+ module.exports = __toCommonJS(types_adapters_exports);
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __copyProps = (to, from, except, desc) => {
7
+ if (from && typeof from === "object" || typeof from === "function") {
8
+ for (let key of __getOwnPropNames(from))
9
+ if (!__hasOwnProp.call(to, key) && key !== except)
10
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
+ }
12
+ return to;
13
+ };
14
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
15
+ var types_facades_exports = {};
16
+ module.exports = __toCommonJS(types_facades_exports);
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __copyProps = (to, from, except, desc) => {
7
+ if (from && typeof from === "object" || typeof from === "function") {
8
+ for (let key of __getOwnPropNames(from))
9
+ if (!__hasOwnProp.call(to, key) && key !== except)
10
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
+ }
12
+ return to;
13
+ };
14
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
15
+ var types_pools_exports = {};
16
+ module.exports = __toCommonJS(types_pools_exports);
@@ -15,16 +15,23 @@ var __copyProps = (to, from, except, desc) => {
15
15
  }
16
16
  return to;
17
17
  };
18
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
18
19
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
20
  var types_exports = {};
20
21
  __export(types_exports, {
21
22
  isPoolOperation: () => isPoolOperation
22
23
  });
23
24
  module.exports = __toCommonJS(types_exports);
25
+ __reExport(types_exports, require("./types-adapters.js"), module.exports);
26
+ __reExport(types_exports, require("./types-facades.js"), module.exports);
27
+ __reExport(types_exports, require("./types-pools.js"), module.exports);
24
28
  function isPoolOperation(tx) {
25
- return tx.operation === "Deposit" || tx.operation === "Redeem";
29
+ return tx.operation === "Deposit" || tx.operation === "Mint" || tx.operation === "Withdraw" || tx.operation === "Redeem";
26
30
  }
27
31
  // Annotate the CommonJS export names for ESM import in node:
28
32
  0 && (module.exports = {
29
- isPoolOperation
33
+ isPoolOperation,
34
+ ...require("./types-adapters.js"),
35
+ ...require("./types-facades.js"),
36
+ ...require("./types-pools.js")
30
37
  });
@@ -27,6 +27,12 @@ var import_BalancePrerequisite = require("./BalancePrerequisite.js");
27
27
  function buildPrerequisites(tx, ctx) {
28
28
  const { wallet } = ctx;
29
29
  switch (tx.operation) {
30
+ // Deposit and Mint both pull the underlying from the caller into the pool;
31
+ // they only differ in which side (assets vs shares) the caller specifies.
32
+ // The exact underlying amount for Mint is resolved by the pool, so we can
33
+ // only require an allowance/balance against the known specified amount —
34
+ // here we approximate Mint by its shares amount (a lower bound on assets is
35
+ // not knowable from calldata alone).
30
36
  case "Deposit":
31
37
  return [
32
38
  new import_AllowancePrerequisite.AllowancePrerequisite({
@@ -43,6 +49,24 @@ function buildPrerequisites(tx, ctx) {
43
49
  title: "Sufficient token balance"
44
50
  })
45
51
  ];
52
+ case "Mint":
53
+ return [
54
+ new import_AllowancePrerequisite.AllowancePrerequisite({
55
+ token: tx.underlying,
56
+ owner: wallet,
57
+ spender: tx.pool,
58
+ required: tx.shares,
59
+ title: "Token approved to pool"
60
+ }),
61
+ new import_BalancePrerequisite.BalancePrerequisite({
62
+ token: tx.underlying,
63
+ owner: wallet,
64
+ required: tx.shares,
65
+ title: "Sufficient token balance"
66
+ })
67
+ ];
68
+ // Redeem and Withdraw both burn LP shares from `owner`; they only differ in
69
+ // which side (shares vs assets) the caller specifies.
46
70
  case "Redeem": {
47
71
  const prereqs = [
48
72
  new import_BalancePrerequisite.BalancePrerequisite({
@@ -65,6 +89,28 @@ function buildPrerequisites(tx, ctx) {
65
89
  }
66
90
  return prereqs;
67
91
  }
92
+ case "Withdraw": {
93
+ const prereqs = [
94
+ new import_BalancePrerequisite.BalancePrerequisite({
95
+ token: tx.pool,
96
+ owner: tx.owner,
97
+ required: tx.assets,
98
+ title: "Sufficient LP token balance"
99
+ })
100
+ ];
101
+ if (!(0, import_viem.isAddressEqual)(tx.owner, wallet)) {
102
+ prereqs.push(
103
+ new import_AllowancePrerequisite.AllowancePrerequisite({
104
+ token: tx.pool,
105
+ owner: tx.owner,
106
+ spender: wallet,
107
+ required: tx.assets,
108
+ title: "LP token approved to caller"
109
+ })
110
+ );
111
+ }
112
+ return prereqs;
113
+ }
68
114
  case "MultiCall":
69
115
  case "BotMulticall":
70
116
  case "OpenCreditAccount":
@@ -19,6 +19,7 @@ __reExport(prerequisites_exports, require("./AllowancePrerequisite.js"), module.
19
19
  __reExport(prerequisites_exports, require("./BalancePrerequisite.js"), module.exports);
20
20
  __reExport(prerequisites_exports, require("./buildPrerequisites.js"), module.exports);
21
21
  __reExport(prerequisites_exports, require("./Prerequisite.js"), module.exports);
22
+ __reExport(prerequisites_exports, require("./prepareAction.js"), module.exports);
22
23
  __reExport(prerequisites_exports, require("./runPrerequisites.js"), module.exports);
23
24
  __reExport(prerequisites_exports, require("./types.js"), module.exports);
24
25
  // Annotate the CommonJS export names for ESM import in node:
@@ -27,6 +28,7 @@ __reExport(prerequisites_exports, require("./types.js"), module.exports);
27
28
  ...require("./BalancePrerequisite.js"),
28
29
  ...require("./buildPrerequisites.js"),
29
30
  ...require("./Prerequisite.js"),
31
+ ...require("./prepareAction.js"),
30
32
  ...require("./runPrerequisites.js"),
31
33
  ...require("./types.js")
32
34
  });
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var prepareAction_exports = {};
20
+ __export(prepareAction_exports, {
21
+ isActionablePrerequisite: () => isActionablePrerequisite,
22
+ preparePrerequisiteAction: () => preparePrerequisiteAction
23
+ });
24
+ module.exports = __toCommonJS(prepareAction_exports);
25
+ var import_viem = require("viem");
26
+ function preparePrerequisiteAction(result) {
27
+ if (result.kind === "allowance" && result.satisfied === false) {
28
+ const { token, spender, required } = result.detail;
29
+ return {
30
+ kind: "allowance",
31
+ to: token,
32
+ data: (0, import_viem.encodeFunctionData)({
33
+ abi: import_viem.erc20Abi,
34
+ functionName: "approve",
35
+ args: [spender, required]
36
+ })
37
+ };
38
+ }
39
+ return null;
40
+ }
41
+ function isActionablePrerequisite(result) {
42
+ return preparePrerequisiteAction(result) !== null;
43
+ }
44
+ // Annotate the CommonJS export names for ESM import in node:
45
+ 0 && (module.exports = {
46
+ isActionablePrerequisite,
47
+ preparePrerequisiteAction
48
+ });
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var constants_exports = {};
20
+ __export(constants_exports, {
21
+ ETH_SIMULATE_V1_NETWORKS: () => ETH_SIMULATE_V1_NETWORKS
22
+ });
23
+ module.exports = __toCommonJS(constants_exports);
24
+ const ETH_SIMULATE_V1_NETWORKS = /* @__PURE__ */ new Set(["Mainnet", "Plasma", "Somnia"]);
25
+ // Annotate the CommonJS export names for ESM import in node:
26
+ 0 && (module.exports = {
27
+ ETH_SIMULATE_V1_NETWORKS
28
+ });
@@ -16,13 +16,44 @@ var __copyProps = (to, from, except, desc) => {
16
16
  return to;
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var decodeSimulationError_exports = {};
20
- __export(decodeSimulationError_exports, {
19
+ var errors_exports = {};
20
+ __export(errors_exports, {
21
+ PreviewSimulationError: () => PreviewSimulationError,
22
+ asPreviewSimulationError: () => asPreviewSimulationError,
23
+ combinePreviewSimulationErrors: () => combinePreviewSimulationErrors,
21
24
  decodeSimulationError: () => decodeSimulationError
22
25
  });
23
- module.exports = __toCommonJS(decodeSimulationError_exports);
26
+ module.exports = __toCommonJS(errors_exports);
24
27
  var import_viem = require("viem");
25
28
  var import_errors = require("../../abi/errors.js");
29
+ class PreviewSimulationError extends import_viem.BaseError {
30
+ name = "PreviewSimulationError";
31
+ /** Per-flow decoded failures behind this error. */
32
+ failures;
33
+ constructor(failures) {
34
+ const shortMessage = failures.length <= 1 ? failures[0]?.detail.reason ?? "simulation failed" : "all simulation flows failed";
35
+ const cause = failures.find((f) => f.detail.cause instanceof Error)?.detail.cause;
36
+ super(shortMessage, {
37
+ metaMessages: failures.map((f) => `[${f.source}] ${f.detail.reason}`),
38
+ cause
39
+ });
40
+ this.failures = failures;
41
+ }
42
+ }
43
+ function asPreviewSimulationError(reason, source) {
44
+ if (reason instanceof PreviewSimulationError) {
45
+ return reason;
46
+ }
47
+ const error = reason instanceof Error ? reason : new Error(String(reason));
48
+ return new PreviewSimulationError([
49
+ { source, detail: decodeSimulationError({ error }) }
50
+ ]);
51
+ }
52
+ function combinePreviewSimulationErrors(...errors) {
53
+ return new PreviewSimulationError(
54
+ errors.filter((e) => e).flatMap((e) => e?.failures ?? [])
55
+ );
56
+ }
26
57
  function decodeSimulationError(revert) {
27
58
  const { error, data } = revert;
28
59
  if (data && data !== "0x") {
@@ -60,5 +91,8 @@ function formatDecodedError(errorName, args) {
60
91
  }
61
92
  // Annotate the CommonJS export names for ESM import in node:
62
93
  0 && (module.exports = {
94
+ PreviewSimulationError,
95
+ asPreviewSimulationError,
96
+ combinePreviewSimulationErrors,
63
97
  decodeSimulationError
64
98
  });