@1delta/margin-fetcher 0.0.314 → 0.0.316

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
@@ -32839,6 +32839,67 @@ var hastraPrimeFetcher = {
32839
32839
  return { [HASTRA_PRIME_KEY]: Math.max(0, apr) };
32840
32840
  }
32841
32841
  };
32842
+ var CHAIN_ID4 = "4663";
32843
+ var VAULT2 = "0xde770c84fe66e063336b31737cfe9790f18c4087";
32844
+ var SPARK_SAVINGS_USDG_KEY = "SPUSDG";
32845
+ var RAY3 = 10n ** 27n;
32846
+ var YEAR_SECONDS6 = 365 * 24 * 60 * 60;
32847
+ var WINDOW_BLOCKS3 = 400000n;
32848
+ var MAX_RPC_TRIES3 = 3;
32849
+ var CHI_ABI = [
32850
+ {
32851
+ name: "chi",
32852
+ type: "function",
32853
+ stateMutability: "view",
32854
+ inputs: [],
32855
+ outputs: [{ type: "uint256" }]
32856
+ }
32857
+ ];
32858
+ var readChiAt = (client, blockNumber) => client.readContract({
32859
+ address: VAULT2,
32860
+ abi: CHI_ABI,
32861
+ functionName: "chi",
32862
+ ...blockNumber !== void 0 ? { blockNumber } : {}
32863
+ });
32864
+ var computeApr4 = async () => {
32865
+ let lastErr;
32866
+ for (let rpcId = 0; rpcId < MAX_RPC_TRIES3; rpcId++) {
32867
+ try {
32868
+ const client = getEvmClient(CHAIN_ID4, rpcId);
32869
+ const head = await client.getBlockNumber();
32870
+ const pastBlock = head > WINDOW_BLOCKS3 ? head - WINDOW_BLOCKS3 : 0n;
32871
+ const [chiNow, chiThen, headBlock, thenBlock] = await Promise.all([
32872
+ readChiAt(client),
32873
+ readChiAt(client, pastBlock),
32874
+ client.getBlock({ blockNumber: head }),
32875
+ client.getBlock({ blockNumber: pastBlock })
32876
+ ]);
32877
+ if (chiNow < RAY3 || chiThen < RAY3 || chiNow < chiThen) {
32878
+ throw new Error(
32879
+ `non-archival or invalid chi (now=${chiNow}, then=${chiThen})`
32880
+ );
32881
+ }
32882
+ const elapsed = Number(headBlock.timestamp - thenBlock.timestamp);
32883
+ if (elapsed <= 0) throw new Error("non-positive elapsed window");
32884
+ const growth = Number(chiNow - chiThen) / Number(chiThen);
32885
+ const apr = growth * (YEAR_SECONDS6 / elapsed) * 100;
32886
+ if (!Number.isFinite(apr) || apr < 0) throw new Error(`bad apr ${apr}`);
32887
+ return apr;
32888
+ } catch (e) {
32889
+ lastErr = e;
32890
+ }
32891
+ }
32892
+ throw new Error(
32893
+ `spUSDG APR: no Robinhood RPC returned valid historical chi (${String(lastErr)})`
32894
+ );
32895
+ };
32896
+ var sparkSavingsUsdgFetcher = {
32897
+ label: "SPARK_SAVINGS_USDG",
32898
+ fetch: async () => {
32899
+ const apr = await computeApr4();
32900
+ return { [SPARK_SAVINGS_USDG_KEY]: apr };
32901
+ }
32902
+ };
32842
32903
 
32843
32904
  // src/yields/intrinsic/fetchers/lombard.ts
32844
32905
  var LBTC_APY_URL = "https://mainnet.prod.lombard.finance/api/v1/analytics/estimated-apy";
