@gearbox-protocol/sdk 3.0.0-vfour.4 → 3.0.0-vfour.6
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/index.cjs +308 -139
- package/dist/cjs/index.d.ts +182 -149
- package/dist/esm/index.d.mts +182 -149
- package/dist/esm/index.mjs +247 -92
- package/package.json +2 -1
package/dist/cjs/index.cjs
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var viem = require('viem');
|
|
4
|
-
var sdkGov = require('@gearbox-protocol/sdk-gov');
|
|
5
4
|
var utils = require('viem/utils');
|
|
6
|
-
var
|
|
5
|
+
var dateFns = require('date-fns');
|
|
7
6
|
var chains$1 = require('viem/chains');
|
|
7
|
+
var actions = require('viem/actions');
|
|
8
8
|
var eventemitter3 = require('eventemitter3');
|
|
9
9
|
var evmConnector = require('@redstone-finance/evm-connector');
|
|
10
10
|
var redstoneProtocol = require('redstone-protocol');
|
|
11
|
+
var sdkGov = require('@gearbox-protocol/sdk-gov');
|
|
11
12
|
var aura = require('@gearbox-protocol/sdk-gov/lib/tokens/aura');
|
|
12
13
|
|
|
13
14
|
// src/accounts/CreditAccountsService.ts
|
|
@@ -12413,6 +12414,18 @@ var routerV3Abi = [
|
|
|
12413
12414
|
// src/constants/addresses.ts
|
|
12414
12415
|
var ADDRESS_0X0 = "0x0000000000000000000000000000000000000000";
|
|
12415
12416
|
var NOT_DEPLOYED = "0xNOT DEPLOYED";
|
|
12417
|
+
var USDC = {
|
|
12418
|
+
Mainnet: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
|
|
12419
|
+
Arbitrum: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
|
|
12420
|
+
Optimism: "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85",
|
|
12421
|
+
Base: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
|
|
12422
|
+
};
|
|
12423
|
+
var TIMELOCK = {
|
|
12424
|
+
Mainnet: "0xa133C9A92Fb8dDB962Af1cbae58b2723A0bdf23b",
|
|
12425
|
+
Arbitrum: "0x148DD932eCe1155c11006F5650c6Ff428f8D374A",
|
|
12426
|
+
Optimism: "0x148DD932eCe1155c11006F5650c6Ff428f8D374A",
|
|
12427
|
+
Base: NOT_DEPLOYED
|
|
12428
|
+
};
|
|
12416
12429
|
|
|
12417
12430
|
// src/constants/address-provider.ts
|
|
12418
12431
|
var NO_VERSION = 0;
|
|
@@ -12449,6 +12462,34 @@ var ADDRESS_PROVIDER = {
|
|
|
12449
12462
|
Base: NOT_DEPLOYED
|
|
12450
12463
|
};
|
|
12451
12464
|
|
|
12465
|
+
// src/constants/bot-permissions.ts
|
|
12466
|
+
var BotPermissions = /* @__PURE__ */ ((BotPermissions2) => {
|
|
12467
|
+
BotPermissions2[BotPermissions2["ADD_COLLATERAL"] = 1] = "ADD_COLLATERAL";
|
|
12468
|
+
BotPermissions2[BotPermissions2["INCREASE_DEBT"] = 2] = "INCREASE_DEBT";
|
|
12469
|
+
BotPermissions2[BotPermissions2["DECREASE_DEBT"] = 4] = "DECREASE_DEBT";
|
|
12470
|
+
BotPermissions2[BotPermissions2["ENABLE_TOKEN"] = 8] = "ENABLE_TOKEN";
|
|
12471
|
+
BotPermissions2[BotPermissions2["DISABLE_TOKEN"] = 16] = "DISABLE_TOKEN";
|
|
12472
|
+
BotPermissions2[BotPermissions2["WITHDRAW_COLLATERAL"] = 32] = "WITHDRAW_COLLATERAL";
|
|
12473
|
+
BotPermissions2[BotPermissions2["UPDATE_QUOTA"] = 64] = "UPDATE_QUOTA";
|
|
12474
|
+
BotPermissions2[BotPermissions2["REVOKE_ALLOWANCES"] = 128] = "REVOKE_ALLOWANCES";
|
|
12475
|
+
BotPermissions2[BotPermissions2["EXTERNAL_CALLS"] = 65536] = "EXTERNAL_CALLS";
|
|
12476
|
+
BotPermissions2[BotPermissions2["ALL_CREDIT_FACADE_CALLS"] = 255] = "ALL_CREDIT_FACADE_CALLS";
|
|
12477
|
+
BotPermissions2[BotPermissions2["ALLS"] = 65791] = "ALLS";
|
|
12478
|
+
return BotPermissions2;
|
|
12479
|
+
})(BotPermissions || {});
|
|
12480
|
+
function botPermissionsToString(value) {
|
|
12481
|
+
let result = "";
|
|
12482
|
+
for (let i = 0; i < 16; i++) {
|
|
12483
|
+
if ((value & 1n << BigInt(i)) !== 0n) {
|
|
12484
|
+
if (result.length > 0) {
|
|
12485
|
+
result += " | ";
|
|
12486
|
+
}
|
|
12487
|
+
result += BotPermissions[1 << i];
|
|
12488
|
+
}
|
|
12489
|
+
}
|
|
12490
|
+
return result;
|
|
12491
|
+
}
|
|
12492
|
+
|
|
12452
12493
|
// src/constants/math.ts
|
|
12453
12494
|
var MIN_INT96 = -39614081257132168796771975168n;
|
|
12454
12495
|
var MAX_UINT256 = 115792089237316195423570985008687907853269984665640564039457584007913129639935n;
|
|
@@ -12620,6 +12661,128 @@ function createRawTx(to, parameters, description) {
|
|
|
12620
12661
|
};
|
|
12621
12662
|
}
|
|
12622
12663
|
|
|
12664
|
+
// src/utils/etherscan.ts
|
|
12665
|
+
function etherscanUrl(entity, network) {
|
|
12666
|
+
let [prefix, domain] = ["", "etherscan.io"];
|
|
12667
|
+
let param;
|
|
12668
|
+
if ("transactionHash" in entity && "blockHash" in entity) {
|
|
12669
|
+
param = { tx: entity.transactionHash };
|
|
12670
|
+
} else if ("creditAccount" in entity && "creditManager" in entity) {
|
|
12671
|
+
param = { address: entity.creditAccount };
|
|
12672
|
+
} else {
|
|
12673
|
+
param = entity;
|
|
12674
|
+
}
|
|
12675
|
+
switch (network) {
|
|
12676
|
+
case "Optimism":
|
|
12677
|
+
prefix = "optimistic.";
|
|
12678
|
+
break;
|
|
12679
|
+
case "Arbitrum":
|
|
12680
|
+
domain = "arbiscan.io";
|
|
12681
|
+
break;
|
|
12682
|
+
case "Base":
|
|
12683
|
+
domain = "basescan.org";
|
|
12684
|
+
break;
|
|
12685
|
+
}
|
|
12686
|
+
const [key, value] = Object.entries(param)[0];
|
|
12687
|
+
return `https://${prefix}${domain}/${key}/${value}`;
|
|
12688
|
+
}
|
|
12689
|
+
|
|
12690
|
+
// src/utils/filterDust.ts
|
|
12691
|
+
function filterDust(account) {
|
|
12692
|
+
const result = {};
|
|
12693
|
+
for (const { token, balance } of account.tokens) {
|
|
12694
|
+
if (balance > 10n) {
|
|
12695
|
+
result[token] = balance;
|
|
12696
|
+
}
|
|
12697
|
+
}
|
|
12698
|
+
return result;
|
|
12699
|
+
}
|
|
12700
|
+
var percentFmt = (v, raw = true) => `${(Number(v) / 100).toFixed(2)}%` + (raw ? ` [${v}]` : "");
|
|
12701
|
+
function formatBNvalue(num, decimals2, precision, raw = true) {
|
|
12702
|
+
return `${formatBN(num, decimals2, precision)}` + (raw ? ` [ ${num} ]` : "");
|
|
12703
|
+
}
|
|
12704
|
+
function formatBN(num, decimals2, precision) {
|
|
12705
|
+
if (num === void 0) {
|
|
12706
|
+
return "-";
|
|
12707
|
+
}
|
|
12708
|
+
const numBInt = BigInt(num);
|
|
12709
|
+
const limitedNum = limitNum(numBInt, decimals2);
|
|
12710
|
+
const limitedPrecision = limitPrecision(limitedNum, precision);
|
|
12711
|
+
return toHumanFormat(limitedNum, limitedPrecision);
|
|
12712
|
+
}
|
|
12713
|
+
var limitPrecision = (n, p) => {
|
|
12714
|
+
const notZero = n !== 0n;
|
|
12715
|
+
if (n <= 10n && notZero) {
|
|
12716
|
+
return 6;
|
|
12717
|
+
}
|
|
12718
|
+
if (n <= 100n && notZero) {
|
|
12719
|
+
return 5;
|
|
12720
|
+
}
|
|
12721
|
+
if (n <= 1000n && notZero) {
|
|
12722
|
+
return 4;
|
|
12723
|
+
}
|
|
12724
|
+
if (n <= 10000n && notZero) {
|
|
12725
|
+
return 3;
|
|
12726
|
+
}
|
|
12727
|
+
if (p === void 0 && n > 10n ** 21n) {
|
|
12728
|
+
return 2;
|
|
12729
|
+
}
|
|
12730
|
+
if (p === void 0 && n > 10n ** 24n) {
|
|
12731
|
+
return 0;
|
|
12732
|
+
}
|
|
12733
|
+
return p;
|
|
12734
|
+
};
|
|
12735
|
+
var limitNum = (n, d = 18) => {
|
|
12736
|
+
let limited = n <= 2n ? 0n : n;
|
|
12737
|
+
if (d <= 6) {
|
|
12738
|
+
return limited * 10n ** BigInt(6 - d);
|
|
12739
|
+
} else {
|
|
12740
|
+
return limited / 10n ** BigInt(d - 6);
|
|
12741
|
+
}
|
|
12742
|
+
};
|
|
12743
|
+
function toHumanFormat(num, precision = 2) {
|
|
12744
|
+
if (num >= BigInt(1e15)) {
|
|
12745
|
+
return `${formatBn4dig(num / BigInt(1e9), precision)}Bn`;
|
|
12746
|
+
}
|
|
12747
|
+
if (num >= BigInt(1e12)) {
|
|
12748
|
+
return `${formatBn4dig(num / BigInt(1e6), precision)}M`;
|
|
12749
|
+
}
|
|
12750
|
+
if (num >= BigInt(1e9)) {
|
|
12751
|
+
return `${formatBn4dig(num / BigInt(1e3), precision)}K`;
|
|
12752
|
+
}
|
|
12753
|
+
return formatBn4dig(num, precision);
|
|
12754
|
+
}
|
|
12755
|
+
function formatBn4dig(num, precision = 2) {
|
|
12756
|
+
if (precision > 6) {
|
|
12757
|
+
throw new Error("Precision is too high, try <= 6");
|
|
12758
|
+
}
|
|
12759
|
+
const numStr = num.toString();
|
|
12760
|
+
if (numStr.length <= 6) {
|
|
12761
|
+
const completed = "0".repeat(6 - numStr.length) + numStr;
|
|
12762
|
+
return `0.${completed.slice(0, precision)}`;
|
|
12763
|
+
}
|
|
12764
|
+
return `${numStr.slice(0, numStr.length - 6)}.${numStr.slice(
|
|
12765
|
+
numStr.length - 6,
|
|
12766
|
+
numStr.length - 6 + precision
|
|
12767
|
+
)}`;
|
|
12768
|
+
}
|
|
12769
|
+
function fmtBinaryMask(mask) {
|
|
12770
|
+
return mask.toString(2).padStart(64, "0");
|
|
12771
|
+
}
|
|
12772
|
+
function numberWithCommas(x) {
|
|
12773
|
+
return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
|
|
12774
|
+
}
|
|
12775
|
+
function formatDuration(seconds, raw = true) {
|
|
12776
|
+
const now = Math.floor(Date.now() / 1e3) * 1e3;
|
|
12777
|
+
const start = new Date(now);
|
|
12778
|
+
const end = new Date(now + seconds * 1e3);
|
|
12779
|
+
const duration = dateFns.intervalToDuration({ start, end });
|
|
12780
|
+
return `${dateFns.formatDuration(duration)}` + (raw ? `[${seconds.toString()}]` : "");
|
|
12781
|
+
}
|
|
12782
|
+
function formatNumberToString_(value) {
|
|
12783
|
+
return value.toLocaleString("en-US", { minimumIntegerDigits: 1, useGrouping: true }).replaceAll(",", "_");
|
|
12784
|
+
}
|
|
12785
|
+
|
|
12623
12786
|
// src/base/AddressLabeller.ts
|
|
12624
12787
|
var AddressLabeller = class {
|
|
12625
12788
|
#labels = new AddressMap();
|
|
@@ -12641,29 +12804,6 @@ var AddressLabeller = class {
|
|
|
12641
12804
|
return this.#labels.asRecord();
|
|
12642
12805
|
}
|
|
12643
12806
|
};
|
|
12644
|
-
function initLegacyLabels(labeller, network) {
|
|
12645
|
-
Object.entries(sdkGov.tokenDataByNetwork[network]).forEach(([label, address]) => {
|
|
12646
|
-
labeller.set(address, label);
|
|
12647
|
-
});
|
|
12648
|
-
Object.entries(sdkGov.tickerTokensByNetwork[network]).forEach(([label, address]) => {
|
|
12649
|
-
labeller.set(address, label);
|
|
12650
|
-
});
|
|
12651
|
-
Object.entries(sdkGov.contractsByNetwork[network]).forEach(([label, address]) => {
|
|
12652
|
-
labeller.set(address, label);
|
|
12653
|
-
});
|
|
12654
|
-
const multisigs = [
|
|
12655
|
-
{ safe: sdkGov.MULTISIG, label: "Multisig" },
|
|
12656
|
-
{ safe: sdkGov.ROUTER_MULTISIG_ADDRESS, label: "RouterMultisig" },
|
|
12657
|
-
{ safe: sdkGov.VETO_ADMIN, label: "VetoAdmin" },
|
|
12658
|
-
{ safe: sdkGov.TREASURY, label: "Treasury" }
|
|
12659
|
-
];
|
|
12660
|
-
multisigs.forEach(({ safe, label }) => {
|
|
12661
|
-
labeller.set(safe[network], label);
|
|
12662
|
-
});
|
|
12663
|
-
sdkGov.emergencyLiquidators.forEach((address) => {
|
|
12664
|
-
labeller.set(address, "EmergencyLiquidator");
|
|
12665
|
-
});
|
|
12666
|
-
}
|
|
12667
12807
|
|
|
12668
12808
|
// src/base/SDKConstruct.ts
|
|
12669
12809
|
var SDKConstruct = class {
|
|
@@ -12813,12 +12953,48 @@ var VotingContractStatus = /* @__PURE__ */ ((VotingContractStatus2) => {
|
|
|
12813
12953
|
VotingContractStatus2[VotingContractStatus2["UNVOTE_ONLY"] = 2] = "UNVOTE_ONLY";
|
|
12814
12954
|
return VotingContractStatus2;
|
|
12815
12955
|
})(VotingContractStatus || {});
|
|
12956
|
+
var SUPPORTED_CHAINS = [
|
|
12957
|
+
"Mainnet",
|
|
12958
|
+
"Arbitrum",
|
|
12959
|
+
"Optimism",
|
|
12960
|
+
"Base"
|
|
12961
|
+
];
|
|
12962
|
+
var chains = {
|
|
12963
|
+
Mainnet: chains$1.mainnet,
|
|
12964
|
+
Arbitrum: chains$1.arbitrum,
|
|
12965
|
+
Optimism: chains$1.optimism,
|
|
12966
|
+
Base: chains$1.base
|
|
12967
|
+
};
|
|
12968
|
+
var Provider = class {
|
|
12969
|
+
chainId;
|
|
12970
|
+
chain;
|
|
12971
|
+
networkType;
|
|
12972
|
+
publicClient;
|
|
12973
|
+
addressLabels;
|
|
12974
|
+
constructor(opts) {
|
|
12975
|
+
const { chainId, networkType, rpcURL, timeout = 12e4 } = opts;
|
|
12976
|
+
this.chainId = chainId;
|
|
12977
|
+
this.networkType = networkType;
|
|
12978
|
+
this.chain = viem.defineChain({
|
|
12979
|
+
...chains[networkType],
|
|
12980
|
+
id: chainId
|
|
12981
|
+
});
|
|
12982
|
+
this.publicClient = viem.createPublicClient({
|
|
12983
|
+
chain: this.chain,
|
|
12984
|
+
transport: viem.http(rpcURL, { timeout })
|
|
12985
|
+
// for SDK they could be multiple RPCs
|
|
12986
|
+
});
|
|
12987
|
+
this.addressLabels = new AddressLabeller();
|
|
12988
|
+
}
|
|
12989
|
+
};
|
|
12990
|
+
|
|
12991
|
+
// src/utils/viem/detectNetwork.ts
|
|
12816
12992
|
async function detectNetwork(client) {
|
|
12817
|
-
for (const chain of
|
|
12993
|
+
for (const chain of SUPPORTED_CHAINS) {
|
|
12818
12994
|
try {
|
|
12819
12995
|
await client.readContract({
|
|
12820
12996
|
abi: ierc20MetadataAbi,
|
|
12821
|
-
address:
|
|
12997
|
+
address: USDC[chain],
|
|
12822
12998
|
functionName: "symbol"
|
|
12823
12999
|
});
|
|
12824
13000
|
return chain;
|
|
@@ -13052,7 +13228,7 @@ var CreditAccountsService = class extends SDKConstruct {
|
|
|
13052
13228
|
* TODO: do we want to expose "reverting"?
|
|
13053
13229
|
* TODO: do we want to expose MarketFilter in any way? If so, we need to check that the MarketFilter is compatibled with attached markets?
|
|
13054
13230
|
* @param args
|
|
13055
|
-
* @returns
|
|
13231
|
+
* @returns returned credit accounts are sorted by health factor in ascending order
|
|
13056
13232
|
*/
|
|
13057
13233
|
async getCreditAccounts(args) {
|
|
13058
13234
|
const {
|
|
@@ -13087,7 +13263,7 @@ var CreditAccountsService = class extends SDKConstruct {
|
|
|
13087
13263
|
offset = newOffset;
|
|
13088
13264
|
} while (offset !== 0n);
|
|
13089
13265
|
}
|
|
13090
|
-
return allCAs;
|
|
13266
|
+
return allCAs.sort((a, b) => Number(a.healthFactor - b.healthFactor));
|
|
13091
13267
|
}
|
|
13092
13268
|
/**
|
|
13093
13269
|
* Generates transaction to liquidate credit account
|
|
@@ -13309,43 +13485,6 @@ function rawTxToMulticallPriceUpdate(tx) {
|
|
|
13309
13485
|
args
|
|
13310
13486
|
};
|
|
13311
13487
|
}
|
|
13312
|
-
var SUPPORTED_CHAINS = [
|
|
13313
|
-
"Mainnet",
|
|
13314
|
-
"Arbitrum",
|
|
13315
|
-
"Optimism",
|
|
13316
|
-
"Base"
|
|
13317
|
-
];
|
|
13318
|
-
var chains = {
|
|
13319
|
-
Mainnet: chains$1.mainnet,
|
|
13320
|
-
Arbitrum: chains$1.arbitrum,
|
|
13321
|
-
Optimism: chains$1.optimism,
|
|
13322
|
-
Base: chains$1.base
|
|
13323
|
-
};
|
|
13324
|
-
var Provider = class {
|
|
13325
|
-
chainId;
|
|
13326
|
-
chain;
|
|
13327
|
-
networkType;
|
|
13328
|
-
publicClient;
|
|
13329
|
-
/**
|
|
13330
|
-
* Note: use interface here to hide implementation that uses sdk-gov
|
|
13331
|
-
*/
|
|
13332
|
-
addressLabels;
|
|
13333
|
-
constructor(opts) {
|
|
13334
|
-
const { chainId, networkType, rpcURL, timeout = 12e4 } = opts;
|
|
13335
|
-
this.chainId = chainId;
|
|
13336
|
-
this.networkType = networkType;
|
|
13337
|
-
this.chain = viem.defineChain({
|
|
13338
|
-
...chains[networkType],
|
|
13339
|
-
id: chainId
|
|
13340
|
-
});
|
|
13341
|
-
this.publicClient = viem.createPublicClient({
|
|
13342
|
-
chain: this.chain,
|
|
13343
|
-
transport: viem.http(rpcURL, { timeout })
|
|
13344
|
-
// for SDK they could be multiple RPCs
|
|
13345
|
-
});
|
|
13346
|
-
this.addressLabels = new AddressLabeller();
|
|
13347
|
-
}
|
|
13348
|
-
};
|
|
13349
13488
|
var AddressProviderContractV3_1 = class extends BaseContract {
|
|
13350
13489
|
#addresses = {};
|
|
13351
13490
|
versions = {};
|
|
@@ -13460,7 +13599,7 @@ var BotListContract = class extends BaseContract {
|
|
|
13460
13599
|
return [
|
|
13461
13600
|
this.addressLabels.get(bot),
|
|
13462
13601
|
this.addressLabels.get(creditManager),
|
|
13463
|
-
|
|
13602
|
+
botPermissionsToString(permissions)
|
|
13464
13603
|
];
|
|
13465
13604
|
}
|
|
13466
13605
|
default:
|
|
@@ -13491,7 +13630,7 @@ var BotListContract = class extends BaseContract {
|
|
|
13491
13630
|
break;
|
|
13492
13631
|
case "SetBotSpecialPermissions":
|
|
13493
13632
|
this.logger?.debug(
|
|
13494
|
-
`Bot ${parsedLog.args.bot} has been given permissions ${
|
|
13633
|
+
`Bot ${parsedLog.args.bot} has been given permissions ${botPermissionsToString(
|
|
13495
13634
|
parsedLog.args.permissions
|
|
13496
13635
|
)} for credit manager ${parsedLog.args.creditManager}`
|
|
13497
13636
|
);
|
|
@@ -13531,16 +13670,18 @@ var GearStakingContract = class extends BaseContract {
|
|
|
13531
13670
|
};
|
|
13532
13671
|
}
|
|
13533
13672
|
};
|
|
13673
|
+
|
|
13674
|
+
// src/market/CreditConfiguratorContract.ts
|
|
13534
13675
|
var CreditConfiguratorContract = class extends BaseContract {
|
|
13535
13676
|
adapters = [];
|
|
13536
13677
|
emergencyLiquidators = [];
|
|
13537
|
-
constructor(sdk, { creditConfigurator, creditManager },
|
|
13678
|
+
constructor(sdk, { creditConfigurator, creditManager }, emergencyLiquidators) {
|
|
13538
13679
|
super(sdk, {
|
|
13539
13680
|
...creditConfigurator.baseParams,
|
|
13540
13681
|
name: `CreditConfigurator(${creditManager.name})`,
|
|
13541
13682
|
abi: creditConfiguratorV3Abi
|
|
13542
13683
|
});
|
|
13543
|
-
this.emergencyLiquidators = [...
|
|
13684
|
+
this.emergencyLiquidators = [...emergencyLiquidators];
|
|
13544
13685
|
}
|
|
13545
13686
|
get state() {
|
|
13546
13687
|
return {
|
|
@@ -13553,7 +13694,7 @@ var CreditConfiguratorContract = class extends BaseContract {
|
|
|
13553
13694
|
case "addCollateralToken":
|
|
13554
13695
|
case "setLiquidationThreshold": {
|
|
13555
13696
|
const [token, lt] = params.args;
|
|
13556
|
-
return [this.addressLabels.get(token),
|
|
13697
|
+
return [this.addressLabels.get(token), percentFmt(lt)];
|
|
13557
13698
|
}
|
|
13558
13699
|
case "setExpirationDate": {
|
|
13559
13700
|
const [expirationDate] = params.args;
|
|
@@ -13568,11 +13709,11 @@ var CreditConfiguratorContract = class extends BaseContract {
|
|
|
13568
13709
|
liquidationPremiumExpired
|
|
13569
13710
|
] = params.args;
|
|
13570
13711
|
return [
|
|
13571
|
-
|
|
13572
|
-
|
|
13573
|
-
|
|
13574
|
-
|
|
13575
|
-
|
|
13712
|
+
percentFmt(feeInterest),
|
|
13713
|
+
percentFmt(feeLiquidation),
|
|
13714
|
+
percentFmt(liquidationPremium),
|
|
13715
|
+
percentFmt(feeLiquidationExpired),
|
|
13716
|
+
percentFmt(liquidationPremiumExpired)
|
|
13576
13717
|
];
|
|
13577
13718
|
}
|
|
13578
13719
|
// case "setMinDebtLimit":
|
|
@@ -13588,9 +13729,9 @@ var CreditConfiguratorContract = class extends BaseContract {
|
|
|
13588
13729
|
const [token, liquidationThresholdFinal, rampStart, rampDuration] = params.args;
|
|
13589
13730
|
return [
|
|
13590
13731
|
this.addressLabels.get(token),
|
|
13591
|
-
|
|
13732
|
+
percentFmt(liquidationThresholdFinal),
|
|
13592
13733
|
`${rampStart}`,
|
|
13593
|
-
|
|
13734
|
+
formatDuration(rampDuration)
|
|
13594
13735
|
];
|
|
13595
13736
|
}
|
|
13596
13737
|
default:
|
|
@@ -13598,6 +13739,8 @@ var CreditConfiguratorContract = class extends BaseContract {
|
|
|
13598
13739
|
}
|
|
13599
13740
|
}
|
|
13600
13741
|
};
|
|
13742
|
+
|
|
13743
|
+
// src/market/CreditFacadeContract.ts
|
|
13601
13744
|
var CreditFacadeContract = class extends BaseContract {
|
|
13602
13745
|
state;
|
|
13603
13746
|
constructor(sdk, { creditFacade, creditManager }) {
|
|
@@ -13664,7 +13807,7 @@ var CreditFacadeContract = class extends BaseContract {
|
|
|
13664
13807
|
return [
|
|
13665
13808
|
this.addressLabels.get(creditAccount),
|
|
13666
13809
|
this.addressLabels.get(bot),
|
|
13667
|
-
|
|
13810
|
+
fmtBinaryMask(permissions)
|
|
13668
13811
|
];
|
|
13669
13812
|
}
|
|
13670
13813
|
default:
|
|
@@ -13729,7 +13872,7 @@ var CreditFactory = class {
|
|
|
13729
13872
|
// TODO:
|
|
13730
13873
|
// adapterFactory: AdapterFactory;
|
|
13731
13874
|
constructor(sdk, marketData, index) {
|
|
13732
|
-
const { creditManagers, pool, emergencyLiquidators
|
|
13875
|
+
const { creditManagers, pool, emergencyLiquidators } = marketData;
|
|
13733
13876
|
const creditManager = creditManagers[index];
|
|
13734
13877
|
const { name, collateralTokens, liquidationThresholds } = creditManager.creditManager;
|
|
13735
13878
|
this.name = name;
|
|
@@ -13743,7 +13886,7 @@ var CreditFactory = class {
|
|
|
13743
13886
|
this.creditConfigurator = new CreditConfiguratorContract(
|
|
13744
13887
|
sdk,
|
|
13745
13888
|
creditManager,
|
|
13746
|
-
|
|
13889
|
+
emergencyLiquidators
|
|
13747
13890
|
);
|
|
13748
13891
|
}
|
|
13749
13892
|
async tvl() {
|
|
@@ -13871,7 +14014,7 @@ var PoolContract = class extends BaseContract {
|
|
|
13871
14014
|
...this.contractData,
|
|
13872
14015
|
lastBaseInterestUpdate: data.lastBaseInterestUpdate,
|
|
13873
14016
|
underlying: data.underlying,
|
|
13874
|
-
decimals:
|
|
14017
|
+
decimals: sdk.marketRegister.tokensMeta.mustGet(data.underlying).decimals,
|
|
13875
14018
|
creditManagerDebtParams,
|
|
13876
14019
|
withdrawFee: Number(data.withdrawFee)
|
|
13877
14020
|
};
|
|
@@ -13898,7 +14041,7 @@ var PoolContract = class extends BaseContract {
|
|
|
13898
14041
|
case "deposit": {
|
|
13899
14042
|
const [amount, onBehalfOf] = params.args;
|
|
13900
14043
|
return [
|
|
13901
|
-
|
|
14044
|
+
formatBN(amount, this.state.decimals),
|
|
13902
14045
|
this.addressLabels.get(onBehalfOf)
|
|
13903
14046
|
];
|
|
13904
14047
|
}
|
|
@@ -13907,6 +14050,8 @@ var PoolContract = class extends BaseContract {
|
|
|
13907
14050
|
}
|
|
13908
14051
|
}
|
|
13909
14052
|
};
|
|
14053
|
+
|
|
14054
|
+
// src/market/PoolQuotaKeeperContract.ts
|
|
13910
14055
|
var PoolQuotaKeeperContract = class extends BaseContract {
|
|
13911
14056
|
decimals;
|
|
13912
14057
|
state;
|
|
@@ -13916,7 +14061,9 @@ var PoolQuotaKeeperContract = class extends BaseContract {
|
|
|
13916
14061
|
name: `PoolQuotaKeeper(${pool.name})`,
|
|
13917
14062
|
abi: poolQuotaKeeperV3Abi
|
|
13918
14063
|
});
|
|
13919
|
-
this.decimals =
|
|
14064
|
+
this.decimals = sdk.marketRegister.tokensMeta.mustGet(
|
|
14065
|
+
pool.underlying
|
|
14066
|
+
).decimals;
|
|
13920
14067
|
this.state = {
|
|
13921
14068
|
...this.contractData,
|
|
13922
14069
|
quotas: Object.fromEntries(
|
|
@@ -14292,7 +14439,7 @@ var Erc4626PriceFeedContract = class extends AbstractLPPriceFeedContract {
|
|
|
14292
14439
|
};
|
|
14293
14440
|
}
|
|
14294
14441
|
async getValue() {
|
|
14295
|
-
const
|
|
14442
|
+
const decimals2 = await this.sdk.provider.publicClient.readContract({
|
|
14296
14443
|
abi: erc20Abi,
|
|
14297
14444
|
address: this.lpContract,
|
|
14298
14445
|
functionName: "decimals"
|
|
@@ -14301,7 +14448,7 @@ var Erc4626PriceFeedContract = class extends AbstractLPPriceFeedContract {
|
|
|
14301
14448
|
abi: viem.erc4626Abi,
|
|
14302
14449
|
address: this.lpContract,
|
|
14303
14450
|
functionName: "convertToAssets",
|
|
14304
|
-
args: [10n ** BigInt(
|
|
14451
|
+
args: [10n ** BigInt(decimals2)]
|
|
14305
14452
|
});
|
|
14306
14453
|
return price;
|
|
14307
14454
|
}
|
|
@@ -14855,7 +15002,8 @@ var PriceOracleContract = class extends BaseContract {
|
|
|
14855
15002
|
// }
|
|
14856
15003
|
#labelPriceFeed(address, usage, token) {
|
|
14857
15004
|
this.sdk.provider.addressLabels.set(address, (label) => {
|
|
14858
|
-
|
|
15005
|
+
const { symbol } = this.sdk.marketRegister.tokensMeta.mustGet(token);
|
|
15006
|
+
let pricefeedTag = `${symbol}.${usage}`;
|
|
14859
15007
|
if (label) {
|
|
14860
15008
|
pricefeedTag = `${label}, ${pricefeedTag}`;
|
|
14861
15009
|
}
|
|
@@ -14908,14 +15056,15 @@ var MarketFactory = class {
|
|
|
14908
15056
|
creditManagers = [];
|
|
14909
15057
|
constructor(sdk, marketData) {
|
|
14910
15058
|
this.riskCurator = marketData.owner;
|
|
15059
|
+
for (const t of marketData.tokens) {
|
|
15060
|
+
sdk.marketRegister.tokensMeta.upsert(t.addr, t);
|
|
15061
|
+
sdk.provider.addressLabels.set(t.addr, t.symbol);
|
|
15062
|
+
}
|
|
14911
15063
|
this.poolFactory = new PoolFactory(sdk, marketData);
|
|
14912
15064
|
for (let i = 0; i < marketData.creditManagers.length; i++) {
|
|
14913
15065
|
this.creditManagers.push(new CreditFactory(sdk, marketData, i));
|
|
14914
15066
|
}
|
|
14915
15067
|
this.priceOracle = new PriceOracleContract(sdk, marketData.priceOracleData);
|
|
14916
|
-
for (const t of marketData.tokens) {
|
|
14917
|
-
sdk.provider.addressLabels.set(t.addr, t.symbol);
|
|
14918
|
-
}
|
|
14919
15068
|
}
|
|
14920
15069
|
get state() {
|
|
14921
15070
|
return {
|
|
@@ -15076,7 +15225,7 @@ var PathOptionFactory = class _PathOptionFactory {
|
|
|
15076
15225
|
}
|
|
15077
15226
|
static getBalancerPools(balances) {
|
|
15078
15227
|
const nonZeroBalances = Object.entries(balances).filter(
|
|
15079
|
-
([, balance]) =>
|
|
15228
|
+
([, balance]) => balance.balance > 1
|
|
15080
15229
|
);
|
|
15081
15230
|
const balancerPools = nonZeroBalances.map(([token]) => sdkGov.getTokenSymbol(token)).filter((symbol) => sdkGov.isBalancerLPToken(symbol));
|
|
15082
15231
|
const balancerAuraTokens = Object.entries(aura.auraTokens).filter(([, data]) => sdkGov.isBalancerLPToken(data.underlying)).map(([token]) => token);
|
|
@@ -15299,8 +15448,8 @@ var RouterV3Contract = class extends BaseContract {
|
|
|
15299
15448
|
const token = t;
|
|
15300
15449
|
const isEnabled = (mask & ca.enabledTokensMask) !== 0n;
|
|
15301
15450
|
expectedBalances[token] = { token, balance };
|
|
15302
|
-
const
|
|
15303
|
-
const minBalance = 10n ** BigInt(Math.max(8,
|
|
15451
|
+
const decimals2 = this.sdk.marketRegister.tokensMeta.mustGet(token).decimals;
|
|
15452
|
+
const minBalance = 10n ** BigInt(Math.max(8, decimals2) - 8);
|
|
15304
15453
|
if (balance < minBalance || !isEnabled) {
|
|
15305
15454
|
leftoverBalances[token] = { token, balance };
|
|
15306
15455
|
}
|
|
@@ -15427,7 +15576,9 @@ var GearboxSDK = class _GearboxSDK extends eventemitter3.EventEmitter {
|
|
|
15427
15576
|
gearStakingAddress
|
|
15428
15577
|
);
|
|
15429
15578
|
this.#marketRegister = new MarketRegister(this);
|
|
15430
|
-
await this.#marketRegister.loadMarkets([
|
|
15579
|
+
await this.#marketRegister.loadMarkets([
|
|
15580
|
+
TIMELOCK[this.provider.networkType]
|
|
15581
|
+
]);
|
|
15431
15582
|
try {
|
|
15432
15583
|
const router = this.#addressProvider.getLatestVersion(AP_ROUTER);
|
|
15433
15584
|
this.#router = new RouterV3Contract(this, router);
|
|
@@ -15488,7 +15639,7 @@ var GearboxSDK = class _GearboxSDK extends eventemitter3.EventEmitter {
|
|
|
15488
15639
|
async tvl() {
|
|
15489
15640
|
const { tvl, tvlUSD } = await this.marketRegister.tvl();
|
|
15490
15641
|
this.logger?.info(tvl);
|
|
15491
|
-
this.logger?.info(`Total TVL: ${
|
|
15642
|
+
this.logger?.info(`Total TVL: ${formatBN(tvlUSD, 8)}`);
|
|
15492
15643
|
}
|
|
15493
15644
|
async syncState(toBlock, timestamp) {
|
|
15494
15645
|
if (toBlock <= this.currentBlock) {
|
|
@@ -15555,7 +15706,7 @@ var GearboxSDK = class _GearboxSDK extends eventemitter3.EventEmitter {
|
|
|
15555
15706
|
return this.#router;
|
|
15556
15707
|
}
|
|
15557
15708
|
};
|
|
15558
|
-
function convertCreditFacadeStateToHuman(state,
|
|
15709
|
+
function convertCreditFacadeStateToHuman(state, decimals2, labelAddress, _raw = true) {
|
|
15559
15710
|
return {
|
|
15560
15711
|
...convertBaseContractState(state, labelAddress),
|
|
15561
15712
|
maxQuotaMultiplier: state.maxQuotaMultiplier,
|
|
@@ -15565,11 +15716,11 @@ function convertCreditFacadeStateToHuman(state, decimals4, labelAddress, _raw =
|
|
|
15565
15716
|
expirationDate: state.expirationDate,
|
|
15566
15717
|
maxDebtPerBlockMultiplier: state.maxDebtPerBlockMultiplier,
|
|
15567
15718
|
botList: labelAddress(state.botList),
|
|
15568
|
-
minDebt:
|
|
15569
|
-
maxDebt:
|
|
15570
|
-
currentCumulativeLoss:
|
|
15571
|
-
maxCumulativeLoss:
|
|
15572
|
-
forbiddenTokenMask:
|
|
15719
|
+
minDebt: formatBNvalue(state.minDebt, decimals2),
|
|
15720
|
+
maxDebt: formatBNvalue(state.maxDebt, decimals2),
|
|
15721
|
+
currentCumulativeLoss: formatBNvalue(state.currentCumulativeLoss, decimals2),
|
|
15722
|
+
maxCumulativeLoss: formatBNvalue(state.maxCumulativeLoss, decimals2),
|
|
15723
|
+
forbiddenTokenMask: fmtBinaryMask(state.forbiddenTokenMask),
|
|
15573
15724
|
isPaused: state.isPaused
|
|
15574
15725
|
};
|
|
15575
15726
|
}
|
|
@@ -15587,18 +15738,18 @@ function convertCreditManagerStateToHuman(state, labelAddress, raw = true) {
|
|
|
15587
15738
|
collateralTokens: Object.fromEntries(
|
|
15588
15739
|
Object.entries(state.collateralTokens).map(([k, v]) => [
|
|
15589
15740
|
labelAddress(k),
|
|
15590
|
-
|
|
15741
|
+
percentFmt(v, raw)
|
|
15591
15742
|
])
|
|
15592
15743
|
),
|
|
15593
|
-
feeInterest:
|
|
15594
|
-
feeLiquidation:
|
|
15595
|
-
liquidationDiscount:
|
|
15596
|
-
feeLiquidationExpired:
|
|
15597
|
-
liquidationDiscountExpired:
|
|
15744
|
+
feeInterest: percentFmt(state.feeInterest, raw),
|
|
15745
|
+
feeLiquidation: percentFmt(state.feeLiquidation, raw),
|
|
15746
|
+
liquidationDiscount: percentFmt(state.liquidationDiscount, raw),
|
|
15747
|
+
feeLiquidationExpired: percentFmt(state.feeLiquidationExpired, raw),
|
|
15748
|
+
liquidationDiscountExpired: percentFmt(
|
|
15598
15749
|
state.liquidationDiscountExpired,
|
|
15599
15750
|
raw
|
|
15600
15751
|
),
|
|
15601
|
-
quotedTokensMask:
|
|
15752
|
+
quotedTokensMask: fmtBinaryMask(state.quotedTokensMask),
|
|
15602
15753
|
contractsToAdapters: Object.fromEntries(
|
|
15603
15754
|
Object.entries(state.contractsToAdapters).map(([k, v]) => [
|
|
15604
15755
|
labelAddress(k),
|
|
@@ -15632,6 +15783,8 @@ function convertCreditFactoryStateToHuman(state, labelAddress, _raw = true) {
|
|
|
15632
15783
|
)
|
|
15633
15784
|
};
|
|
15634
15785
|
}
|
|
15786
|
+
|
|
15787
|
+
// src/state/poolStateHuman.ts
|
|
15635
15788
|
function convertPoolStateToHuman(state, labelAddress, raw = true) {
|
|
15636
15789
|
return {
|
|
15637
15790
|
...convertBaseContractState(state, labelAddress),
|
|
@@ -15639,27 +15792,27 @@ function convertPoolStateToHuman(state, labelAddress, raw = true) {
|
|
|
15639
15792
|
symbol: state.symbol,
|
|
15640
15793
|
name: state.name,
|
|
15641
15794
|
decimals: state.decimals,
|
|
15642
|
-
availableLiquidity:
|
|
15795
|
+
availableLiquidity: formatBNvalue(
|
|
15643
15796
|
state.availableLiquidity,
|
|
15644
15797
|
state.decimals,
|
|
15645
15798
|
2,
|
|
15646
15799
|
raw
|
|
15647
15800
|
),
|
|
15648
|
-
expectedLiquidity:
|
|
15801
|
+
expectedLiquidity: formatBNvalue(
|
|
15649
15802
|
state.expectedLiquidity,
|
|
15650
15803
|
state.decimals,
|
|
15651
15804
|
2,
|
|
15652
15805
|
raw
|
|
15653
15806
|
),
|
|
15654
|
-
totalBorrowed:
|
|
15655
|
-
totalDebtLimit:
|
|
15807
|
+
totalBorrowed: formatBNvalue(state.totalBorrowed, state.decimals, 2, raw),
|
|
15808
|
+
totalDebtLimit: formatBNvalue(state.totalDebtLimit, state.decimals, 2, raw),
|
|
15656
15809
|
creditManagerDebtParams: Object.fromEntries(
|
|
15657
15810
|
Object.entries(state.creditManagerDebtParams).map(([cm, params]) => [
|
|
15658
15811
|
labelAddress(cm),
|
|
15659
15812
|
{
|
|
15660
|
-
borrowed:
|
|
15661
|
-
limit:
|
|
15662
|
-
availableToBorrow:
|
|
15813
|
+
borrowed: formatBNvalue(params.borrowed, state.decimals, 2, raw),
|
|
15814
|
+
limit: formatBNvalue(params.limit, state.decimals, 2, raw),
|
|
15815
|
+
availableToBorrow: formatBNvalue(
|
|
15663
15816
|
params.availableToBorrow,
|
|
15664
15817
|
state.decimals,
|
|
15665
15818
|
2,
|
|
@@ -15668,28 +15821,28 @@ function convertPoolStateToHuman(state, labelAddress, raw = true) {
|
|
|
15668
15821
|
}
|
|
15669
15822
|
])
|
|
15670
15823
|
),
|
|
15671
|
-
totalAssets:
|
|
15672
|
-
totalSupply:
|
|
15673
|
-
supplyRate: `${
|
|
15674
|
-
baseInterestIndex: `${
|
|
15675
|
-
baseInterestRate: `${
|
|
15676
|
-
withdrawFee:
|
|
15824
|
+
totalAssets: formatBNvalue(state.totalAssets, state.decimals, 2, raw),
|
|
15825
|
+
totalSupply: formatBNvalue(state.totalSupply, state.decimals, 2, raw),
|
|
15826
|
+
supplyRate: `${formatBNvalue(state.supplyRate, 25, 2, raw)}%`,
|
|
15827
|
+
baseInterestIndex: `${formatBNvalue(state.totalSupply, 25, 2, raw)}%`,
|
|
15828
|
+
baseInterestRate: `${formatBNvalue(state.totalSupply, 25, 2, raw)}%`,
|
|
15829
|
+
withdrawFee: percentFmt(state.withdrawFee),
|
|
15677
15830
|
lastBaseInterestUpdate: state.lastBaseInterestUpdate.toString(),
|
|
15678
15831
|
baseInterestIndexLU: state.lastBaseInterestUpdate.toString(),
|
|
15679
15832
|
isPaused: state.isPaused
|
|
15680
15833
|
};
|
|
15681
15834
|
}
|
|
15682
|
-
function convertPoolQuotaKeeperStateToHuman(state,
|
|
15835
|
+
function convertPoolQuotaKeeperStateToHuman(state, decimals2, labelAddress, raw = true) {
|
|
15683
15836
|
return {
|
|
15684
15837
|
...convertBaseContractState(state, labelAddress),
|
|
15685
15838
|
quotas: Object.entries(state.quotas).reduce(
|
|
15686
15839
|
(acc, [address, params]) => ({
|
|
15687
15840
|
...acc,
|
|
15688
15841
|
[address]: {
|
|
15689
|
-
rate:
|
|
15690
|
-
quotaIncreaseFee:
|
|
15691
|
-
totalQuoted:
|
|
15692
|
-
limit:
|
|
15842
|
+
rate: percentFmt(params.rate, raw),
|
|
15843
|
+
quotaIncreaseFee: percentFmt(params.quotaIncreaseFee, raw),
|
|
15844
|
+
totalQuoted: formatBNvalue(params.totalQuoted, decimals2, 2, raw),
|
|
15845
|
+
limit: formatBNvalue(params.limit, decimals2, 2, raw),
|
|
15693
15846
|
isActive: params.isActive
|
|
15694
15847
|
}
|
|
15695
15848
|
}),
|
|
@@ -15700,12 +15853,12 @@ function convertPoolQuotaKeeperStateToHuman(state, decimals4, labelAddress, raw
|
|
|
15700
15853
|
function convertLinearModelStateToHuman(state, labelAddress, raw = true) {
|
|
15701
15854
|
return {
|
|
15702
15855
|
...convertBaseContractState(state, labelAddress),
|
|
15703
|
-
U1:
|
|
15704
|
-
U2:
|
|
15705
|
-
Rbase:
|
|
15706
|
-
Rslope1:
|
|
15707
|
-
Rslope2:
|
|
15708
|
-
Rslope3:
|
|
15856
|
+
U1: percentFmt(state.U1, raw),
|
|
15857
|
+
U2: percentFmt(state.U2, raw),
|
|
15858
|
+
Rbase: percentFmt(state.Rbase, raw),
|
|
15859
|
+
Rslope1: percentFmt(state.Rslope1, raw),
|
|
15860
|
+
Rslope2: percentFmt(state.Rslope2, raw),
|
|
15861
|
+
Rslope3: percentFmt(state.Rslope3, raw),
|
|
15709
15862
|
isBorrowingMoreU2Forbidden: state.isBorrowingMoreU2Forbidden
|
|
15710
15863
|
};
|
|
15711
15864
|
}
|
|
@@ -15718,11 +15871,11 @@ function convertGaugeStateToHuman(state, labelAddress, raw = true) {
|
|
|
15718
15871
|
(acc, [address, params]) => ({
|
|
15719
15872
|
...acc,
|
|
15720
15873
|
[address]: {
|
|
15721
|
-
minRate:
|
|
15722
|
-
maxRate:
|
|
15874
|
+
minRate: percentFmt(params.minRate, raw),
|
|
15875
|
+
maxRate: percentFmt(params.maxRate, raw),
|
|
15723
15876
|
totalVotesLpSide: params.totalVotesLpSide / 1e18,
|
|
15724
15877
|
totalVotesCaSide: params.totalVotesCaSide / 1e18,
|
|
15725
|
-
rate:
|
|
15878
|
+
rate: percentFmt(params.rate, raw)
|
|
15726
15879
|
}
|
|
15727
15880
|
}),
|
|
15728
15881
|
{}
|
|
@@ -15742,6 +15895,8 @@ function convertPoolFactoryStateToHuman(state, labelAddress, raw = true) {
|
|
|
15742
15895
|
gauge: convertGaugeStateToHuman(state.gauge, labelAddress, raw)
|
|
15743
15896
|
};
|
|
15744
15897
|
}
|
|
15898
|
+
|
|
15899
|
+
// src/state/priceFactoryStateHuman.ts
|
|
15745
15900
|
function convertPriceOracleStateToHuman(state, labelAddress, _raw = true) {
|
|
15746
15901
|
return {
|
|
15747
15902
|
priceOracleV3: {
|
|
@@ -15771,7 +15926,7 @@ function convertPriceFeedStateToHuman(state, labelAddress, raw = true) {
|
|
|
15771
15926
|
pricefeeds: state.pricefeeds.map(
|
|
15772
15927
|
(pf) => convertPriceFeedStateToHuman(pf, labelAddress)
|
|
15773
15928
|
),
|
|
15774
|
-
stalenessPeriod:
|
|
15929
|
+
stalenessPeriod: formatDuration(state.stalenessPeriod, raw)
|
|
15775
15930
|
};
|
|
15776
15931
|
}
|
|
15777
15932
|
case "PF_REDSTONE_ORACLE": {
|
|
@@ -15779,7 +15934,7 @@ function convertPriceFeedStateToHuman(state, labelAddress, raw = true) {
|
|
|
15779
15934
|
...state,
|
|
15780
15935
|
...convertBaseContractState(state, labelAddress),
|
|
15781
15936
|
contractType: "PF_REDSTONE_ORACLE",
|
|
15782
|
-
stalenessPeriod:
|
|
15937
|
+
stalenessPeriod: formatDuration(state.stalenessPeriod, raw)
|
|
15783
15938
|
};
|
|
15784
15939
|
}
|
|
15785
15940
|
default: {
|
|
@@ -15789,7 +15944,7 @@ function convertPriceFeedStateToHuman(state, labelAddress, raw = true) {
|
|
|
15789
15944
|
pricefeeds: state.pricefeeds.map(
|
|
15790
15945
|
(pf) => convertPriceFeedStateToHuman(pf, labelAddress)
|
|
15791
15946
|
),
|
|
15792
|
-
stalenessPeriod:
|
|
15947
|
+
stalenessPeriod: formatDuration(state.stalenessPeriod, raw)
|
|
15793
15948
|
};
|
|
15794
15949
|
}
|
|
15795
15950
|
}
|
|
@@ -15956,6 +16111,7 @@ exports.BalancerStablePriceFeedContract = BalancerStablePriceFeedContract;
|
|
|
15956
16111
|
exports.BalancerWeightedPriceFeedContract = BalancerWeightedPriceFeedContract;
|
|
15957
16112
|
exports.BaseContract = BaseContract;
|
|
15958
16113
|
exports.BotListContract = BotListContract;
|
|
16114
|
+
exports.BotPermissions = BotPermissions;
|
|
15959
16115
|
exports.BoundedPriceFeedContract = BoundedPriceFeedContract;
|
|
15960
16116
|
exports.ChainlinkPriceFeedContract = ChainlinkPriceFeedContract;
|
|
15961
16117
|
exports.CompositePriceFeedContract = CompositePriceFeedContract;
|
|
@@ -15989,10 +16145,13 @@ exports.Provider = Provider;
|
|
|
15989
16145
|
exports.RedstonePriceFeedContract = RedstonePriceFeedContract;
|
|
15990
16146
|
exports.SDKConstruct = SDKConstruct;
|
|
15991
16147
|
exports.SUPPORTED_CHAINS = SUPPORTED_CHAINS;
|
|
16148
|
+
exports.TIMELOCK = TIMELOCK;
|
|
16149
|
+
exports.USDC = USDC;
|
|
15992
16150
|
exports.VotingContractStatus = VotingContractStatus;
|
|
15993
16151
|
exports.WstETHPriceFeedContract = WstETHPriceFeedContract;
|
|
15994
16152
|
exports.YearnPriceFeedContract = YearnPriceFeedContract;
|
|
15995
16153
|
exports.ZeroPriceFeedContract = ZeroPriceFeedContract;
|
|
16154
|
+
exports.botPermissionsToString = botPermissionsToString;
|
|
15996
16155
|
exports.bytes32ToString = bytes32ToString;
|
|
15997
16156
|
exports.chains = chains;
|
|
15998
16157
|
exports.childLogger = childLogger;
|
|
@@ -16013,6 +16172,16 @@ exports.convertRouterStateToHuman = convertRouterStateToHuman;
|
|
|
16013
16172
|
exports.convertRouterV3StateToHuman = convertRouterV3StateToHuman;
|
|
16014
16173
|
exports.convertZapperRegisterStateToHuman = convertZapperRegisterStateToHuman;
|
|
16015
16174
|
exports.createRawTx = createRawTx;
|
|
16016
|
-
exports.
|
|
16175
|
+
exports.etherscanUrl = etherscanUrl;
|
|
16176
|
+
exports.filterDust = filterDust;
|
|
16177
|
+
exports.fmtBinaryMask = fmtBinaryMask;
|
|
16178
|
+
exports.formatBN = formatBN;
|
|
16179
|
+
exports.formatBNvalue = formatBNvalue;
|
|
16180
|
+
exports.formatBn4dig = formatBn4dig;
|
|
16181
|
+
exports.formatDuration = formatDuration;
|
|
16182
|
+
exports.formatNumberToString_ = formatNumberToString_;
|
|
16017
16183
|
exports.json_parse = json_parse;
|
|
16018
16184
|
exports.json_stringify = json_stringify;
|
|
16185
|
+
exports.numberWithCommas = numberWithCommas;
|
|
16186
|
+
exports.percentFmt = percentFmt;
|
|
16187
|
+
exports.toHumanFormat = toHumanFormat;
|