@gearbox-protocol/sdk 0.0.102 → 0.0.103

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.
Files changed (119) hide show
  1. package/.eslintignore +4 -0
  2. package/.eslintrc.js +52 -0
  3. package/.husky/pre-push +4 -0
  4. package/lib/apy/convexAPY.js +3 -5
  5. package/lib/apy/lidoAPY.js +8 -9
  6. package/lib/contracts/contracts.d.ts +3 -3
  7. package/lib/contracts/contracts.js +2 -2
  8. package/lib/core/constants.d.ts +1 -1
  9. package/lib/core/constants.js +2 -2
  10. package/lib/core/creditAccount.js +7 -5
  11. package/lib/core/creditManager.d.ts +1 -1
  12. package/lib/core/creditManager.js +1 -7
  13. package/lib/core/creditSession.js +14 -3
  14. package/lib/core/eventOrTx.d.ts +1 -1
  15. package/lib/core/events.d.ts +19 -19
  16. package/lib/core/events.js +23 -21
  17. package/lib/core/pool.d.ts +1 -1
  18. package/lib/core/pool.js +1 -7
  19. package/lib/core/price.js +6 -1
  20. package/lib/core/strategy.d.ts +1 -3
  21. package/lib/core/strategy.js +14 -13
  22. package/lib/core/tokenDistributor.js +1 -1
  23. package/lib/core/transactions.d.ts +18 -3
  24. package/lib/core/transactions.js +39 -3
  25. package/lib/index.d.ts +1 -2
  26. package/lib/index.js +1 -1
  27. package/lib/oracles/priceFeeds.js +1 -1
  28. package/lib/pathfinder/convexLP.d.ts +1 -1
  29. package/lib/pathfinder/convexLP.js +26 -29
  30. package/lib/pathfinder/curveLP.d.ts +1 -1
  31. package/lib/pathfinder/curveLP.js +5 -7
  32. package/lib/pathfinder/path.d.ts +1 -1
  33. package/lib/pathfinder/path.js +38 -42
  34. package/lib/pathfinder/trade.d.ts +1 -2
  35. package/lib/pathfinder/tradeTypes.d.ts +5 -5
  36. package/lib/pathfinder/yVault.d.ts +2 -2
  37. package/lib/pathfinder/yVault.js +18 -15
  38. package/lib/strategies/curve.d.ts +6 -60
  39. package/lib/strategies/curve.js +6 -0
  40. package/lib/strategies/uniswapV2.js +3 -19
  41. package/lib/strategies/uniswapV3.js +1 -1
  42. package/lib/strategies/yearn.js +15 -11
  43. package/lib/tokens/convex.d.ts +3 -3
  44. package/lib/tokens/curveLP.d.ts +2 -2
  45. package/lib/tokens/curveLP.js +1 -1
  46. package/lib/tokens/gear.d.ts +2 -2
  47. package/lib/tokens/gear.js +1 -1
  48. package/lib/tokens/normal.d.ts +1 -1
  49. package/lib/tokens/token.js +4 -4
  50. package/lib/tokens/tokenData.d.ts +3 -1
  51. package/lib/tokens/tokenData.js +10 -8
  52. package/lib/tokens/yearn.d.ts +3 -3
  53. package/lib/utils/errors.d.ts +6 -0
  54. package/lib/utils/errors.js +13 -0
  55. package/lib/utils/formatter.d.ts +1 -1
  56. package/lib/utils/formatter.js +17 -14
  57. package/lib/utils/loading.d.ts +2 -1
  58. package/lib/utils/loading.js +9 -13
  59. package/lib/utils/mappers.js +2 -2
  60. package/lib/utils/network.js +2 -2
  61. package/lib/utils/repeater.js +12 -24
  62. package/lib/utils/validate.js +1 -1
  63. package/package.json +26 -8
  64. package/src/apy/convexAPY.ts +6 -6
  65. package/src/apy/lidoAPY.ts +12 -11
  66. package/src/contracts/contracts.ts +8 -7
  67. package/src/core/constants.ts +1 -1
  68. package/src/core/creditAccount.ts +28 -5
  69. package/src/core/creditManager.ts +29 -4
  70. package/src/core/creditOperation.ts +7 -7
  71. package/src/core/creditSession.ts +25 -5
  72. package/src/core/errors.ts +1 -0
  73. package/src/core/eventOrTx.ts +8 -5
  74. package/src/core/events.ts +85 -24
  75. package/src/core/history.ts +46 -46
  76. package/src/core/operations.ts +6 -0
  77. package/src/core/pool.ts +16 -4
  78. package/src/core/price.ts +7 -3
  79. package/src/core/strategy.ts +27 -23
  80. package/src/core/tokenDistributor.ts +2 -2
  81. package/src/core/transactions.ts +427 -350
  82. package/src/index.ts +1 -3
  83. package/src/oracles/priceFeeds.ts +523 -523
  84. package/src/pathfinder/contracts.ts +15 -13
  85. package/src/pathfinder/convexLP.ts +29 -25
  86. package/src/pathfinder/curveLP.ts +57 -53
  87. package/src/pathfinder/path.ts +17 -9
  88. package/src/pathfinder/priority.ts +11 -11
  89. package/src/pathfinder/trade.ts +84 -77
  90. package/src/pathfinder/tradeTypes.ts +98 -94
  91. package/src/pathfinder/yVault.ts +26 -11
  92. package/src/payload/token.ts +3 -3
  93. package/src/strategies/convex.ts +217 -210
  94. package/src/strategies/creditFacade.ts +70 -53
  95. package/src/strategies/curve.ts +263 -194
  96. package/src/strategies/lido.ts +33 -37
  97. package/src/strategies/uniswapV2.ts +90 -112
  98. package/src/strategies/uniswapV3.ts +114 -91
  99. package/src/strategies/yearn.ts +58 -62
  100. package/src/tokens/connectors.ts +6 -6
  101. package/src/tokens/convex.ts +297 -296
  102. package/src/tokens/curveLP.ts +170 -165
  103. package/src/tokens/gear.ts +47 -45
  104. package/src/tokens/normal.ts +801 -802
  105. package/src/tokens/token.ts +9 -5
  106. package/src/tokens/tokenData.ts +19 -9
  107. package/src/tokens/tokenType.ts +11 -11
  108. package/src/tokens/yearn.ts +126 -124
  109. package/src/utils/errors.ts +11 -0
  110. package/src/utils/formatter.ts +22 -18
  111. package/src/utils/loading.ts +14 -6
  112. package/src/utils/mappers.ts +8 -6
  113. package/src/utils/multicall.ts +2 -0
  114. package/src/utils/network.ts +21 -21
  115. package/src/utils/repeater.ts +2 -2
  116. package/src/utils/validate.ts +1 -1
  117. package/lib/utils/events.d.ts +0 -2
  118. package/lib/utils/events.js +0 -13
  119. package/src/utils/events.ts +0 -10
