@gearbox-protocol/sdk 0.0.100 → 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 (163) 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.d.ts +8 -0
  5. package/lib/apy/convexAPY.js +200 -0
  6. package/lib/apy/lidoAPY.d.ts +4 -0
  7. package/lib/apy/lidoAPY.js +103 -0
  8. package/lib/config.d.ts +1 -0
  9. package/lib/config.js +2 -1
  10. package/lib/contracts/contracts.d.ts +9 -4
  11. package/lib/contracts/contracts.js +52 -14
  12. package/lib/contracts/contractsRegister.js +16 -4
  13. package/lib/core/constants.d.ts +7 -1
  14. package/lib/core/constants.js +11 -5
  15. package/lib/core/creditAccount.d.ts +3 -1
  16. package/lib/core/creditAccount.js +33 -31
  17. package/lib/core/creditManager.d.ts +13 -2
  18. package/lib/core/creditManager.js +77 -33
  19. package/lib/core/creditSession.js +14 -3
  20. package/lib/core/errors.d.ts +10 -0
  21. package/lib/core/errors.js +16 -1
  22. package/lib/core/eventOrTx.d.ts +1 -1
  23. package/lib/core/events.d.ts +19 -19
  24. package/lib/core/events.js +32 -30
  25. package/lib/core/multicall.d.ts +1 -1
  26. package/lib/core/pool.d.ts +2 -2
  27. package/lib/core/pool.js +8 -12
  28. package/lib/core/price.d.ts +2 -0
  29. package/lib/core/price.js +14 -0
  30. package/lib/core/strategy.d.ts +36 -0
  31. package/lib/core/strategy.js +57 -0
  32. package/lib/core/tokenDistributor.js +1 -1
  33. package/lib/core/transactions.d.ts +18 -3
  34. package/lib/core/transactions.js +39 -3
  35. package/lib/index.d.ts +8 -3
  36. package/lib/index.js +9 -4
  37. package/lib/oracles/priceFeeds.js +1 -1
  38. package/lib/pathfinder/convexLP.d.ts +1 -1
  39. package/lib/pathfinder/convexLP.js +26 -29
  40. package/lib/pathfinder/curveLP.d.ts +1 -1
  41. package/lib/pathfinder/curveLP.js +5 -7
  42. package/lib/pathfinder/path.d.ts +1 -1
  43. package/lib/pathfinder/path.js +38 -42
  44. package/lib/pathfinder/trade.d.ts +1 -2
  45. package/lib/pathfinder/tradeTypes.d.ts +5 -5
  46. package/lib/pathfinder/yVault.d.ts +2 -2
  47. package/lib/pathfinder/yVault.js +22 -19
  48. package/lib/payload/creditAccount.d.ts +4 -26
  49. package/lib/payload/creditManager.d.ts +3 -25
  50. package/lib/payload/pool.d.ts +2 -17
  51. package/lib/payload/pool.js +0 -1
  52. package/lib/strategies/curve.d.ts +6 -60
  53. package/lib/strategies/curve.js +6 -0
  54. package/lib/strategies/uniswapV2.js +3 -19
  55. package/lib/strategies/uniswapV3.js +1 -1
  56. package/lib/strategies/yearn.js +15 -11
  57. package/lib/tokens/convex.d.ts +3 -3
  58. package/lib/tokens/curveLP.d.ts +2 -2
  59. package/lib/tokens/curveLP.js +1 -1
  60. package/lib/tokens/gear.d.ts +2 -2
  61. package/lib/tokens/gear.js +1 -1
  62. package/lib/tokens/normal.d.ts +1 -1
  63. package/lib/tokens/token.js +9 -9
  64. package/lib/tokens/tokenData.d.ts +3 -1
  65. package/lib/tokens/tokenData.js +10 -8
  66. package/lib/tokens/yearn.d.ts +3 -3
  67. package/lib/utils/errors.d.ts +6 -0
  68. package/lib/utils/errors.js +13 -0
  69. package/lib/utils/formatter.d.ts +2 -1
  70. package/lib/utils/formatter.js +23 -15
  71. package/lib/utils/loading.d.ts +2 -1
  72. package/lib/utils/loading.js +9 -13
  73. package/lib/utils/mappers.d.ts +2 -1
  74. package/lib/utils/mappers.js +13 -5
  75. package/lib/utils/multicall.js +4 -3
  76. package/lib/utils/network.js +2 -2
  77. package/lib/utils/repeater.js +12 -24
  78. package/lib/utils/types.d.ts +1 -0
  79. package/lib/utils/validate.js +1 -1
  80. package/package.json +26 -8
  81. package/src/apy/convexAPY.ts +250 -0
  82. package/src/apy/lidoAPY.ts +89 -0
  83. package/src/config.ts +2 -1
  84. package/src/contracts/contracts.ts +73 -19
  85. package/src/contracts/contractsRegister.ts +19 -4
  86. package/src/core/constants.ts +11 -4
  87. package/src/core/creditAccount.ts +69 -37
  88. package/src/core/creditManager.ts +256 -148
  89. package/src/core/creditOperation.ts +7 -7
  90. package/src/core/creditSession.ts +25 -5
  91. package/src/core/errors.ts +25 -0
  92. package/src/core/eventOrTx.ts +8 -5
  93. package/src/core/events.ts +978 -911
  94. package/src/core/history.ts +46 -46
  95. package/src/core/multicall.ts +1 -1
  96. package/src/core/operations.ts +6 -0
  97. package/src/core/pool.ts +75 -58
  98. package/src/core/price.ts +13 -0
  99. package/src/core/strategy.ts +134 -0
  100. package/src/core/tokenDistributor.ts +2 -2
  101. package/src/core/transactions.ts +427 -350
  102. package/src/index.ts +9 -4
  103. package/src/oracles/priceFeeds.ts +523 -523
  104. package/src/pathfinder/contracts.ts +15 -13
  105. package/src/pathfinder/convexLP.ts +29 -25
  106. package/src/pathfinder/curveLP.ts +57 -53
  107. package/src/pathfinder/path.ts +158 -150
  108. package/src/pathfinder/priority.ts +11 -11
  109. package/src/pathfinder/trade.ts +84 -77
  110. package/src/pathfinder/tradeTypes.ts +98 -94
  111. package/src/pathfinder/yVault.ts +79 -63
  112. package/src/payload/creditAccount.ts +4 -26
  113. package/src/payload/creditManager.ts +4 -26
  114. package/src/payload/pool.ts +2 -19
  115. package/src/payload/token.ts +3 -3
  116. package/src/strategies/convex.ts +217 -210
  117. package/src/strategies/creditFacade.ts +70 -53
  118. package/src/strategies/curve.ts +263 -194
  119. package/src/strategies/lido.ts +33 -37
  120. package/src/strategies/uniswapV2.ts +90 -112
  121. package/src/strategies/uniswapV3.ts +114 -91
  122. package/src/strategies/yearn.ts +58 -62
  123. package/src/tokens/connectors.ts +6 -6
  124. package/src/tokens/convex.ts +297 -296
  125. package/src/tokens/curveLP.ts +170 -165
  126. package/src/tokens/gear.ts +47 -45
  127. package/src/tokens/normal.ts +801 -802
  128. package/src/tokens/token.ts +19 -10
  129. package/src/tokens/tokenData.ts +19 -9
  130. package/src/tokens/tokenType.ts +11 -11
  131. package/src/tokens/yearn.ts +126 -124
  132. package/src/utils/errors.ts +11 -0
  133. package/src/utils/formatter.ts +26 -18
  134. package/src/utils/loading.ts +14 -6
  135. package/src/utils/mappers.ts +15 -6
  136. package/src/utils/multicall.ts +6 -9
  137. package/src/utils/network.ts +21 -21
  138. package/src/utils/repeater.ts +2 -2
  139. package/src/utils/types.ts +6 -2
  140. package/src/utils/validate.ts +1 -1
  141. package/lib/core/adapters.d.ts +0 -15
  142. package/lib/core/adapters.js +0 -19
  143. package/lib/core/contracts.d.ts +0 -67
  144. package/lib/core/contracts.js +0 -254
  145. package/lib/core/contractsRegister.d.ts +0 -2
  146. package/lib/core/contractsRegister.js +0 -58
  147. package/lib/core/creditCard.d.ts +0 -13
  148. package/lib/core/creditCard.js +0 -2
  149. package/lib/core/oracles.d.ts +0 -38
  150. package/lib/core/oracles.js +0 -12
  151. package/lib/core/priceFeeds.d.ts +0 -3
  152. package/lib/core/priceFeeds.js +0 -492
  153. package/lib/core/protocols.d.ts +0 -13
  154. package/lib/core/protocols.js +0 -39
  155. package/lib/core/swap.d.ts +0 -4
  156. package/lib/core/swap.js +0 -8
  157. package/lib/core/trade.d.ts +0 -35
  158. package/lib/core/trade.js +0 -62
  159. package/lib/core/tradeTypes.d.ts +0 -79
  160. package/lib/core/tradeTypes.js +0 -21
  161. package/lib/utils/events.d.ts +0 -2
  162. package/lib/utils/events.js +0 -13
  163. package/src/utils/events.ts +0 -10
