@gearbox-protocol/sdk 14.11.2 → 14.12.0-next.1
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.
- package/dist/cjs/common-utils/utils/index.js +2 -0
- package/dist/cjs/{history/trace-utils.js → common-utils/utils/trace.js} +62 -5
- package/dist/cjs/dev/abi.js +162 -6
- package/dist/cjs/dev/index.js +3 -1
- package/dist/cjs/dev/verifyTestnet.js +52 -0
- package/dist/cjs/history/assembleOperations.js +6 -6
- package/dist/cjs/history/classifyMulticallOperations.js +31 -25
- package/dist/cjs/history/index.js +0 -2
- package/dist/cjs/history/parseCreditAccountTransaction.js +5 -6
- package/dist/cjs/history/toLegacyOperation.js +5 -1
- package/dist/cjs/plugins/adapters/contracts/AbstractAdapter.js +25 -37
- package/dist/cjs/plugins/adapters/contracts/AccountMigratorAdapterContract.js +9 -0
- package/dist/cjs/{history/internal-types.js → plugins/adapters/transfers.js} +2 -2
- package/dist/cjs/preview/index.js +28 -0
- package/dist/cjs/preview/package.json +1 -0
- package/dist/cjs/preview/parse/classifyInnerOperations.js +92 -0
- package/dist/cjs/preview/parse/errors.js +47 -0
- package/dist/cjs/preview/parse/extractExpectedBalanceChanges.js +48 -0
- package/dist/cjs/preview/parse/index.js +34 -0
- package/dist/cjs/preview/parse/parseFacadeOperationCalldata.js +115 -0
- package/dist/cjs/preview/parse/parseOperationCalldata.js +46 -0
- package/dist/cjs/preview/parse/parsePoolOperationCalldata.js +77 -0
- package/dist/cjs/{history/inner-operations.js → preview/parse/types-adapters.js} +2 -2
- package/dist/cjs/preview/parse/types-facades.js +16 -0
- package/dist/cjs/preview/parse/types-pools.js +16 -0
- package/dist/cjs/preview/parse/types.js +37 -0
- package/dist/cjs/preview/prerequisites/AllowancePrerequisite.js +78 -0
- package/dist/cjs/preview/prerequisites/BalancePrerequisite.js +77 -0
- package/dist/cjs/preview/prerequisites/Prerequisite.js +85 -0
- package/dist/cjs/preview/prerequisites/buildPrerequisites.js +187 -0
- package/dist/cjs/preview/prerequisites/index.js +34 -0
- package/dist/cjs/preview/prerequisites/prepareAction.js +48 -0
- package/dist/cjs/preview/prerequisites/runPrerequisites.js +71 -0
- package/dist/cjs/preview/prerequisites/types.js +16 -0
- package/dist/cjs/preview/simulate/constants.js +28 -0
- package/dist/cjs/preview/simulate/errors.js +98 -0
- package/dist/cjs/preview/simulate/extractERC20Transfers.js +47 -0
- package/dist/cjs/preview/simulate/holders.js +45 -0
- package/dist/cjs/preview/simulate/index.js +40 -0
- package/dist/cjs/preview/simulate/simulateFacadeOperation.js +30 -0
- package/dist/cjs/preview/simulate/simulateOperation.js +37 -0
- package/dist/cjs/preview/simulate/simulatePoolOpMulticall.js +155 -0
- package/dist/cjs/preview/simulate/simulatePoolOpV1.js +106 -0
- package/dist/cjs/preview/simulate/simulatePoolOperation.js +62 -0
- package/dist/cjs/preview/simulate/types.js +16 -0
- package/dist/cjs/{history → preview/trace}/errors.js +0 -26
- package/dist/cjs/preview/trace/extractAdapterCallTraces.js +58 -0
- package/dist/cjs/{history → preview/trace}/extractTransfers.js +9 -12
- package/dist/cjs/{history → preview/trace}/findFacadeCalls.js +3 -3
- package/dist/cjs/preview/trace/index.js +30 -0
- package/dist/cjs/preview/trace/types.js +16 -0
- package/dist/cjs/sdk/accounts/CreditAccountsServiceV310.js +154 -0
- package/dist/esm/common-utils/utils/index.js +1 -0
- package/dist/esm/common-utils/utils/trace.js +93 -0
- package/dist/esm/dev/abi.js +162 -6
- package/dist/esm/dev/index.js +1 -0
- package/dist/esm/dev/verifyTestnet.js +27 -0
- package/dist/esm/history/assembleOperations.js +8 -6
- package/dist/esm/history/classifyMulticallOperations.js +29 -23
- package/dist/esm/history/index.js +0 -1
- package/dist/esm/history/parseCreditAccountTransaction.js +3 -4
- package/dist/esm/history/toLegacyOperation.js +5 -1
- package/dist/esm/plugins/adapters/contracts/AbstractAdapter.js +28 -38
- package/dist/esm/plugins/adapters/contracts/AccountMigratorAdapterContract.js +9 -0
- package/dist/esm/preview/index.js +4 -0
- package/dist/esm/preview/package.json +1 -0
- package/dist/esm/preview/parse/classifyInnerOperations.js +68 -0
- package/dist/esm/preview/parse/errors.js +22 -0
- package/dist/esm/preview/parse/extractExpectedBalanceChanges.js +24 -0
- package/dist/esm/preview/parse/index.js +7 -0
- package/dist/esm/preview/parse/parseFacadeOperationCalldata.js +91 -0
- package/dist/esm/preview/parse/parseOperationCalldata.js +25 -0
- package/dist/esm/preview/parse/parsePoolOperationCalldata.js +53 -0
- package/dist/esm/preview/parse/types-facades.js +0 -0
- package/dist/esm/preview/parse/types-pools.js +0 -0
- package/dist/esm/preview/parse/types.js +9 -0
- package/dist/esm/preview/prerequisites/AllowancePrerequisite.js +57 -0
- package/dist/esm/preview/prerequisites/BalancePrerequisite.js +56 -0
- package/dist/esm/preview/prerequisites/Prerequisite.js +63 -0
- package/dist/esm/preview/prerequisites/buildPrerequisites.js +163 -0
- package/dist/esm/preview/prerequisites/index.js +7 -0
- package/dist/esm/preview/prerequisites/prepareAction.js +23 -0
- package/dist/esm/preview/prerequisites/runPrerequisites.js +47 -0
- package/dist/esm/preview/prerequisites/types.js +0 -0
- package/dist/esm/preview/simulate/constants.js +4 -0
- package/dist/esm/preview/simulate/errors.js +75 -0
- package/dist/esm/preview/simulate/extractERC20Transfers.js +23 -0
- package/dist/esm/preview/simulate/holders.js +21 -0
- package/dist/esm/preview/simulate/index.js +12 -0
- package/dist/esm/preview/simulate/simulateFacadeOperation.js +6 -0
- package/dist/esm/preview/simulate/simulateOperation.js +13 -0
- package/dist/esm/preview/simulate/simulatePoolOpMulticall.js +130 -0
- package/dist/esm/preview/simulate/simulatePoolOpV1.js +82 -0
- package/dist/esm/preview/simulate/simulatePoolOperation.js +41 -0
- package/dist/esm/preview/simulate/types.js +0 -0
- package/dist/esm/{history → preview/trace}/errors.js +0 -24
- package/dist/esm/preview/trace/extractAdapterCallTraces.js +40 -0
- package/dist/esm/{history → preview/trace}/extractTransfers.js +9 -12
- package/dist/esm/{history → preview/trace}/findFacadeCalls.js +4 -2
- package/dist/esm/preview/trace/index.js +5 -0
- package/dist/esm/preview/trace/types.js +0 -0
- package/dist/esm/sdk/accounts/CreditAccountsServiceV310.js +154 -0
- package/dist/types/common-utils/utils/index.d.ts +1 -0
- package/dist/types/common-utils/utils/trace.d.ts +73 -0
- package/dist/types/dev/abi.d.ts +98 -16
- package/dist/types/dev/index.d.ts +1 -0
- package/dist/types/dev/verifyTestnet.d.ts +24 -0
- package/dist/types/history/assembleOperations.d.ts +11 -6
- package/dist/types/history/classifyMulticallOperations.d.ts +21 -9
- package/dist/types/history/index.d.ts +0 -1
- package/dist/types/history/mapOperations.d.ts +7 -9
- package/dist/types/history/types.d.ts +22 -71
- package/dist/types/plugins/adapters/contracts/AbstractAdapter.d.ts +16 -17
- package/dist/types/plugins/adapters/contracts/AccountMigratorAdapterContract.d.ts +10 -1
- package/dist/types/plugins/adapters/contracts/ConvexV1BaseRewardPoolAdapterContract.d.ts +1 -1
- package/dist/types/plugins/adapters/contracts/ConvexV1BoosterAdapterContract.d.ts +1 -1
- package/dist/types/plugins/adapters/contracts/Curve2AssetsAdapterContract.d.ts +1 -1
- package/dist/types/plugins/adapters/contracts/Curve3AssetsAdapterContract.d.ts +1 -1
- package/dist/types/plugins/adapters/contracts/Curve4AssetsAdapterContract.d.ts +1 -1
- package/dist/types/plugins/adapters/contracts/CurveV1AdapterDeposit.d.ts +1 -1
- package/dist/types/plugins/adapters/contracts/CurveV1AdapterStETHContract.d.ts +1 -1
- package/dist/types/plugins/adapters/contracts/CurveV1StableNGAdapterContract.d.ts +1 -1
- package/dist/types/plugins/adapters/contracts/DaiUsdsAdapterContract.d.ts +1 -1
- package/dist/types/plugins/adapters/contracts/ERC4626AdapterContract.d.ts +1 -1
- package/dist/types/plugins/adapters/contracts/ERC4626ReferralAdapterContract.d.ts +1 -1
- package/dist/types/plugins/adapters/contracts/LidoV1AdapterContract.d.ts +1 -1
- package/dist/types/plugins/adapters/contracts/MellowDVVAdapterContract.d.ts +1 -1
- package/dist/types/plugins/adapters/contracts/MellowERC4626VaultAdapterContract.d.ts +1 -1
- package/dist/types/plugins/adapters/contracts/UniswapV2AdapterContract.d.ts +1 -1
- package/dist/types/plugins/adapters/contracts/UniswapV4AdapterContract.d.ts +1 -1
- package/dist/types/plugins/adapters/contracts/WstETHV1AdapterContract.d.ts +1 -1
- package/dist/types/plugins/adapters/transferHelpers.d.ts +1 -1
- package/dist/types/plugins/adapters/transfers.d.ts +17 -0
- package/dist/types/plugins/adapters/types.d.ts +8 -46
- package/dist/types/preview/index.d.ts +4 -0
- package/dist/types/preview/parse/classifyInnerOperations.d.ts +21 -0
- package/dist/types/preview/parse/errors.d.ts +17 -0
- package/dist/types/preview/parse/extractExpectedBalanceChanges.d.ts +22 -0
- package/dist/types/preview/parse/index.d.ts +7 -0
- package/dist/types/preview/parse/parseFacadeOperationCalldata.d.ts +19 -0
- package/dist/types/preview/parse/parseOperationCalldata.d.ts +23 -0
- package/dist/types/preview/parse/parsePoolOperationCalldata.d.ts +17 -0
- package/dist/types/preview/parse/types-adapters.d.ts +69 -0
- package/dist/types/preview/parse/types-facades.d.ts +158 -0
- package/dist/types/preview/parse/types-pools.d.ts +55 -0
- package/dist/types/preview/parse/types.d.ts +44 -0
- package/dist/types/preview/prerequisites/AllowancePrerequisite.d.ts +24 -0
- package/dist/types/preview/prerequisites/BalancePrerequisite.d.ts +23 -0
- package/dist/types/preview/prerequisites/Prerequisite.d.ts +60 -0
- package/dist/types/preview/prerequisites/buildPrerequisites.d.ts +16 -0
- package/dist/types/preview/prerequisites/index.d.ts +7 -0
- package/dist/types/preview/prerequisites/prepareAction.d.ts +52 -0
- package/dist/types/preview/prerequisites/runPrerequisites.d.ts +12 -0
- package/dist/types/preview/prerequisites/types.d.ts +78 -0
- package/dist/types/preview/simulate/constants.d.ts +6 -0
- package/dist/types/preview/simulate/errors.d.ts +51 -0
- package/dist/types/preview/simulate/extractERC20Transfers.d.ts +11 -0
- package/dist/types/preview/simulate/holders.d.ts +7 -0
- package/dist/types/preview/simulate/index.d.ts +9 -0
- package/dist/types/preview/simulate/simulateFacadeOperation.d.ts +25 -0
- package/dist/types/preview/simulate/simulateOperation.d.ts +20 -0
- package/dist/types/preview/simulate/simulatePoolOpMulticall.d.ts +28 -0
- package/dist/types/preview/simulate/simulatePoolOpV1.d.ts +14 -0
- package/dist/types/preview/simulate/simulatePoolOperation.d.ts +8 -0
- package/dist/types/preview/simulate/types.d.ts +79 -0
- package/dist/types/{history → preview/trace}/errors.d.ts +0 -10
- package/dist/types/preview/trace/extractAdapterCallTraces.d.ts +23 -0
- package/dist/types/{history → preview/trace}/extractTransfers.d.ts +14 -5
- package/dist/types/{history → preview/trace}/findFacadeCalls.d.ts +3 -2
- package/dist/types/preview/trace/index.d.ts +5 -0
- package/dist/types/preview/trace/types.d.ts +21 -0
- package/dist/types/sdk/accounts/CreditAccountsServiceV310.d.ts +21 -1
- package/dist/types/sdk/accounts/types.d.ts +82 -0
- package/package.json +6 -1
- package/dist/cjs/history/extractProtocolCalls.js +0 -53
- package/dist/esm/history/extractProtocolCalls.js +0 -32
- package/dist/esm/history/trace-utils.js +0 -36
- package/dist/types/history/extractProtocolCalls.d.ts +0 -8
- package/dist/types/history/inner-operations.d.ts +0 -57
- package/dist/types/history/internal-types.d.ts +0 -47
- package/dist/types/history/trace-utils.d.ts +0 -12
- /package/dist/esm/{history/inner-operations.js → plugins/adapters/transfers.js} +0 -0
- /package/dist/esm/{history/internal-types.js → preview/parse/types-adapters.js} +0 -0
|
@@ -22,9 +22,9 @@ __export(extractTransfers_exports, {
|
|
|
22
22
|
});
|
|
23
23
|
module.exports = __toCommonJS(extractTransfers_exports);
|
|
24
24
|
var import_viem = require("viem");
|
|
25
|
-
var import_generated = require("
|
|
26
|
-
var import_iERC20 = require("
|
|
27
|
-
var import_sdk = require("
|
|
25
|
+
var import_generated = require("../../abi/310/generated.js");
|
|
26
|
+
var import_iERC20 = require("../../abi/iERC20.js");
|
|
27
|
+
var import_sdk = require("../../sdk/index.js");
|
|
28
28
|
var import_errors = require("./errors.js");
|
|
29
29
|
function extractTransfers(logs, creditAccount, pool, creditFacade) {
|
|
30
30
|
const ranges = buildOperationRanges(logs, creditFacade, creditAccount);
|
|
@@ -33,7 +33,7 @@ function extractTransfers(logs, creditAccount, pool, creditFacade) {
|
|
|
33
33
|
return !!e && (e.eventName === "LiquidateCreditAccount" || e.eventName === "PartiallyLiquidateCreditAccount") && (0, import_viem.isAddressEqual)(e.args.creditAccount, creditAccount);
|
|
34
34
|
});
|
|
35
35
|
let currentEntries = [];
|
|
36
|
-
const
|
|
36
|
+
const executeTransfers = [];
|
|
37
37
|
const directTransfers = [];
|
|
38
38
|
const phantomTokens = new import_sdk.AddressMap();
|
|
39
39
|
const withdrawCollateralEvents = [];
|
|
@@ -42,20 +42,17 @@ function extractTransfers(logs, creditAccount, pool, creditFacade) {
|
|
|
42
42
|
const facadeEvent = tryDecodeFacadeEvent(log, creditFacade);
|
|
43
43
|
if (facadeEvent) {
|
|
44
44
|
if (isExecute(facadeEvent, creditAccount)) {
|
|
45
|
-
|
|
46
|
-
transfers: currentEntries,
|
|
47
|
-
targetContract: facadeEvent.args.targetContract
|
|
48
|
-
});
|
|
45
|
+
executeTransfers.push(currentEntries);
|
|
49
46
|
} else if (isLiquidation(facadeEvent, creditAccount)) {
|
|
50
47
|
liquidationRemainingFunds = facadeEvent.args.remainingFunds;
|
|
51
48
|
} else if (isWithdrawPhantomToken(facadeEvent, creditAccount)) {
|
|
52
|
-
const
|
|
53
|
-
if (!
|
|
49
|
+
const phantomTransfers = executeTransfers.pop();
|
|
50
|
+
if (!phantomTransfers) {
|
|
54
51
|
throw new Error(
|
|
55
52
|
`WithdrawPhantomToken without preceding Execute at logIndex ${facadeEvent.logIndex}`
|
|
56
53
|
);
|
|
57
54
|
}
|
|
58
|
-
const rawDeposit =
|
|
55
|
+
const rawDeposit = phantomTransfers.find(
|
|
59
56
|
(t) => (0, import_viem.isAddressEqual)(t.to, creditAccount)
|
|
60
57
|
);
|
|
61
58
|
if (!rawDeposit) {
|
|
@@ -99,7 +96,7 @@ function extractTransfers(logs, creditAccount, pool, creditFacade) {
|
|
|
99
96
|
}
|
|
100
97
|
}
|
|
101
98
|
return {
|
|
102
|
-
|
|
99
|
+
executeTransfers,
|
|
103
100
|
directTransfers,
|
|
104
101
|
liquidationRemainingFunds,
|
|
105
102
|
phantomTokens,
|
|
@@ -22,9 +22,9 @@ __export(findFacadeCalls_exports, {
|
|
|
22
22
|
});
|
|
23
23
|
module.exports = __toCommonJS(findFacadeCalls_exports);
|
|
24
24
|
var import_viem = require("viem");
|
|
25
|
-
var import_generated = require("
|
|
25
|
+
var import_generated = require("../../abi/310/generated.js");
|
|
26
|
+
var import_trace = require("../../common-utils/utils/trace.js");
|
|
26
27
|
var import_errors = require("./errors.js");
|
|
27
|
-
var import_trace_utils = require("./trace-utils.js");
|
|
28
28
|
const FACADE_CALL_TYPES = {
|
|
29
29
|
multicall: "MultiCall",
|
|
30
30
|
botMulticall: "BotMulticall",
|
|
@@ -48,7 +48,7 @@ function extractCreditAccount(operation, rawArgs, traceOutput) {
|
|
|
48
48
|
return ca;
|
|
49
49
|
}
|
|
50
50
|
function findFacadeCalls(trace, creditFacade, creditAccount, register, strict) {
|
|
51
|
-
const facadeTraces = (0,
|
|
51
|
+
const facadeTraces = (0, import_trace.collectTraces)(trace, creditFacade);
|
|
52
52
|
const results = [];
|
|
53
53
|
for (const trace2 of facadeTraces) {
|
|
54
54
|
const parsed = register.parseFunctionDataV2(
|
|
@@ -0,0 +1,30 @@
|
|
|
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 __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
15
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
16
|
+
var trace_exports = {};
|
|
17
|
+
module.exports = __toCommonJS(trace_exports);
|
|
18
|
+
__reExport(trace_exports, require("./errors.js"), module.exports);
|
|
19
|
+
__reExport(trace_exports, require("./extractAdapterCallTraces.js"), module.exports);
|
|
20
|
+
__reExport(trace_exports, require("./extractTransfers.js"), module.exports);
|
|
21
|
+
__reExport(trace_exports, require("./findFacadeCalls.js"), module.exports);
|
|
22
|
+
__reExport(trace_exports, require("./types.js"), module.exports);
|
|
23
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
24
|
+
0 && (module.exports = {
|
|
25
|
+
...require("./errors.js"),
|
|
26
|
+
...require("./extractAdapterCallTraces.js"),
|
|
27
|
+
...require("./extractTransfers.js"),
|
|
28
|
+
...require("./findFacadeCalls.js"),
|
|
29
|
+
...require("./types.js")
|
|
30
|
+
});
|
|
@@ -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_exports = {};
|
|
16
|
+
module.exports = __toCommonJS(types_exports);
|
|
@@ -1552,6 +1552,160 @@ class CreditAccountsServiceV310 extends import_base.SDKConstruct {
|
|
|
1552
1552
|
callsWithPrices
|
|
1553
1553
|
);
|
|
1554
1554
|
}
|
|
1555
|
+
/**
|
|
1556
|
+
* {@inheritDoc ICreditAccountsService.prependPriceUpdates}
|
|
1557
|
+
*/
|
|
1558
|
+
async prependPriceUpdates(creditManager, calls, creditAccount, options) {
|
|
1559
|
+
return this.#prependPriceUpdates(
|
|
1560
|
+
creditManager,
|
|
1561
|
+
calls,
|
|
1562
|
+
creditAccount,
|
|
1563
|
+
options
|
|
1564
|
+
);
|
|
1565
|
+
}
|
|
1566
|
+
/**
|
|
1567
|
+
* {@inheritDoc ICreditAccountsService.assembleCaUpdateCalls}
|
|
1568
|
+
*/
|
|
1569
|
+
assembleCaUpdateCalls({
|
|
1570
|
+
operations,
|
|
1571
|
+
routerCallGroups,
|
|
1572
|
+
creditFacade,
|
|
1573
|
+
withdrawTo,
|
|
1574
|
+
creditAccount,
|
|
1575
|
+
underlyingToken
|
|
1576
|
+
}) {
|
|
1577
|
+
const calls = [];
|
|
1578
|
+
let swapGroupIndex = 0;
|
|
1579
|
+
let routerGroupsConsumed = 0;
|
|
1580
|
+
for (const op of operations) {
|
|
1581
|
+
switch (op.type) {
|
|
1582
|
+
case "increaseDebt":
|
|
1583
|
+
calls.push(this.#prepareIncreaseDebt(creditFacade, op.amount));
|
|
1584
|
+
break;
|
|
1585
|
+
case "decreaseDebt":
|
|
1586
|
+
calls.push(this.#prepareChangeDebt(creditFacade, op.amount, true));
|
|
1587
|
+
break;
|
|
1588
|
+
case "addCollateral":
|
|
1589
|
+
calls.push(
|
|
1590
|
+
...this.#prepareAddCollateral(
|
|
1591
|
+
creditFacade,
|
|
1592
|
+
[{ token: op.token, balance: op.amount }],
|
|
1593
|
+
{}
|
|
1594
|
+
)
|
|
1595
|
+
);
|
|
1596
|
+
break;
|
|
1597
|
+
case "withdrawCollateral":
|
|
1598
|
+
calls.push(
|
|
1599
|
+
this.#prepareWithdrawToken(
|
|
1600
|
+
creditFacade,
|
|
1601
|
+
op.token,
|
|
1602
|
+
op.amount,
|
|
1603
|
+
withdrawTo
|
|
1604
|
+
)
|
|
1605
|
+
);
|
|
1606
|
+
break;
|
|
1607
|
+
case "swap": {
|
|
1608
|
+
const routerCalls = routerCallGroups[swapGroupIndex];
|
|
1609
|
+
if (!routerCalls) {
|
|
1610
|
+
throw new Error(
|
|
1611
|
+
`assembleCaUpdateCalls: missing router calls for swap leg ${swapGroupIndex}`
|
|
1612
|
+
);
|
|
1613
|
+
}
|
|
1614
|
+
calls.push(...routerCalls);
|
|
1615
|
+
swapGroupIndex += 1;
|
|
1616
|
+
routerGroupsConsumed += 1;
|
|
1617
|
+
break;
|
|
1618
|
+
}
|
|
1619
|
+
case "changeQuota": {
|
|
1620
|
+
const quotaAssets = [...op.quotaIncrease, ...op.quotaDecrease];
|
|
1621
|
+
if (quotaAssets.length === 0) {
|
|
1622
|
+
break;
|
|
1623
|
+
}
|
|
1624
|
+
calls.push(
|
|
1625
|
+
...this.#prepareUpdateQuotas(creditFacade, {
|
|
1626
|
+
averageQuota: quotaAssets,
|
|
1627
|
+
minQuota: quotaAssets
|
|
1628
|
+
})
|
|
1629
|
+
);
|
|
1630
|
+
break;
|
|
1631
|
+
}
|
|
1632
|
+
case "closeCreditAccount": {
|
|
1633
|
+
for (const group of routerCallGroups) {
|
|
1634
|
+
calls.push(...group);
|
|
1635
|
+
routerGroupsConsumed += 1;
|
|
1636
|
+
}
|
|
1637
|
+
calls.push(
|
|
1638
|
+
...this.#prepareDisableQuotas({
|
|
1639
|
+
creditFacade,
|
|
1640
|
+
tokens: Object.entries(creditAccount.initialQuotas).map(
|
|
1641
|
+
([token, { quota }]) => ({
|
|
1642
|
+
token,
|
|
1643
|
+
quota
|
|
1644
|
+
})
|
|
1645
|
+
)
|
|
1646
|
+
})
|
|
1647
|
+
);
|
|
1648
|
+
if (creditAccount.debt > 0n) {
|
|
1649
|
+
calls.push(
|
|
1650
|
+
...this.#prepareDecreaseDebt({
|
|
1651
|
+
creditFacade,
|
|
1652
|
+
debt: creditAccount.debt
|
|
1653
|
+
})
|
|
1654
|
+
);
|
|
1655
|
+
}
|
|
1656
|
+
const hasAssets = creditAccount.assets.some(
|
|
1657
|
+
(asset) => asset.balance > 0n
|
|
1658
|
+
);
|
|
1659
|
+
if (hasAssets) {
|
|
1660
|
+
calls.push(
|
|
1661
|
+
this.#prepareWithdrawToken(
|
|
1662
|
+
creditFacade,
|
|
1663
|
+
underlyingToken,
|
|
1664
|
+
import_constants.MAX_UINT256,
|
|
1665
|
+
withdrawTo
|
|
1666
|
+
)
|
|
1667
|
+
);
|
|
1668
|
+
}
|
|
1669
|
+
break;
|
|
1670
|
+
}
|
|
1671
|
+
default: {
|
|
1672
|
+
const _exhaustive = op;
|
|
1673
|
+
throw new Error(
|
|
1674
|
+
`assembleCaUpdateCalls: unsupported operation ${_exhaustive}`
|
|
1675
|
+
);
|
|
1676
|
+
}
|
|
1677
|
+
}
|
|
1678
|
+
}
|
|
1679
|
+
if (routerGroupsConsumed !== routerCallGroups.length) {
|
|
1680
|
+
throw new Error(
|
|
1681
|
+
`assembleCaUpdateCalls: router call group mismatch (consumed ${routerGroupsConsumed}, got ${routerCallGroups.length})`
|
|
1682
|
+
);
|
|
1683
|
+
}
|
|
1684
|
+
return calls;
|
|
1685
|
+
}
|
|
1686
|
+
/**
|
|
1687
|
+
* {@inheritDoc ICreditAccountsService.executeCaUpdate}
|
|
1688
|
+
*/
|
|
1689
|
+
async executeCaUpdate(creditAccount, calls, options) {
|
|
1690
|
+
const cm = this.sdk.marketRegister.findCreditManager(
|
|
1691
|
+
creditAccount.creditManager
|
|
1692
|
+
);
|
|
1693
|
+
const callsWithPrices = await this.#prependPriceUpdates(
|
|
1694
|
+
creditAccount.creditManager,
|
|
1695
|
+
calls,
|
|
1696
|
+
creditAccount,
|
|
1697
|
+
{ ignoreReservePrices: options?.ignoreReservePrices }
|
|
1698
|
+
);
|
|
1699
|
+
const tx = await this.#multicallTx(
|
|
1700
|
+
cm,
|
|
1701
|
+
creditAccount.creditAccount,
|
|
1702
|
+
callsWithPrices
|
|
1703
|
+
);
|
|
1704
|
+
if (options?.ethAmount && options.ethAmount > 0n) {
|
|
1705
|
+
tx.value = options.ethAmount.toString(10);
|
|
1706
|
+
}
|
|
1707
|
+
return { tx, calls: callsWithPrices };
|
|
1708
|
+
}
|
|
1555
1709
|
#prepareDisableQuotas(ca) {
|
|
1556
1710
|
const calls = [];
|
|
1557
1711
|
for (const { token, quota } of ca.tokens) {
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import {
|
|
2
|
+
decodeAbiParameters,
|
|
3
|
+
getAddress,
|
|
4
|
+
isAddressEqual
|
|
5
|
+
} from "viem";
|
|
6
|
+
const EXECUTE_BYTES_SELECTOR = "0x09c5eabe";
|
|
7
|
+
function findExecuteBytes(node) {
|
|
8
|
+
const queue = [node];
|
|
9
|
+
while (queue.length > 0) {
|
|
10
|
+
const current = queue.shift();
|
|
11
|
+
if (current.error) {
|
|
12
|
+
continue;
|
|
13
|
+
}
|
|
14
|
+
if (current.input.slice(0, 10).toLowerCase() === EXECUTE_BYTES_SELECTOR) {
|
|
15
|
+
return current;
|
|
16
|
+
}
|
|
17
|
+
if (current.calls) {
|
|
18
|
+
queue.push(...current.calls);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return void 0;
|
|
22
|
+
}
|
|
23
|
+
function findCallWithInput(node, input) {
|
|
24
|
+
if (node.error) {
|
|
25
|
+
return void 0;
|
|
26
|
+
}
|
|
27
|
+
if (node.type === "CALL" && node.input.toLowerCase() === input.toLowerCase()) {
|
|
28
|
+
return node;
|
|
29
|
+
}
|
|
30
|
+
if (node.calls) {
|
|
31
|
+
for (const child of node.calls) {
|
|
32
|
+
const found = findCallWithInput(child, input);
|
|
33
|
+
if (found) {
|
|
34
|
+
return found;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return void 0;
|
|
39
|
+
}
|
|
40
|
+
function resolveProtocolCall(node) {
|
|
41
|
+
const executeNode = findExecuteBytes(node);
|
|
42
|
+
if (!executeNode) {
|
|
43
|
+
return void 0;
|
|
44
|
+
}
|
|
45
|
+
const [calldata] = decodeAbiParameters(
|
|
46
|
+
[{ type: "bytes" }],
|
|
47
|
+
`0x${executeNode.input.slice(10)}`
|
|
48
|
+
);
|
|
49
|
+
const targetCall = findCallWithInput(executeNode, calldata);
|
|
50
|
+
if (!targetCall) {
|
|
51
|
+
return void 0;
|
|
52
|
+
}
|
|
53
|
+
return { contract: getAddress(targetCall.to), calldata };
|
|
54
|
+
}
|
|
55
|
+
function findCallTo(node, target) {
|
|
56
|
+
if (node.error) {
|
|
57
|
+
return void 0;
|
|
58
|
+
}
|
|
59
|
+
if (node.type === "CALL" && isAddressEqual(node.to, target)) {
|
|
60
|
+
return node;
|
|
61
|
+
}
|
|
62
|
+
if (node.calls) {
|
|
63
|
+
for (const child of node.calls) {
|
|
64
|
+
const found = findCallTo(child, target);
|
|
65
|
+
if (found) {
|
|
66
|
+
return found;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return void 0;
|
|
71
|
+
}
|
|
72
|
+
function collectTraces(node, target) {
|
|
73
|
+
const results = [];
|
|
74
|
+
if (node.error) {
|
|
75
|
+
return results;
|
|
76
|
+
}
|
|
77
|
+
if (node.type === "CALL" && isAddressEqual(node.to, target)) {
|
|
78
|
+
results.push(node);
|
|
79
|
+
} else if (node.calls) {
|
|
80
|
+
for (const child of node.calls) {
|
|
81
|
+
results.push(...collectTraces(child, target));
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return results;
|
|
85
|
+
}
|
|
86
|
+
export {
|
|
87
|
+
EXECUTE_BYTES_SELECTOR,
|
|
88
|
+
collectTraces,
|
|
89
|
+
findCallTo,
|
|
90
|
+
findCallWithInput,
|
|
91
|
+
findExecuteBytes,
|
|
92
|
+
resolveProtocolCall
|
|
93
|
+
};
|
package/dist/esm/dev/abi.js
CHANGED
|
@@ -9,12 +9,168 @@ const iDegenNftv2Abi = parseAbi([
|
|
|
9
9
|
"function minter() external view returns (address)",
|
|
10
10
|
"function mint(address to, uint256 amount) external"
|
|
11
11
|
]);
|
|
12
|
-
const faucetAbi =
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
12
|
+
const faucetAbi = [
|
|
13
|
+
{
|
|
14
|
+
type: "function",
|
|
15
|
+
name: "assets",
|
|
16
|
+
inputs: [
|
|
17
|
+
{
|
|
18
|
+
name: "",
|
|
19
|
+
type: "uint256",
|
|
20
|
+
internalType: "uint256"
|
|
21
|
+
}
|
|
22
|
+
],
|
|
23
|
+
outputs: [
|
|
24
|
+
{
|
|
25
|
+
name: "",
|
|
26
|
+
type: "address",
|
|
27
|
+
internalType: "address"
|
|
28
|
+
}
|
|
29
|
+
],
|
|
30
|
+
stateMutability: "view"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
type: "function",
|
|
34
|
+
name: "claim",
|
|
35
|
+
inputs: [
|
|
36
|
+
{
|
|
37
|
+
name: "amountUSD",
|
|
38
|
+
type: "uint256",
|
|
39
|
+
internalType: "uint256"
|
|
40
|
+
}
|
|
41
|
+
],
|
|
42
|
+
outputs: [],
|
|
43
|
+
stateMutability: "nonpayable"
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
type: "function",
|
|
47
|
+
name: "claim",
|
|
48
|
+
inputs: [],
|
|
49
|
+
outputs: [],
|
|
50
|
+
stateMutability: "nonpayable"
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
type: "function",
|
|
54
|
+
name: "claim",
|
|
55
|
+
inputs: [
|
|
56
|
+
{
|
|
57
|
+
name: "claims",
|
|
58
|
+
type: "tuple[]",
|
|
59
|
+
internalType: "struct TokenClaim[]",
|
|
60
|
+
components: [
|
|
61
|
+
{
|
|
62
|
+
name: "token",
|
|
63
|
+
type: "address",
|
|
64
|
+
internalType: "address"
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
name: "amount",
|
|
68
|
+
type: "uint256",
|
|
69
|
+
internalType: "uint256"
|
|
70
|
+
}
|
|
71
|
+
]
|
|
72
|
+
}
|
|
73
|
+
],
|
|
74
|
+
outputs: [],
|
|
75
|
+
stateMutability: "nonpayable"
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
type: "function",
|
|
79
|
+
name: "getAssets",
|
|
80
|
+
inputs: [],
|
|
81
|
+
outputs: [
|
|
82
|
+
{
|
|
83
|
+
name: "",
|
|
84
|
+
type: "address[]",
|
|
85
|
+
internalType: "address[]"
|
|
86
|
+
}
|
|
87
|
+
],
|
|
88
|
+
stateMutability: "view"
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
type: "function",
|
|
92
|
+
name: "hasClaimed",
|
|
93
|
+
inputs: [
|
|
94
|
+
{
|
|
95
|
+
name: "user",
|
|
96
|
+
type: "address",
|
|
97
|
+
internalType: "address"
|
|
98
|
+
}
|
|
99
|
+
],
|
|
100
|
+
outputs: [
|
|
101
|
+
{
|
|
102
|
+
name: "",
|
|
103
|
+
type: "bool",
|
|
104
|
+
internalType: "bool"
|
|
105
|
+
}
|
|
106
|
+
],
|
|
107
|
+
stateMutability: "view"
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
type: "function",
|
|
111
|
+
name: "minAmountUSD",
|
|
112
|
+
inputs: [],
|
|
113
|
+
outputs: [
|
|
114
|
+
{
|
|
115
|
+
name: "",
|
|
116
|
+
type: "uint256",
|
|
117
|
+
internalType: "uint256"
|
|
118
|
+
}
|
|
119
|
+
],
|
|
120
|
+
stateMutability: "view"
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
type: "function",
|
|
124
|
+
name: "owner",
|
|
125
|
+
inputs: [],
|
|
126
|
+
outputs: [
|
|
127
|
+
{
|
|
128
|
+
name: "",
|
|
129
|
+
type: "address",
|
|
130
|
+
internalType: "address"
|
|
131
|
+
}
|
|
132
|
+
],
|
|
133
|
+
stateMutability: "view"
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
type: "function",
|
|
137
|
+
name: "prices",
|
|
138
|
+
inputs: [
|
|
139
|
+
{
|
|
140
|
+
name: "",
|
|
141
|
+
type: "address",
|
|
142
|
+
internalType: "address"
|
|
143
|
+
}
|
|
144
|
+
],
|
|
145
|
+
outputs: [
|
|
146
|
+
{
|
|
147
|
+
name: "",
|
|
148
|
+
type: "uint256",
|
|
149
|
+
internalType: "uint256"
|
|
150
|
+
}
|
|
151
|
+
],
|
|
152
|
+
stateMutability: "view"
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
type: "function",
|
|
156
|
+
name: "scales",
|
|
157
|
+
inputs: [
|
|
158
|
+
{
|
|
159
|
+
name: "",
|
|
160
|
+
type: "address",
|
|
161
|
+
internalType: "address"
|
|
162
|
+
}
|
|
163
|
+
],
|
|
164
|
+
outputs: [
|
|
165
|
+
{
|
|
166
|
+
name: "",
|
|
167
|
+
type: "uint256",
|
|
168
|
+
internalType: "uint256"
|
|
169
|
+
}
|
|
170
|
+
],
|
|
171
|
+
stateMutability: "view"
|
|
172
|
+
}
|
|
173
|
+
];
|
|
18
174
|
const iOnchainExecutionIdAbi = [
|
|
19
175
|
{
|
|
20
176
|
type: "function",
|
package/dist/esm/dev/index.js
CHANGED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { iOnchainExecutionIdAbi } from "./abi.js";
|
|
2
|
+
const ONCHAIN_EXECUTION_ID_ADDRESS = "0x34131bc13eaa4ef5f98c2a423f93bc88d6ee01ba";
|
|
3
|
+
async function verifyTestnet(client, expected) {
|
|
4
|
+
try {
|
|
5
|
+
const { deployer, executionId, forkAlias } = await client.readContract({
|
|
6
|
+
abi: iOnchainExecutionIdAbi,
|
|
7
|
+
address: ONCHAIN_EXECUTION_ID_ADDRESS,
|
|
8
|
+
functionName: "info"
|
|
9
|
+
});
|
|
10
|
+
if (deployer !== "anvil-manager") {
|
|
11
|
+
return false;
|
|
12
|
+
}
|
|
13
|
+
if ("executionId" in expected && expected.executionId && expected.executionId !== executionId) {
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
if ("alias" in expected && expected.alias && expected.alias !== forkAlias) {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
return true;
|
|
20
|
+
} catch {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
export {
|
|
25
|
+
ONCHAIN_EXECUTION_ID_ADDRESS,
|
|
26
|
+
verifyTestnet
|
|
27
|
+
};
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { AbstractAdapterContract } from "../plugins/adapters/index.js";
|
|
2
|
+
import {
|
|
3
|
+
extractAdapterCallTraces
|
|
4
|
+
} from "../preview/trace/index.js";
|
|
2
5
|
import { classifyMulticallOperations } from "./classifyMulticallOperations.js";
|
|
3
|
-
import { extractProtocolCalls } from "./extractProtocolCalls.js";
|
|
4
6
|
function assembleOperations(input) {
|
|
5
7
|
const {
|
|
6
8
|
facadeCalls,
|
|
7
|
-
|
|
9
|
+
executeTransfers,
|
|
8
10
|
register,
|
|
9
11
|
underlying,
|
|
10
12
|
liquidationRemainingFunds,
|
|
@@ -19,7 +21,7 @@ function assembleOperations(input) {
|
|
|
19
21
|
return assemblePartialLiquidation(fc);
|
|
20
22
|
}
|
|
21
23
|
const count = countAdapterCalls(fc.innerCalls, register);
|
|
22
|
-
const sliced =
|
|
24
|
+
const sliced = executeTransfers.slice(executeOffset, executeOffset + count);
|
|
23
25
|
executeOffset += count;
|
|
24
26
|
const withdrawCount = countWithdrawCollateralCalls(fc.innerCalls);
|
|
25
27
|
const slicedWithdrawEvents = withdrawCollateralEvents.slice(
|
|
@@ -27,11 +29,11 @@ function assembleOperations(input) {
|
|
|
27
29
|
withdrawOffset + withdrawCount
|
|
28
30
|
);
|
|
29
31
|
withdrawOffset += withdrawCount;
|
|
30
|
-
const
|
|
32
|
+
const adapterTraces = extractAdapterCallTraces(fc.trace);
|
|
31
33
|
const multicall = classifyMulticallOperations({
|
|
32
34
|
innerCalls: fc.innerCalls,
|
|
33
|
-
|
|
34
|
-
|
|
35
|
+
executeTransfers: sliced,
|
|
36
|
+
adapterTraces,
|
|
35
37
|
register,
|
|
36
38
|
creditAccount: fc.creditAccount,
|
|
37
39
|
underlying,
|