@@ -33035,6 +33096,7 @@ async function fetchIntrinsicYields() {
33035
33096
  psxdcFetcher,
33036
33097
  coreLstFetcher,
33037
33098
  hastraPrimeFetcher,
33099
+ sparkSavingsUsdgFetcher,
33038
33100
  lombardLbtcFetcher,
33039
33101
  lombardLbtcvFetcher,
33040
33102
  accountableFetcher,
@@ -38496,14 +38558,14 @@ var fetchEulerEarnVaults = async (chainId, prices = {}, tokenList = {}, multical
38496
38558
  ).catch(() => void 0);
38497
38559
  return isNonEmpty(fromSubgraph) ? fromSubgraph : fromApi ?? {};
38498
38560
  };
38499
- var CHAIN_ID4 = "1";
38561
+ var CHAIN_ID5 = "1";
38500
38562
  var SWBTC = "0x8db2350d78abc13f5673a411d4700bcf87864dde";
38501
38563
  var ONE_E8 = 10n ** 8n;
38502
- var YEAR_SECONDS6 = 365 * 24 * 60 * 60;
38564
+ var YEAR_SECONDS7 = 365 * 24 * 60 * 60;
38503
38565
  var WINDOW_SECONDS4 = 7 * 24 * 60 * 60;
38504
38566
  var BLOCK_TIME_SECONDS3 = 12;
