@gearbox-protocol/deploy-tools 5.3.27 → 5.3.29
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/index.mjs +121 -39
- package/package.json +2 -2
package/dist/index.mjs
CHANGED
|
@@ -376023,7 +376023,7 @@ var PoolQuotaKeeperContract = class extends BaseContract {
|
|
|
376023
376023
|
}
|
|
376024
376024
|
}
|
|
376025
376025
|
};
|
|
376026
|
-
var
|
|
376026
|
+
var PoolSuite = class extends SDKConstruct {
|
|
376027
376027
|
pool;
|
|
376028
376028
|
pqk;
|
|
376029
376029
|
gauge;
|
|
@@ -383506,7 +383506,7 @@ var PriceOracleV310Contract = class extends PriceOracleBaseContract {
|
|
|
383506
383506
|
var MarketSuite = class extends SDKConstruct {
|
|
383507
383507
|
acl;
|
|
383508
383508
|
configurator;
|
|
383509
|
-
|
|
383509
|
+
pool;
|
|
383510
383510
|
priceOracle;
|
|
383511
383511
|
creditManagers = [];
|
|
383512
383512
|
/**
|
|
@@ -383536,7 +383536,7 @@ var MarketSuite = class extends SDKConstruct {
|
|
|
383536
383536
|
sdk.tokensMeta.upsert(t.addr, t);
|
|
383537
383537
|
sdk.provider.addressLabels.set(t.addr, t.symbol);
|
|
383538
383538
|
}
|
|
383539
|
-
this.
|
|
383539
|
+
this.pool = new PoolSuite(sdk, marketData);
|
|
383540
383540
|
this.zappers = marketData.zappers;
|
|
383541
383541
|
for (let i = 0; i < marketData.creditManagers.length; i++) {
|
|
383542
383542
|
this.creditManagers.push(new CreditSuite(sdk, marketData, i));
|
|
@@ -383556,11 +383556,11 @@ var MarketSuite = class extends SDKConstruct {
|
|
|
383556
383556
|
}
|
|
383557
383557
|
}
|
|
383558
383558
|
get dirty() {
|
|
383559
|
-
return this.configurator.dirty || this.
|
|
383559
|
+
return this.configurator.dirty || this.pool.dirty || this.priceOracle.dirty || this.creditManagers.some((cm) => cm.dirty);
|
|
383560
383560
|
}
|
|
383561
383561
|
stateHuman(raw = true) {
|
|
383562
383562
|
return {
|
|
383563
|
-
pool: this.
|
|
383563
|
+
pool: this.pool.stateHuman(raw),
|
|
383564
383564
|
creditManagers: this.creditManagers.map((cm) => cm.stateHuman(raw)),
|
|
383565
383565
|
priceOracle: this.priceOracle.stateHuman(raw),
|
|
383566
383566
|
pausableAdmins: this.state.pausableAdmins.map((a) => this.labelAddress(a)),
|
|
@@ -383606,7 +383606,7 @@ var MarketRegister = class extends SDKConstruct {
|
|
|
383606
383606
|
await this.#loadMarkets(marketConfigurators, [], ignoreUpdateablePrices);
|
|
383607
383607
|
}
|
|
383608
383608
|
async syncState() {
|
|
383609
|
-
const pools = this.markets.filter((m) => m.dirty).map((m) => m.
|
|
383609
|
+
const pools = this.markets.filter((m) => m.dirty).map((m) => m.pool.pool.address);
|
|
383610
383610
|
if (pools.length) {
|
|
383611
383611
|
this.#logger?.debug(`need to reload ${pools.length} markets`);
|
|
383612
383612
|
await this.#loadMarkets([], pools);
|
|
@@ -383691,7 +383691,7 @@ var MarketRegister = class extends SDKConstruct {
|
|
|
383691
383691
|
return this.markets.map((market) => market.stateHuman(raw));
|
|
383692
383692
|
}
|
|
383693
383693
|
get pools() {
|
|
383694
|
-
return this.markets.map((market) => market.
|
|
383694
|
+
return this.markets.map((market) => market.pool);
|
|
383695
383695
|
}
|
|
383696
383696
|
get creditManagers() {
|
|
383697
383697
|
return this.markets.flatMap((market) => market.creditManagers);
|
|
@@ -384586,8 +384586,8 @@ var CreditAccountsService = class extends SDKConstruct {
|
|
|
384586
384586
|
to,
|
|
384587
384587
|
calls: openPathCalls
|
|
384588
384588
|
} = props;
|
|
384589
|
-
const
|
|
384590
|
-
const cm =
|
|
384589
|
+
const cmSuite = this.sdk.marketRegister.findCreditManager(creditManager);
|
|
384590
|
+
const cm = cmSuite.creditManager;
|
|
384591
384591
|
const priceUpdatesCalls = await this.getPriceUpdatesForFacade(
|
|
384592
384592
|
cm.address,
|
|
384593
384593
|
void 0,
|
|
@@ -384601,13 +384601,9 @@ var CreditAccountsService = class extends SDKConstruct {
|
|
|
384601
384601
|
...openPathCalls,
|
|
384602
384602
|
...withdrawDebt ? [this.#prepareWithdrawToken(cm.creditFacade, cm.underlying, debt, to)] : []
|
|
384603
384603
|
];
|
|
384604
|
-
const tx =
|
|
384605
|
-
to,
|
|
384606
|
-
calls,
|
|
384607
|
-
referralCode
|
|
384608
|
-
);
|
|
384604
|
+
const tx = cmSuite.creditFacade.openCreditAccount(to, calls, referralCode);
|
|
384609
384605
|
tx.value = ethAmount.toString(10);
|
|
384610
|
-
return { calls, tx, creditFacade:
|
|
384606
|
+
return { calls, tx, creditFacade: cmSuite.creditFacade };
|
|
384611
384607
|
}
|
|
384612
384608
|
/**
|
|
384613
384609
|
* Internal wrapper for CreditAccountCompressor.getCreditAccounts + price updates wrapped into multicall
|
|
@@ -384658,7 +384654,7 @@ var CreditAccountsService = class extends SDKConstruct {
|
|
|
384658
384654
|
const market = this.sdk.marketRegister.findByCreditManager(
|
|
384659
384655
|
acc.creditManager
|
|
384660
384656
|
);
|
|
384661
|
-
const pool = market.
|
|
384657
|
+
const pool = market.pool.pool.address;
|
|
384662
384658
|
oracleByPool.set(pool, market.priceOracle);
|
|
384663
384659
|
for (const t of acc.tokens) {
|
|
384664
384660
|
if (t.balance > 10n) {
|
|
@@ -384669,9 +384665,9 @@ var CreditAccountsService = class extends SDKConstruct {
|
|
|
384669
384665
|
}
|
|
384670
384666
|
}
|
|
384671
384667
|
const priceFeeds = [];
|
|
384672
|
-
for (const [pool,
|
|
384668
|
+
for (const [pool, oracle] of oracleByPool.entries()) {
|
|
384673
384669
|
const tokens = Array.from(tokensByPool.get(pool) ?? []);
|
|
384674
|
-
priceFeeds.push(...
|
|
384670
|
+
priceFeeds.push(...oracle.priceFeedsForTokens(tokens));
|
|
384675
384671
|
}
|
|
384676
384672
|
return this.sdk.priceFeeds.generatePriceFeedsUpdateTxs(priceFeeds);
|
|
384677
384673
|
}
|
|
@@ -384682,7 +384678,7 @@ var CreditAccountsService = class extends SDKConstruct {
|
|
|
384682
384678
|
const caBalancesRecord = creditAccount ? assetsMap(creditAccount.tokens) : creditAccount;
|
|
384683
384679
|
const market = this.sdk.marketRegister.findByCreditManager(creditManager);
|
|
384684
384680
|
const cm = this.sdk.marketRegister.findCreditManager(creditManager).creditManager;
|
|
384685
|
-
const pool = market.
|
|
384681
|
+
const pool = market.pool.pool.address;
|
|
384686
384682
|
oracleByPool.set(pool, market.priceOracle);
|
|
384687
384683
|
const insertToken = (p, t) => {
|
|
384688
384684
|
const tokens = tokensByPool.get(p) ?? /* @__PURE__ */ new Set();
|
|
@@ -409449,13 +409445,14 @@ async function evmMineDetailed(client, timestamp) {
|
|
|
409449
409445
|
return void 0;
|
|
409450
409446
|
}
|
|
409451
409447
|
}
|
|
409452
|
-
var AccountOpener = class {
|
|
409448
|
+
var AccountOpener = class extends SDKConstruct {
|
|
409453
409449
|
#service;
|
|
409454
409450
|
#anvil;
|
|
409455
409451
|
#logger;
|
|
409456
409452
|
#borrower;
|
|
409457
409453
|
#faucet;
|
|
409458
409454
|
constructor(service, options = {}) {
|
|
409455
|
+
super(service.sdk);
|
|
409459
409456
|
this.#service = service;
|
|
409460
409457
|
this.#logger = childLogger("AccountOpener", service.sdk.logger);
|
|
409461
409458
|
this.#anvil = createAnvilClient({
|
|
@@ -409533,22 +409530,23 @@ var AccountOpener = class {
|
|
|
409533
409530
|
});
|
|
409534
409531
|
logger2?.debug(strategy, "found open strategy");
|
|
409535
409532
|
const debt = minDebt * BigInt(leverage - 1);
|
|
409536
|
-
const
|
|
409537
|
-
|
|
409533
|
+
const averageQuota = this.#getCollateralQuota(
|
|
409534
|
+
cm,
|
|
409535
|
+
collateral,
|
|
409536
|
+
strategy.amount,
|
|
409537
|
+
debt
|
|
409538
|
+
);
|
|
409539
|
+
const minQuota = this.#getCollateralQuota(
|
|
409540
|
+
cm,
|
|
409541
|
+
collateral,
|
|
409542
|
+
strategy.minAmount,
|
|
409543
|
+
debt
|
|
409544
|
+
);
|
|
409545
|
+
logger2?.debug({ averageQuota, minQuota }, "calculated quotas");
|
|
409538
409546
|
const { tx, calls } = await this.#service.openCA({
|
|
409539
409547
|
creditManager: cm.creditManager.address,
|
|
409540
|
-
averageQuota
|
|
409541
|
-
|
|
409542
|
-
token: collateral,
|
|
409543
|
-
balance: this.#calcQuota(strategy.amount, debt, collateralLT)
|
|
409544
|
-
}
|
|
409545
|
-
],
|
|
409546
|
-
minQuota: inUnderlying ? [] : [
|
|
409547
|
-
{
|
|
409548
|
-
token: collateral,
|
|
409549
|
-
balance: this.#calcQuota(strategy.minAmount, debt, collateralLT)
|
|
409550
|
-
}
|
|
409551
|
-
],
|
|
409548
|
+
averageQuota,
|
|
409549
|
+
minQuota,
|
|
409552
409550
|
collateral: [{ token: underlying, balance: minDebt }],
|
|
409553
409551
|
debt,
|
|
409554
409552
|
calls: strategy.calls,
|
|
@@ -409743,15 +409741,37 @@ var AccountOpener = class {
|
|
|
409743
409741
|
}
|
|
409744
409742
|
return this.#borrower;
|
|
409745
409743
|
}
|
|
409744
|
+
#getCollateralQuota(cm, collateral, amount, debt) {
|
|
409745
|
+
const { underlying, collateralTokens } = cm;
|
|
409746
|
+
const inUnderlying = collateral.toLowerCase() === underlying.toLowerCase();
|
|
409747
|
+
if (inUnderlying) {
|
|
409748
|
+
return [];
|
|
409749
|
+
}
|
|
409750
|
+
const collateralLT = BigInt(collateralTokens[collateral]);
|
|
409751
|
+
const market = this.sdk.marketRegister.findByCreditManager(
|
|
409752
|
+
cm.creditManager.address
|
|
409753
|
+
);
|
|
409754
|
+
const quotaInfo = market.pool.pqk.quotas.mustGet(collateral);
|
|
409755
|
+
const availableQuota = quotaInfo.limit - quotaInfo.totalQuoted;
|
|
409756
|
+
if (availableQuota <= 0n) {
|
|
409757
|
+
throw new Error(
|
|
409758
|
+
`quota exceeded for asset ${this.labelAddress(collateral)} in ${cm.name}`
|
|
409759
|
+
);
|
|
409760
|
+
}
|
|
409761
|
+
const desiredQuota = this.#calcQuota(amount, debt, collateralLT);
|
|
409762
|
+
return [
|
|
409763
|
+
{
|
|
409764
|
+
token: collateral,
|
|
409765
|
+
balance: desiredQuota < availableQuota ? desiredQuota : availableQuota
|
|
409766
|
+
}
|
|
409767
|
+
];
|
|
409768
|
+
}
|
|
409746
409769
|
#calcQuota(amount, debt, lt) {
|
|
409747
409770
|
let quota = amount * lt / PERCENTAGE_FACTOR;
|
|
409748
409771
|
quota = debt < quota ? debt : quota;
|
|
409749
409772
|
quota = quota * (PERCENTAGE_FACTOR + 500n) / PERCENTAGE_FACTOR;
|
|
409750
409773
|
return quota / PERCENTAGE_FACTOR * PERCENTAGE_FACTOR;
|
|
409751
409774
|
}
|
|
409752
|
-
get sdk() {
|
|
409753
|
-
return this.#service.sdk;
|
|
409754
|
-
}
|
|
409755
409775
|
};
|
|
409756
409776
|
var SDKExample = class {
|
|
409757
409777
|
#sdk;
|
|
@@ -409786,6 +409806,11 @@ var SDKExample = class {
|
|
|
409786
409806
|
ignoreUpdateablePrices: true,
|
|
409787
409807
|
marketConfigurators: [marketConfigurator]
|
|
409788
409808
|
});
|
|
409809
|
+
await this.#safeMigrateFaucet(
|
|
409810
|
+
anvilUrl,
|
|
409811
|
+
this.#sdk.provider.networkType,
|
|
409812
|
+
addressProvider
|
|
409813
|
+
);
|
|
409789
409814
|
const puTx = await this.#sdk.priceFeeds.getUpdatePriceFeedsTx([
|
|
409790
409815
|
marketConfigurator
|
|
409791
409816
|
]);
|
|
@@ -409834,6 +409859,58 @@ var SDKExample = class {
|
|
|
409834
409859
|
this.#logger?.info(`using ${name} ${result}`);
|
|
409835
409860
|
return result;
|
|
409836
409861
|
}
|
|
409862
|
+
async #safeMigrateFaucet(anvilURL, network, addressProvider) {
|
|
409863
|
+
try {
|
|
409864
|
+
await this.#migrateFaucet(anvilURL, network, addressProvider);
|
|
409865
|
+
this.#logger?.info("faucet migrated successfully");
|
|
409866
|
+
} catch (e) {
|
|
409867
|
+
this.#logger?.error(`faucet migration failed: ${e}`);
|
|
409868
|
+
}
|
|
409869
|
+
}
|
|
409870
|
+
/**
|
|
409871
|
+
* Migrates faucet from address provider v3 to v3.1
|
|
409872
|
+
* @param anvilURL
|
|
409873
|
+
* @param network
|
|
409874
|
+
* @param addressProvider
|
|
409875
|
+
*/
|
|
409876
|
+
async #migrateFaucet(anvilURL, network, addressProvider) {
|
|
409877
|
+
const anvil = createAnvilClient({
|
|
409878
|
+
chain: chains[network],
|
|
409879
|
+
transport: http(anvilURL)
|
|
409880
|
+
});
|
|
409881
|
+
const [faucetAddr, owner] = await anvil.multicall({
|
|
409882
|
+
contracts: [
|
|
409883
|
+
{
|
|
409884
|
+
abi: iAddressProviderV3Abi,
|
|
409885
|
+
address: ADDRESS_PROVIDER[network],
|
|
409886
|
+
functionName: "getAddressOrRevert",
|
|
409887
|
+
args: [stringToHex("FAUCET", { size: 32 }), 0n]
|
|
409888
|
+
},
|
|
409889
|
+
{
|
|
409890
|
+
abi: iAddressProviderV3_1Abi,
|
|
409891
|
+
address: addressProvider,
|
|
409892
|
+
functionName: "owner",
|
|
409893
|
+
args: []
|
|
409894
|
+
}
|
|
409895
|
+
],
|
|
409896
|
+
allowFailure: false
|
|
409897
|
+
});
|
|
409898
|
+
this.#logger?.debug(`faucet address: ${faucetAddr}, owner: ${owner}`);
|
|
409899
|
+
await anvil.impersonateAccount({ address: owner });
|
|
409900
|
+
const hash2 = await anvil.writeContract({
|
|
409901
|
+
chain: chains[network],
|
|
409902
|
+
account: owner,
|
|
409903
|
+
address: addressProvider,
|
|
409904
|
+
abi: iAddressProviderV3_1Abi,
|
|
409905
|
+
functionName: "setAddress",
|
|
409906
|
+
args: [stringToHex("FAUCET", { size: 32 }), faucetAddr, true]
|
|
409907
|
+
});
|
|
409908
|
+
const receipt = await anvil.waitForTransactionReceipt({ hash: hash2 });
|
|
409909
|
+
await anvil.stopImpersonatingAccount({ address: owner });
|
|
409910
|
+
if (receipt.status === "reverted") {
|
|
409911
|
+
throw new Error("faucet migration reverted");
|
|
409912
|
+
}
|
|
409913
|
+
}
|
|
409837
409914
|
get sdk() {
|
|
409838
409915
|
if (!this.#sdk) {
|
|
409839
409916
|
throw new Error("sdk is not attached");
|
|
@@ -418116,6 +418193,11 @@ function openAccounts() {
|
|
|
418116
418193
|
"stateAfter.human.json"
|
|
418117
418194
|
)
|
|
418118
418195
|
});
|
|
418196
|
+
await writeFile5(
|
|
418197
|
+
path8.resolve(sharedDir, "deploy-state", "stateAfter.json"),
|
|
418198
|
+
json_stringify(sdkExample2.sdk.state),
|
|
418199
|
+
"utf-8"
|
|
418200
|
+
);
|
|
418119
418201
|
const faucetAddr = await sdkExample2.sdk.provider.publicClient.readContract({
|
|
418120
418202
|
address: ADDRESS_PROVIDER[sdkExample2.sdk.provider.networkType],
|
|
418121
418203
|
abi: iAddressProviderV3_1Abi,
|
|
@@ -418233,7 +418315,7 @@ function getRenderer(opts) {
|
|
|
418233
418315
|
var package_default = {
|
|
418234
418316
|
name: "@gearbox-protocol/deploy-tools",
|
|
418235
418317
|
description: "Gearbox deploy tools",
|
|
418236
|
-
version: "5.3.
|
|
418318
|
+
version: "5.3.29",
|
|
418237
418319
|
homepage: "https://gearbox.fi",
|
|
418238
418320
|
keywords: [
|
|
418239
418321
|
"gearbox"
|
|
@@ -418276,7 +418358,7 @@ var package_default = {
|
|
|
418276
418358
|
"@gearbox-protocol/deploy-tools-node": "0.0.0",
|
|
418277
418359
|
"@gearbox-protocol/deploy-tools-shared": "0.0.0",
|
|
418278
418360
|
"@gearbox-protocol/deploy-tools-types": "0.0.0",
|
|
418279
|
-
"@gearbox-protocol/sdk": "^3.0.0-vfour.
|
|
418361
|
+
"@gearbox-protocol/sdk": "^3.0.0-vfour.175",
|
|
418280
418362
|
"@gearbox-protocol/sdk-gov": "^2.33.2",
|
|
418281
418363
|
"@types/lodash-es": "^4.17.12",
|
|
418282
418364
|
"@types/node": "^22.10.6",
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gearbox-protocol/deploy-tools",
|
|
3
3
|
"description": "Gearbox deploy tools",
|
|
4
|
-
"version": "5.3.
|
|
4
|
+
"version": "5.3.29",
|
|
5
5
|
"homepage": "https://gearbox.fi",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"gearbox"
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"@gearbox-protocol/deploy-tools-node": "0.0.0",
|
|
45
45
|
"@gearbox-protocol/deploy-tools-shared": "0.0.0",
|
|
46
46
|
"@gearbox-protocol/deploy-tools-types": "0.0.0",
|
|
47
|
-
"@gearbox-protocol/sdk": "^3.0.0-vfour.
|
|
47
|
+
"@gearbox-protocol/sdk": "^3.0.0-vfour.175",
|
|
48
48
|
"@gearbox-protocol/sdk-gov": "^2.33.2",
|
|
49
49
|
"@types/lodash-es": "^4.17.12",
|
|
50
50
|
"@types/node": "^22.10.6",
|