@gearbox-protocol/sdk 14.12.0-next.7 → 14.12.0-next.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/dev/AccountOpener.js +7 -13
- package/dist/cjs/history/classifyMulticallOperations.js +2 -0
- package/dist/cjs/history/mapOperations.js +7 -0
- package/dist/cjs/plugins/adapters/abi/iConvexV1BoosterAdapter.js +143 -0
- package/dist/cjs/plugins/adapters/abi/index.js +2 -0
- package/dist/cjs/plugins/adapters/contracts/AbstractAdapter.js +36 -0
- package/dist/cjs/plugins/adapters/contracts/AbstractCurveAdapter.js +66 -0
- package/dist/cjs/plugins/adapters/contracts/BalancerV3RouterAdapterContract.js +19 -0
- package/dist/cjs/plugins/adapters/contracts/BalancerV3WrapperAdapterContract.js +15 -0
- package/dist/cjs/plugins/adapters/contracts/CamelotV3AdapterContract.js +20 -0
- package/dist/cjs/plugins/adapters/contracts/ConvexV1BaseRewardPoolAdapterContract.js +18 -0
- package/dist/cjs/plugins/adapters/contracts/ConvexV1BoosterAdapterContract.js +28 -2
- package/dist/cjs/plugins/adapters/contracts/Curve2AssetsAdapterContract.js +2 -7
- package/dist/cjs/plugins/adapters/contracts/Curve3AssetsAdapterContract.js +2 -7
- package/dist/cjs/plugins/adapters/contracts/Curve4AssetsAdapterContract.js +2 -7
- package/dist/cjs/plugins/adapters/contracts/CurveV1AdapterDeposit.js +2 -2
- package/dist/cjs/plugins/adapters/contracts/CurveV1AdapterStETHContract.js +2 -7
- package/dist/cjs/plugins/adapters/contracts/CurveV1StableNGAdapterContract.js +2 -7
- package/dist/cjs/plugins/adapters/contracts/DaiUsdsAdapterContract.js +14 -0
- package/dist/cjs/plugins/adapters/contracts/ERC4626AdapterContract.js +15 -0
- package/dist/cjs/plugins/adapters/contracts/ERC4626ReferralAdapterContract.js +14 -0
- package/dist/cjs/plugins/adapters/contracts/FluidDexAdapterContract.js +15 -0
- package/dist/cjs/plugins/adapters/contracts/InfinifiGatewayAdapterContract.js +21 -0
- package/dist/cjs/plugins/adapters/contracts/KelpLRTDepositPoolAdapterContract.js +10 -0
- package/dist/cjs/plugins/adapters/contracts/LidoV1AdapterContract.js +11 -0
- package/dist/cjs/plugins/adapters/contracts/MellowDVVAdapterContract.js +15 -0
- package/dist/cjs/plugins/adapters/contracts/MellowERC4626VaultAdapterContract.js +15 -0
- package/dist/cjs/plugins/adapters/contracts/MellowWrapperAdapterContract.js +11 -0
- package/dist/cjs/plugins/adapters/contracts/MidasIssuanceVaultAdapterContract.js +10 -0
- package/dist/cjs/plugins/adapters/contracts/MidasRedemptionVaultAdapterContract.js +12 -0
- package/dist/cjs/plugins/adapters/contracts/PendleRouterAdapterContract.js +58 -0
- package/dist/cjs/plugins/adapters/contracts/SecuritizeOnRampAdapterContract.js +11 -0
- package/dist/cjs/plugins/adapters/contracts/SecuritizeSwapAdapterContract.js +22 -1
- package/dist/cjs/plugins/adapters/contracts/StakingRewardsAdapterContract.js +17 -0
- package/dist/cjs/plugins/adapters/contracts/TraderJoeRouterAdapterContract.js +10 -0
- package/dist/cjs/plugins/adapters/contracts/UniswapV2AdapterContract.js +10 -0
- package/dist/cjs/plugins/adapters/contracts/UniswapV3AdapterContract.js +20 -0
- package/dist/cjs/plugins/adapters/contracts/UniswapV4AdapterContract.js +15 -0
- package/dist/cjs/plugins/adapters/contracts/UpshiftVaultAdapterContract.js +14 -0
- package/dist/cjs/plugins/adapters/contracts/VelodromeV2AdapterContract.js +10 -0
- package/dist/cjs/plugins/adapters/contracts/WstETHV1AdapterContract.js +15 -0
- package/dist/cjs/preview/parse/classifyInnerOperations.js +14 -1
- package/dist/cjs/preview/prerequisites/buildPrerequisites.js +3 -8
- package/dist/cjs/preview/preview/errors.js +16 -0
- package/dist/cjs/preview/preview/previewOpenCreditAccount.js +56 -25
- package/dist/cjs/preview/preview/{extractExpectedBalanceChanges.js → unwrapNativeCollateral.js} +20 -23
- package/dist/cjs/sdk/accounts/CreditAccountsServiceV310.js +3 -4
- package/dist/cjs/sdk/base/BaseContract.js +4 -2
- package/dist/cjs/sdk/base/ChainContractsRegister.js +1 -0
- package/dist/cjs/sdk/router/AbstractRouterContract.js +21 -27
- package/dist/cjs/sdk/router/RouterV310Contract.js +11 -12
- package/dist/cjs/sdk/router/helpers.js +0 -5
- package/dist/cjs/sdk/utils/AddressMap.js +6 -0
- package/dist/cjs/sdk/utils/AssetsMap.js +61 -0
- package/dist/cjs/sdk/utils/index.js +2 -0
- package/dist/esm/dev/AccountOpener.js +8 -13
- package/dist/esm/history/classifyMulticallOperations.js +2 -0
- package/dist/esm/history/mapOperations.js +7 -0
- package/dist/esm/plugins/adapters/abi/iConvexV1BoosterAdapter.js +119 -0
- package/dist/esm/plugins/adapters/abi/index.js +1 -0
- package/dist/esm/plugins/adapters/contracts/AbstractAdapter.js +36 -0
- package/dist/esm/plugins/adapters/contracts/AbstractCurveAdapter.js +42 -0
- package/dist/esm/plugins/adapters/contracts/BalancerV3RouterAdapterContract.js +22 -1
- package/dist/esm/plugins/adapters/contracts/BalancerV3WrapperAdapterContract.js +18 -1
- package/dist/esm/plugins/adapters/contracts/CamelotV3AdapterContract.js +23 -1
- package/dist/esm/plugins/adapters/contracts/ConvexV1BaseRewardPoolAdapterContract.js +22 -1
- package/dist/esm/plugins/adapters/contracts/ConvexV1BoosterAdapterContract.js +30 -2
- package/dist/esm/plugins/adapters/contracts/Curve2AssetsAdapterContract.js +2 -7
- package/dist/esm/plugins/adapters/contracts/Curve3AssetsAdapterContract.js +2 -7
- package/dist/esm/plugins/adapters/contracts/Curve4AssetsAdapterContract.js +2 -7
- package/dist/esm/plugins/adapters/contracts/CurveV1AdapterDeposit.js +2 -2
- package/dist/esm/plugins/adapters/contracts/CurveV1AdapterStETHContract.js +2 -7
- package/dist/esm/plugins/adapters/contracts/CurveV1StableNGAdapterContract.js +2 -7
- package/dist/esm/plugins/adapters/contracts/DaiUsdsAdapterContract.js +17 -1
- package/dist/esm/plugins/adapters/contracts/ERC4626AdapterContract.js +19 -1
- package/dist/esm/plugins/adapters/contracts/ERC4626ReferralAdapterContract.js +17 -1
- package/dist/esm/plugins/adapters/contracts/FluidDexAdapterContract.js +18 -1
- package/dist/esm/plugins/adapters/contracts/InfinifiGatewayAdapterContract.js +24 -1
- package/dist/esm/plugins/adapters/contracts/KelpLRTDepositPoolAdapterContract.js +13 -1
- package/dist/esm/plugins/adapters/contracts/LidoV1AdapterContract.js +14 -1
- package/dist/esm/plugins/adapters/contracts/MellowDVVAdapterContract.js +18 -1
- package/dist/esm/plugins/adapters/contracts/MellowERC4626VaultAdapterContract.js +18 -1
- package/dist/esm/plugins/adapters/contracts/MellowWrapperAdapterContract.js +14 -1
- package/dist/esm/plugins/adapters/contracts/MidasIssuanceVaultAdapterContract.js +13 -1
- package/dist/esm/plugins/adapters/contracts/MidasRedemptionVaultAdapterContract.js +15 -1
- package/dist/esm/plugins/adapters/contracts/PendleRouterAdapterContract.js +61 -1
- package/dist/esm/plugins/adapters/contracts/SecuritizeOnRampAdapterContract.js +14 -1
- package/dist/esm/plugins/adapters/contracts/SecuritizeSwapAdapterContract.js +25 -2
- package/dist/esm/plugins/adapters/contracts/StakingRewardsAdapterContract.js +20 -1
- package/dist/esm/plugins/adapters/contracts/TraderJoeRouterAdapterContract.js +13 -1
- package/dist/esm/plugins/adapters/contracts/UniswapV2AdapterContract.js +10 -0
- package/dist/esm/plugins/adapters/contracts/UniswapV3AdapterContract.js +20 -0
- package/dist/esm/plugins/adapters/contracts/UniswapV4AdapterContract.js +18 -1
- package/dist/esm/plugins/adapters/contracts/UpshiftVaultAdapterContract.js +17 -1
- package/dist/esm/plugins/adapters/contracts/VelodromeV2AdapterContract.js +13 -1
- package/dist/esm/plugins/adapters/contracts/WstETHV1AdapterContract.js +18 -1
- package/dist/esm/preview/parse/classifyInnerOperations.js +14 -1
- package/dist/esm/preview/prerequisites/buildPrerequisites.js +4 -8
- package/dist/esm/preview/preview/errors.js +15 -0
- package/dist/esm/preview/preview/previewOpenCreditAccount.js +59 -26
- package/dist/esm/preview/preview/unwrapNativeCollateral.js +21 -0
- package/dist/esm/sdk/accounts/CreditAccountsServiceV310.js +4 -5
- package/dist/esm/sdk/base/BaseContract.js +4 -2
- package/dist/esm/sdk/base/ChainContractsRegister.js +1 -0
- package/dist/esm/sdk/router/AbstractRouterContract.js +25 -29
- package/dist/esm/sdk/router/RouterV310Contract.js +11 -12
- package/dist/esm/sdk/router/helpers.js +0 -4
- package/dist/esm/sdk/utils/AddressMap.js +6 -0
- package/dist/esm/sdk/utils/AssetsMap.js +37 -0
- package/dist/esm/sdk/utils/index.js +1 -0
- package/dist/types/common-utils/utils/strategies/assets/assets.d.ts +1 -1
- package/dist/types/common-utils/utils/strategies/credit-managers/get-wallet-balances-allowed-on-cm.d.ts +1 -1
- package/dist/types/common-utils/utils/strategies/strategy-info/calculate-total-apy.d.ts +1 -1
- package/dist/types/common-utils/utils/strategies/strategy-info/calculate-total-points.d.ts +1 -1
- package/dist/types/common-utils/utils/strategies/tokens/add-amount-in-target.d.ts +1 -1
- package/dist/types/common-utils/utils/strategies/tokens/get-list-with-amount-in-target.d.ts +1 -1
- package/dist/types/common-utils/utils/strategies/types/strategy-earnings.d.ts +1 -1
- package/dist/types/common-utils/utils/validation/validate-balances.d.ts +1 -1
- package/dist/types/common-utils/utils/validation/validate-open-account.d.ts +1 -1
- package/dist/types/common-utils/utils/validation/validate-quota.d.ts +1 -1
- package/dist/types/common-utils/utils/validation/validate-token-to-obtain.d.ts +1 -1
- package/dist/types/plugins/adapters/abi/iConvexV1BoosterAdapter.d.ts +204 -0
- package/dist/types/plugins/adapters/abi/index.d.ts +1 -0
- package/dist/types/plugins/adapters/contracts/AbstractAdapter.d.ts +21 -3
- package/dist/types/plugins/adapters/contracts/AbstractCurveAdapter.d.ts +18 -0
- package/dist/types/plugins/adapters/contracts/BalancerV3RouterAdapterContract.d.ts +4 -2
- package/dist/types/plugins/adapters/contracts/BalancerV3WrapperAdapterContract.d.ts +4 -2
- package/dist/types/plugins/adapters/contracts/CamelotV3AdapterContract.d.ts +4 -2
- package/dist/types/plugins/adapters/contracts/ConvexV1BaseRewardPoolAdapterContract.d.ts +4 -2
- package/dist/types/plugins/adapters/contracts/ConvexV1BoosterAdapterContract.d.ts +8 -6
- package/dist/types/plugins/adapters/contracts/Curve2AssetsAdapterContract.d.ts +3 -6
- package/dist/types/plugins/adapters/contracts/Curve3AssetsAdapterContract.d.ts +3 -6
- package/dist/types/plugins/adapters/contracts/Curve4AssetsAdapterContract.d.ts +3 -6
- package/dist/types/plugins/adapters/contracts/CurveV1AdapterDeposit.d.ts +2 -2
- package/dist/types/plugins/adapters/contracts/CurveV1AdapterStETHContract.d.ts +3 -6
- package/dist/types/plugins/adapters/contracts/CurveV1StableNGAdapterContract.d.ts +3 -6
- package/dist/types/plugins/adapters/contracts/DaiUsdsAdapterContract.d.ts +4 -2
- package/dist/types/plugins/adapters/contracts/ERC4626AdapterContract.d.ts +4 -2
- package/dist/types/plugins/adapters/contracts/ERC4626ReferralAdapterContract.d.ts +4 -2
- package/dist/types/plugins/adapters/contracts/FluidDexAdapterContract.d.ts +4 -2
- package/dist/types/plugins/adapters/contracts/InfinifiGatewayAdapterContract.d.ts +4 -2
- package/dist/types/plugins/adapters/contracts/KelpLRTDepositPoolAdapterContract.d.ts +4 -2
- package/dist/types/plugins/adapters/contracts/LidoV1AdapterContract.d.ts +4 -2
- package/dist/types/plugins/adapters/contracts/MellowDVVAdapterContract.d.ts +4 -2
- package/dist/types/plugins/adapters/contracts/MellowERC4626VaultAdapterContract.d.ts +4 -2
- package/dist/types/plugins/adapters/contracts/MellowWrapperAdapterContract.d.ts +4 -2
- package/dist/types/plugins/adapters/contracts/MidasIssuanceVaultAdapterContract.d.ts +4 -2
- package/dist/types/plugins/adapters/contracts/MidasRedemptionVaultAdapterContract.d.ts +4 -2
- package/dist/types/plugins/adapters/contracts/PendleRouterAdapterContract.d.ts +4 -2
- package/dist/types/plugins/adapters/contracts/SecuritizeOnRampAdapterContract.d.ts +4 -2
- package/dist/types/plugins/adapters/contracts/SecuritizeSwapAdapterContract.d.ts +15 -3
- package/dist/types/plugins/adapters/contracts/StakingRewardsAdapterContract.d.ts +4 -2
- package/dist/types/plugins/adapters/contracts/TraderJoeRouterAdapterContract.d.ts +4 -2
- package/dist/types/plugins/adapters/contracts/UniswapV2AdapterContract.d.ts +3 -1
- package/dist/types/plugins/adapters/contracts/UniswapV3AdapterContract.d.ts +3 -1
- package/dist/types/plugins/adapters/contracts/UniswapV4AdapterContract.d.ts +4 -2
- package/dist/types/plugins/adapters/contracts/UpshiftVaultAdapterContract.d.ts +4 -2
- package/dist/types/plugins/adapters/contracts/VelodromeV2AdapterContract.d.ts +4 -2
- package/dist/types/plugins/adapters/contracts/WstETHV1AdapterContract.d.ts +4 -2
- package/dist/types/plugins/adapters/types.d.ts +10 -0
- package/dist/types/preview/parse/types-adapters.d.ts +5 -1
- package/dist/types/preview/parse/types-facades.d.ts +23 -1
- package/dist/types/preview/preview/errors.d.ts +12 -0
- package/dist/types/preview/preview/types.d.ts +9 -1
- package/dist/types/preview/preview/unwrapNativeCollateral.d.ts +20 -0
- package/dist/types/sdk/accounts/CreditAccountsServiceV310.d.ts +1 -1
- package/dist/types/sdk/accounts/types.d.ts +2 -2
- package/dist/types/sdk/base/BaseContract.d.ts +1 -1
- package/dist/types/sdk/base/TokensMeta.d.ts +1 -1
- package/dist/types/sdk/base/types.d.ts +18 -0
- package/dist/types/sdk/pools/types.d.ts +1 -1
- package/dist/types/sdk/router/AbstractRouterContract.d.ts +5 -5
- package/dist/types/sdk/router/helpers.d.ts +1 -2
- package/dist/types/sdk/router/types.d.ts +1 -15
- package/dist/types/sdk/utils/AddressMap.d.ts +4 -0
- package/dist/types/sdk/utils/AssetsMap.d.ts +26 -0
- package/dist/types/sdk/utils/index.d.ts +1 -0
- package/package.json +1 -1
- package/dist/esm/preview/preview/extractExpectedBalanceChanges.js +0 -24
- package/dist/types/preview/preview/extractExpectedBalanceChanges.d.ts +0 -21
|
@@ -21,61 +21,92 @@ __export(previewOpenCreditAccount_exports, {
|
|
|
21
21
|
previewOpenCreditAccount: () => previewOpenCreditAccount
|
|
22
22
|
});
|
|
23
23
|
module.exports = __toCommonJS(previewOpenCreditAccount_exports);
|
|
24
|
+
var import_adapters = require("../../plugins/adapters/index.js");
|
|
24
25
|
var import_sdk = require("../../sdk/index.js");
|
|
25
|
-
var
|
|
26
|
+
var import_unwrapNativeCollateral = require("./unwrapNativeCollateral.js");
|
|
26
27
|
function previewOpenCreditAccount(input, operation) {
|
|
27
|
-
const { sdk,
|
|
28
|
+
const { sdk, value = 0n } = input;
|
|
28
29
|
const market = sdk.marketRegister.findByCreditManager(
|
|
29
30
|
operation.creditManager
|
|
30
31
|
);
|
|
31
|
-
const
|
|
32
|
-
const balances = new import_sdk.
|
|
33
|
-
const addBalance = (token, amount) => {
|
|
34
|
-
balances.upsert(token, (balances.get(token) ?? 0n) + amount);
|
|
35
|
-
};
|
|
32
|
+
const collateralBalances = new import_sdk.AssetsMap();
|
|
33
|
+
const balances = new import_sdk.AssetsMap();
|
|
36
34
|
let debt = 0n;
|
|
37
35
|
const quotas = [];
|
|
36
|
+
let inBracket = false;
|
|
37
|
+
let storeSeen = false;
|
|
38
38
|
for (const op of operation.multicall) {
|
|
39
39
|
switch (op.operation) {
|
|
40
|
-
case "AddCollateral":
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
token: op.token,
|
|
44
|
-
balance: balance + op.amount
|
|
45
|
-
});
|
|
46
|
-
addBalance(op.token, op.amount);
|
|
40
|
+
case "AddCollateral":
|
|
41
|
+
collateralBalances.inc(op.token, op.amount);
|
|
42
|
+
balances.inc(op.token, op.amount);
|
|
47
43
|
break;
|
|
48
|
-
}
|
|
49
44
|
case "WithdrawCollateral":
|
|
50
|
-
|
|
45
|
+
balances.dec(op.token, op.amount);
|
|
51
46
|
break;
|
|
52
47
|
case "IncreaseBorrowedAmount":
|
|
53
48
|
debt += op.amount;
|
|
54
|
-
|
|
49
|
+
balances.inc(op.token, op.amount);
|
|
55
50
|
break;
|
|
56
51
|
case "DecreaseBorrowedAmount":
|
|
57
52
|
debt -= op.amount;
|
|
58
|
-
|
|
53
|
+
balances.dec(op.token, op.amount);
|
|
59
54
|
break;
|
|
60
55
|
case "UpdateQuota":
|
|
61
56
|
quotas.push({ token: op.token, balance: op.change });
|
|
62
57
|
break;
|
|
58
|
+
case "StoreExpectedBalances":
|
|
59
|
+
if (storeSeen) {
|
|
60
|
+
throw new Error(
|
|
61
|
+
"malformed multicall: duplicate storeExpectedBalances call"
|
|
62
|
+
);
|
|
63
|
+
}
|
|
64
|
+
storeSeen = true;
|
|
65
|
+
inBracket = true;
|
|
66
|
+
for (const { token, balance } of op.deltas) {
|
|
67
|
+
balances.inc(token, balance);
|
|
68
|
+
}
|
|
69
|
+
break;
|
|
70
|
+
case "CompareBalances":
|
|
71
|
+
if (!inBracket) {
|
|
72
|
+
throw new Error(
|
|
73
|
+
"malformed multicall: compareBalances without a preceding storeExpectedBalances"
|
|
74
|
+
);
|
|
75
|
+
}
|
|
76
|
+
inBracket = false;
|
|
77
|
+
break;
|
|
78
|
+
case "Execute":
|
|
79
|
+
if (inBracket) {
|
|
80
|
+
const adapter = sdk.getContract(op.adapter);
|
|
81
|
+
if (!(adapter instanceof import_adapters.AbstractAdapterContract)) {
|
|
82
|
+
throw new Error(
|
|
83
|
+
`call to ${op.adapter} between storeExpectedBalances and compareBalances is not an adapter call`
|
|
84
|
+
);
|
|
85
|
+
}
|
|
86
|
+
adapter.previewBalanceChanges(balances, op.calldata);
|
|
87
|
+
}
|
|
88
|
+
break;
|
|
63
89
|
}
|
|
64
90
|
}
|
|
65
|
-
|
|
91
|
+
if (inBracket) {
|
|
92
|
+
throw new Error(
|
|
93
|
+
"malformed multicall: storeExpectedBalances without a matching compareBalances"
|
|
94
|
+
);
|
|
95
|
+
}
|
|
96
|
+
let collateral = collateralBalances.toAssets();
|
|
66
97
|
const collateralValue = collateral.reduce(
|
|
67
98
|
(acc, { token, balance }) => acc + market.priceOracle.convert(token, market.underlying, balance),
|
|
68
99
|
0n
|
|
69
100
|
);
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
}
|
|
101
|
+
collateral = (0, import_unwrapNativeCollateral.unwrapNativeCollateral)(
|
|
102
|
+
collateral,
|
|
103
|
+
value,
|
|
104
|
+
sdk.addressProvider.getAddress(import_sdk.AP_WETH_TOKEN, import_sdk.NO_VERSION)
|
|
105
|
+
);
|
|
76
106
|
const assets = balances.entries().filter(([, balance]) => balance > 1n).map(([token, balance]) => ({ token, balance }));
|
|
77
107
|
return {
|
|
78
108
|
operation: operation.operation,
|
|
109
|
+
creditManager: operation.creditManager,
|
|
79
110
|
target: inferTargetAsset(operation.multicall, balances),
|
|
80
111
|
collateral,
|
|
81
112
|
collateralValue,
|
package/dist/cjs/preview/preview/{extractExpectedBalanceChanges.js → unwrapNativeCollateral.js}
RENAMED
|
@@ -16,33 +16,30 @@ 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
|
|
20
|
-
__export(
|
|
21
|
-
|
|
19
|
+
var unwrapNativeCollateral_exports = {};
|
|
20
|
+
__export(unwrapNativeCollateral_exports, {
|
|
21
|
+
unwrapNativeCollateral: () => unwrapNativeCollateral
|
|
22
22
|
});
|
|
23
|
-
module.exports = __toCommonJS(
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
)
|
|
28
|
-
|
|
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;
|
|
23
|
+
module.exports = __toCommonJS(unwrapNativeCollateral_exports);
|
|
24
|
+
var import_sdk = require("../../sdk/index.js");
|
|
25
|
+
var import_errors = require("./errors.js");
|
|
26
|
+
function unwrapNativeCollateral(collateral, nativeAmount, wethToken) {
|
|
27
|
+
if (nativeAmount === 0n) {
|
|
28
|
+
return collateral;
|
|
35
29
|
}
|
|
36
|
-
const
|
|
37
|
-
|
|
38
|
-
|
|
30
|
+
const balances = new import_sdk.AssetsMap(collateral);
|
|
31
|
+
const wethBalance = balances.get(wethToken) ?? 0n;
|
|
32
|
+
if (wethBalance < nativeAmount) {
|
|
33
|
+
throw new import_errors.InvalidTransactionValueError(nativeAmount, wethBalance);
|
|
39
34
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
35
|
+
balances.upsert(
|
|
36
|
+
wethToken,
|
|
37
|
+
wethBalance === nativeAmount ? void 0 : wethBalance - nativeAmount
|
|
38
|
+
);
|
|
39
|
+
balances.inc(import_sdk.NATIVE_ADDRESS, nativeAmount);
|
|
40
|
+
return balances.toAssets();
|
|
44
41
|
}
|
|
45
42
|
// Annotate the CommonJS export names for ESM import in node:
|
|
46
43
|
0 && (module.exports = {
|
|
47
|
-
|
|
44
|
+
unwrapNativeCollateral
|
|
48
45
|
});
|
|
@@ -36,7 +36,6 @@ var import_base = require("../base/index.js");
|
|
|
36
36
|
var import_chains = require("../chain/chains.js");
|
|
37
37
|
var import_constants = require("../constants/index.js");
|
|
38
38
|
var import_market = require("../market/index.js");
|
|
39
|
-
var import_router = require("../router/index.js");
|
|
40
39
|
var import_utils = require("../utils/index.js");
|
|
41
40
|
var import_viem2 = require("../utils/viem/index.js");
|
|
42
41
|
var import_multicall_utils = require("./multicall-utils.js");
|
|
@@ -1723,10 +1722,10 @@ class CreditAccountsServiceV310 extends import_base.SDKConstruct {
|
|
|
1723
1722
|
return calls;
|
|
1724
1723
|
}
|
|
1725
1724
|
#prepareUpdateQuotas(creditFacade, { averageQuota, minQuota }) {
|
|
1726
|
-
const minRecord =
|
|
1725
|
+
const minRecord = new import_utils.AssetsMap(minQuota);
|
|
1727
1726
|
const calls = averageQuota.map((q) => {
|
|
1728
|
-
const
|
|
1729
|
-
const min =
|
|
1727
|
+
const minBalance = minRecord.get(q.token);
|
|
1728
|
+
const min = minBalance && minBalance > 0n ? minBalance : 0n;
|
|
1730
1729
|
return {
|
|
1731
1730
|
target: creditFacade,
|
|
1732
1731
|
callData: (0, import_viem.encodeFunctionData)({
|
|
@@ -244,6 +244,7 @@ class BaseContract extends import_Construct.Construct {
|
|
|
244
244
|
const functionName = (0, import_utils.getFunctionSignature)(this.abi, calldata);
|
|
245
245
|
return this.wrapParseCallV2(
|
|
246
246
|
functionName,
|
|
247
|
+
calldata,
|
|
247
248
|
this.parseFunctionParamsV2(decoded, strict)
|
|
248
249
|
);
|
|
249
250
|
} catch (e) {
|
|
@@ -257,7 +258,7 @@ class BaseContract extends import_Construct.Construct {
|
|
|
257
258
|
this.logger?.warn(e);
|
|
258
259
|
const selector = calldata.slice(0, 10);
|
|
259
260
|
const data = `0x${calldata.slice(10)}`;
|
|
260
|
-
return this.wrapParseCallV2(`unknown function ${selector}`, {
|
|
261
|
+
return this.wrapParseCallV2(`unknown function ${selector}`, calldata, {
|
|
261
262
|
_data: data
|
|
262
263
|
});
|
|
263
264
|
}
|
|
@@ -270,7 +271,7 @@ class BaseContract extends import_Construct.Construct {
|
|
|
270
271
|
parseFunctionParamsV2(params, _strict) {
|
|
271
272
|
return (0, import_utils.functionArgsToRecord)(this.abi, params.functionName, params.args);
|
|
272
273
|
}
|
|
273
|
-
wrapParseCallV2(functionName, rawArgs) {
|
|
274
|
+
wrapParseCallV2(functionName, calldata, rawArgs) {
|
|
274
275
|
return {
|
|
275
276
|
chainId: this.chainId,
|
|
276
277
|
target: this.address,
|
|
@@ -278,6 +279,7 @@ class BaseContract extends import_Construct.Construct {
|
|
|
278
279
|
label: this.labelAddress(this.address, true),
|
|
279
280
|
version: this.version,
|
|
280
281
|
functionName,
|
|
282
|
+
calldata,
|
|
281
283
|
rawArgs
|
|
282
284
|
};
|
|
283
285
|
}
|
|
@@ -41,15 +41,15 @@ class AbstractRouterContract extends import_base.BaseContract {
|
|
|
41
41
|
options.debtOnly
|
|
42
42
|
);
|
|
43
43
|
const { leftoverBalances, expectedBalances, tokensToClaim } = b;
|
|
44
|
-
const expected = new import_utils.
|
|
45
|
-
const leftover = new import_utils.
|
|
44
|
+
const expected = new import_utils.AssetsMap();
|
|
45
|
+
const leftover = new import_utils.AssetsMap();
|
|
46
46
|
for (const token of cm.collateralTokens) {
|
|
47
|
-
const actual = expectedBalances.get(token)
|
|
48
|
-
expected.upsert(token,
|
|
49
|
-
leftover.upsert(
|
|
47
|
+
const actual = expectedBalances.get(token) || 0n;
|
|
48
|
+
expected.upsert(token, actual > 10n ? actual : 0n);
|
|
49
|
+
leftover.upsert(
|
|
50
50
|
token,
|
|
51
|
-
|
|
52
|
-
|
|
51
|
+
(0, import_helpers.limitLeftover)(leftoverBalances.get(token) || 1n, token) ?? 1n
|
|
52
|
+
);
|
|
53
53
|
}
|
|
54
54
|
return {
|
|
55
55
|
expectedBalances: expected,
|
|
@@ -58,8 +58,8 @@ class AbstractRouterContract extends import_base.BaseContract {
|
|
|
58
58
|
};
|
|
59
59
|
}
|
|
60
60
|
getDefaultExpectedAndLeftover(ca, keepAssets, debtOnly) {
|
|
61
|
-
const expectedBalances = new import_utils.
|
|
62
|
-
const leftoverBalances = new import_utils.
|
|
61
|
+
const expectedBalances = new import_utils.AssetsMap();
|
|
62
|
+
const leftoverBalances = new import_utils.AssetsMap();
|
|
63
63
|
const keepAssetsSet = new import_utils.AddressSet(keepAssets);
|
|
64
64
|
if (debtOnly) {
|
|
65
65
|
const result = this.getLeftoversAfterBuyingDebt(ca, keepAssetsSet);
|
|
@@ -71,23 +71,23 @@ class AbstractRouterContract extends import_base.BaseContract {
|
|
|
71
71
|
}
|
|
72
72
|
for (const { token, balance, mask } of ca.tokens) {
|
|
73
73
|
const isEnabled = (mask & ca.enabledTokensMask) !== 0n;
|
|
74
|
-
expectedBalances.upsert(token,
|
|
74
|
+
expectedBalances.upsert(token, balance);
|
|
75
75
|
if (keepAssetsSet.has(token) || !isEnabled || (0, import_utils.isDust)({
|
|
76
76
|
sdk: this.sdk,
|
|
77
77
|
token,
|
|
78
78
|
balance,
|
|
79
79
|
creditManager: ca.creditManager
|
|
80
80
|
})) {
|
|
81
|
-
leftoverBalances.upsert(
|
|
81
|
+
leftoverBalances.upsert(
|
|
82
82
|
token,
|
|
83
|
-
|
|
84
|
-
|
|
83
|
+
(0, import_helpers.limitLeftover)(balance, token) ?? balance
|
|
84
|
+
);
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
87
|
return {
|
|
88
88
|
expectedBalances,
|
|
89
89
|
leftoverBalances,
|
|
90
|
-
tokensToClaim: new import_utils.
|
|
90
|
+
tokensToClaim: new import_utils.AssetsMap()
|
|
91
91
|
};
|
|
92
92
|
}
|
|
93
93
|
/**
|
|
@@ -100,16 +100,13 @@ class AbstractRouterContract extends import_base.BaseContract {
|
|
|
100
100
|
const { priceOracle } = this.sdk.marketRegister.findByCreditManager(
|
|
101
101
|
ca.creditManager
|
|
102
102
|
);
|
|
103
|
-
const expectedBalances = new import_utils.
|
|
104
|
-
const leftoverBalances = new import_utils.
|
|
103
|
+
const expectedBalances = new import_utils.AssetsMap();
|
|
104
|
+
const leftoverBalances = new import_utils.AssetsMap();
|
|
105
105
|
const usdBalances = [];
|
|
106
106
|
for (const { token, balance, mask } of ca.tokens) {
|
|
107
107
|
const isEnabled = (mask & ca.enabledTokensMask) !== 0n;
|
|
108
|
-
expectedBalances.upsert(token,
|
|
109
|
-
leftoverBalances.upsert(token,
|
|
110
|
-
token,
|
|
111
|
-
balance: (0, import_helpers.limitLeftover)(balance, token) ?? balance
|
|
112
|
-
});
|
|
108
|
+
expectedBalances.upsert(token, balance);
|
|
109
|
+
leftoverBalances.upsert(token, (0, import_helpers.limitLeftover)(balance, token) ?? balance);
|
|
113
110
|
if (isEnabled && !keepAssets.has(token)) {
|
|
114
111
|
usdBalances.push({
|
|
115
112
|
token,
|
|
@@ -139,15 +136,12 @@ class AbstractRouterContract extends import_base.BaseContract {
|
|
|
139
136
|
if (tokenAmount === 0n) {
|
|
140
137
|
return void 0;
|
|
141
138
|
}
|
|
142
|
-
let leftoverBalance = leftoverBalances.get(highestToken.token)
|
|
139
|
+
let leftoverBalance = leftoverBalances.get(highestToken.token) ?? 0n;
|
|
143
140
|
leftoverBalance -= tokenAmount;
|
|
144
141
|
if (leftoverBalance < 0n) {
|
|
145
142
|
return void 0;
|
|
146
143
|
}
|
|
147
|
-
leftoverBalances.upsert(highestToken.token,
|
|
148
|
-
token: highestToken.token,
|
|
149
|
-
balance: leftoverBalance
|
|
150
|
-
});
|
|
144
|
+
leftoverBalances.upsert(highestToken.token, leftoverBalance);
|
|
151
145
|
const tokenAmountStr = this.sdk.tokensMeta.formatBN(
|
|
152
146
|
highestToken.token,
|
|
153
147
|
tokenAmount,
|
|
@@ -160,7 +154,7 @@ class AbstractRouterContract extends import_base.BaseContract {
|
|
|
160
154
|
return {
|
|
161
155
|
expectedBalances,
|
|
162
156
|
leftoverBalances,
|
|
163
|
-
tokensToClaim: new import_utils.
|
|
157
|
+
tokensToClaim: new import_utils.AssetsMap()
|
|
164
158
|
};
|
|
165
159
|
}
|
|
166
160
|
safeConvertToUSD(priceOracle, token, balance) {
|
|
@@ -23,14 +23,13 @@ __export(RouterV310Contract_exports, {
|
|
|
23
23
|
module.exports = __toCommonJS(RouterV310Contract_exports);
|
|
24
24
|
var import_viem = require("viem");
|
|
25
25
|
var import_gearboxRouter = require("../../abi/router/gearboxRouter.js");
|
|
26
|
-
var import_AddressMap = require("../utils/AddressMap.js");
|
|
27
26
|
var import_formatter = require("../utils/formatter.js");
|
|
28
27
|
var import_utils = require("../utils/index.js");
|
|
29
28
|
var import_AbstractRouterContract = require("./AbstractRouterContract.js");
|
|
30
29
|
var import_helpers = require("./helpers.js");
|
|
31
30
|
const abi = import_gearboxRouter.gearboxRouterAbi;
|
|
32
31
|
class RouterV310Contract extends import_AbstractRouterContract.AbstractRouterContract {
|
|
33
|
-
#numSplits = new
|
|
32
|
+
#numSplits = new import_utils.AddressMap();
|
|
34
33
|
#defaultNumSplits = 4n;
|
|
35
34
|
constructor(sdk, address, version) {
|
|
36
35
|
super(sdk, {
|
|
@@ -94,8 +93,8 @@ class RouterV310Contract extends import_AbstractRouterContract.AbstractRouterCon
|
|
|
94
93
|
slippage
|
|
95
94
|
} = props;
|
|
96
95
|
const [expectedMap, leftoverMap] = [
|
|
97
|
-
|
|
98
|
-
|
|
96
|
+
new import_utils.AssetsMap(expectedBalances),
|
|
97
|
+
new import_utils.AssetsMap(leftoverBalances)
|
|
99
98
|
];
|
|
100
99
|
const getNumSplits = this.#numSplitsGetter(cm, expectedBalances);
|
|
101
100
|
const tData = cm.collateralTokens.map(
|
|
@@ -180,22 +179,22 @@ class RouterV310Contract extends import_AbstractRouterContract.AbstractRouterCon
|
|
|
180
179
|
} = props;
|
|
181
180
|
const { expectedBalances, leftoverBalances, tokensToClaim } = this.getExpectedAndLeftover(ca, cm, {
|
|
182
181
|
balances: balances ? {
|
|
183
|
-
expectedBalances:
|
|
184
|
-
leftoverBalances:
|
|
185
|
-
tokensToClaim:
|
|
182
|
+
expectedBalances: new import_utils.AssetsMap(balances.expectedBalances),
|
|
183
|
+
leftoverBalances: new import_utils.AssetsMap(balances.leftoverBalances),
|
|
184
|
+
tokensToClaim: new import_utils.AssetsMap(balances.tokensToClaim || [])
|
|
186
185
|
} : void 0,
|
|
187
186
|
keepAssets: balances ? void 0 : keepAssets,
|
|
188
187
|
debtOnly
|
|
189
188
|
});
|
|
190
|
-
const getNumSplits = this.#numSplitsGetter(cm, expectedBalances.
|
|
189
|
+
const getNumSplits = this.#numSplitsGetter(cm, expectedBalances.toAssets());
|
|
191
190
|
const tData = [];
|
|
192
191
|
for (const token of cm.collateralTokens) {
|
|
193
192
|
tData.push({
|
|
194
193
|
token,
|
|
195
|
-
balance: expectedBalances.get(token)
|
|
196
|
-
leftoverBalance: (0, import_helpers.limitLeftover)(leftoverBalances.get(token)
|
|
194
|
+
balance: expectedBalances.get(token) || 0n,
|
|
195
|
+
leftoverBalance: (0, import_helpers.limitLeftover)(leftoverBalances.get(token), token) ?? 0n,
|
|
197
196
|
numSplits: getNumSplits(token),
|
|
198
|
-
claimRewards:
|
|
197
|
+
claimRewards: tokensToClaim.has(token)
|
|
199
198
|
});
|
|
200
199
|
}
|
|
201
200
|
this.logger?.debug(
|
|
@@ -278,7 +277,7 @@ class RouterV310Contract extends import_AbstractRouterContract.AbstractRouterCon
|
|
|
278
277
|
})),
|
|
279
278
|
"balances in usd"
|
|
280
279
|
);
|
|
281
|
-
const map = new
|
|
280
|
+
const map = new import_utils.AddressMap(
|
|
282
281
|
inUSD.map(({ token }, i) => [
|
|
283
282
|
token,
|
|
284
283
|
i === 0 ? this.#defaultNumSplits : 1n
|
|
@@ -19,14 +19,10 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
19
19
|
var helpers_exports = {};
|
|
20
20
|
__export(helpers_exports, {
|
|
21
21
|
assetsMap: () => assetsMap,
|
|
22
|
-
balancesMap: () => balancesMap,
|
|
23
22
|
limitLeftover: () => limitLeftover
|
|
24
23
|
});
|
|
25
24
|
module.exports = __toCommonJS(helpers_exports);
|
|
26
25
|
var import_utils = require("../utils/index.js");
|
|
27
|
-
function balancesMap(assets) {
|
|
28
|
-
return new import_utils.AddressMap(assets.map(({ token, balance }) => [token, balance]));
|
|
29
|
-
}
|
|
30
26
|
function assetsMap(assets) {
|
|
31
27
|
return new import_utils.AddressMap(assets.map((a) => [a.token, a]));
|
|
32
28
|
}
|
|
@@ -42,6 +38,5 @@ function limitLeftover(balance, token) {
|
|
|
42
38
|
// Annotate the CommonJS export names for ESM import in node:
|
|
43
39
|
0 && (module.exports = {
|
|
44
40
|
assetsMap,
|
|
45
|
-
balancesMap,
|
|
46
41
|
limitLeftover
|
|
47
42
|
});
|
|
@@ -136,6 +136,12 @@ class AddressMap {
|
|
|
136
136
|
keys() {
|
|
137
137
|
return Array.from(this.#map.keys());
|
|
138
138
|
}
|
|
139
|
+
/**
|
|
140
|
+
* Returns an unfrozen shallow copy of the map.
|
|
141
|
+
**/
|
|
142
|
+
clone() {
|
|
143
|
+
return new AddressMap(this.entries(), this.name);
|
|
144
|
+
}
|
|
139
145
|
/**
|
|
140
146
|
* Converts the map to a plain `Record<Address, T>` object.
|
|
141
147
|
**/
|
|
@@ -0,0 +1,61 @@
|
|
|
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 AssetsMap_exports = {};
|
|
20
|
+
__export(AssetsMap_exports, {
|
|
21
|
+
AssetsMap: () => AssetsMap
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(AssetsMap_exports);
|
|
24
|
+
var import_AddressMap = require("./AddressMap.js");
|
|
25
|
+
class AssetsMap extends import_AddressMap.AddressMap {
|
|
26
|
+
/**
|
|
27
|
+
* @param entries - Optional initial entries as `[address, balance]` tuples or {@link Asset} objects.
|
|
28
|
+
* @param name - Optional label used in error messages when a lookup fails.
|
|
29
|
+
*/
|
|
30
|
+
constructor(entries, name) {
|
|
31
|
+
super(
|
|
32
|
+
entries?.map((e) => Array.isArray(e) ? e : [e.token, e.balance]),
|
|
33
|
+
name
|
|
34
|
+
);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Adds `amount` to the token balance, treating a missing key as `0n`.
|
|
38
|
+
*/
|
|
39
|
+
inc(address, amount) {
|
|
40
|
+
this.upsert(address, (this.get(address) ?? 0n) + amount);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Subtracts `amount` from the token balance, treating a missing key as `0n`.
|
|
44
|
+
*/
|
|
45
|
+
dec(address, amount) {
|
|
46
|
+
this.inc(address, -amount);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Converts the map to an array of {@link Asset} objects.
|
|
50
|
+
*/
|
|
51
|
+
toAssets() {
|
|
52
|
+
return this.entries().map(([token, balance]) => ({ token, balance }));
|
|
53
|
+
}
|
|
54
|
+
clone() {
|
|
55
|
+
return new AssetsMap(this.entries(), this.name);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
59
|
+
0 && (module.exports = {
|
|
60
|
+
AssetsMap
|
|
61
|
+
});
|
|
@@ -17,6 +17,7 @@ var utils_exports = {};
|
|
|
17
17
|
module.exports = __toCommonJS(utils_exports);
|
|
18
18
|
__reExport(utils_exports, require("./AddressMap.js"), module.exports);
|
|
19
19
|
__reExport(utils_exports, require("./AddressSet.js"), module.exports);
|
|
20
|
+
__reExport(utils_exports, require("./AssetsMap.js"), module.exports);
|
|
20
21
|
__reExport(utils_exports, require("./abi-decode.js"), module.exports);
|
|
21
22
|
__reExport(utils_exports, require("./bytes32ToString.js"), module.exports);
|
|
22
23
|
__reExport(utils_exports, require("./childLogger.js"), module.exports);
|
|
@@ -36,6 +37,7 @@ __reExport(utils_exports, require("./zod.js"), module.exports);
|
|
|
36
37
|
0 && (module.exports = {
|
|
37
38
|
...require("./AddressMap.js"),
|
|
38
39
|
...require("./AddressSet.js"),
|
|
40
|
+
...require("./AssetsMap.js"),
|
|
39
41
|
...require("./abi-decode.js"),
|
|
40
42
|
...require("./bytes32ToString.js"),
|
|
41
43
|
...require("./childLogger.js"),
|
|
@@ -12,6 +12,7 @@ import {
|
|
|
12
12
|
ADDRESS_0X0,
|
|
13
13
|
AddressMap,
|
|
14
14
|
AddressSet,
|
|
15
|
+
AssetsMap,
|
|
15
16
|
childLogger,
|
|
16
17
|
MAX_UINT256,
|
|
17
18
|
PERCENTAGE_FACTOR,
|
|
@@ -373,7 +374,7 @@ class AccountOpener extends SDKConstruct {
|
|
|
373
374
|
}
|
|
374
375
|
async #depositIntoPools(targets) {
|
|
375
376
|
this.#logger?.debug("checking and topping up pools if necessary");
|
|
376
|
-
const minAvailableByPool =
|
|
377
|
+
const minAvailableByPool = new AssetsMap();
|
|
377
378
|
for (let i = 0; i < targets.length; i++) {
|
|
378
379
|
const t = targets[i];
|
|
379
380
|
const leverage = this.#getLeverage(t);
|
|
@@ -381,14 +382,14 @@ class AccountOpener extends SDKConstruct {
|
|
|
381
382
|
const minDebt = this.#minDebtMultiplier * cm.creditFacade.minDebt / PERCENTAGE_FACTOR;
|
|
382
383
|
let amount = minDebt * (leverage - PERCENTAGE_FACTOR) / PERCENTAGE_FACTOR * this.#poolDepositMultiplier / PERCENTAGE_FACTOR;
|
|
383
384
|
amount = amount > cm.creditFacade.maxDebt ? cm.creditFacade.maxDebt : amount;
|
|
384
|
-
minAvailableByPool
|
|
385
|
+
minAvailableByPool.inc(cm.pool, amount);
|
|
385
386
|
this.#logger?.debug(
|
|
386
387
|
`target #${i + 1} (${this.labelAddress(t.target)}) needs ${this.sdk.tokensMeta.formatBN(cm.underlying, amount, { symbol: true })} in pool (leverage: ${Number(leverage / PERCENTAGE_FACTOR)}%)`
|
|
387
388
|
);
|
|
388
389
|
}
|
|
389
390
|
const deposits = [];
|
|
390
|
-
const claims = new
|
|
391
|
-
for (const [p, minAvailable] of
|
|
391
|
+
const claims = new AssetsMap();
|
|
392
|
+
for (const [p, minAvailable] of minAvailableByPool.entries()) {
|
|
392
393
|
const market = this.sdk.marketRegister.findByPool(p);
|
|
393
394
|
const pool = market.pool.pool;
|
|
394
395
|
let diff = minAvailable - pool.availableLiquidity;
|
|
@@ -405,9 +406,7 @@ class AccountOpener extends SDKConstruct {
|
|
|
405
406
|
);
|
|
406
407
|
if (diff > 0n) {
|
|
407
408
|
deposits.push([pool, diff]);
|
|
408
|
-
|
|
409
|
-
claim += diff * PERCENTAGE_FACTOR / 8950n;
|
|
410
|
-
claims.upsert(pool.underlying, claim);
|
|
409
|
+
claims.inc(pool.underlying, diff * PERCENTAGE_FACTOR / 8950n);
|
|
411
410
|
}
|
|
412
411
|
}
|
|
413
412
|
const depositor = await this.#getDepositor();
|
|
@@ -564,18 +563,14 @@ class AccountOpener extends SDKConstruct {
|
|
|
564
563
|
async #prepareBorrower(targets) {
|
|
565
564
|
const borrower = await this.#getBorrower();
|
|
566
565
|
const degenNFTS = {};
|
|
567
|
-
const claims = new
|
|
566
|
+
const claims = new AssetsMap();
|
|
568
567
|
for (const target of targets) {
|
|
569
568
|
const cm = this.sdk.marketRegister.findCreditManager(
|
|
570
569
|
target.creditManager
|
|
571
570
|
);
|
|
572
|
-
const market = this.sdk.marketRegister.findByCreditManager(
|
|
573
|
-
target.creditManager
|
|
574
|
-
);
|
|
575
571
|
const { degenNFT } = cm.creditFacade;
|
|
576
572
|
const minDebt = this.#minDebtMultiplier * cm.creditFacade.minDebt / PERCENTAGE_FACTOR;
|
|
577
|
-
|
|
578
|
-
claims.upsert(cm.underlying, claim + minDebt * 11n / 10n);
|
|
573
|
+
claims.inc(cm.underlying, minDebt * 11n / 10n);
|
|
579
574
|
if (isAddress(degenNFT) && degenNFT !== ADDRESS_0X0) {
|
|
580
575
|
degenNFTS[degenNFT] = (degenNFTS[degenNFT] ?? 0) + 1;
|
|
581
576
|
}
|
|
@@ -45,6 +45,7 @@ function classifyMulticallOperations(input) {
|
|
|
45
45
|
label: call.label,
|
|
46
46
|
adapterFunctionName: call.functionName,
|
|
47
47
|
adapterArgs: call.rawArgs,
|
|
48
|
+
calldata: call.calldata,
|
|
48
49
|
protocol,
|
|
49
50
|
transfers: transfers2,
|
|
50
51
|
legacy
|
|
@@ -80,6 +81,7 @@ function classifyMulticallOperations(input) {
|
|
|
80
81
|
label: call.label,
|
|
81
82
|
adapterFunctionName: call.functionName,
|
|
82
83
|
adapterArgs: call.rawArgs,
|
|
84
|
+
calldata: call.calldata,
|
|
83
85
|
// Unknown adapter (non-strict): we have no ABI to decode the protocol
|
|
84
86
|
// call, so `protocol` is left absent rather than filled with placeholders.
|
|
85
87
|
protocol: void 0,
|
|
@@ -12,6 +12,13 @@ function mapInnerOperation(op, visitor, ctx) {
|
|
|
12
12
|
return visitor.WithdrawCollateral(op, ctx);
|
|
13
13
|
case "UpdateQuota":
|
|
14
14
|
return visitor.UpdateQuota(op, ctx);
|
|
15
|
+
// The history classifier never emits other InnerOperation variants
|
|
16
|
+
// (e.g. StoreExpectedBalances/CompareBalances, which it drops), so this
|
|
17
|
+
// guards against silently returning undefined if that ever changes.
|
|
18
|
+
default:
|
|
19
|
+
throw new Error(
|
|
20
|
+
`unexpected inner operation: ${op.operation}`
|
|
21
|
+
);
|
|
15
22
|
}
|
|
16
23
|
}
|
|
17
24
|
function mapOuterOperation(op, visitor) {
|