@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, getEvmClient16, retry = true, providerId = 0, retries = maxRetries, allowFailure = true, batchSize = MULTICALL_DEFAULT_BATCH_SIZE, logs = false) => {
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 = getEvmClient16(chainId, providerId);
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
- getEvmClient16,
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, getEvmClient16, poolSize, retries = maxRetries, allowFailure = true, batchSize = MULTICALL_DEFAULT_BATCH_SIZE, logs = false) => {
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
- getEvmClient16,
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 = getEvmClient16(chainId, rpcId);
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, getEvmClient16, allowFailure = true, batchSize = MULTICALL_DEFAULT_BATCH_SIZE, retries = 3, logs = false, concurrency = 1) => {
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
- getEvmClient16
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
- getEvmClient16,
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 YEAR_SECONDS9 = 365 * 24 * 60 * 60;
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) * (YEAR_SECONDS9 / windowSeconds);
47862
+ const apr = (ratio - 1) * (YEAR_SECONDS10 / windowSeconds);
47783
47863
  return {
47784
47864
  apr,
47785
47865
  sharePriceNow: now.p,