@@ -1,101 +1,105 @@
1
- import {ConvexPoolContract, CurvePoolContract, UniswapV2Contract, YearnVaultContract} from "../contracts/contracts";
2
- import {NormalToken} from "../tokens/normal";
3
- import {CurveLPToken} from "../tokens/curveLP";
4
- import {YearnLPToken} from "../tokens/yearn";
5
- import {ConvexLPToken, ConvexStakedPhantomToken} from "../tokens/convex";
6
-
1
+ import type {
2
+ ConvexPoolContract,
3
+ CurvePoolContract,
4
+ UniswapV2Contract,
5
+ YearnVaultContract
6
+ } from "../contracts/contracts";
7
+ import type { NormalToken } from "../tokens/normal";
8
+ import type { CurveLPToken } from "../tokens/curveLP";
9
+ import type { YearnLPToken } from "../tokens/yearn";
10
+ import type { ConvexLPToken, ConvexStakedPhantomToken } from "../tokens/convex";
7
11
 
8
12
  export enum TradeType {
9
- UniswapV2Swap,
10
- UniswapV3Swap,
11
- CurveExchange,
12
- CurveExchangeUnderlying,
13
- CurveDepositLP,
14
- CurveWithdrawLP,
15
- YearnDeposit,
16
- YearnWithdraw,
17
- LidoStake,
18
- ConvexDepositLP,
19
- ConvexStake,
20
- ConvexDepositLPAndStake,
21
- ConvexWithdrawLP,
22
- ConvexWithdraw,
23
- ConvexWithdrawAndUnwrap
13
+ UniswapV2Swap,
14
+ UniswapV3Swap,
15
+ CurveExchange,
16
+ CurveExchangeUnderlying,
17
+ CurveDepositLP,
18
+ CurveWithdrawLP,
19
+ YearnDeposit,
20
+ YearnWithdraw,
21
+ LidoStake,
22
+ ConvexDepositLP,
23
+ ConvexStake,
24
+ ConvexDepositLPAndStake,
25
+ ConvexWithdrawLP,
26
+ ConvexWithdraw,
27
+ ConvexWithdrawAndUnwrap
24
28
  }
25
29
 
26
30
  export type TradeAction =