38505
- var WINDOW_BLOCKS3 = BigInt(Math.floor(WINDOW_SECONDS4 / BLOCK_TIME_SECONDS3));
38506
- var MAX_RPC_TRIES3 = 5;
38567
+ var WINDOW_BLOCKS4 = BigInt(Math.floor(WINDOW_SECONDS4 / BLOCK_TIME_SECONDS3));
38568
+ var MAX_RPC_TRIES4 = 5;
38507
38569
  var CONVERT_TO_ASSETS_ABI3 = [
38508
38570
  {
38509
38571
  name: "convertToAssets",
@@ -38520,13 +38582,13 @@ var readRateAt3 = (client, blockNumber) => client.readContract({
38520
38582
  args: [ONE_E8],
38521
38583
  ...blockNumber !== void 0 ? { blockNumber } : {}
38522
38584
  });
38523
- var computeApr4 = async () => {
38585
+ var computeApr5 = async () => {
38524
38586
  let lastErr;
38525
- for (let rpcId = 0; rpcId < MAX_RPC_TRIES3; rpcId++) {
38587
+ for (let rpcId = 0; rpcId < MAX_RPC_TRIES4; rpcId++) {
38526
38588
  try {
38527
- const client = getEvmClient(CHAIN_ID4, rpcId);
38589
+ const client = getEvmClient(CHAIN_ID5, rpcId);
38528
38590
  const head = await client.getBlockNumber();
38529
- const pastBlock = head > WINDOW_BLOCKS3 ? head - WINDOW_BLOCKS3 : 0n;
38591
+ const pastBlock = head > WINDOW_BLOCKS4 ? head - WINDOW_BLOCKS4 : 0n;
38530
38592
  const [rateNow, rateThen, headBlock, thenBlock] = await Promise.all([
38531
38593
  readRateAt3(client),
38532
38594
  readRateAt3(client, pastBlock),
@@ -38541,7 +38603,7 @@ var computeApr4 = async () => {
38541
38603
  const elapsed = Number(headBlock.timestamp - thenBlock.timestamp);
38542
38604
  if (elapsed <= 0) throw new Error(`bad elapsed ${elapsed}`);
38543
38605
  const growth = Number(rateNow) / Number(rateThen) - 1;
38544
- const apr = growth * (YEAR_SECONDS6 / elapsed) * 100;
38606
+ const apr = growth * (YEAR_SECONDS7 / elapsed) * 100;
38545
38607
  if (!Number.isFinite(apr) || apr < 0) throw new Error(`bad apr ${apr}`);
38546
38608
  return apr;
38547
38609
  } catch (e) {
@@ -38556,20 +38618,20 @@ var swBtcFetcher = {
38556
38618
  label: "SWBTC",
38557
38619
  fetch: async () => {
38558
38620
  try {
38559
- return { SWBTC: await computeApr4() };
38621
+ return { SWBTC: await computeApr5() };
38560
38622
  } catch {
38561
38623
  return { SWBTC: 0 };
38562
38624
  }
38563
38625
  }
38564
38626
  };
38565
- var CHAIN_ID5 = "42220";
38627
+ var CHAIN_ID6 = "42220";
38566
38628
  var MANAGER = "0x0239b96d10a434a56cc9e09383077a0490cf9398";
38567
38629
  var ONE_E184 = 10n ** 18n;
38568
- var YEAR_SECONDS7 = 365 * 24 * 60 * 60;
38630
+ var YEAR_SECONDS8 = 365 * 24 * 60 * 60;
38569
38631
  var WINDOW_SECONDS5 = 7 * 24 * 60 * 60;
38570
38632
  var BLOCK_TIME_SECONDS4 = 1;
38571
- var WINDOW_BLOCKS4 = BigInt(Math.floor(WINDOW_SECONDS5 / BLOCK_TIME_SECONDS4));
38572
- var MAX_RPC_TRIES4 = 5;
38633
+ var WINDOW_BLOCKS5 = BigInt(Math.floor(WINDOW_SECONDS5 / BLOCK_TIME_SECONDS4));
38634
+ var MAX_RPC_TRIES5 = 5;
38573
38635
  var TO_CELO_ABI = [
38574
38636
  {
38575
38637
  name: "toCelo",
@@ -38586,13 +38648,13 @@ var readRateAt4 = (client, blockNumber) => client.readContract({
38586
38648
  args: [ONE_E184],
38587
38649
  ...blockNumber !== void 0 ? { blockNumber } : {}
38588
38650
  });
38589
- var computeApr5 = async () => {
38651
+ var computeApr6 = async () => {
38590
38652
  let lastErr;
38591
- for (let rpcId = 0; rpcId < MAX_RPC_TRIES4; rpcId++) {
38653
+ for (let rpcId = 0; rpcId < MAX_RPC_TRIES5; rpcId++) {
38592
38654
  try {
38593
- const client = getEvmClient(CHAIN_ID5, rpcId);
38655
+ const client = getEvmClient(CHAIN_ID6, rpcId);
38594
38656
  const head = await client.getBlockNumber();
38595
- const pastBlock = head > WINDOW_BLOCKS4 ? head - WINDOW_BLOCKS4 : 0n;
38657
+ const pastBlock = head > WINDOW_BLOCKS5 ? head - WINDOW_BLOCKS5 : 0n;
38596
38658
  const [rateNow, rateThen, headBlock, thenBlock] = await Promise.all([
38597
38659
  readRateAt4(client),
38598
38660
  readRateAt4(client, pastBlock),
@@ -38607,7 +38669,7 @@ var computeApr5 = async () => {
38607
38669
  const elapsed = Number(headBlock.timestamp - thenBlock.timestamp);
38608
38670
  if (elapsed <= 0) throw new Error("non-positive elapsed window");
38609
38671
  const growth = Number(rateNow - rateThen) / Number(rateThen);
38610
- const apr = growth * (YEAR_SECONDS7 / elapsed) * 100;
38672
+ const apr = growth * (YEAR_SECONDS8 / elapsed) * 100;
38611
38673
  if (!Number.isFinite(apr) || apr < 0) throw new Error(`bad apr ${apr}`);
38612
38674
  return apr;
38613
38675
  } catch (e) {
@@ -38621,18 +38683,18 @@ var computeApr5 = async () => {
38621
38683
  var stceloFetcher = {
38622
38684
  label: "STCELO",
38623
38685
  fetch: async () => {
38624
- const apr = await computeApr5();
38686
+ const apr = await computeApr6();
38625
38687
  return { STCELO: apr };
38626
38688
  }
38627
38689
  };
38628
- var CHAIN_ID6 = "1284";
38690
+ var CHAIN_ID7 = "1284";
38629
38691
  var STDOT = "0xbc7e02c4178a7df7d3e564323a5c359dc96c4db4";
38630
38692
  var ONE_E185 = 10n ** 18n;
38631
- var YEAR_SECONDS8 = 365 * 24 * 60 * 60;
38693
+ var YEAR_SECONDS9 = 365 * 24 * 60 * 60;
38632
38694
  var WINDOW_SECONDS6 = 180 * 24 * 60 * 60;
38633
38695
  var BLOCK_TIME_SECONDS5 = 6;
38634
- var WINDOW_BLOCKS5 = BigInt(Math.floor(WINDOW_SECONDS6 / BLOCK_TIME_SECONDS5));
38635
- var MAX_RPC_TRIES5 = 5;
38696
+ var WINDOW_BLOCKS6 = BigInt(Math.floor(WINDOW_SECONDS6 / BLOCK_TIME_SECONDS5));
38697
+ var MAX_RPC_TRIES6 = 5;
38636
38698
  var POOLED_BY_SHARES_ABI = [
38637
38699
  {
38638
38700
  name: "getPooledTokenByShares",
@@ -38649,13 +38711,13 @@ var readRateAt5 = (client, blockNumber) => client.readContract({
38649
38711
  args: [ONE_E185],
38650
38712
  ...blockNumber !== void 0 ? { blockNumber } : {}
38651
38713
  });
38652
- var computeApr6 = async () => {
38714
+ var computeApr7 = async () => {
38653
38715
  let lastErr;
38654
- for (let rpcId = 0; rpcId < MAX_RPC_TRIES5; rpcId++) {
38716
+ for (let rpcId = 0; rpcId < MAX_RPC_TRIES6; rpcId++) {
38655
38717
  try {
38656
- const client = getEvmClient(CHAIN_ID6, rpcId);
38718
+ const client = getEvmClient(CHAIN_ID7, rpcId);
38657
38719
  const head = await client.getBlockNumber();
38658
- const pastBlock = head > WINDOW_BLOCKS5 ? head - WINDOW_BLOCKS5 : 0n;
38720
+ const pastBlock = head > WINDOW_BLOCKS6 ? head - WINDOW_BLOCKS6 : 0n;
38659
38721
  const [rateNow, rateThen, headBlock, thenBlock] = await Promise.all([
38660
38722
  readRateAt5(client),
38661
38723
  readRateAt5(client, pastBlock),
@@ -38670,7 +38732,7 @@ var computeApr6 = async () => {
38670
38732
  const elapsed = Number(headBlock.timestamp - thenBlock.timestamp);
38671
38733
  if (elapsed <= 0) throw new Error("non-positive elapsed window");
38672
38734
  const growth = Number(rateNow - rateThen) / Number(rateThen);
38673
- const apr = growth * (YEAR_SECONDS8 / elapsed) * 100;
38735
+ const apr = growth * (YEAR_SECONDS9 / elapsed) * 100;
38674
38736
  if (!Number.isFinite(apr) || apr < 0) throw new Error(`bad apr ${apr}`);
38675
38737
  return apr;
38676
38738
  } catch (e) {
@@ -38684,7 +38746,7 @@ var computeApr6 = async () => {
38684
38746
  var stDotFetcher = {
38685
38747
  label: "STDOT",
38686
38748
  fetch: async () => {
38687
- const apr = await computeApr6();
38749
+ const apr = await computeApr7();
38688
38750
  return { STDOT: apr };
38689
38751
  }
38690
38752
  };
@@ -44946,67 +45008,6 @@ var readerErc46262 = (entry) => {
44946
45008
 
44947
45009
  // src/vaults/savings/readers/index.ts
44948
45010
  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
- };
45010
45011
 
45011
45012
  // src/vaults/savings/registry.ts
45012
45013
  var stUsdGroup = {