@stake-dao/reader 0.4.52 → 0.4.53

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.
@@ -26,6 +26,7 @@ export { fetchPassive } from './strategies/passive/fetch.js';
26
26
  export { fetchPendle } from './strategies/pendle/fetch.js';
27
27
  export { buildPendleStrategies } from './strategies/pendle/build.js';
28
28
  export { default as getPendleApiData } from './strategies/pendle/getPendleApiData.js';
29
+ export { fetchStakeDao } from './strategies/stakeDao/fetch.js';
29
30
  export { fetchCampaigns } from './votemarket/fetchCampaigns.js';
30
31
  export type { Campaign } from './votemarket/types.js';
31
32
  export { fetchCurveGauges } from './votemarket/curve/fetchCurveGauges.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAA;AAC5E,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA;AAC3B,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AACrE,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAKlD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAKzC,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAA;AAKjH,cAAc,6BAA6B,CAAA;AAG3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,0DAA0D,CAAA;AAC1F,OAAO,EAAE,gBAAgB,EAAE,MAAM,2DAA2D,CAAA;AAC5F,OAAO,EAAE,qBAAqB,EAAE,MAAM,gEAAgE,CAAA;AAGtG,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AAGxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAA;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAA;AAG9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAA;AAG9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAA;AAC1E,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAA;AAC9E,OAAO,EAAE,+BAA+B,EAAE,MAAM,wCAAwC,CAAA;AACxF,OAAO,EAAE,mBAAmB,EAAE,MAAM,oDAAoD,CAAA;AACxF,OAAO,EAAE,qBAAqB,EAAE,MAAM,yDAAyD,CAAA;AAG/F,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAA;AAG5D,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AACpE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,yCAAyC,CAAA;AASrF,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAC/D,YAAY,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAGrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAA;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAA;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAA;AAGnF,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAA;AACvE,OAAO,EAAE,yBAAyB,EAAE,MAAM,2CAA2C,CAAA;AAIrF,OAAO,EAAE,kBAAkB,EAAE,MAAM,8CAA8C,CAAA;AACjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,8CAA8C,CAAA;AACjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAA;AAI/E,OAAO,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAA;AASvF,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAA;AACnE,YAAY,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAA;AASvE,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAA;AAC5E,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA;AAC3B,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AACrE,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAKlD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAKzC,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAA;AAKjH,cAAc,6BAA6B,CAAA;AAG3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,0DAA0D,CAAA;AAC1F,OAAO,EAAE,gBAAgB,EAAE,MAAM,2DAA2D,CAAA;AAC5F,OAAO,EAAE,qBAAqB,EAAE,MAAM,gEAAgE,CAAA;AAGtG,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AAGxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAA;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAA;AAG9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAA;AAG9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAA;AAC1E,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAA;AAC9E,OAAO,EAAE,+BAA+B,EAAE,MAAM,wCAAwC,CAAA;AACxF,OAAO,EAAE,mBAAmB,EAAE,MAAM,oDAAoD,CAAA;AACxF,OAAO,EAAE,qBAAqB,EAAE,MAAM,yDAAyD,CAAA;AAG/F,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAA;AAG5D,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AACpE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,yCAAyC,CAAA;AAGrF,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAA;AAS9D,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAC/D,YAAY,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAGrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAA;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAA;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAA;AAGnF,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAA;AACvE,OAAO,EAAE,yBAAyB,EAAE,MAAM,2CAA2C,CAAA;AAIrF,OAAO,EAAE,kBAAkB,EAAE,MAAM,8CAA8C,CAAA;AACjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,8CAA8C,CAAA;AACjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAA;AAI/E,OAAO,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAA;AASvF,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAA;AACnE,YAAY,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAA;AASvE,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"prices.d.ts","sourceRoot":"","sources":["../../src/prices.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,KAAK,GAAG;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,eAAO,MAAM,mBAAmB,wBAAkB,MAejD,CAAA;AAED,eAAO,MAAM,kBAAkB,WAAkB,GAAG,EAAE,wCAAmC,GAAG,KAAG,OAAO,CAAC,KAAK,EAAE,CAqB7G,CAAA;AAED,eAAO,MAAM,kBAAkB,YAAmB,MAAM,iBAKvD,CAAA;AAED,eAAO,MAAM,2BAA2B,wBAAkB,MAezD,CAAA;AAED,eAAO,MAAM,0BAA0B,WAC7B,GAAG,EAAE,wCAEO,GAAG,KACtB,OAAO,CAAC,KAAK,EAAE,CAuBjB,CAAA;AAED,UAAU,YAAY;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;CACf;AAED,eAAO,MAAM,SAAS,WAAkB,YAAY,EAAE,uBAAgB,OAAO,CAAC,KAAK,EAAE,CAmBpF,CAAA;AAED,eAAO,MAAM,WAAW,eAAsB,KAAK,EAAE,UAAU,YAAY,EAAE,uBAAgB,OAAO,CAAC,KAAK,EAAE,CAO3G,CAAA"}
