@gearbox-protocol/sdk 4.1.7 → 4.1.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 +9 -1
- package/dist/cjs/dev/index.js +3 -5
- package/dist/cjs/dev/ltUtils.js +200 -0
- package/dist/esm/dev/AccountOpener.js +9 -1
- package/dist/esm/dev/index.js +1 -2
- package/dist/esm/dev/ltUtils.js +178 -0
- package/dist/types/dev/index.d.ts +1 -2
- package/dist/types/dev/ltUtils.d.ts +11 -0
- package/package.json +1 -1
- package/dist/cjs/dev/setLTZero.js +0 -124
- package/dist/cjs/dev/setLTs.js +0 -73
- package/dist/esm/dev/setLTZero.js +0 -103
- package/dist/esm/dev/setLTs.js +0 -49
- package/dist/types/dev/setLTZero.d.ts +0 -5
- package/dist/types/dev/setLTs.d.ts +0 -14
|
@@ -512,7 +512,7 @@ class AccountOpener extends import_sdk.SDKConstruct {
|
|
|
512
512
|
});
|
|
513
513
|
return acc;
|
|
514
514
|
}
|
|
515
|
-
#getCollateralQuota(cm, collateral,
|
|
515
|
+
#getCollateralQuota(cm, collateral, collateralAmount, debt, logger) {
|
|
516
516
|
const {
|
|
517
517
|
underlying,
|
|
518
518
|
creditManager: { liquidationThresholds }
|
|
@@ -532,6 +532,10 @@ class AccountOpener extends import_sdk.SDKConstruct {
|
|
|
532
532
|
`quota exceeded for asset ${this.labelAddress(collateral)} in ${cm.name}`
|
|
533
533
|
);
|
|
534
534
|
}
|
|
535
|
+
const oracle = this.sdk.marketRegister.findByCreditManager(
|
|
536
|
+
cm.creditManager.address
|
|
537
|
+
).priceOracle;
|
|
538
|
+
const amount = oracle.convert(collateral, underlying, collateralAmount);
|
|
535
539
|
const desiredQuota = this.#calcQuota(amount, debt, collateralLT);
|
|
536
540
|
logger?.debug(
|
|
537
541
|
{
|
|
@@ -540,6 +544,10 @@ class AccountOpener extends import_sdk.SDKConstruct {
|
|
|
540
544
|
underlying,
|
|
541
545
|
availableQuota
|
|
542
546
|
),
|
|
547
|
+
collateralAmount: this.sdk.tokensMeta.formatBN(
|
|
548
|
+
collateral,
|
|
549
|
+
collateralAmount
|
|
550
|
+
),
|
|
543
551
|
amount: this.sdk.tokensMeta.formatBN(underlying, amount),
|
|
544
552
|
debt: this.sdk.tokensMeta.formatBN(underlying, debt),
|
|
545
553
|
lt: Number(collateralLT)
|
package/dist/cjs/dev/index.js
CHANGED
|
@@ -21,10 +21,9 @@ __reExport(dev_exports, require("./create2.js"), module.exports);
|
|
|
21
21
|
__reExport(dev_exports, require("./createAnvilClient.js"), module.exports);
|
|
22
22
|
__reExport(dev_exports, require("./createTransport.js"), module.exports);
|
|
23
23
|
__reExport(dev_exports, require("./detectChain.js"), module.exports);
|
|
24
|
+
__reExport(dev_exports, require("./ltUtils.js"), module.exports);
|
|
24
25
|
__reExport(dev_exports, require("./migrateFaucet.js"), module.exports);
|
|
25
26
|
__reExport(dev_exports, require("./PriceFeedStore.js"), module.exports);
|
|
26
|
-
__reExport(dev_exports, require("./setLTs.js"), module.exports);
|
|
27
|
-
__reExport(dev_exports, require("./setLTZero.js"), module.exports);
|
|
28
27
|
// Annotate the CommonJS export names for ESM import in node:
|
|
29
28
|
0 && (module.exports = {
|
|
30
29
|
...require("./AccountOpener.js"),
|
|
@@ -33,8 +32,7 @@ __reExport(dev_exports, require("./setLTZero.js"), module.exports);
|
|
|
33
32
|
...require("./createAnvilClient.js"),
|
|
34
33
|
...require("./createTransport.js"),
|
|
35
34
|
...require("./detectChain.js"),
|
|
35
|
+
...require("./ltUtils.js"),
|
|
36
36
|
...require("./migrateFaucet.js"),
|
|
37
|
-
...require("./PriceFeedStore.js")
|
|
38
|
-
...require("./setLTs.js"),
|
|
39
|
-
...require("./setLTZero.js")
|
|
37
|
+
...require("./PriceFeedStore.js")
|
|
40
38
|
});
|
|
@@ -0,0 +1,200 @@
|
|
|
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 ltUtils_exports = {};
|
|
20
|
+
__export(ltUtils_exports, {
|
|
21
|
+
setLTZero: () => setLTZero,
|
|
22
|
+
setLTs: () => setLTs
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(ltUtils_exports);
|
|
25
|
+
var import_viem = require("viem");
|
|
26
|
+
var import_v300 = require("../abi/v300.js");
|
|
27
|
+
var import_sdk = require("../sdk/index.js");
|
|
28
|
+
var import_abi = require("./abi.js");
|
|
29
|
+
async function setLTs(anvil, cm, newLTs, logger) {
|
|
30
|
+
const configuratorAddr = await impresonateCCOwner(anvil, cm);
|
|
31
|
+
for (const [t, lt] of Object.entries(newLTs)) {
|
|
32
|
+
await anvil.writeContract({
|
|
33
|
+
chain: anvil.chain,
|
|
34
|
+
address: cm.creditConfigurator.baseParams.addr,
|
|
35
|
+
account: configuratorAddr,
|
|
36
|
+
abi: import_v300.iCreditConfiguratorV300Abi,
|
|
37
|
+
functionName: "setLiquidationThreshold",
|
|
38
|
+
args: [t, lt]
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
await anvil.stopImpersonatingAccount({
|
|
42
|
+
address: configuratorAddr
|
|
43
|
+
});
|
|
44
|
+
await logLTs(anvil, cm, import_sdk.TypedObjectUtils.keys(newLTs), logger);
|
|
45
|
+
}
|
|
46
|
+
async function setLTZero(anvil, cm, logger) {
|
|
47
|
+
const v = Number(cm.creditConfigurator.baseParams.version);
|
|
48
|
+
if (v >= 300 && v < 310) {
|
|
49
|
+
await setLTZeroV300(anvil, cm, logger);
|
|
50
|
+
} else if (v >= 310 && v < 320) {
|
|
51
|
+
await setLTZeroV310(anvil, cm, logger);
|
|
52
|
+
} else {
|
|
53
|
+
throw new Error(
|
|
54
|
+
`zero LT is not implemented for credit configurator version: ${v}`
|
|
55
|
+
);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
async function setLTZeroV300(anvil, cm, logger) {
|
|
59
|
+
const ccAddr = cm.creditConfigurator.baseParams.addr;
|
|
60
|
+
const cmAddr = cm.creditManager.baseParams.addr;
|
|
61
|
+
const {
|
|
62
|
+
name,
|
|
63
|
+
underlying,
|
|
64
|
+
feeInterest,
|
|
65
|
+
liquidationDiscount,
|
|
66
|
+
feeLiquidation,
|
|
67
|
+
feeLiquidationExpired,
|
|
68
|
+
liquidationDiscountExpired
|
|
69
|
+
} = cm.creditManager;
|
|
70
|
+
const owner = await impresonateCCOwner(anvil, cm);
|
|
71
|
+
let hash = await anvil.writeContract({
|
|
72
|
+
chain: anvil.chain,
|
|
73
|
+
address: ccAddr,
|
|
74
|
+
account: owner,
|
|
75
|
+
abi: import_v300.iCreditConfiguratorV300Abi,
|
|
76
|
+
functionName: "setFees",
|
|
77
|
+
args: [
|
|
78
|
+
feeInterest,
|
|
79
|
+
liquidationDiscount - 1,
|
|
80
|
+
Number(import_sdk.PERCENTAGE_FACTOR) - liquidationDiscount,
|
|
81
|
+
feeLiquidationExpired,
|
|
82
|
+
liquidationDiscountExpired
|
|
83
|
+
]
|
|
84
|
+
});
|
|
85
|
+
await anvil.waitForTransactionReceipt({ hash });
|
|
86
|
+
logger?.debug(`[${name}] setFees part 2`);
|
|
87
|
+
hash = await anvil.writeContract({
|
|
88
|
+
chain: anvil.chain,
|
|
89
|
+
address: ccAddr,
|
|
90
|
+
account: owner,
|
|
91
|
+
abi: import_v300.iCreditConfiguratorV300Abi,
|
|
92
|
+
functionName: "setFees",
|
|
93
|
+
args: [
|
|
94
|
+
feeInterest,
|
|
95
|
+
feeLiquidation,
|
|
96
|
+
Number(import_sdk.PERCENTAGE_FACTOR) - liquidationDiscount,
|
|
97
|
+
feeLiquidationExpired,
|
|
98
|
+
liquidationDiscountExpired
|
|
99
|
+
]
|
|
100
|
+
});
|
|
101
|
+
await anvil.waitForTransactionReceipt({ hash });
|
|
102
|
+
logger?.debug(`[${name}] setFees done`);
|
|
103
|
+
await anvil.impersonateAccount({
|
|
104
|
+
address: ccAddr
|
|
105
|
+
});
|
|
106
|
+
await anvil.setBalance({
|
|
107
|
+
address: ccAddr,
|
|
108
|
+
value: (0, import_viem.parseEther)("100")
|
|
109
|
+
});
|
|
110
|
+
logger?.debug(`[${name}] impresonating creditConfigurator ${ccAddr}`);
|
|
111
|
+
logger?.debug(`[${name}] setting liquidation threshold`);
|
|
112
|
+
hash = await anvil.writeContract({
|
|
113
|
+
chain: anvil.chain,
|
|
114
|
+
address: cmAddr,
|
|
115
|
+
account: ccAddr,
|
|
116
|
+
abi: import_v300.iCreditManagerV300Abi,
|
|
117
|
+
functionName: "setCollateralTokenData",
|
|
118
|
+
args: [underlying, 1, 1, Number(2n ** 40n - 1n), 0]
|
|
119
|
+
});
|
|
120
|
+
await anvil.waitForTransactionReceipt({ hash });
|
|
121
|
+
logger?.debug(`[${name}] setting configurator ${ccAddr}`);
|
|
122
|
+
hash = await anvil.writeContract({
|
|
123
|
+
chain: anvil.chain,
|
|
124
|
+
address: cmAddr,
|
|
125
|
+
account: ccAddr,
|
|
126
|
+
abi: import_v300.iCreditManagerV300Abi,
|
|
127
|
+
functionName: "setCreditConfigurator",
|
|
128
|
+
args: [ccAddr]
|
|
129
|
+
});
|
|
130
|
+
await anvil.waitForTransactionReceipt({ hash });
|
|
131
|
+
logger?.debug(`[${name}] done`);
|
|
132
|
+
await anvil.stopImpersonatingAccount({
|
|
133
|
+
address: ccAddr
|
|
134
|
+
});
|
|
135
|
+
await anvil.stopImpersonatingAccount({ address: owner });
|
|
136
|
+
await logLTs(
|
|
137
|
+
anvil,
|
|
138
|
+
cm,
|
|
139
|
+
cm.creditManager.collateralTokens.map((c) => c.token),
|
|
140
|
+
logger
|
|
141
|
+
);
|
|
142
|
+
}
|
|
143
|
+
async function setLTZeroV310(anvil, cm, logger) {
|
|
144
|
+
const newLTs = {};
|
|
145
|
+
for (const { token } of cm.creditManager.collateralTokens) {
|
|
146
|
+
if (!(0, import_sdk.hexEq)(token, cm.creditManager.underlying)) {
|
|
147
|
+
newLTs[token] = 0;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
await setLTs(anvil, cm, newLTs, logger);
|
|
151
|
+
}
|
|
152
|
+
async function impresonateCCOwner(anvil, cm) {
|
|
153
|
+
const aclAddr = await anvil.readContract({
|
|
154
|
+
address: cm.creditConfigurator.baseParams.addr,
|
|
155
|
+
abi: import_abi.iaclTraitAbi,
|
|
156
|
+
functionName: "acl"
|
|
157
|
+
});
|
|
158
|
+
const owner = await anvil.readContract({
|
|
159
|
+
address: aclAddr,
|
|
160
|
+
abi: import_abi.iOwnableAbi,
|
|
161
|
+
functionName: "owner"
|
|
162
|
+
});
|
|
163
|
+
await anvil.impersonateAccount({
|
|
164
|
+
address: owner
|
|
165
|
+
});
|
|
166
|
+
await anvil.setBalance({
|
|
167
|
+
address: owner,
|
|
168
|
+
value: (0, import_viem.parseEther)("100")
|
|
169
|
+
});
|
|
170
|
+
return owner;
|
|
171
|
+
}
|
|
172
|
+
async function logLTs(anvil, cm, tokens, logger) {
|
|
173
|
+
const resp = await anvil.multicall({
|
|
174
|
+
allowFailure: true,
|
|
175
|
+
contracts: tokens.flatMap((t) => [
|
|
176
|
+
{
|
|
177
|
+
abi: import_v300.iCreditManagerV300Abi,
|
|
178
|
+
functionName: "liquidationThresholds",
|
|
179
|
+
address: cm.creditManager.baseParams.addr,
|
|
180
|
+
args: [t]
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
abi: import_viem.erc20Abi,
|
|
184
|
+
functionName: "symbol",
|
|
185
|
+
address: t,
|
|
186
|
+
args: []
|
|
187
|
+
}
|
|
188
|
+
])
|
|
189
|
+
});
|
|
190
|
+
for (let i = 0; i < tokens.length; i++) {
|
|
191
|
+
const lt = resp[i * 2]?.result ?? "error";
|
|
192
|
+
const symbol = resp[i * 2 + 1]?.result ?? tokens[i];
|
|
193
|
+
logger?.debug(`new LT for ${symbol}: ${lt}`);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
197
|
+
0 && (module.exports = {
|
|
198
|
+
setLTZero,
|
|
199
|
+
setLTs
|
|
200
|
+
});
|
|
@@ -498,7 +498,7 @@ class AccountOpener extends SDKConstruct {
|
|
|
498
498
|
});
|
|
499
499
|
return acc;
|
|
500
500
|
}
|
|
501
|
-
#getCollateralQuota(cm, collateral,
|
|
501
|
+
#getCollateralQuota(cm, collateral, collateralAmount, debt, logger) {
|
|
502
502
|
const {
|
|
503
503
|
underlying,
|
|
504
504
|
creditManager: { liquidationThresholds }
|
|
@@ -518,6 +518,10 @@ class AccountOpener extends SDKConstruct {
|
|
|
518
518
|
`quota exceeded for asset ${this.labelAddress(collateral)} in ${cm.name}`
|
|
519
519
|
);
|
|
520
520
|
}
|
|
521
|
+
const oracle = this.sdk.marketRegister.findByCreditManager(
|
|
522
|
+
cm.creditManager.address
|
|
523
|
+
).priceOracle;
|
|
524
|
+
const amount = oracle.convert(collateral, underlying, collateralAmount);
|
|
521
525
|
const desiredQuota = this.#calcQuota(amount, debt, collateralLT);
|
|
522
526
|
logger?.debug(
|
|
523
527
|
{
|
|
@@ -526,6 +530,10 @@ class AccountOpener extends SDKConstruct {
|
|
|
526
530
|
underlying,
|
|
527
531
|
availableQuota
|
|
528
532
|
),
|
|
533
|
+
collateralAmount: this.sdk.tokensMeta.formatBN(
|
|
534
|
+
collateral,
|
|
535
|
+
collateralAmount
|
|
536
|
+
),
|
|
529
537
|
amount: this.sdk.tokensMeta.formatBN(underlying, amount),
|
|
530
538
|
debt: this.sdk.tokensMeta.formatBN(underlying, debt),
|
|
531
539
|
lt: Number(collateralLT)
|
package/dist/esm/dev/index.js
CHANGED
|
@@ -4,7 +4,6 @@ export * from "./create2.js";
|
|
|
4
4
|
export * from "./createAnvilClient.js";
|
|
5
5
|
export * from "./createTransport.js";
|
|
6
6
|
export * from "./detectChain.js";
|
|
7
|
+
export * from "./ltUtils.js";
|
|
7
8
|
export * from "./migrateFaucet.js";
|
|
8
9
|
export * from "./PriceFeedStore.js";
|
|
9
|
-
export * from "./setLTs.js";
|
|
10
|
-
export * from "./setLTZero.js";
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import { erc20Abi, parseEther } from "viem";
|
|
2
|
+
import {
|
|
3
|
+
iCreditConfiguratorV300Abi,
|
|
4
|
+
iCreditManagerV300Abi
|
|
5
|
+
} from "../abi/v300.js";
|
|
6
|
+
import { hexEq, PERCENTAGE_FACTOR, TypedObjectUtils } from "../sdk/index.js";
|
|
7
|
+
import { iaclTraitAbi, iOwnableAbi } from "./abi.js";
|
|
8
|
+
async function setLTs(anvil, cm, newLTs, logger) {
|
|
9
|
+
const configuratorAddr = await impresonateCCOwner(anvil, cm);
|
|
10
|
+
for (const [t, lt] of Object.entries(newLTs)) {
|
|
11
|
+
await anvil.writeContract({
|
|
12
|
+
chain: anvil.chain,
|
|
13
|
+
address: cm.creditConfigurator.baseParams.addr,
|
|
14
|
+
account: configuratorAddr,
|
|
15
|
+
abi: iCreditConfiguratorV300Abi,
|
|
16
|
+
functionName: "setLiquidationThreshold",
|
|
17
|
+
args: [t, lt]
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
await anvil.stopImpersonatingAccount({
|
|
21
|
+
address: configuratorAddr
|
|
22
|
+
});
|
|
23
|
+
await logLTs(anvil, cm, TypedObjectUtils.keys(newLTs), logger);
|
|
24
|
+
}
|
|
25
|
+
async function setLTZero(anvil, cm, logger) {
|
|
26
|
+
const v = Number(cm.creditConfigurator.baseParams.version);
|
|
27
|
+
if (v >= 300 && v < 310) {
|
|
28
|
+
await setLTZeroV300(anvil, cm, logger);
|
|
29
|
+
} else if (v >= 310 && v < 320) {
|
|
30
|
+
await setLTZeroV310(anvil, cm, logger);
|
|
31
|
+
} else {
|
|
32
|
+
throw new Error(
|
|
33
|
+
`zero LT is not implemented for credit configurator version: ${v}`
|
|
34
|
+
);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
async function setLTZeroV300(anvil, cm, logger) {
|
|
38
|
+
const ccAddr = cm.creditConfigurator.baseParams.addr;
|
|
39
|
+
const cmAddr = cm.creditManager.baseParams.addr;
|
|
40
|
+
const {
|
|
41
|
+
name,
|
|
42
|
+
underlying,
|
|
43
|
+
feeInterest,
|
|
44
|
+
liquidationDiscount,
|
|
45
|
+
feeLiquidation,
|
|
46
|
+
feeLiquidationExpired,
|
|
47
|
+
liquidationDiscountExpired
|
|
48
|
+
} = cm.creditManager;
|
|
49
|
+
const owner = await impresonateCCOwner(anvil, cm);
|
|
50
|
+
let hash = await anvil.writeContract({
|
|
51
|
+
chain: anvil.chain,
|
|
52
|
+
address: ccAddr,
|
|
53
|
+
account: owner,
|
|
54
|
+
abi: iCreditConfiguratorV300Abi,
|
|
55
|
+
functionName: "setFees",
|
|
56
|
+
args: [
|
|
57
|
+
feeInterest,
|
|
58
|
+
liquidationDiscount - 1,
|
|
59
|
+
Number(PERCENTAGE_FACTOR) - liquidationDiscount,
|
|
60
|
+
feeLiquidationExpired,
|
|
61
|
+
liquidationDiscountExpired
|
|
62
|
+
]
|
|
63
|
+
});
|
|
64
|
+
await anvil.waitForTransactionReceipt({ hash });
|
|
65
|
+
logger?.debug(`[${name}] setFees part 2`);
|
|
66
|
+
hash = await anvil.writeContract({
|
|
67
|
+
chain: anvil.chain,
|
|
68
|
+
address: ccAddr,
|
|
69
|
+
account: owner,
|
|
70
|
+
abi: iCreditConfiguratorV300Abi,
|
|
71
|
+
functionName: "setFees",
|
|
72
|
+
args: [
|
|
73
|
+
feeInterest,
|
|
74
|
+
feeLiquidation,
|
|
75
|
+
Number(PERCENTAGE_FACTOR) - liquidationDiscount,
|
|
76
|
+
feeLiquidationExpired,
|
|
77
|
+
liquidationDiscountExpired
|
|
78
|
+
]
|
|
79
|
+
});
|
|
80
|
+
await anvil.waitForTransactionReceipt({ hash });
|
|
81
|
+
logger?.debug(`[${name}] setFees done`);
|
|
82
|
+
await anvil.impersonateAccount({
|
|
83
|
+
address: ccAddr
|
|
84
|
+
});
|
|
85
|
+
await anvil.setBalance({
|
|
86
|
+
address: ccAddr,
|
|
87
|
+
value: parseEther("100")
|
|
88
|
+
});
|
|
89
|
+
logger?.debug(`[${name}] impresonating creditConfigurator ${ccAddr}`);
|
|
90
|
+
logger?.debug(`[${name}] setting liquidation threshold`);
|
|
91
|
+
hash = await anvil.writeContract({
|
|
92
|
+
chain: anvil.chain,
|
|
93
|
+
address: cmAddr,
|
|
94
|
+
account: ccAddr,
|
|
95
|
+
abi: iCreditManagerV300Abi,
|
|
96
|
+
functionName: "setCollateralTokenData",
|
|
97
|
+
args: [underlying, 1, 1, Number(2n ** 40n - 1n), 0]
|
|
98
|
+
});
|
|
99
|
+
await anvil.waitForTransactionReceipt({ hash });
|
|
100
|
+
logger?.debug(`[${name}] setting configurator ${ccAddr}`);
|
|
101
|
+
hash = await anvil.writeContract({
|
|
102
|
+
chain: anvil.chain,
|
|
103
|
+
address: cmAddr,
|
|
104
|
+
account: ccAddr,
|
|
105
|
+
abi: iCreditManagerV300Abi,
|
|
106
|
+
functionName: "setCreditConfigurator",
|
|
107
|
+
args: [ccAddr]
|
|
108
|
+
});
|
|
109
|
+
await anvil.waitForTransactionReceipt({ hash });
|
|
110
|
+
logger?.debug(`[${name}] done`);
|
|
111
|
+
await anvil.stopImpersonatingAccount({
|
|
112
|
+
address: ccAddr
|
|
113
|
+
});
|
|
114
|
+
await anvil.stopImpersonatingAccount({ address: owner });
|
|
115
|
+
await logLTs(
|
|
116
|
+
anvil,
|
|
117
|
+
cm,
|
|
118
|
+
cm.creditManager.collateralTokens.map((c) => c.token),
|
|
119
|
+
logger
|
|
120
|
+
);
|
|
121
|
+
}
|
|
122
|
+
async function setLTZeroV310(anvil, cm, logger) {
|
|
123
|
+
const newLTs = {};
|
|
124
|
+
for (const { token } of cm.creditManager.collateralTokens) {
|
|
125
|
+
if (!hexEq(token, cm.creditManager.underlying)) {
|
|
126
|
+
newLTs[token] = 0;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
await setLTs(anvil, cm, newLTs, logger);
|
|
130
|
+
}
|
|
131
|
+
async function impresonateCCOwner(anvil, cm) {
|
|
132
|
+
const aclAddr = await anvil.readContract({
|
|
133
|
+
address: cm.creditConfigurator.baseParams.addr,
|
|
134
|
+
abi: iaclTraitAbi,
|
|
135
|
+
functionName: "acl"
|
|
136
|
+
});
|
|
137
|
+
const owner = await anvil.readContract({
|
|
138
|
+
address: aclAddr,
|
|
139
|
+
abi: iOwnableAbi,
|
|
140
|
+
functionName: "owner"
|
|
141
|
+
});
|
|
142
|
+
await anvil.impersonateAccount({
|
|
143
|
+
address: owner
|
|
144
|
+
});
|
|
145
|
+
await anvil.setBalance({
|
|
146
|
+
address: owner,
|
|
147
|
+
value: parseEther("100")
|
|
148
|
+
});
|
|
149
|
+
return owner;
|
|
150
|
+
}
|
|
151
|
+
async function logLTs(anvil, cm, tokens, logger) {
|
|
152
|
+
const resp = await anvil.multicall({
|
|
153
|
+
allowFailure: true,
|
|
154
|
+
contracts: tokens.flatMap((t) => [
|
|
155
|
+
{
|
|
156
|
+
abi: iCreditManagerV300Abi,
|
|
157
|
+
functionName: "liquidationThresholds",
|
|
158
|
+
address: cm.creditManager.baseParams.addr,
|
|
159
|
+
args: [t]
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
abi: erc20Abi,
|
|
163
|
+
functionName: "symbol",
|
|
164
|
+
address: t,
|
|
165
|
+
args: []
|
|
166
|
+
}
|
|
167
|
+
])
|
|
168
|
+
});
|
|
169
|
+
for (let i = 0; i < tokens.length; i++) {
|
|
170
|
+
const lt = resp[i * 2]?.result ?? "error";
|
|
171
|
+
const symbol = resp[i * 2 + 1]?.result ?? tokens[i];
|
|
172
|
+
logger?.debug(`new LT for ${symbol}: ${lt}`);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
export {
|
|
176
|
+
setLTZero,
|
|
177
|
+
setLTs
|
|
178
|
+
};
|
|
@@ -4,7 +4,6 @@ export * from "./create2.js";
|
|
|
4
4
|
export * from "./createAnvilClient.js";
|
|
5
5
|
export * from "./createTransport.js";
|
|
6
6
|
export * from "./detectChain.js";
|
|
7
|
+
export * from "./ltUtils.js";
|
|
7
8
|
export * from "./migrateFaucet.js";
|
|
8
9
|
export * from "./PriceFeedStore.js";
|
|
9
|
-
export * from "./setLTs.js";
|
|
10
|
-
export * from "./setLTZero.js";
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Address } from "viem";
|
|
2
|
+
import type { CreditSuiteState, ILogger } from "../sdk/index.js";
|
|
3
|
+
import type { AnvilClient } from "./createAnvilClient.js";
|
|
4
|
+
/**
|
|
5
|
+
* Helper function to set liquidation thresholds on credit manager via anvil impersonation
|
|
6
|
+
* @param sdk
|
|
7
|
+
* @param cm
|
|
8
|
+
* @param newLTs
|
|
9
|
+
*/
|
|
10
|
+
export declare function setLTs(anvil: AnvilClient, cm: CreditSuiteState, newLTs: Record<Address, number>, logger?: ILogger): Promise<void>;
|
|
11
|
+
export declare function setLTZero(anvil: AnvilClient, cm: CreditSuiteState, logger?: ILogger): Promise<void>;
|
package/package.json
CHANGED
|
@@ -1,124 +0,0 @@
|
|
|
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 setLTZero_exports = {};
|
|
20
|
-
__export(setLTZero_exports, {
|
|
21
|
-
setLTZero: () => setLTZero
|
|
22
|
-
});
|
|
23
|
-
module.exports = __toCommonJS(setLTZero_exports);
|
|
24
|
-
var import_viem = require("viem");
|
|
25
|
-
var import_v300 = require("../abi/v300.js");
|
|
26
|
-
var import_sdk = require("../sdk/index.js");
|
|
27
|
-
var import_abi = require("./abi.js");
|
|
28
|
-
async function setLTZero(anvil, cm, logger) {
|
|
29
|
-
const aclAddr = await anvil.readContract({
|
|
30
|
-
address: cm.creditConfigurator,
|
|
31
|
-
abi: import_abi.iaclTraitAbi,
|
|
32
|
-
functionName: "acl"
|
|
33
|
-
});
|
|
34
|
-
const configuratorAddr = await anvil.readContract({
|
|
35
|
-
address: aclAddr,
|
|
36
|
-
abi: import_abi.iOwnableAbi,
|
|
37
|
-
functionName: "owner"
|
|
38
|
-
});
|
|
39
|
-
await anvil.impersonateAccount({
|
|
40
|
-
address: configuratorAddr
|
|
41
|
-
});
|
|
42
|
-
await anvil.setBalance({
|
|
43
|
-
address: configuratorAddr,
|
|
44
|
-
value: (0, import_viem.parseEther)("100")
|
|
45
|
-
});
|
|
46
|
-
let hash = await anvil.writeContract({
|
|
47
|
-
chain: anvil.chain,
|
|
48
|
-
address: cm.creditConfigurator,
|
|
49
|
-
account: configuratorAddr,
|
|
50
|
-
abi: import_v300.iCreditConfiguratorV300Abi,
|
|
51
|
-
functionName: "setFees",
|
|
52
|
-
args: [
|
|
53
|
-
cm.feeInterest,
|
|
54
|
-
cm.liquidationDiscount - 1,
|
|
55
|
-
Number(import_sdk.PERCENTAGE_FACTOR) - cm.liquidationDiscount,
|
|
56
|
-
cm.feeLiquidationExpired,
|
|
57
|
-
cm.liquidationDiscountExpired
|
|
58
|
-
]
|
|
59
|
-
});
|
|
60
|
-
await anvil.waitForTransactionReceipt({ hash });
|
|
61
|
-
logger?.debug(`[${cm.name}] setFees part 2`);
|
|
62
|
-
hash = await anvil.writeContract({
|
|
63
|
-
chain: anvil.chain,
|
|
64
|
-
address: cm.creditConfigurator,
|
|
65
|
-
account: configuratorAddr,
|
|
66
|
-
abi: import_v300.iCreditConfiguratorV300Abi,
|
|
67
|
-
functionName: "setFees",
|
|
68
|
-
args: [
|
|
69
|
-
cm.feeInterest,
|
|
70
|
-
cm.feeLiquidation,
|
|
71
|
-
Number(import_sdk.PERCENTAGE_FACTOR) - cm.liquidationDiscount,
|
|
72
|
-
cm.feeLiquidationExpired,
|
|
73
|
-
cm.liquidationDiscountExpired
|
|
74
|
-
]
|
|
75
|
-
});
|
|
76
|
-
await anvil.waitForTransactionReceipt({ hash });
|
|
77
|
-
logger?.debug(`[${cm.name}] setFees done`);
|
|
78
|
-
await anvil.impersonateAccount({
|
|
79
|
-
address: cm.creditConfigurator
|
|
80
|
-
});
|
|
81
|
-
await anvil.setBalance({
|
|
82
|
-
address: cm.creditConfigurator,
|
|
83
|
-
value: (0, import_viem.parseEther)("100")
|
|
84
|
-
});
|
|
85
|
-
logger?.debug(
|
|
86
|
-
`[${cm.name}] impresonating creditConfigurator ${cm.creditConfigurator}`
|
|
87
|
-
);
|
|
88
|
-
logger?.debug(`[${cm.name}] setting liquidation threshold`);
|
|
89
|
-
hash = await anvil.writeContract({
|
|
90
|
-
chain: anvil.chain,
|
|
91
|
-
address: cm.baseParams.addr,
|
|
92
|
-
account: cm.creditConfigurator,
|
|
93
|
-
abi: import_v300.iCreditManagerV300Abi,
|
|
94
|
-
functionName: "setCollateralTokenData",
|
|
95
|
-
args: [cm.underlying, 1, 1, Number(2n ** 40n - 1n), 0]
|
|
96
|
-
});
|
|
97
|
-
await anvil.waitForTransactionReceipt({ hash });
|
|
98
|
-
logger?.debug(`[${cm.name}] setting configurator ${cm.creditConfigurator}`);
|
|
99
|
-
hash = await anvil.writeContract({
|
|
100
|
-
chain: anvil.chain,
|
|
101
|
-
address: cm.baseParams.addr,
|
|
102
|
-
account: cm.creditConfigurator,
|
|
103
|
-
abi: import_v300.iCreditManagerV300Abi,
|
|
104
|
-
functionName: "setCreditConfigurator",
|
|
105
|
-
args: [cm.creditConfigurator]
|
|
106
|
-
});
|
|
107
|
-
await anvil.waitForTransactionReceipt({ hash });
|
|
108
|
-
logger?.debug(`[${cm.name}] done`);
|
|
109
|
-
await anvil.stopImpersonatingAccount({
|
|
110
|
-
address: cm.creditConfigurator
|
|
111
|
-
});
|
|
112
|
-
await anvil.stopImpersonatingAccount({ address: configuratorAddr });
|
|
113
|
-
const lt = await anvil.readContract({
|
|
114
|
-
address: cm.baseParams.addr,
|
|
115
|
-
abi: import_v300.iCreditManagerV300Abi,
|
|
116
|
-
functionName: "liquidationThresholds",
|
|
117
|
-
args: [cm.underlying]
|
|
118
|
-
});
|
|
119
|
-
logger?.debug(`[${cm.name}] underlying lt: ${lt}`);
|
|
120
|
-
}
|
|
121
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
122
|
-
0 && (module.exports = {
|
|
123
|
-
setLTZero
|
|
124
|
-
});
|
package/dist/cjs/dev/setLTs.js
DELETED
|
@@ -1,73 +0,0 @@
|
|
|
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 setLTs_exports = {};
|
|
20
|
-
__export(setLTs_exports, {
|
|
21
|
-
setLTs: () => setLTs
|
|
22
|
-
});
|
|
23
|
-
module.exports = __toCommonJS(setLTs_exports);
|
|
24
|
-
var import_viem = require("viem");
|
|
25
|
-
var import_v300 = require("../abi/v300.js");
|
|
26
|
-
var import_v310 = require("../abi/v310.js");
|
|
27
|
-
var import_abi = require("./abi.js");
|
|
28
|
-
async function setLTs(anvil, cm, newLTs, logger) {
|
|
29
|
-
const aclAddr = await anvil.readContract({
|
|
30
|
-
address: cm.creditConfigurator,
|
|
31
|
-
abi: import_abi.iaclTraitAbi,
|
|
32
|
-
functionName: "acl"
|
|
33
|
-
});
|
|
34
|
-
const configuratorAddr = await anvil.readContract({
|
|
35
|
-
address: aclAddr,
|
|
36
|
-
abi: import_abi.iOwnableAbi,
|
|
37
|
-
functionName: "owner"
|
|
38
|
-
});
|
|
39
|
-
await anvil.impersonateAccount({
|
|
40
|
-
address: configuratorAddr
|
|
41
|
-
});
|
|
42
|
-
await anvil.setBalance({
|
|
43
|
-
address: configuratorAddr,
|
|
44
|
-
value: (0, import_viem.parseEther)("100")
|
|
45
|
-
});
|
|
46
|
-
for (const [t, lt] of Object.entries(newLTs)) {
|
|
47
|
-
try {
|
|
48
|
-
await anvil.writeContract({
|
|
49
|
-
chain: anvil.chain,
|
|
50
|
-
address: cm.creditConfigurator,
|
|
51
|
-
account: configuratorAddr,
|
|
52
|
-
abi: import_v300.iCreditConfiguratorV300Abi,
|
|
53
|
-
functionName: "setLiquidationThreshold",
|
|
54
|
-
args: [t, lt]
|
|
55
|
-
});
|
|
56
|
-
const newLT = await anvil.readContract({
|
|
57
|
-
address: cm.address,
|
|
58
|
-
abi: import_v310.iCreditManagerV310Abi,
|
|
59
|
-
functionName: "liquidationThresholds",
|
|
60
|
-
args: [t]
|
|
61
|
-
});
|
|
62
|
-
logger?.debug(`set ${t} LT to ${newLT}`);
|
|
63
|
-
} catch {
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
await anvil.stopImpersonatingAccount({
|
|
67
|
-
address: configuratorAddr
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
71
|
-
0 && (module.exports = {
|
|
72
|
-
setLTs
|
|
73
|
-
});
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
import { parseEther } from "viem";
|
|
2
|
-
import {
|
|
3
|
-
iCreditConfiguratorV300Abi,
|
|
4
|
-
iCreditManagerV300Abi
|
|
5
|
-
} from "../abi/v300.js";
|
|
6
|
-
import { PERCENTAGE_FACTOR } from "../sdk/index.js";
|
|
7
|
-
import { iaclTraitAbi, iOwnableAbi } from "./abi.js";
|
|
8
|
-
async function setLTZero(anvil, cm, logger) {
|
|
9
|
-
const aclAddr = await anvil.readContract({
|
|
10
|
-
address: cm.creditConfigurator,
|
|
11
|
-
abi: iaclTraitAbi,
|
|
12
|
-
functionName: "acl"
|
|
13
|
-
});
|
|
14
|
-
const configuratorAddr = await anvil.readContract({
|
|
15
|
-
address: aclAddr,
|
|
16
|
-
abi: iOwnableAbi,
|
|
17
|
-
functionName: "owner"
|
|
18
|
-
});
|
|
19
|
-
await anvil.impersonateAccount({
|
|
20
|
-
address: configuratorAddr
|
|
21
|
-
});
|
|
22
|
-
await anvil.setBalance({
|
|
23
|
-
address: configuratorAddr,
|
|
24
|
-
value: parseEther("100")
|
|
25
|
-
});
|
|
26
|
-
let hash = await anvil.writeContract({
|
|
27
|
-
chain: anvil.chain,
|
|
28
|
-
address: cm.creditConfigurator,
|
|
29
|
-
account: configuratorAddr,
|
|
30
|
-
abi: iCreditConfiguratorV300Abi,
|
|
31
|
-
functionName: "setFees",
|
|
32
|
-
args: [
|
|
33
|
-
cm.feeInterest,
|
|
34
|
-
cm.liquidationDiscount - 1,
|
|
35
|
-
Number(PERCENTAGE_FACTOR) - cm.liquidationDiscount,
|
|
36
|
-
cm.feeLiquidationExpired,
|
|
37
|
-
cm.liquidationDiscountExpired
|
|
38
|
-
]
|
|
39
|
-
});
|
|
40
|
-
await anvil.waitForTransactionReceipt({ hash });
|
|
41
|
-
logger?.debug(`[${cm.name}] setFees part 2`);
|
|
42
|
-
hash = await anvil.writeContract({
|
|
43
|
-
chain: anvil.chain,
|
|
44
|
-
address: cm.creditConfigurator,
|
|
45
|
-
account: configuratorAddr,
|
|
46
|
-
abi: iCreditConfiguratorV300Abi,
|
|
47
|
-
functionName: "setFees",
|
|
48
|
-
args: [
|
|
49
|
-
cm.feeInterest,
|
|
50
|
-
cm.feeLiquidation,
|
|
51
|
-
Number(PERCENTAGE_FACTOR) - cm.liquidationDiscount,
|
|
52
|
-
cm.feeLiquidationExpired,
|
|
53
|
-
cm.liquidationDiscountExpired
|
|
54
|
-
]
|
|
55
|
-
});
|
|
56
|
-
await anvil.waitForTransactionReceipt({ hash });
|
|
57
|
-
logger?.debug(`[${cm.name}] setFees done`);
|
|
58
|
-
await anvil.impersonateAccount({
|
|
59
|
-
address: cm.creditConfigurator
|
|
60
|
-
});
|
|
61
|
-
await anvil.setBalance({
|
|
62
|
-
address: cm.creditConfigurator,
|
|
63
|
-
value: parseEther("100")
|
|
64
|
-
});
|
|
65
|
-
logger?.debug(
|
|
66
|
-
`[${cm.name}] impresonating creditConfigurator ${cm.creditConfigurator}`
|
|
67
|
-
);
|
|
68
|
-
logger?.debug(`[${cm.name}] setting liquidation threshold`);
|
|
69
|
-
hash = await anvil.writeContract({
|
|
70
|
-
chain: anvil.chain,
|
|
71
|
-
address: cm.baseParams.addr,
|
|
72
|
-
account: cm.creditConfigurator,
|
|
73
|
-
abi: iCreditManagerV300Abi,
|
|
74
|
-
functionName: "setCollateralTokenData",
|
|
75
|
-
args: [cm.underlying, 1, 1, Number(2n ** 40n - 1n), 0]
|
|
76
|
-
});
|
|
77
|
-
await anvil.waitForTransactionReceipt({ hash });
|
|
78
|
-
logger?.debug(`[${cm.name}] setting configurator ${cm.creditConfigurator}`);
|
|
79
|
-
hash = await anvil.writeContract({
|
|
80
|
-
chain: anvil.chain,
|
|
81
|
-
address: cm.baseParams.addr,
|
|
82
|
-
account: cm.creditConfigurator,
|
|
83
|
-
abi: iCreditManagerV300Abi,
|
|
84
|
-
functionName: "setCreditConfigurator",
|
|
85
|
-
args: [cm.creditConfigurator]
|
|
86
|
-
});
|
|
87
|
-
await anvil.waitForTransactionReceipt({ hash });
|
|
88
|
-
logger?.debug(`[${cm.name}] done`);
|
|
89
|
-
await anvil.stopImpersonatingAccount({
|
|
90
|
-
address: cm.creditConfigurator
|
|
91
|
-
});
|
|
92
|
-
await anvil.stopImpersonatingAccount({ address: configuratorAddr });
|
|
93
|
-
const lt = await anvil.readContract({
|
|
94
|
-
address: cm.baseParams.addr,
|
|
95
|
-
abi: iCreditManagerV300Abi,
|
|
96
|
-
functionName: "liquidationThresholds",
|
|
97
|
-
args: [cm.underlying]
|
|
98
|
-
});
|
|
99
|
-
logger?.debug(`[${cm.name}] underlying lt: ${lt}`);
|
|
100
|
-
}
|
|
101
|
-
export {
|
|
102
|
-
setLTZero
|
|
103
|
-
};
|
package/dist/esm/dev/setLTs.js
DELETED
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { parseEther } from "viem";
|
|
2
|
-
import { iCreditConfiguratorV300Abi } from "../abi/v300.js";
|
|
3
|
-
import { iCreditManagerV310Abi } from "../abi/v310.js";
|
|
4
|
-
import { iaclTraitAbi, iOwnableAbi } from "./abi.js";
|
|
5
|
-
async function setLTs(anvil, cm, newLTs, logger) {
|
|
6
|
-
const aclAddr = await anvil.readContract({
|
|
7
|
-
address: cm.creditConfigurator,
|
|
8
|
-
abi: iaclTraitAbi,
|
|
9
|
-
functionName: "acl"
|
|
10
|
-
});
|
|
11
|
-
const configuratorAddr = await anvil.readContract({
|
|
12
|
-
address: aclAddr,
|
|
13
|
-
abi: iOwnableAbi,
|
|
14
|
-
functionName: "owner"
|
|
15
|
-
});
|
|
16
|
-
await anvil.impersonateAccount({
|
|
17
|
-
address: configuratorAddr
|
|
18
|
-
});
|
|
19
|
-
await anvil.setBalance({
|
|
20
|
-
address: configuratorAddr,
|
|
21
|
-
value: parseEther("100")
|
|
22
|
-
});
|
|
23
|
-
for (const [t, lt] of Object.entries(newLTs)) {
|
|
24
|
-
try {
|
|
25
|
-
await anvil.writeContract({
|
|
26
|
-
chain: anvil.chain,
|
|
27
|
-
address: cm.creditConfigurator,
|
|
28
|
-
account: configuratorAddr,
|
|
29
|
-
abi: iCreditConfiguratorV300Abi,
|
|
30
|
-
functionName: "setLiquidationThreshold",
|
|
31
|
-
args: [t, lt]
|
|
32
|
-
});
|
|
33
|
-
const newLT = await anvil.readContract({
|
|
34
|
-
address: cm.address,
|
|
35
|
-
abi: iCreditManagerV310Abi,
|
|
36
|
-
functionName: "liquidationThresholds",
|
|
37
|
-
args: [t]
|
|
38
|
-
});
|
|
39
|
-
logger?.debug(`set ${t} LT to ${newLT}`);
|
|
40
|
-
} catch {
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
await anvil.stopImpersonatingAccount({
|
|
44
|
-
address: configuratorAddr
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
export {
|
|
48
|
-
setLTs
|
|
49
|
-
};
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import type { CreditManagerState, ILogger } from "../sdk/index.js";
|
|
2
|
-
import type { AnvilClient } from "./createAnvilClient.js";
|
|
3
|
-
type ZeroLTCMSlice = Pick<CreditManagerState, "creditConfigurator" | "feeInterest" | "liquidationDiscount" | "feeLiquidationExpired" | "liquidationDiscountExpired" | "feeLiquidation" | "name" | "underlying" | "baseParams">;
|
|
4
|
-
export declare function setLTZero(anvil: AnvilClient, cm: ZeroLTCMSlice, logger?: ILogger): Promise<void>;
|
|
5
|
-
export {};
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import type { Address } from "viem";
|
|
2
|
-
import type { ILogger } from "../sdk/index.js";
|
|
3
|
-
import type { AnvilClient } from "./createAnvilClient.js";
|
|
4
|
-
export interface SetLTsCMSlice {
|
|
5
|
-
creditConfigurator: Address;
|
|
6
|
-
address: Address;
|
|
7
|
-
}
|
|
8
|
-
/**
|
|
9
|
-
* Helper function to set liquidation thresholds on credit manager via anvil impersonation
|
|
10
|
-
* @param sdk
|
|
11
|
-
* @param cm
|
|
12
|
-
* @param newLTs
|
|
13
|
-
*/
|
|
14
|
-
export declare function setLTs(anvil: AnvilClient, cm: SetLTsCMSlice, newLTs: Record<Address, number>, logger?: ILogger): Promise<void>;
|