@gearbox-protocol/sdk 3.0.0-next.110 → 3.0.0-next.111

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.
@@ -10,7 +10,7 @@ export interface GetConvexAPYBulkProps {
10
10
  generated: GetConvexAPYBulkCallsReturns;
11
11
  response: Array<BigNumberish>;
12
12
  }
13
- export declare function getConvexAPYBulk(props: GetConvexAPYBulkProps): bigint[];
13
+ export declare function getConvexAPYBulk(props: GetConvexAPYBulkProps): number[];
14
14
  interface PoolInfo {
15
15
  cvxPool: ConvexPoolParams;
16
16
  cvxPoolAddress: string;
@@ -143,7 +143,7 @@ function calculateConvexAPY(props) {
143
143
  const vPrice = getVirtualPrice(props);
144
144
  const virtualSupply = (props.cvxPoolSupply * vPrice) / sdk_gov_1.WAD;
145
145
  if (!virtualSupply)
146
- return 0n;
146
+ return 0;
147
147
  const crvPerUnderlying = (crvPerSecond * sdk_gov_1.WAD) / virtualSupply;
148
148
  const crvPerYear = crvPerUnderlying * BigInt(sdk_gov_1.SECONDS_PER_YEAR);
149
149
  const cvxPerYear = getCVXMintAmount(crvPerYear, props.cvxTokenSupply);
@@ -162,8 +162,11 @@ function calculateConvexAPY(props) {
162
162
  return finished ? 0n : extraAPY;
163
163
  });
164
164
  const extraAPYTotal = extraAPRs.reduce((acc, apy) => acc + apy, 0n);
165
- const baseApyWAD = props.curveAPY[crvToken].base;
166
- return baseApyWAD + crvAPY + cvxAPY + extraAPYTotal;
165
+ const baseApy = props.curveAPY[crvToken].base;
166
+ const apyTotal = crvAPY + cvxAPY + extraAPYTotal;
167
+ const apyTotalInPercent = apyTotal * sdk_gov_1.PERCENTAGE_DECIMALS * sdk_gov_1.PERCENTAGE_FACTOR;
168
+ const r = baseApy + Math.round(Number((apyTotalInPercent * 10n) / sdk_gov_1.WAD) / 10);
169
+ return r;
167
170
  }