@@ -1,7 +1,7 @@
1
1
  import { BigNumber } from "ethers";
2
+ import moment from "moment";
2
3
  import { CreditOperation } from "./creditOperation";
3
4
  import { CreditSessionPayload } from "../payload/creditSession";
4
- import moment from "moment";
5
5
  import { PERCENTAGE_FACTOR } from "./constants";
6
6
 
7
7
  export type CreditSessionStatus = "active" | "closed" | "repaid" | "liquidated";
@@ -10,29 +10,46 @@ const statusEnum: Array<CreditSessionStatus> = [
10
10
  "active",
11
11
  "closed",
12
12
  "repaid",
13
- "liquidated",
13
+ "liquidated"
14
14
  ];
15
15
 
16
16
  export class CreditSession {
17
17
  public readonly id: string;
18
18
 
19
19
  public readonly status: CreditSessionStatus;
20
+
20
21
  public readonly name: string;
22
+
21
23
  public readonly background: string;
24
+
22
25
  public readonly borrower: string;
26
+
23
27
  public readonly creditManager: string;
28
+
24
29
  public readonly account: string;
30
+
25
31
  public readonly since: number;
32
+
26
33
  public readonly sinceDate: string;
34
+
27
35
  public readonly closedAt: number;
36
+
28
37
  public readonly closedAtDate: string;
38
+
29
39
  public readonly initialAmount: BigNumber;
40
+
30
41
  public readonly borrowedAmount: BigNumber;
42
+
31
43
  public readonly totalValue: BigNumber;
44
+
32
45
  public readonly healthFactor: number;
46
+
33
47
  public readonly profit: BigNumber;
48
+
34
49
  public readonly profitPercentage: number;
50
+
35
51
  public readonly score: number;
52
+
36
53
  public readonly operations: Array<CreditOperation>;
37
54
 
38
55
  constructor(payload: CreditSessionPayload) {
@@ -53,9 +70,12 @@ export class CreditSession {
53
70
  this.healthFactor =
54
71
  BigNumber.from(payload.healthFactor || 0).toNumber() / PERCENTAGE_FACTOR;
55
72
  this.score = payload.score;
56
- this.operations = (payload.operations || []).map((op) => {
57
- op.date = moment(op.timestamp * 1000).format("Do MMM YYYY");
58
- return op;
73
+ this.operations = (payload.operations || []).map(op => {
74
+ const formattedOp = {
75
+ ...op,
76
+ date: moment(op.timestamp * 1000).format("Do MMM YYYY")
77
+ };
78
+ return formattedOp;
59
79
  });
60
80
  this.sinceDate = moment(payload.sinceTimestamp * 1000).format(
61
81
  "Do MMM YYYY"
@@ -1,3 +1,5 @@
1
+ import { BigNumber } from "ethers";
2
+
1
3
  export interface MetamaskError {
2
4
  code: number;
3
5
  message: string;
@@ -43,3 +45,26 @@ export class AccountsInAlllCreditManagersError extends Error {
43
45
  super("errors.youOpenedAccountsInAllCreditManagersError");
44
46
  }
45
47
  }
48
+
49
+ export type OpenAccountErrorTypes =
50
+ | "insufficientPoolLiquidity"
51
+ | "leverageGreaterMax"
52
+ | "amountGreaterMax"
53
+ | "amountLessMin";
54
+
55
+ export class OpenAccountError extends Error {
56
+ message: OpenAccountErrorTypes;
57
+
58
+ payload: { amount: BigNumber };
59
+
60
+ constructor(errorType: OpenAccountErrorTypes, amount: BigNumber) {
61
+ super();
62
+ Object.setPrototypeOf(this, OpenAccountError.prototype);
63
+ this.message = errorType;
64
+ this.payload = { amount };
65
+ }
66
+
67
+ static isOpenAccountError(e: unknown): e is OpenAccountError {
68
+ return e instanceof OpenAccountError;
69
+ }
70
+ }
@@ -1,5 +1,5 @@
1
1
  import { TokenData } from "../tokens/tokenData";
2
- import { TxSerialized } from "./transactions";
2
+ import type { TxSerialized } from "./transactions";
3
3
 
4
4
  export interface Display {
5
5
  toString(tokenData: Record<string, TokenData>): string;
@@ -16,8 +16,11 @@ export interface EventOrTxProps {
16
16
 
17
17
  export abstract class EventOrTx implements Display {
18
18
  public block: number;
19
+
19
20
  public readonly txHash: string;
21
+
20
22
  public readonly timestamp: number;
23
+
21
24
  protected _txStatus: TxStatus;
22
25
 
23
26
  constructor({ block, txHash, txStatus, timestamp = 0 }: EventOrTxProps) {
@@ -70,10 +73,10 @@ export abstract class EVMTx extends EventOrTx {
70
73
  timestamp = 0
71
74
  }: EVMTxProps) {
72
75
  super({
73
- block: block,
74
- txStatus: txStatus,
75
- txHash: txHash,
76
- timestamp: timestamp
76
+ block,
77
+ txStatus,
78
+ txHash,
79
+ timestamp
77
80
  });
78
81
  if (this.txStatus !== "pending" && this.block === 0) {
79
82
  throw new Error("Block not specified for non-pending tx");