1
+ {"version":3,"file":"prices.d.ts","sourceRoot":"","sources":["../../src/prices.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,KAAK,GAAG;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,eAAO,MAAM,mBAAmB,wBAAkB,MAejD,CAAA;AAED,eAAO,MAAM,kBAAkB,WAAkB,GAAG,EAAE,wCAAmC,GAAG,KAAG,OAAO,CAAC,KAAK,EAAE,CAqB7G,CAAA;AAED,eAAO,MAAM,kBAAkB,YAAmB,MAAM,iBAKvD,CAAA;AAED,eAAO,MAAM,2BAA2B,wBAAkB,MAezD,CAAA;AAED,eAAO,MAAM,0BAA0B,WAC7B,GAAG,EAAE,wCAEO,GAAG,KACtB,OAAO,CAAC,KAAK,EAAE,CA4BjB,CAAA;AAED,UAAU,YAAY;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;CACf;AAED,eAAO,MAAM,SAAS,WAAkB,YAAY,EAAE,uBAAgB,OAAO,CAAC,KAAK,EAAE,CAmBpF,CAAA;AAED,eAAO,MAAM,WAAW,eAAsB,KAAK,EAAE,UAAU,YAAY,EAAE,uBAAgB,OAAO,CAAC,KAAK,EAAE,CAO3G,CAAA"}
@@ -0,0 +1,78 @@
1
+ import type { Price } from '../../prices.js';
2
+ interface TFetchStakeDao {
3
+ provider: any;
4
+ chainId: number;
5
+ lockers: any[];
6
+ prices: Price[];
7
+ explorerApiKey: string;
8
+ }
9
+ export declare const fetchStakeDao: ({ provider, chainId, lockers, prices, explorerApiKey }: TFetchStakeDao) => Promise<{
10
+ global: {
11
+ fees: {
12
+ accumulator: number;
13
+ perf: number;
14
+ veSdt: number;
15
+ claimer: number;
16
+ };
17
+ };
18
+ deployed: {
19
+ key: string;
20
+ name: string;
21
+ subname: string;
22
+ type: string;
23
+ protocol: string;
24
+ chainId: number;
25
+ vault: string;
26
+ lpToken: {
27
+ name: string;
28
+ symbol: string;
29
+ address: string;
30
+ decimals: number;
31
+ };
32
+ coins: (import("@stake-dao/constants").Token | undefined)[];
33
+ underlyingCoins: (import("@stake-dao/constants").Token | undefined)[];
34
+ vSdToken: `0x${string}` | undefined;
35
+ lpPriceInUsd: number;
36
+ streaming: boolean;
37
+ tvl: number;
38
+ apr: {
39
+ boost: any;
40
+ current: {
41
+ total: number;
42
+ details: {
43
+ label: string;
44
+ value: number[];
45
+ }[];
46
+ };
47
+ projected: {
48
+ total: any;
49
+ details: {
50
+ label: string;
51
+ value: any[];
52
+ }[];
53
+ };
54
+ };
55
+ rewards: {
56
+ token: {
57
+ name: string;
58
+ decimals: number;
59
+ symbol: string;
60
+ address: string;
61
+ };
62
+ distributor: "0x0000000000000000000000000000000000000000";
63
+ periodFinish: string;
64
+ rate: string;
65
+ lastUpdate: string;
66
+ integral: string;
67
+ claimablePendingRewards: string;
68
+ }[];
69
+ tradingApy: number;
70
+ minApr: any;
71
+ maxApr: any;
72
+ totalSupply: string;
73
+ }[];
74
+ notDeployed: never[];
75
+ fetched: boolean;
76
+ }>;
77
+ export {};
78
+ //# sourceMappingURL=fetch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../../../src/strategies/stakeDao/fetch.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAY5C,UAAU,cAAc;IACtB,QAAQ,EAAE,GAAG,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,GAAG,EAAE,CAAA;IACd,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,cAAc,EAAE,MAAM,CAAA;CACvB;AAED,eAAO,MAAM,aAAa,2DAAkE,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyGzG,CAAA"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@stake-dao/reader",
3
3
  "description": "",
4
- "version": "0.4.52",
4
+ "version": "0.4.53",
5
5
  "license": "AGPL-3.0-only",
6
6
  "repository": {
7
7
  "type": "git",
@@ -36,7 +36,7 @@
36
36
  "graphql-request": "^6.0.0",
37
37
  "lodash-es": "^4.17.21",
38
38
  "viem": "^2.9.31",
39
- "@stake-dao/constants": "0.4.23"
39
+ "@stake-dao/constants": "0.4.24"
40
40
  },
41
41
  "devDependencies": {
42
42
  "@types/lodash-es": "^4.17.12"
package/src/index.ts CHANGED
@@ -56,6 +56,9 @@ export { fetchPendle } from './strategies/pendle/fetch.js'
56
56
  export { buildPendleStrategies } from './strategies/pendle/build.js'
57
57
  export { default as getPendleApiData } from './strategies/pendle/getPendleApiData.js'
58
58
 
59
+ // Stake DAO
60
+ export { fetchStakeDao } from './strategies/stakeDao/fetch.js'
61
+
59
62
  /// --- END STATEGIES
60
63
  ///////////////////////////////////////////////////////////////
61
64
 
package/src/prices.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { uniq } from 'lodash-es'
1
+ import { chunk, uniq } from 'lodash-es'
2
2
  import { equalTlc } from './utils.js'
3
3
 
4
4
  const LLAMA_API_URL = 'https://coins.llama.fi'
@@ -82,11 +82,16 @@ export const getPricesFromGeckoTerminal = async (
82
82
  try {
83
83
  const network: string = getGeckoTerminalTokenPrefix(chainId)
84
84
 
85
- const httpArgs = uniq(tokens.map((t) => t.address)).join(',')
86
- const url = `${GECKO_TERMINAL_API_URL}/simple/networks/${network}/token_price/${httpArgs}`
87
- const httpRequest = await (await fetch(url)).json()
85
+ const httpArgs = uniq(tokens.map((t) => t.address))
86
+ const chunkedHttpArgs = chunk(httpArgs, 30)
88
87
 
89
- const coinsData = httpRequest.data.attributes.token_prices
88
+ let coinsData = {}
89
+ for (const chunkHttpArgs of chunkedHttpArgs) {
90
+ const url = `${GECKO_TERMINAL_API_URL}/simple/networks/${network}/token_price/${chunkHttpArgs.join(',')}`
91
+ const httpRequest = await fetch(url).then((res) => res.json())
92
+
93
+ coinsData = { ...coinsData, ...httpRequest.data.attributes.token_prices }
94
+ }
90
95
 
91
96
  const parsedPrice = tokens.map((t) => {
92
97
  return {
@@ -1,11 +1,11 @@
1
1
  import { formatUnits } from 'viem'
2
2
 
3
- import multicallPassiveVaultsAbi from '../../abis/passiveVaultsMulticall.js'
4
3
  import { contract, passiveStrats } from '@stake-dao/constants'
5
- import { multicall } from '../../utils.js'
6
4
  import { mainnet } from 'viem/chains'
7
- import { getPassiveHttpCalls } from './httpCalls.js'
5
+ import multicallPassiveVaultsAbi from '../../abis/passiveVaultsMulticall.js'
6
+ import { multicall } from '../../utils.js'
8
7
  import { getBoost } from '../utils/boost.js'
8
+ import { getPassiveHttpCalls } from './httpCalls.js'
9
9
 
10
10
  interface TFetchPassive {
11
11
  provider: any
@@ -0,0 +1,128 @@
1
+ import { contract, stakeDaoStrats } from '@stake-dao/constants'
2
+ import { formatUnits, parseAbi, zeroAddress } from 'viem'
3
+ import type { Price } from '../../prices.js'
4
+ import { multicall } from '../../utils.js'
5
+ import getAverageYearlyRewards from '../../utils/getAverageYearlyRewards.js'
6
+
7
+ const baseQueryParams = {
8
+ module: 'logs',
9
+ action: 'getLogs',
10
+ fromBlock: `${20061000}`,
11
+ address: '0xCe00aD8DF94D8C365dc415B84963aA37A06bE923',
12
+ topic0: '0x4882c2b96bd65ac9234537053e19a51399df7ee5f67f5f20256bfff49f7389a5',
13
+ }
14
+
15
+ interface TFetchStakeDao {
16
+ provider: any
17
+ chainId: number
18
+ lockers: any[]
19
+ prices: Price[]
20
+ explorerApiKey: string
21
+ }
22
+
23
+ export const fetchStakeDao = async ({ provider, chainId, lockers, prices, explorerApiKey }: TFetchStakeDao) => {
24
+ let amountPerYear = 0
25
+
26
+ try {
27
+ const queryParams = { ...baseQueryParams, chainid: `${chainId}`, apikey: explorerApiKey }
28
+ const url = `https://api.etherscan.io/v2/api?${new URLSearchParams(queryParams)}`
29
+
30
+ const rawEventsData = await (await fetch(url)).json()
31
+ amountPerYear = await getAverageYearlyRewards(rawEventsData, 5)
32
+ } catch {
33
+ amountPerYear = 0
34
+ }
35
+
36
+ const rawData: any = await multicall(
37
+ provider,
38
+ [
39
+ {
40
+ address: contract('veSdtBoostDelegation'),
41
+ name: 'received_balance',
42
+ params: [contract('voteBoosterStrategy')],
43
+ },
44
+ ],
45
+ parseAbi(['function received_balance(address user) external view returns (uint256)']),
46
+ )
47
+
48
+ const parsedData = stakeDaoStrats.strats.map((s, index) => {
49
+ const locker = lockers.find((l) => l.id === s.lockerId)
50
+ const boost = locker.voteBooster?.boost || 0
51
+ const lpPriceInUsd = prices.find((p) => p.symbol === 'SDT')?.usdPrice || 0
52
+
53
+ const totalSupply = rawData[index].result
54
+ const tvl = lpPriceInUsd * Number(formatUnits(totalSupply, 18))
55
+
56
+ const currentApr = ((amountPerYear * lpPriceInUsd) / tvl) * 100
57
+ const projectedApr = locker?.rewards ? locker.rewards.reduce((total, r) => (total += r.apr), 0) : 0
58
+
59
+ return {
60
+ key: s.key,
61
+ name: s.name,
62
+ subname: s.subname,
63
+ type: s.type,
64
+ protocol: s.protocol,
65
+ chainId: s.chainId,
66
+ vault: s.vault,
67
+ lpToken: s.lpToken,
68
+ coins: s.coins,
69
+ underlyingCoins: s.underlyingCoins,
70
+ vSdToken: s.vSdToken,
71
+ lpPriceInUsd,
72
+ streaming: amountPerYear > 0,
73
+ tvl,
74
+ apr: {
75
+ boost,
76
+ current: {
77
+ total: currentApr,
78
+ details: [
79
+ {
80
+ label: 'SDT',
81
+ value: [currentApr],
82
+ },
83
+ ],
84
+ },
85
+ projected: {
86
+ total: projectedApr,
87
+ details: [
88
+ {
89
+ label: 'SDT',
90
+ value: [projectedApr],
91
+ },
92
+ ],
93
+ },
94
+ },
95
+ rewards: s.rewards.map((r) => {
96
+ return {
97
+ token: {
98
+ name: r!.name,
99
+ decimals: r!.decimals,
100
+ symbol: r!.symbol,
101
+ address: r!.address,
102
+ },
103
+ distributor: zeroAddress,
104
+ periodFinish: '0',
105
+ rate: '0',
106
+ lastUpdate: '0',
107
+ integral: '0',
108
+ claimablePendingRewards: '0',
109
+ }
110
+ }),
111
+ // Base APR data
112
+ tradingApy: 0,
113
+ minApr: projectedApr,
114
+ maxApr: projectedApr,
115
+ // Raw data
116
+ totalSupply: formatUnits(totalSupply, 0),
117
+ }
118
+ })
119
+
120
+ return {
121
+ global: {
122
+ fees: { accumulator: 0, perf: 0, veSdt: 0, claimer: 0 },
123
+ },
124
+ deployed: parsedData,
125
+ notDeployed: [],
126
+ fetched: true,
127
+ }
128
+ }