@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.
- package/.eslintignore +4 -0
- package/.eslintrc.js +52 -0
- package/.husky/pre-push +4 -0
- package/lib/apy/convexAPY.d.ts +8 -0
- package/lib/apy/convexAPY.js +200 -0
- package/lib/apy/lidoAPY.d.ts +4 -0
- package/lib/apy/lidoAPY.js +103 -0
- package/lib/config.d.ts +1 -0
- package/lib/config.js +2 -1
- package/lib/contracts/contracts.d.ts +9 -4
- package/lib/contracts/contracts.js +52 -14
- package/lib/contracts/contractsRegister.js +16 -4
- package/lib/core/constants.d.ts +7 -1
- package/lib/core/constants.js +11 -5
- package/lib/core/creditAccount.d.ts +3 -1
- package/lib/core/creditAccount.js +33 -31
- package/lib/core/creditManager.d.ts +13 -2
- package/lib/core/creditManager.js +77 -33
- package/lib/core/creditSession.js +14 -3
- package/lib/core/errors.d.ts +10 -0
- package/lib/core/errors.js +16 -1
- package/lib/core/eventOrTx.d.ts +1 -1
- package/lib/core/events.d.ts +19 -19
- package/lib/core/events.js +32 -30
- package/lib/core/multicall.d.ts +1 -1
- package/lib/core/pool.d.ts +2 -2
- package/lib/core/pool.js +8 -12
- package/lib/core/price.d.ts +2 -0
- package/lib/core/price.js +14 -0
- package/lib/core/strategy.d.ts +36 -0
- package/lib/core/strategy.js +57 -0
- package/lib/core/tokenDistributor.js +1 -1
- package/lib/core/transactions.d.ts +18 -3
- package/lib/core/transactions.js +39 -3
- package/lib/index.d.ts +8 -3
- package/lib/index.js +9 -4
- package/lib/oracles/priceFeeds.js +1 -1
- package/lib/pathfinder/convexLP.d.ts +1 -1
- package/lib/pathfinder/convexLP.js +26 -29
- package/lib/pathfinder/curveLP.d.ts +1 -1
- package/lib/pathfinder/curveLP.js +5 -7
- package/lib/pathfinder/path.d.ts +1 -1
- package/lib/pathfinder/path.js +38 -42
- package/lib/pathfinder/trade.d.ts +1 -2
- package/lib/pathfinder/tradeTypes.d.ts +5 -5
- package/lib/pathfinder/yVault.d.ts +2 -2
- package/lib/pathfinder/yVault.js +22 -19
- package/lib/payload/creditAccount.d.ts +4 -26
- package/lib/payload/creditManager.d.ts +3 -25
- package/lib/payload/pool.d.ts +2 -17
- package/lib/payload/pool.js +0 -1
- package/lib/strategies/curve.d.ts +6 -60
- package/lib/strategies/curve.js +6 -0
- package/lib/strategies/uniswapV2.js +3 -19
- package/lib/strategies/uniswapV3.js +1 -1
- package/lib/strategies/yearn.js +15 -11
- package/lib/tokens/convex.d.ts +3 -3
- package/lib/tokens/curveLP.d.ts +2 -2
- package/lib/tokens/curveLP.js +1 -1
- package/lib/tokens/gear.d.ts +2 -2
- package/lib/tokens/gear.js +1 -1
- package/lib/tokens/normal.d.ts +1 -1
- package/lib/tokens/token.js +9 -9
- package/lib/tokens/tokenData.d.ts +3 -1
- package/lib/tokens/tokenData.js +10 -8
- package/lib/tokens/yearn.d.ts +3 -3
- package/lib/utils/errors.d.ts +6 -0
- package/lib/utils/errors.js +13 -0
- package/lib/utils/formatter.d.ts +2 -1
- package/lib/utils/formatter.js +23 -15
- package/lib/utils/loading.d.ts +2 -1
- package/lib/utils/loading.js +9 -13
- package/lib/utils/mappers.d.ts +2 -1
- package/lib/utils/mappers.js +13 -5
- package/lib/utils/multicall.js +4 -3
- package/lib/utils/network.js +2 -2
- package/lib/utils/repeater.js +12 -24
- package/lib/utils/types.d.ts +1 -0
- package/lib/utils/validate.js +1 -1
- package/package.json +26 -8
- package/src/apy/convexAPY.ts +250 -0
- package/src/apy/lidoAPY.ts +89 -0
- package/src/config.ts +2 -1
- package/src/contracts/contracts.ts +73 -19
- package/src/contracts/contractsRegister.ts +19 -4
- package/src/core/constants.ts +11 -4
- package/src/core/creditAccount.ts +69 -37
- package/src/core/creditManager.ts +256 -148
- package/src/core/creditOperation.ts +7 -7
- package/src/core/creditSession.ts +25 -5
- package/src/core/errors.ts +25 -0
- package/src/core/eventOrTx.ts +8 -5
- package/src/core/events.ts +978 -911
- package/src/core/history.ts +46 -46
- package/src/core/multicall.ts +1 -1
- package/src/core/operations.ts +6 -0
- package/src/core/pool.ts +75 -58
- package/src/core/price.ts +13 -0
- package/src/core/strategy.ts +134 -0
- package/src/core/tokenDistributor.ts +2 -2
- package/src/core/transactions.ts +427 -350
- package/src/index.ts +9 -4
- package/src/oracles/priceFeeds.ts +523 -523
- package/src/pathfinder/contracts.ts +15 -13
- package/src/pathfinder/convexLP.ts +29 -25
- package/src/pathfinder/curveLP.ts +57 -53
- package/src/pathfinder/path.ts +158 -150
- package/src/pathfinder/priority.ts +11 -11
- package/src/pathfinder/trade.ts +84 -77
- package/src/pathfinder/tradeTypes.ts +98 -94
- package/src/pathfinder/yVault.ts +79 -63
- package/src/payload/creditAccount.ts +4 -26
- package/src/payload/creditManager.ts +4 -26
- package/src/payload/pool.ts +2 -19
- package/src/payload/token.ts +3 -3
- package/src/strategies/convex.ts +217 -210
- package/src/strategies/creditFacade.ts +70 -53
- package/src/strategies/curve.ts +263 -194
- package/src/strategies/lido.ts +33 -37
- package/src/strategies/uniswapV2.ts +90 -112
- package/src/strategies/uniswapV3.ts +114 -91
- package/src/strategies/yearn.ts +58 -62
- package/src/tokens/connectors.ts +6 -6
- package/src/tokens/convex.ts +297 -296
- package/src/tokens/curveLP.ts +170 -165
- package/src/tokens/gear.ts +47 -45
- package/src/tokens/normal.ts +801 -802
- package/src/tokens/token.ts +19 -10
- package/src/tokens/tokenData.ts +19 -9
- package/src/tokens/tokenType.ts +11 -11
- package/src/tokens/yearn.ts +126 -124
- package/src/utils/errors.ts +11 -0
- package/src/utils/formatter.ts +26 -18
- package/src/utils/loading.ts +14 -6
- package/src/utils/mappers.ts +15 -6
- package/src/utils/multicall.ts +6 -9
- package/src/utils/network.ts +21 -21
- package/src/utils/repeater.ts +2 -2
- package/src/utils/types.ts +6 -2
- package/src/utils/validate.ts +1 -1
- package/lib/core/adapters.d.ts +0 -15
- package/lib/core/adapters.js +0 -19
- package/lib/core/contracts.d.ts +0 -67
- package/lib/core/contracts.js +0 -254
- package/lib/core/contractsRegister.d.ts +0 -2
- package/lib/core/contractsRegister.js +0 -58
- package/lib/core/creditCard.d.ts +0 -13
- package/lib/core/creditCard.js +0 -2
- package/lib/core/oracles.d.ts +0 -38
- package/lib/core/oracles.js +0 -12
- package/lib/core/priceFeeds.d.ts +0 -3
- package/lib/core/priceFeeds.js +0 -492
- package/lib/core/protocols.d.ts +0 -13
- package/lib/core/protocols.js +0 -39
- package/lib/core/swap.d.ts +0 -4
- package/lib/core/swap.js +0 -8
- package/lib/core/trade.d.ts +0 -35
- package/lib/core/trade.js +0 -62
- package/lib/core/tradeTypes.d.ts +0 -79
- package/lib/core/tradeTypes.js +0 -21
- package/lib/utils/events.d.ts +0 -2
- package/lib/utils/events.js +0 -13
- 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(
|
|
57
|
-
|
|
58
|
-
|
|
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"
|
package/src/core/errors.ts
CHANGED
|
@@ -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
|
+
}
|
package/src/core/eventOrTx.ts
CHANGED
|
@@ -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
|
|
74
|
-
txStatus
|
|
75
|
-
txHash
|
|
76
|
-
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");
|