168
171
  function getTimestampInSeconds() {
169
172
  return Math.floor(Date.now() / 1000);
@@ -2,10 +2,10 @@ import { CurveLPToken } from "@gearbox-protocol/sdk-gov/lib/tokens/curveLP";
2
2
  import { GearboxToken } from "@gearbox-protocol/sdk-gov/lib/tokens/gear";
3
3
  type CurveAPYTokens = CurveLPToken | GearboxToken;
4
4
  interface CurveAPY {
5
- base: bigint;
6
- crv: bigint;
7
- gauge: Array<[string, bigint]>;
5
+ base: number;
6
+ crv: number;
7
+ gauge: Array<[string, number]>;
8
8
  }
9
9
  export type CurveAPYResult = Record<CurveAPYTokens, CurveAPY>;
10
- export declare function getCurveAPY(): Promise<CurveAPYResult | null>;
10
+ export declare function getCurveAPY(): Promise<CurveAPYResult>;
11
11
  export {};
@@ -6,8 +6,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.getCurveAPY = void 0;
7
7
  const sdk_gov_1 = require("@gearbox-protocol/sdk-gov");
8
8
  const axios_1 = __importDefault(require("axios"));
9
- const formatter_1 = require("../utils/formatter");
10
- // !& wstETHCRV
11
9
  const APY_DICTIONARY = {
12
10
  "3Crv": "0",
13
11
  FRAX3CRV: "34",
@@ -27,9 +25,9 @@ const APY_DICTIONARY = {
27
25
  crvUSDUSDT: "factory-crvusd-1",
28
26
  crvUSDFRAX: "factory-crvusd-4",
29
27
  crvUSDETHCRV: "factory-tricrypto-4",
30
- rETH_f: "factory-crypto-210", // 0x0f3159811670c117c372428D4E69AC32325e4D0F
28
+ rETH_f: "factory-crypto-210",
29
+ wstETHCRV: "unknown",
31
30
  };
32
- const CRV_APY_RESPONSE_DECIMALS = 100;
33
31
  // const CRYPTO = "https://api.curve.fi/api/getPools/ethereum/crypto";
34
32
  // const FACTORY = "https://api.curve.fi/api/getPools/ethereum/factory";
35
33
  const CURVE_APY_URL = "https://www.convexfinance.com/api/curve-apys";
@@ -57,12 +55,8 @@ async function getCurveAPY() {
57
55
  .flat(1));
58
56
  const curveAPY = sdk_gov_1.TypedObjectUtils.entries(APY_DICTIONARY).reduce((acc, [curveSymbol, poolId]) => {
59
57
  const { baseApy, crvApy } = apys[poolId] || {};
60
- if (baseApy === undefined)
61
- console.warn(`No base apy for: ${curveSymbol}, ${poolId}`);
62
58
  const pool = poolDataByID[poolId];
63
59
  const { gaugeRewards = [] } = pool || {};
64
- if (pool === undefined)
65
- console.warn(`No pool data for: ${curveSymbol}, ${poolId}`);
66
60
  const extraRewards = gaugeRewards.map(({ apy = 0, symbol }) => [
67
61
  symbol.toLowerCase(),
68
62
  curveAPYToBn(apy),
@@ -79,10 +73,10 @@ async function getCurveAPY() {
79
73
  }
80
74
  catch (e) {
81
75
  console.error(e);
82
- return null;
76
+ return {};
83
77
  }
84
78
  }
85
79
  exports.getCurveAPY = getCurveAPY;
86
80
  function curveAPYToBn(baseApy) {
87
- return (0, formatter_1.toBN)((baseApy / CRV_APY_RESPONSE_DECIMALS).toString(), sdk_gov_1.WAD_DECIMALS_POW);
81
+ return Math.round(baseApy * Number(sdk_gov_1.PERCENTAGE_FACTOR));
88
82
  }
@@ -0,0 +1,3 @@
1
+ import { NetworkType, PartialRecord } from "@gearbox-protocol/sdk-gov";
2
+ import { TokensWithAPY } from ".";
3
+ export declare function getDefiLamaAPY(networkType: NetworkType): Promise<PartialRecord<TokensWithAPY, number>>;
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getDefiLamaAPY = void 0;
7
+ const sdk_gov_1 = require("@gearbox-protocol/sdk-gov");
8
+ const axios_1 = __importDefault(require("axios"));
9
+ const LAMA_URL = "https://yields.llama.fi/pools";
10
+ async function getDefiLamaAPY(networkType) {
11
+ try {
12
+ const res = await axios_1.default.get(LAMA_URL);
13
+ const networkLama = NETWORK_TO_LAMA[networkType];
14
+ const chainItems = res.data.data.reduce((acc, item) => {
15
+ if (item.chain === networkLama) {
16
+ acc[item.pool] = item;
17
+ }
18
+ return acc;
19
+ }, {});
20
+ const currentNormal = NORMAL_TO_LAMA[networkType];
21
+ const allAPY = sdk_gov_1.TypedObjectUtils.fromEntries(sdk_gov_1.TypedObjectUtils.entries(currentNormal).map(([symbol, pool]) => {
22
+ const { apy = 0 } = chainItems[pool] || {};
23
+ return [symbol, Math.round(apy * Number(sdk_gov_1.PERCENTAGE_FACTOR))];
24
+ }));
25
+ return allAPY;
26
+ }
27
+ catch (e) {
28
+ console.error(e);
29
+ return {};
30
+ }
31
+ }
32
+ exports.getDefiLamaAPY = getDefiLamaAPY;
33
+ const NETWORK_TO_LAMA = {
34
+ Mainnet: "Ethereum",
35
+ Optimism: "Optimism",
36
+ Arbitrum: "Arbitrum",
37
+ };
38
+ const NORMAL_TO_LAMA = {
39
+ Mainnet: {
40
+ sDAI: "c8a24fee-ec00-4f38-86c0-9f6daebc4225",
41
+ rETH: "d4b3c522-6127-4b89-bedf-83641cdcd2eb",
42
+ osETH: "4d01599c-69ae-41a3-bae1-5fab896f04c8",
43
+ },
44
+ Optimism: { rETH: "d4b3c522-6127-4b89-bedf-83641cdcd2eb" },
45
+ Arbitrum: {},
46
+ };
47
+ // const CONVEX_TO_LAMA: Record<
48
+ // NetworkType,
49
+ // Record<ConvexStakedPhantomToken, string>
50
+ // > = {
51
+ // Mainnet: {
52
+ // stkcvx3Crv: "7394f1bc-840a-4ff0-9e87-5e0ef932943a",
53
+ // stkcvxFRAX3CRV: "844a8a29-4653-42e6-b675-a6b43fac3678", // !!
54
+ // stkcvxgusd3CRV: "dc81639c-9391-4e56-96b9-76cfbcda61d4",
55
+ // stkcvxLUSD3CRV: "b61ef013-6391-4cdd-b057-b344ab852088", // !!
56
+ // stkcvxcrvPlain3andSUSD: "45f74ed5-5832-4d6d-8f2c-2929b6ac5e9c", // !!
57
+ // stkcvxsteCRV: "5ce23e7e-3800-4c9c-ad30-6db3db0515a1", // !!
58
+ // stkcvxcrvFRAX: "bd072651-d99c-4154-aeae-51f12109c054",
59
+ // stkcvxOHMFRAXBP: "42de7839-da37-4a99-8992-d6352177c4db", // !!
60
+ // stkcvxMIM_3LP3CRV: "8a20c472-142c-4442-b724-40f2183c073e",
61
+ // stkcvxcrvCRVETH: "disabled",
62
+ // stkcvxcrvCVXETH: "25d9dc49-3182-493a-bda4-0db53b25f457",
63
+ // stkcvxcrvUSDTWBTCWETH: "3be97c90-d4a8-42b3-a0d0-2906ae4e9d27",
64
+ // stkcvxLDOETH: "69361f05-1a95-4323-9b6f-44338ad22e98",
65
+ // stkcvxcrvUSDUSDC: "755fcec6-f4fd-4150-9184-60f099206694",
66
+ // stkcvxcrvUSDUSDT: "a3ffd3fe-b21c-44eb-94d5-22c80057a600",
67
+ // stkcvxcrvUSDFRAX: "411af006-56b0-480a-9586-1071bccbd178",
68
+ // stkcvxcrvUSDETHCRV: "654ac683-141b-42d3-b28d-b2f77eedd595",
69
+ // },
70
+ // Optimism: {} as any,
71
+ // Arbitrum: {} as any,
72
+ // };
@@ -1,11 +1,11 @@
1
1
  import { LPTokens, PartialRecord, SupportedToken } from "@gearbox-protocol/sdk-gov";
2
- export type AdditionalTokenWithAPY = Extract<SupportedToken, "STETH">;
2
+ export type AdditionalTokenWithAPY = Extract<SupportedToken, "STETH" | "weETH" | "osETH" | "rETH" | "wstETH">;
3
3
  export declare const additionalTokensWIthAPY: Record<AdditionalTokenWithAPY, true>;
4
- export type TokensWithAPY = LPTokens | Extract<SupportedToken, "STETH">;
4
+ export type TokensWithAPY = LPTokens | AdditionalTokenWithAPY;
5
5
  export type LpTokensAPY = PartialRecord<TokensWithAPY, number>;
6
6
  export declare const isTokenWithAPY: (t: unknown) => t is TokensWithAPY;
7
7
  export * from "./convexAPY";
8
8
  export * from "./curveAPY";
9
+ export * from "./defiLamaAPY";
9
10
  export * from "./lidoAPY";
10
- export * from "./maker";
11
11
  export * from "./yearnAPY";
package/lib/apy/index.js CHANGED
@@ -18,6 +18,10 @@ exports.isTokenWithAPY = exports.additionalTokensWIthAPY = void 0;
18
18
  const sdk_gov_1 = require("@gearbox-protocol/sdk-gov");
19
19
  exports.additionalTokensWIthAPY = {
20
20
  STETH: true,
21
+ weETH: true,
22
+ osETH: true,
23
+ rETH: true,
24
+ wstETH: true,
21
25
  };
22
26
  const isTokenWithAPY = (t) => typeof t === "string" &&
23
27
  (!!sdk_gov_1.lpTokens[t] ||
@@ -25,6 +29,6 @@ const isTokenWithAPY = (t) => typeof t === "string" &&
25
29
  exports.isTokenWithAPY = isTokenWithAPY;
26
30
  __exportStar(require("./convexAPY"), exports);
27
31
  __exportStar(require("./curveAPY"), exports);
32
+ __exportStar(require("./defiLamaAPY"), exports);
28
33
  __exportStar(require("./lidoAPY"), exports);
29
- __exportStar(require("./maker"), exports);
30
34
  __exportStar(require("./yearnAPY"), exports);
@@ -1 +1,3 @@
1
- export declare function getLidoAPY(): Promise<bigint>;
1
+ import { PartialRecord } from "@gearbox-protocol/sdk-gov";
2
+ import { TokensWithAPY } from ".";
3
+ export declare function getLidoAPY(): Promise<PartialRecord<TokensWithAPY, number>>;
@@ -6,17 +6,20 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.getLidoAPY = void 0;
7
7
  const sdk_gov_1 = require("@gearbox-protocol/sdk-gov");
8
8
  const axios_1 = __importDefault(require("axios"));
9
- const formatter_1 = require("../utils/formatter");
10
9
  const LIDO_URL = "https://eth-api.lido.fi/v1/protocol/steth/apr/sma";
11
10
  async function getLidoAPY() {
12
11
  try {
13
12
  const res = await axios_1.default.get(LIDO_URL);
14
13
  const { smaApr = 0 } = res?.data?.data || {};
15
- return (0, formatter_1.toBN)(String(smaApr), sdk_gov_1.WAD_DECIMALS_POW) / sdk_gov_1.PERCENTAGE_DECIMALS;
14
+ const r = Math.round(smaApr * Number(sdk_gov_1.PERCENTAGE_FACTOR));
15
+ return {
16
+ STETH: r,
17
+ wstETH: r,
18
+ };
16
19
  }
17
20
  catch (e) {
18
21
  console.error(e);
19
- return 0n;
22
+ return {};
20
23
  }
21
24
  }
22
25
  exports.getLidoAPY = getLidoAPY;
@@ -1,3 +1,3 @@
1
- import { YearnLPToken } from "@gearbox-protocol/sdk-gov";
2
- export type YearnAPYResult = Record<YearnLPToken, bigint>;
3
- export declare function getYearnAPY(): Promise<YearnAPYResult | null>;
1
+ import { NetworkType, YearnLPToken } from "@gearbox-protocol/sdk-gov";
2
+ export type YearnAPYResult = Record<YearnLPToken, number>;
3
+ export declare function getYearnAPY(network: NetworkType): Promise<YearnAPYResult>;
@@ -6,13 +6,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.getYearnAPY = void 0;
7
7
  const sdk_gov_1 = require("@gearbox-protocol/sdk-gov");
8
8
  const axios_1 = __importDefault(require("axios"));
9
- const formatter_1 = require("../utils/formatter");
10
- const RESPONSE_DECIMALS = 1;
11
- const URL = "https://ydaemon.yearn.finance/vaults/all?chainids=1&limit=2500";
9
+ const getUrl = (chainId) => `https://ydaemon.yearn.finance/vaults/all?chainids=${chainId}&limit=2500`;
12
10
  const transformSymbol = (s) => s.replaceAll("_", "-").toLowerCase();
13
- async function getYearnAPY() {
11
+ async function getYearnAPY(network) {
14
12
  try {
15
- const { data } = await axios_1.default.get(URL);
13
+ const chainId = sdk_gov_1.CHAINS[network];
14
+ const { data } = await axios_1.default.get(getUrl(chainId));
16
15
  const dataBySymbol = data.reduce((acc, d) => {
17
16
  acc[d.symbol.toLowerCase()] = d;
18
17
  return acc;
@@ -23,13 +22,14 @@ async function getYearnAPY() {
23
22
  const { apr: apy } = data || {};
24
23
  const { netAPR } = apy || {};
25
24
  const netApy = netAPR || 0;
26
- acc[yearnSymbol] = (0, formatter_1.toBN)((netApy / RESPONSE_DECIMALS).toString(), sdk_gov_1.WAD_DECIMALS_POW);
25
+ const r = Math.round(netApy * Number(sdk_gov_1.PERCENTAGE_FACTOR) * Number(sdk_gov_1.PERCENTAGE_DECIMALS));
26
+ acc[yearnSymbol] = r;
27
27
  return acc;
28
28
  }, {});
29
29
  return yearnAPY;
30
30
  }
31
31
  catch (e) {
32
- return null;
32
+ return {};
33
33
  }
34
34
  }
35
35
  exports.getYearnAPY = getYearnAPY;
@@ -1,4 +1,4 @@
1
- import { NetworkType, SupportedToken } from "@gearbox-protocol/sdk-gov";
1
+ import { NetworkType } from "@gearbox-protocol/sdk-gov";
2
2
  import { providers, Signer } from "ethers";
3
3
  import { Asset } from "../core/assets";
4
4
  import { CreditAccountData } from "../core/creditAccount";
@@ -39,9 +39,8 @@ interface FindOpenStrategyPathProps {
39
39
  export declare class PathFinder {
40
40
  pathFinder: IRouterV3;
41
41
  network: NetworkType;
42
- static connectors: Array<SupportedToken>;
43
42
  protected readonly _connectors: Array<string>;
44
- constructor(address: string, provider: Signer | providers.Provider, network?: NetworkType, connectors?: SupportedToken[]);
43
+ constructor(address: string, provider: Signer | providers.Provider, network?: NetworkType);
45
44
  findAllSwaps({ creditAccount, swapOperation, tokenIn, tokenOut, amount, leftoverAmount, slippage, }: FindAllSwapsProps): Promise<Array<PathFinderResult>>;
46
45
  findOneTokenPath({ creditAccount, tokenIn, tokenOut, amount, slippage, }: FindOneTokenPathProps): Promise<PathFinderResult>;
47
46
  /**
@@ -9,19 +9,11 @@ const GAS_PER_BLOCK = 400e6;
9
9
  class PathFinder {
10
10
  pathFinder;
11
11
  network;
12
- static connectors = [
13
- "USDC",
14
- "WETH",
15
- "USDT",
16
- "FRAX",
17
- ];
18
12
  _connectors;
19
- constructor(address, provider, network = "Mainnet", connectors = PathFinder.connectors) {
13
+ constructor(address, provider, network = "Mainnet") {
20
14
  this.pathFinder = types_1.IRouterV3__factory.connect(address, provider);
21
15
  this.network = network;
22
- this._connectors = connectors
23
- .map(c => sdk_gov_1.tokenDataByNetwork[this.network][c]?.toLowerCase())
24
- .filter(t => !!t);
16
+ this._connectors = (0, sdk_gov_1.getConnectors)(network);
25
17
  }
26
18
  async findAllSwaps({ creditAccount, swapOperation, tokenIn, tokenOut, amount, leftoverAmount, slippage, }) {
27
19
  const connectors = this.getAvailableConnectors(creditAccount.balances);
@@ -26,18 +26,31 @@ describe("PathFinder test", () => {
26
26
  it("has all expected connectors", () => {
27
27
  const pf = new pathfinder_1.PathFinder("", new ethers_1.providers.JsonRpcProvider(), "Mainnet");
28
28
  const allowedTokens = {
29
- [sdk_gov_1.tokenDataByNetwork.Mainnet.USDC.toLowerCase()]: true,
30
29
  [sdk_gov_1.tokenDataByNetwork.Mainnet.WETH.toLowerCase()]: true,
31
30
  [sdk_gov_1.tokenDataByNetwork.Mainnet.DAI.toLowerCase()]: true,
31
+ [sdk_gov_1.tokenDataByNetwork.Mainnet.USDC.toLowerCase()]: true,
32
32
  [sdk_gov_1.tokenDataByNetwork.Mainnet.FRAX.toLowerCase()]: true,
33
- [sdk_gov_1.tokenDataByNetwork.Mainnet.USDT.toLowerCase()]: true,
33
+ [sdk_gov_1.tokenDataByNetwork.Mainnet.rETH.toLowerCase()]: true,
34
34
  };
35
35
  (0, chai_1.expect)(pf.getAvailableConnectors(allowedTokens)).to.be.deep.equal([
36
- sdk_gov_1.tokenDataByNetwork.Mainnet.USDC.toLowerCase(),
37
36
  sdk_gov_1.tokenDataByNetwork.Mainnet.WETH.toLowerCase(),
38
- // tokenDataByNetwork.Mainnet.DAI.toLowerCase(),
39
- sdk_gov_1.tokenDataByNetwork.Mainnet.USDT.toLowerCase(),
37
+ sdk_gov_1.tokenDataByNetwork.Mainnet.DAI.toLowerCase(),
38
+ sdk_gov_1.tokenDataByNetwork.Mainnet.USDC.toLowerCase(),
40
39
  sdk_gov_1.tokenDataByNetwork.Mainnet.FRAX.toLowerCase(),
40
+ sdk_gov_1.tokenDataByNetwork.Mainnet.rETH.toLowerCase(),
41
+ ]);
42
+ });
43
+ it("has all expected connectors, when gew are disabled", () => {
44
+ const pf = new pathfinder_1.PathFinder("", new ethers_1.providers.JsonRpcProvider(), "Mainnet");
45
+ const allowedTokens = {
46
+ [sdk_gov_1.tokenDataByNetwork.Mainnet.WETH.toLowerCase()]: true,
47
+ [sdk_gov_1.tokenDataByNetwork.Mainnet.DAI.toLowerCase()]: true,
48
+ [sdk_gov_1.tokenDataByNetwork.Mainnet.rETH.toLowerCase()]: true,
49
+ };
50
+ (0, chai_1.expect)(pf.getAvailableConnectors(allowedTokens)).to.be.deep.equal([
51
+ sdk_gov_1.tokenDataByNetwork.Mainnet.WETH.toLowerCase(),
52
+ sdk_gov_1.tokenDataByNetwork.Mainnet.DAI.toLowerCase(),
53
+ sdk_gov_1.tokenDataByNetwork.Mainnet.rETH.toLowerCase(),
41
54
  ]);
42
55
  });
43
56
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gearbox-protocol/sdk",
3
- "version": "3.0.0-next.110",
3
+ "version": "3.0.0-next.111",
4
4
  "description": "Gearbox SDK",
5
5
  "main": "./lib/index.js",
6
6
  "types": "./lib/index.d.ts",
@@ -30,7 +30,7 @@
30
30
  "test": "npx mocha -r ts-node/register -r dotenv/config 'src/**/*.spec.ts'"
31
31
  },
32
32
  "dependencies": {
33
- "@gearbox-protocol/sdk-gov": "^1.24.1",
33
+ "@gearbox-protocol/sdk-gov": "^1.28.2",
34
34
  "axios": "^1.2.6",
35
35
  "decimal.js-light": "^2.5.1",
36
36
  "deep-eql": "^4.1.0",
@@ -1,39 +0,0 @@
1
- import { ERC4626Params, ERC4626VaultContract, NetworkType } from "@gearbox-protocol/sdk-gov";
2
- import { BigNumberish } from "ethers";
3
- import { Interface } from "ethers/lib/utils";
4
- export declare const MAKER_VAULT_ABI: {
5
- inputs: never[];
6
- name: string;
7
- outputs: {
8
- internalType: string;
9
- name: string;
10
- type: string;
11
- }[];
12
- stateMutability: string;
13
- type: string;
14
- }[];
15
- export declare const MAKER_VAULT_INTERFACE: Interface;
16
- export type MakerPoolContract = Extract<ERC4626VaultContract, "MAKER_DSR_VAULT">;
17
- interface PoolInfo {
18
- pool: ERC4626Params;
19
- poolAddress: string;
20
- }
21
- export interface GetMakerAPYBulkCallsProps {
22
- pools: Array<MakerPoolContract>;
23
- networkType: NetworkType;
24
- }
25
- export declare function getMakerAPYBulkCalls({ pools, networkType, }: GetMakerAPYBulkCallsProps): {
26
- poolsInfo: PoolInfo[];
27
- calls: {
28
- address: string;
29
- interface: Interface;
30
- method: string;
31
- }[];
32
- };
33
- type GetMakerAPYBulkCallsReturns = ReturnType<typeof getMakerAPYBulkCalls>;
34
- export interface GetMakerAPYBulkProps {
35
- generated: GetMakerAPYBulkCallsReturns;
36
- response: Array<BigNumberish>;
37
- }
38
- export declare function getMakerAPYBulk(props: GetMakerAPYBulkProps): bigint[];
39
- export {};
package/lib/apy/maker.js DELETED
@@ -1,68 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getMakerAPYBulk = exports.getMakerAPYBulkCalls = exports.MAKER_VAULT_INTERFACE = exports.MAKER_VAULT_ABI = void 0;
4
- const sdk_gov_1 = require("@gearbox-protocol/sdk-gov");
5
- const utils_1 = require("ethers/lib/utils");
6
- const formatter_1 = require("../utils/formatter");
7
- exports.MAKER_VAULT_ABI = [
8
- {
9
- inputs: [],
10
- name: "dsr",
11
- outputs: [
12
- {
13
- internalType: "uint256",
14
- name: "",
15
- type: "uint256",
16
- },
17
- ],
18
- stateMutability: "view",
19
- type: "function",
20
- },
21
- ];
22
- exports.MAKER_VAULT_INTERFACE = new utils_1.Interface(exports.MAKER_VAULT_ABI);
23
- const MAKER_BY_NETWORK = {
24
- Mainnet: {
25
- MAKER_DSR_VAULT: "0x197E90f9FAD81970bA7976f33CbD77088E5D7cf7",
26
- },
27
- Arbitrum: {
28
- MAKER_DSR_VAULT: "",
29
- },
30
- Optimism: {
31
- MAKER_DSR_VAULT: "",
32
- },
33
- };
34
- function getMakerAPYBulkCalls({ pools, networkType, }) {
35
- const poolsInfo = pools.map((pool) => {
36
- const poolParams = sdk_gov_1.contractParams[pool];
37
- const basePoolAddress = MAKER_BY_NETWORK[networkType][pool];
38
- return {
39
- pool: poolParams,
40
- poolAddress: basePoolAddress,
41
- };
42
- });
43
- const calls = poolsInfo.map(info => ({
44
- address: info.poolAddress,
45
- interface: exports.MAKER_VAULT_INTERFACE,
46
- method: "dsr()",
47
- }));
48
- return { poolsInfo, calls };
49
- }
50
- exports.getMakerAPYBulkCalls = getMakerAPYBulkCalls;
51
- function getMakerAPYBulk(props) {
52
- const { poolsInfo } = props.generated;
53
- const apyList = props.response.map((baseApy, i) => {
54
- const apy = calculateMakerAPY({
55
- baseApy: (0, sdk_gov_1.toBigInt)(baseApy),
56
- poolInfo: poolsInfo[i],
57
- });
58
- return apy;
59
- });
60
- return apyList;
61
- }
62
- exports.getMakerAPYBulk = getMakerAPYBulk;
63
- const POW = 3600 * 24 * 365;
64
- function calculateMakerAPY(props) {
65
- const rateFloat = Number((0, formatter_1.toSignificant)(props.baseApy, 27, 27));
66
- const rate = Math.max(0, rateFloat ** POW - 1);
67
- return (0, formatter_1.toBN)(rate.toString(), sdk_gov_1.WAD_DECIMALS_POW);
68
- }