@stake-dao/reader 0.2.12 → 0.2.13

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.
@@ -1,5 +1,5 @@
1
- export declare const getCurveStratsWithApr: (chainId: number, curveStrats: any[], apisData: any) => {
1
+ export declare const getCurveStratsWithApr: (provider: any, chainId: number, curveStrats: any[], apisData: any) => Promise<{
2
2
  curveStratsWithApr: any[];
3
3
  curveStratsDataCalls: any[];
4
- };
4
+ }>;
5
5
  //# sourceMappingURL=getStratsWithApr.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getStratsWithApr.d.ts","sourceRoot":"","sources":["../../../../../src/strategies/curve/fetch/getStratsWithApr.ts"],"names":[],"mappings":"AAuBA,eAAO,MAAM,qBAAqB,YAAa,MAAM,eAAe,GAAG,EAAE,YAAY,GAAG;;;CAwCvF,CAAA"}
1
+ {"version":3,"file":"getStratsWithApr.d.ts","sourceRoot":"","sources":["../../../../../src/strategies/curve/fetch/getStratsWithApr.ts"],"names":[],"mappings":"AAwBA,eAAO,MAAM,qBAAqB,aAAoB,GAAG,WAAW,MAAM,eAAe,GAAG,EAAE,YAAY,GAAG;;;EAqD5G,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/strategies/curve/fetch/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,EAAE,KAAK,eAAe,EAAa,MAAM,iBAAiB,CAAA;AAEjE,OAAO,KAAK,EAIV,YAAY,EACZ,YAAY,EACZ,aAAa,EACd,MAAM,gBAAgB,CAAA;AASvB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAA;AAK3E,UAAU,WAAW;IACnB,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,QAAQ,EAAE,GAAG,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,cAAc,EAAE,MAAM,CAAA;IACtB,QAAQ,EAAE,aAAa,CAAA;IACvB,OAAO,EAAE,YAAY,CAAA;IACrB,eAAe,EAAE,eAAe,CAAA;IAChC,aAAa,EAAE,iBAAiB,CAAA;CACjC;AAED,eAAO,MAAM,UAAU,kGASpB,WAAW,KAAG,OAAO,CAAC,YAAY,CAqPpC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/strategies/curve/fetch/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,EAAE,KAAK,eAAe,EAAa,MAAM,iBAAiB,CAAA;AAEjE,OAAO,KAAK,EAIV,YAAY,EACZ,YAAY,EACZ,aAAa,EACd,MAAM,gBAAgB,CAAA;AASvB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAA;AAK3E,UAAU,WAAW;IACnB,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,QAAQ,EAAE,GAAG,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,cAAc,EAAE,MAAM,CAAA;IACtB,QAAQ,EAAE,aAAa,CAAA;IACvB,OAAO,EAAE,YAAY,CAAA;IACrB,eAAe,EAAE,eAAe,CAAA;IAChC,aAAa,EAAE,iBAAiB,CAAA;CACjC;AAED,eAAO,MAAM,UAAU,kGASpB,WAAW,KAAG,OAAO,CAAC,YAAY,CAuPpC,CAAA"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@stake-dao/reader",
3
3
  "description": "",
4
- "version": "0.2.12",
4
+ "version": "0.2.13",
5
5
  "license": "AGPL-3.0-only",
6
6
  "repository": {
7
7
  "type": "git",
@@ -1,7 +1,7 @@
1
1
  import type { BatchMetaData } from './types.js'
2
2
 
3
3
  const commonBytecode =
4
- '0x608060405234801561001057600080fd5b5060405161094a38038061094a8339818101604052810190610032919061051d565b60008151905060008167ffffffffffffffff8111156100545761005361037c565b5b60405190808252806020026020018201604052801561008d57816020015b61007a610314565b8152602001906001900390816100725790505b50905060005b828110156102e45760008482815181106100b0576100af610566565b5b6020026020010151905060008190508073ffffffffffffffffffffffffffffffffffffffff166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa15801561010a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906101339190610665565b84848151811061014657610145610566565b5b6020026020010151600001819052508073ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa1580156101a0573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906101c99190610665565b8484815181106101dc576101db610566565b5b602002602001015160200181905250818484815181106101ff576101fe610566565b5b60200260200101516040019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610288573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ac91906106e4565b8484815181106102bf576102be610566565b5b60200260200101516060018181525050505080806102dc90610740565b915050610093565b506000816040516020016102f89190610927565b6040516020818303038152906040529050602081018059038082f35b60405180608001604052806060815260200160608152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081525090565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6103b48261036b565b810181811067ffffffffffffffff821117156103d3576103d261037c565b5b80604052505050565b60006103e6610352565b90506103f282826103ab565b919050565b600067ffffffffffffffff8211156104125761041161037c565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061045382610428565b9050919050565b61046381610448565b811461046e57600080fd5b50565b6000815190506104808161045a565b92915050565b6000610499610494846103f7565b6103dc565b905080838252602082019050602084028301858111156104bc576104bb610423565b5b835b818110156104e557806104d18882610471565b8452602084019350506020810190506104be565b5050509392505050565b600082601f83011261050457610503610366565b5b8151610514848260208601610486565b91505092915050565b6000602082840312156105335761053261035c565b5b600082015167ffffffffffffffff81111561055157610550610361565b5b61055d848285016104ef565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b600067ffffffffffffffff8211156105b5576105b461037c565b5b6105be8261036b565b9050602081019050919050565b60005b838110156105e95780820151818401526020810190506105ce565b60008484015250505050565b60006106086106038461059a565b6103dc565b90508281526020810184848401111561062457610623610595565b5b61062f8482856105cb565b509392505050565b600082601f83011261064c5761064b610366565b5b815161065c8482602086016105f5565b91505092915050565b60006020828403121561067b5761067a61035c565b5b600082015167ffffffffffffffff81111561069957610698610361565b5b6106a584828501610637565b91505092915050565b6000819050919050565b6106c1816106ae565b81146106cc57600080fd5b50565b6000815190506106de816106b8565b92915050565b6000602082840312156106fa576106f961035c565b5b6000610708848285016106cf565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061074b826106ae565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361077d5761077c610711565b5b600182019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600081519050919050565b600082825260208201905092915050565b60006107db826107b4565b6107e581856107bf565b93506107f58185602086016105cb565b6107fe8161036b565b840191505092915050565b61081281610448565b82525050565b610821816106ae565b82525050565b6000608083016000830151848203600086015261084482826107d0565b9150506020830151848203602086015261085e82826107d0565b91505060408301516108736040860182610809565b5060608301516108866060860182610818565b508091505092915050565b600061089d8383610827565b905092915050565b6000602082019050919050565b60006108bd82610788565b6108c78185610793565b9350836020820285016108d9856107a4565b8060005b8581101561091557848403895281516108f68582610891565b9450610901836108a5565b925060208a019950506001810190506108dd565b50829750879550505050505092915050565b6000602082019050818103600083015261094181846108b2565b90509291505056fe'
4
+ '0x608060405234801561000f575f80fd5b5060405161086f38038061086f833981810160405281019061003191906104f3565b5f815190505f8167ffffffffffffffff8111156100515761005061035d565b5b60405190808252806020026020018201604052801561008a57816020015b6100776102fc565b81526020019060019003908161006f5790505b5090505f5b828110156102cd575f8482815181106100ab576100aa61053a565b5b602002602001015190505f8190508073ffffffffffffffffffffffffffffffffffffffff166306fdde036040518163ffffffff1660e01b81526004015f60405180830381865afa158015610101573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906101299190610617565b84848151811061013c5761013b61053a565b5b60200260200101515f01819052508073ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b81526004015f60405180830381865afa158015610192573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906101ba9190610617565b8484815181106101cd576101cc61053a565b5b602002602001015160200181905250818484815181106101f0576101ef61053a565b5b60200260200101516040019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610277573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061029b9190610691565b8484815181106102ae576102ad61053a565b5b602002602001015160600181815250505050808060010191505061008f565b505f816040516020016102e0919061084e565b6040516020818303038152906040529050602081018059038082f35b604051806080016040528060608152602001606081526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81525090565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6103938261034d565b810181811067ffffffffffffffff821117156103b2576103b161035d565b5b80604052505050565b5f6103c4610338565b90506103d0828261038a565b919050565b5f67ffffffffffffffff8211156103ef576103ee61035d565b5b602082029050602081019050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61042d82610404565b9050919050565b61043d81610423565b8114610447575f80fd5b50565b5f8151905061045881610434565b92915050565b5f61047061046b846103d5565b6103bb565b9050808382526020820190506020840283018581111561049357610492610400565b5b835b818110156104bc57806104a8888261044a565b845260208401935050602081019050610495565b5050509392505050565b5f82601f8301126104da576104d9610349565b5b81516104ea84826020860161045e565b91505092915050565b5f6020828403121561050857610507610341565b5b5f82015167ffffffffffffffff81111561052557610524610345565b5b610531848285016104c6565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f80fd5b5f67ffffffffffffffff8211156105855761058461035d565b5b61058e8261034d565b9050602081019050919050565b8281835e5f83830152505050565b5f6105bb6105b68461056b565b6103bb565b9050828152602081018484840111156105d7576105d6610567565b5b6105e284828561059b565b509392505050565b5f82601f8301126105fe576105fd610349565b5b815161060e8482602086016105a9565b91505092915050565b5f6020828403121561062c5761062b610341565b5b5f82015167ffffffffffffffff81111561064957610648610345565b5b610655848285016105ea565b91505092915050565b5f819050919050565b6106708161065e565b811461067a575f80fd5b50565b5f8151905061068b81610667565b92915050565b5f602082840312156106a6576106a5610341565b5b5f6106b38482850161067d565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f81519050919050565b5f82825260208201905092915050565b5f610709826106e5565b61071381856106ef565b935061072381856020860161059b565b61072c8161034d565b840191505092915050565b61074081610423565b82525050565b61074f8161065e565b82525050565b5f608083015f8301518482035f86015261076f82826106ff565b9150506020830151848203602086015261078982826106ff565b915050604083015161079e6040860182610737565b5060608301516107b16060860182610746565b508091505092915050565b5f6107c78383610755565b905092915050565b5f602082019050919050565b5f6107e5826106bc565b6107ef81856106c6565b935083602082028501610801856106d6565b805f5b8581101561083c578484038952815161081d85826107bc565b9450610828836107cf565b925060208a01995050600181019050610804565b50829750879550505050505092915050565b5f6020820190508181035f83015261086681846107db565b90509291505056fe'
5
5
  const commonInputType = ['address[] inputs']
6
6
  const commonOutputType = [
7
7
  'Erc20Data[] erc20data',
@@ -1,6 +1,7 @@
1
1
  import { STRAT_FEES } from '@stake-dao/constants'
2
2
  import { mainnet } from 'viem/chains'
3
- import { equalTlc } from '../../../utils.js'
3
+ import { equalTlc, multicall } from '../../../utils.js'
4
+ import { formatUnits, parseAbi } from 'viem'
4
5
 
5
6
  const getConvexPool = (apisData: any, chainId: number, isLending: boolean, stratLpAddress: string) => {
6
7
  if (chainId === mainnet.id) {
@@ -21,11 +22,17 @@ const getName = (s: any) => {
21
22
  .slice(1)
22
23
  }
23
24
 
24
- export const getCurveStratsWithApr = (chainId: number, curveStrats: any[], apisData: any) => {
25
+ export const getCurveStratsWithApr = async (provider: any, chainId: number, curveStrats: any[], apisData: any) => {
25
26
  const curveStratsDataCalls: any[] = []
26
27
 
27
28
  const strats = curveStrats.filter((s) => s.key && s.chainId === chainId)
28
29
 
30
+ const lendingExtraCalls = await multicall(
31
+ provider,
32
+ strats.filter((s) => s.isLending).flatMap((s) => [{ address: s.lpToken.address, name: 'lend_apr' }]),
33
+ parseAbi(['function lend_apr() external view returns (uint256)']),
34
+ )
35
+
29
36
  const curveStratsWithApr = strats.map((s) => {
30
37
  const curveApiData = apisData.curveApiData.find((el) => equalTlc(el.lp, s.lpToken.address))
31
38
 
@@ -45,13 +52,20 @@ export const getCurveStratsWithApr = (chainId: number, curveStrats: any[], apisD
45
52
  sdtLiquidityGauge: s.sdGauge,
46
53
  })
47
54
 
55
+ let tradingApy: number = 0
56
+ if (s.isLending) {
57
+ const lendingApyCallResult = lendingExtraCalls.shift()
58
+ tradingApy = Number(formatUnits(lendingApyCallResult.result, 16))
59
+ }
60
+ else {
61
+ tradingApy = subgraphData?.latestWeeklyApy || 0
62
+ }
63
+
48
64
  return {
49
65
  ...s,
50
66
  name: getName(s),
51
- // TODO LENDING
52
- // subname: curveApiData?.assets ? `${curveApiData.assets.collateral.symbol} collateral` : '',
53
- // tradingApy: curveApiData?.rates ? curveApiData.rates.lendApyPcent : 0,
54
- tradingApy: subgraphData?.latestWeeklyApy || 0,
67
+ ...(s.isLending ? { subname: `${s.underlyingCoins[0].symbol} collat.` } : {}),
68
+ tradingApy,
55
69
  gaugesProjectedApr,
56
70
  minApr: curveApiData?.crvApr ? curveApiData.crvApr[0] * ((100 - STRAT_FEES) / 100) : 0,
57
71
  maxApr: curveApiData?.crvApr ? curveApiData.crvApr[1] * ((100 - STRAT_FEES) / 100) : 0,
@@ -61,7 +61,8 @@ export const fetchCurve = async ({
61
61
 
62
62
  const strats: any[] = await buildCurveStrategies(provider, allVaultAndLp, chainId, apisData.curveApiData)
63
63
 
64
- const { curveStratsWithApr: stratsWithApr, curveStratsDataCalls: stratsDataCalls } = getCurveStratsWithApr(
64
+ const { curveStratsWithApr: stratsWithApr, curveStratsDataCalls: stratsDataCalls } = await getCurveStratsWithApr(
65
+ provider,
65
66
  chainId,
66
67
  strats,
67
68
  apisData,
@@ -204,6 +205,7 @@ export const fetchCurve = async ({
204
205
  return {
205
206
  key: strat.key,
206
207
  name: strat.name,
208
+ subname: strat.subname,
207
209
  type: strat.type,
208
210
  protocol: strat.protocol,
209
211
  chainId: strat.chainId,