@1delta/margin-fetcher 0.0.313 → 0.0.314
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.js
CHANGED
|
@@ -24668,9 +24668,9 @@ var MULTICALL_ADDRESS = {
|
|
|
24668
24668
|
// src/utils/multicall.ts
|
|
24669
24669
|
var { isArray } = lodash;
|
|
24670
24670
|
var maxRetries = 3;
|
|
24671
|
-
var multicallViemAbiArray = async (chainId, abi, calls,
|
|
24671
|
+
var multicallViemAbiArray = async (chainId, abi, calls, getEvmClient17, retry = true, providerId = 0, retries = maxRetries, allowFailure = true, batchSize = MULTICALL_DEFAULT_BATCH_SIZE, logs = false) => {
|
|
24672
24672
|
try {
|
|
24673
|
-
const provider =
|
|
24673
|
+
const provider = getEvmClient17(chainId, providerId);
|
|
24674
24674
|
const abiIsArray = isArray(abi[0]);
|
|
24675
24675
|
const returnData = await provider.multicall({
|
|
24676
24676
|
allowFailure,
|
|
@@ -24696,7 +24696,7 @@ var multicallViemAbiArray = async (chainId, abi, calls, getEvmClient16, retry =
|
|
|
24696
24696
|
chainId,
|
|
24697
24697
|
abi,
|
|
24698
24698
|
calls,
|
|
24699
|
-
|
|
24699
|
+
getEvmClient17,
|
|
24700
24700
|
retry,
|
|
24701
24701
|
providerId,
|
|
24702
24702
|
retries,
|
|
@@ -24706,13 +24706,13 @@ var multicallViemAbiArray = async (chainId, abi, calls, getEvmClient16, retry =
|
|
|
24706
24706
|
);
|
|
24707
24707
|
}
|
|
24708
24708
|
};
|
|
24709
|
-
var multicallShardedAbiArray = async (chainId, abi, calls,
|
|
24709
|
+
var multicallShardedAbiArray = async (chainId, abi, calls, getEvmClient17, poolSize, retries = maxRetries, allowFailure = true, batchSize = MULTICALL_DEFAULT_BATCH_SIZE, logs = false) => {
|
|
24710
24710
|
if (poolSize <= 1) {
|
|
24711
24711
|
return multicallViemAbiArray(
|
|
24712
24712
|
chainId,
|
|
24713
24713
|
abi,
|
|
24714
24714
|
calls,
|
|
24715
|
-
|
|
24715
|
+
getEvmClient17,
|
|
24716
24716
|
true,
|
|
24717
24717
|
0,
|
|
24718
24718
|
retries,
|
|
@@ -24735,7 +24735,7 @@ var multicallShardedAbiArray = async (chainId, abi, calls, getEvmClient16, poolS
|
|
|
24735
24735
|
const results = new Array(contracts.length);
|
|
24736
24736
|
const runBatch = async (batch, rpcId, attemptsLeft, size) => {
|
|
24737
24737
|
try {
|
|
24738
|
-
const provider =
|
|
24738
|
+
const provider = getEvmClient17(chainId, rpcId);
|
|
24739
24739
|
const returnData = await provider.multicall({
|
|
24740
24740
|
allowFailure,
|
|
24741
24741
|
batchSize: size,
|
|
@@ -29362,7 +29362,7 @@ function unflattenLenderData(pools) {
|
|
|
29362
29362
|
}
|
|
29363
29363
|
return result;
|
|
29364
29364
|
}
|
|
29365
|
-
var getLenderUserDataResult = async (chainId, queriesRaw,
|
|
29365
|
+
var getLenderUserDataResult = async (chainId, queriesRaw, getEvmClient17, allowFailure = true, batchSize = MULTICALL_DEFAULT_BATCH_SIZE, retries = 3, logs = false, concurrency = 1) => {
|
|
29366
29366
|
const queries = organizeUserQueries(queriesRaw);
|
|
29367
29367
|
const builtCalls = await Promise.all(
|
|
29368
29368
|
queries.map(async (query3) => {
|
|
@@ -29372,7 +29372,7 @@ var getLenderUserDataResult = async (chainId, queriesRaw, getEvmClient16, allowF
|
|
|
29372
29372
|
query3.lender,
|
|
29373
29373
|
query3.account,
|
|
29374
29374
|
query3.params,
|
|
29375
|
-
|
|
29375
|
+
getEvmClient17
|
|
29376
29376
|
);
|
|
29377
29377
|
return callData.map((call) => ({ call, abi: call.abi ?? abi }));
|
|
29378
29378
|
})
|
|
@@ -29382,7 +29382,7 @@ var getLenderUserDataResult = async (chainId, queriesRaw, getEvmClient16, allowF
|
|
|
29382
29382
|
chainId,
|
|
29383
29383
|
calls.map((call) => call.abi),
|
|
29384
29384
|
calls.map((call) => call.call),
|
|
29385
|
-
|
|
29385
|
+
getEvmClient17,
|
|
29386
29386
|
concurrency,
|
|
29387
29387
|
retries,
|
|
29388
29388
|
allowFailure,
|
|
@@ -44946,6 +44946,67 @@ var readerErc46262 = (entry) => {
|
|
|
44946
44946
|
|
|
44947
44947
|
// src/vaults/savings/readers/index.ts
|
|
44948
44948
|
var buildReader2 = (entry) => readerErc46262(entry);
|
|
44949
|
+
var CHAIN_ID7 = "4663";
|
|
44950
|
+
var VAULT2 = "0xde770c84fe66e063336b31737cfe9790f18c4087";
|
|
44951
|
+
var SPARK_SAVINGS_USDG_KEY = "SPUSDG";
|
|
44952
|
+
var RAY3 = 10n ** 27n;
|
|
44953
|
+
var YEAR_SECONDS9 = 365 * 24 * 60 * 60;
|
|
44954
|
+
var WINDOW_BLOCKS6 = 400000n;
|
|
44955
|
+
var MAX_RPC_TRIES6 = 3;
|
|
44956
|
+
var CHI_ABI = [
|
|
44957
|
+
{
|
|
44958
|
+
name: "chi",
|
|
44959
|
+
type: "function",
|
|
44960
|
+
stateMutability: "view",
|
|
44961
|
+
inputs: [],
|
|
44962
|
+
outputs: [{ type: "uint256" }]
|
|
44963
|
+
}
|
|
44964
|
+
];
|
|
44965
|
+
var readChiAt = (client, blockNumber) => client.readContract({
|
|
44966
|
+
address: VAULT2,
|
|
44967
|
+
abi: CHI_ABI,
|
|
44968
|
+
functionName: "chi",
|
|
44969
|
+
...blockNumber !== void 0 ? { blockNumber } : {}
|
|
44970
|
+
});
|
|
44971
|
+
var computeApr7 = async () => {
|
|
44972
|
+
let lastErr;
|
|
44973
|
+
for (let rpcId = 0; rpcId < MAX_RPC_TRIES6; rpcId++) {
|
|
44974
|
+
try {
|
|
44975
|
+
const client = getEvmClient(CHAIN_ID7, rpcId);
|
|
44976
|
+
const head = await client.getBlockNumber();
|
|
44977
|
+
const pastBlock = head > WINDOW_BLOCKS6 ? head - WINDOW_BLOCKS6 : 0n;
|
|
44978
|
+
const [chiNow, chiThen, headBlock, thenBlock] = await Promise.all([
|
|
44979
|
+
readChiAt(client),
|
|
44980
|
+
readChiAt(client, pastBlock),
|
|
44981
|
+
client.getBlock({ blockNumber: head }),
|
|
44982
|
+
client.getBlock({ blockNumber: pastBlock })
|
|
44983
|
+
]);
|
|
44984
|
+
if (chiNow < RAY3 || chiThen < RAY3 || chiNow < chiThen) {
|
|
44985
|
+
throw new Error(
|
|
44986
|
+
`non-archival or invalid chi (now=${chiNow}, then=${chiThen})`
|
|
44987
|
+
);
|
|
44988
|
+
}
|
|
44989
|
+
const elapsed = Number(headBlock.timestamp - thenBlock.timestamp);
|
|
44990
|
+
if (elapsed <= 0) throw new Error("non-positive elapsed window");
|
|
44991
|
+
const growth = Number(chiNow - chiThen) / Number(chiThen);
|
|
44992
|
+
const apr = growth * (YEAR_SECONDS9 / elapsed) * 100;
|
|
44993
|
+
if (!Number.isFinite(apr) || apr < 0) throw new Error(`bad apr ${apr}`);
|
|
44994
|
+
return apr;
|
|
44995
|
+
} catch (e) {
|
|
44996
|
+
lastErr = e;
|
|
44997
|
+
}
|
|
44998
|
+
}
|
|
44999
|
+
throw new Error(
|
|
45000
|
+
`spUSDG APR: no Robinhood RPC returned valid historical chi (${String(lastErr)})`
|
|
45001
|
+
);
|
|
45002
|
+
};
|
|
45003
|
+
var sparkSavingsUsdgFetcher = {
|
|
45004
|
+
label: "SPARK_SAVINGS_USDG",
|
|
45005
|
+
fetch: async () => {
|
|
45006
|
+
const apr = await computeApr7();
|
|
45007
|
+
return { [SPARK_SAVINGS_USDG_KEY]: apr };
|
|
45008
|
+
}
|
|
45009
|
+
};
|
|
44949
45010
|
|
|
44950
45011
|
// src/vaults/savings/registry.ts
|
|
44951
45012
|
var stUsdGroup = {
|
|
@@ -45273,6 +45334,25 @@ var SINGLE_CHAIN_ENTRIES = {
|
|
|
45273
45334
|
yieldFetcher: savbtcFetcher,
|
|
45274
45335
|
yieldKey: "Staked avBTC::savBTC"
|
|
45275
45336
|
}
|
|
45337
|
+
],
|
|
45338
|
+
"4663": [
|
|
45339
|
+
{
|
|
45340
|
+
// Spark Savings USDG on Robinhood Chain — Sky/Spark savings token
|
|
45341
|
+
// over USDG. ERC-4626 share price accrues via a `chi()` rate
|
|
45342
|
+
// accumulator; `ssr()` is not readable so APR comes from the
|
|
45343
|
+
// chi-delta fetcher. Standard permissionless 4626 redeem.
|
|
45344
|
+
address: "0xde770c84fe66e063336b31737cfe9790f18c4087",
|
|
45345
|
+
underlying: "0x5fc5360d0400a0fd4f2af552add042d716f1d168",
|
|
45346
|
+
// USDG
|
|
45347
|
+
symbol: "spUSDG",
|
|
45348
|
+
brand: "Spark",
|
|
45349
|
+
decimals: 6,
|
|
45350
|
+
isRebasing: false,
|
|
45351
|
+
isMintable: true,
|
|
45352
|
+
withdrawalMode: "instant",
|
|
45353
|
+
yieldFetcher: sparkSavingsUsdgFetcher,
|
|
45354
|
+
yieldKey: SPARK_SAVINGS_USDG_KEY
|
|
45355
|
+
}
|
|
45276
45356
|
]
|
|
45277
45357
|
};
|
|
45278
45358
|
var SAVINGS_REGISTRY = (() => {
|
|
@@ -47750,7 +47830,7 @@ var readVaultSharePrices = async (chainId, addresses, multicallRetry) => {
|
|
|
47750
47830
|
};
|
|
47751
47831
|
|
|
47752
47832
|
// src/vaults/yield/annualize.ts
|
|
47753
|
-
var
|
|
47833
|
+
var YEAR_SECONDS10 = 365 * 24 * 60 * 60;
|
|
47754
47834
|
var SCALE = 10n ** 18n;
|
|
47755
47835
|
var appendSnapshot = (points, snap, options) => {
|
|
47756
47836
|
const maxPoints = options?.maxPoints ?? 90;
|
|
@@ -47779,7 +47859,7 @@ var computeVaultApr = (points, options) => {
|
|
|
47779
47859
|
if (pThen === 0n) return void 0;
|
|
47780
47860
|
const ratioScaled = BigInt(now.p) * SCALE / pThen;
|
|
47781
47861
|
const ratio = Number(ratioScaled) / 1e18;
|
|
47782
|
-
const apr = (ratio - 1) * (
|
|
47862
|
+
const apr = (ratio - 1) * (YEAR_SECONDS10 / windowSeconds);
|
|
47783
47863
|
return {
|
|
47784
47864
|
apr,
|
|
47785
47865
|
sharePriceNow: now.p,
|