27
- | {
28
- type: TradeType.UniswapV2Swap;
29
- contract: UniswapV2Contract;
30
- tokenOut?: NormalToken;
31
- }
32
- | {
33
- type: TradeType.UniswapV3Swap;
34
- contract: "UNISWAP_V3_ROUTER";
35
- tokenOut?: NormalToken;
36
- }
37
- | {
38
- type: TradeType.CurveExchange;
39
- contract: CurvePoolContract;
40
- tokenOut: Array<NormalToken | CurveLPToken>;
41
- }
42
- | {
43
- type: TradeType.CurveDepositLP;
44
- contract: CurvePoolContract;
45
- tokenOut: CurveLPToken;
46
- }
47
- | {
48
- type: TradeType.CurveWithdrawLP;
49
- contract: CurvePoolContract;
50
- tokenOut: Array<CurveLPToken | NormalToken>;
51
- }
52
- | {
53
- type: TradeType.YearnDeposit;
54
- contract: YearnVaultContract;
55
- tokenOut: YearnLPToken;
56
- }
57
- | {
58
- type: TradeType.YearnWithdraw;
59
- contract: YearnVaultContract;
60
- tokenOut: NormalToken | CurveLPToken;
61
- }
62
- | {
63
- type: TradeType.LidoStake;
64
- contract: "LIDO_STETH_GATEWAY";
65
- tokenOut: NormalToken;
66
- }
67
- | {
68
- type: TradeType.ConvexDepositLP;
69
- contract: "CONVEX_BOOSTER";
70
- tokenOut: ConvexLPToken;
71
- }
72
- | {
73
- type: TradeType.ConvexStake;
74
- contract: ConvexPoolContract;
75
- tokenOut: ConvexStakedPhantomToken;
76
- }
77
- | {
78
- type: TradeType.ConvexDepositLPAndStake;
79
- contract: "CONVEX_BOOSTER";
80
- tokenOut: ConvexStakedPhantomToken;
81
- }
82
- | {
83
- type: TradeType.ConvexWithdrawLP;
84
- contract: "CONVEX_BOOSTER";
85
- tokenOut: CurveLPToken;
86
- }
87
- | {
88
- type: TradeType.ConvexWithdraw;
89
- contract: ConvexPoolContract;
90
- tokenOut: ConvexLPToken;
91
- }
92
- | {
93
- type: TradeType.ConvexWithdrawAndUnwrap;
94
- contract: ConvexPoolContract;
95
- tokenOut: CurveLPToken;
96
- };
31
+ | {
32
+ type: TradeType.UniswapV2Swap;
33
+ contract: UniswapV2Contract;
34
+ tokenOut?: NormalToken;
35
+ }
36
+ | {
37
+ type: TradeType.UniswapV3Swap;
38
+ contract: "UNISWAP_V3_ROUTER";
39
+ tokenOut?: NormalToken;
40
+ }
41
+ | {
42
+ type: TradeType.CurveExchange;
43
+ contract: CurvePoolContract;
44
+ tokenOut: Array<NormalToken | CurveLPToken>;
45
+ }
46
+ | {
47
+ type: TradeType.CurveDepositLP;
48
+ contract: CurvePoolContract;
49
+ tokenOut: CurveLPToken;
50
+ }
51
+ | {
52
+ type: TradeType.CurveWithdrawLP;
53
+ contract: CurvePoolContract;
54
+ tokenOut: Array<CurveLPToken | NormalToken>;
55
+ }
56
+ | {
57
+ type: TradeType.YearnDeposit;
58
+ contract: YearnVaultContract;
59
+ tokenOut: YearnLPToken;
60
+ }
61
+ | {
62
+ type: TradeType.YearnWithdraw;
63
+ contract: YearnVaultContract;
64
+ tokenOut: NormalToken | CurveLPToken;
65
+ }
66
+ | {
67
+ type: TradeType.LidoStake;
68
+ contract: "LIDO_STETH_GATEWAY";
69
+ tokenOut: NormalToken;
70
+ }
71
+ | {
72
+ type: TradeType.ConvexDepositLP;
73
+ contract: "CONVEX_BOOSTER";
74
+ tokenOut: ConvexLPToken;
75
+ }
76
+ | {
77
+ type: TradeType.ConvexStake;
78
+ contract: ConvexPoolContract;
79
+ tokenOut: ConvexStakedPhantomToken;
80
+ }
81
+ | {
82
+ type: TradeType.ConvexDepositLPAndStake;
83
+ contract: "CONVEX_BOOSTER";
84
+ tokenOut: ConvexStakedPhantomToken;
85
+ }
86
+ | {
87
+ type: TradeType.ConvexWithdrawLP;
88
+ contract: "CONVEX_BOOSTER";
89
+ tokenOut: CurveLPToken;
90
+ }
91
+ | {
92
+ type: TradeType.ConvexWithdraw;
93
+ contract: ConvexPoolContract;
94
+ tokenOut: ConvexLPToken;
95
+ }
96
+ | {
97
+ type: TradeType.ConvexWithdrawAndUnwrap;
98
+ contract: ConvexPoolContract;
99
+ tokenOut: CurveLPToken;
100
+ };
97
101
 
98
102
  export enum SwapType {
99
- ExactInput = 1,
100
- ExactOutput = 2,
101
- }
103
+ ExactInput = 1,
104
+ ExactOutput = 2
105
+ }
@@ -1,14 +1,19 @@
1
1
  import { BigNumber } from "ethers";
2
- import { IYVault__factory } from "../types";
3
- import { Path, LPWithdrawPathFinder } from "./path";
2
+
4
3
  import { YearnLPToken, yearnTokens } from "../tokens/yearn";
5
4
  import { NormalToken } from "../tokens/normal";
6
5
  import { CurveLPToken } from "../tokens/curveLP";
7
6
  import { SupportedToken, tokenDataByNetwork } from "../tokens/token";
7
+
8
8
  import { PartialRecord } from "../utils/types";
9
9
  import { MCall, multicall } from "../utils/multicall";
10
+ import { objectEntries } from "../utils/mappers";
11
+
12
+ import { IYVault__factory } from "../types";
10
13
  import { IYVaultInterface } from "../types/contracts/integrations/yearn/IYVault";
11
14
 
15
+ import type { Path, LPWithdrawPathFinder } from "./path";
16
+
12
17
  interface WithdrawBalance {
13
18
  token: SupportedToken;
14
19
  balance: BigNumber;
@@ -16,6 +21,7 @@ interface WithdrawBalance {
16
21
 
17
22
  export class YearnVaultPathFinder implements LPWithdrawPathFinder {
18
23
  _vault: YearnLPToken;
24
+
19
25
  token: NormalToken | CurveLPToken;
20
26
 
21
27
  constructor(vault: YearnLPToken) {
@@ -27,18 +33,27 @@ export class YearnVaultPathFinder implements LPWithdrawPathFinder {
27
33
  this.token = currentTokenData.underlying;
28
34
  }
29
35
 
30
- async findWithdrawPaths(p: Path): Promise<Array<Path>> {
31
- let vaultBalances: PartialRecord<SupportedToken, WithdrawBalance> = {};
32
-
33
- for (let [yVault, tokenData] of Object.entries(yearnTokens)) {
34
- const currentBalance = p.popBalance(yVault as YearnLPToken);
36
+ // eslint-disable-next-line class-methods-use-this
37
+ async findWithdrawPaths(path: Path): Promise<Array<Path>> {
38
+ // make path copy
39
+ const p: Path = Object.assign(
40
+ Object.create(Object.getPrototypeOf(path)),
41
+ path
42
+ );
43
+
44
+ const vaultBalances = objectEntries(yearnTokens).reduce<
45
+ PartialRecord<SupportedToken, WithdrawBalance>
46
+ >((acc, [yVault, tokenData]) => {
47
+ const typedVault = yVault;
48
+ const currentBalance = p.popBalance(typedVault);
35
49
  if (currentBalance.gt(1)) {
36
- vaultBalances[yVault as YearnLPToken] = {
50
+ acc[typedVault] = {
37
51
  token: tokenData.underlying,
38
52
  balance: currentBalance
39
53
  };
40
54
  }
41
- }
55
+ return acc;
56
+ }, {});
42
57
 
43
58
  const vaultList = Object.keys(vaultBalances) as Array<SupportedToken>;
44
59
 
@@ -53,7 +68,7 @@ export class YearnVaultPathFinder implements LPWithdrawPathFinder {
53
68
 
54
69
  const prices = await multicall<Array<BigNumber>>(multicallData, p.provider);
55
70
 
56
- for (let i = 0; i < vaultList.length; i++) {
71
+ for (let i = 0; i < vaultList.length; i += 1) {
57
72
  const vault = vaultList[i];
58
73
  const vb = vaultBalances[vault];
59
74
 
@@ -70,6 +85,6 @@ export class YearnVaultPathFinder implements LPWithdrawPathFinder {
70
85
  p.calls.push({ target: adapterAddress, callData });
71
86
  }
72
87
 
73
- return await p.withdrawTokens();
88
+ return p.withdrawTokens();
74
89
  }
75
90
  }
@@ -1,5 +1,5 @@
1
1
  export interface TokenDataPayload {
2
- addr: string;
3
- symbol: string;
4
- decimals: number;
2
+ addr: string;
3
+ symbol: string;
4
+ decimals: number;
5
5
  }