@gearbox-protocol/sdk 7.6.3 → 7.7.0-next.2
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/dist/cjs/sdk/sdk-legacy/core/creditAccount.js +40 -46
- package/dist/cjs/sdk/sdk-legacy/core/creditManager.js +4 -0
- package/dist/cjs/sdk/sdk-legacy/core/pool.js +4 -11
- package/dist/cjs/sdk/sdk-legacy/core/transactions.js +28 -0
- package/dist/cjs/sdk/sdk-legacy/gearboxRewards/extraAPY.js +5 -4
- package/dist/esm/sdk/sdk-legacy/core/creditAccount.js +40 -46
- package/dist/esm/sdk/sdk-legacy/core/creditManager.js +4 -0
- package/dist/esm/sdk/sdk-legacy/core/pool.js +4 -11
- package/dist/esm/sdk/sdk-legacy/core/transactions.js +27 -0
- package/dist/esm/sdk/sdk-legacy/gearboxRewards/extraAPY.js +5 -4
- package/dist/types/sdk/sdk-legacy/core/assets.d.ts +1 -1
- package/dist/types/sdk/sdk-legacy/core/creditAccount.d.ts +5 -3
- package/dist/types/sdk/sdk-legacy/core/creditManager.d.ts +3 -0
- package/dist/types/sdk/sdk-legacy/core/pool.d.ts +3 -4
- package/dist/types/sdk/sdk-legacy/core/transactions.d.ts +15 -1
- package/dist/types/sdk/sdk-legacy/payload/creditAccount.d.ts +3 -0
- package/dist/types/sdk/sdk-legacy/payload/creditManager.d.ts +3 -0
- package/dist/types/sdk/sdk-legacy/payload/pool.d.ts +3 -0
- package/dist/types/sdk/utils/viem/sendRawTx.d.ts +1 -1
- package/package.json +1 -1
|
@@ -28,6 +28,8 @@ var import_price = require("../utils/price.js");
|
|
|
28
28
|
const MAX_UINT16 = 65535;
|
|
29
29
|
class CreditAccountData_Legacy {
|
|
30
30
|
isSuccessful;
|
|
31
|
+
chainId;
|
|
32
|
+
network;
|
|
31
33
|
creditAccount;
|
|
32
34
|
borrower;
|
|
33
35
|
creditManager;
|
|
@@ -38,7 +40,6 @@ class CreditAccountData_Legacy {
|
|
|
38
40
|
version;
|
|
39
41
|
enabledTokensMask;
|
|
40
42
|
healthFactor;
|
|
41
|
-
isDeleting;
|
|
42
43
|
baseBorrowRateWithoutFee;
|
|
43
44
|
borrowedAmount;
|
|
44
45
|
accruedInterest;
|
|
@@ -56,6 +57,8 @@ class CreditAccountData_Legacy {
|
|
|
56
57
|
quotedTokens = {};
|
|
57
58
|
constructor(payload) {
|
|
58
59
|
this.isSuccessful = payload.isSuccessful;
|
|
60
|
+
this.chainId = payload.chainId;
|
|
61
|
+
this.network = payload.network;
|
|
59
62
|
this.creditAccount = payload.addr.toLowerCase();
|
|
60
63
|
this.borrower = payload.borrower.toLowerCase();
|
|
61
64
|
this.creditManager = payload.creditManager.toLowerCase();
|
|
@@ -68,7 +71,6 @@ class CreditAccountData_Legacy {
|
|
|
68
71
|
(payload.healthFactor || 0n) * import_constants.PERCENTAGE_FACTOR / import_constants.WAD
|
|
69
72
|
);
|
|
70
73
|
this.enabledTokensMask = payload.enabledTokensMask;
|
|
71
|
-
this.isDeleting = false;
|
|
72
74
|
this.borrowedAmount = payload.debt;
|
|
73
75
|
this.accruedInterest = payload.accruedInterest || 0n;
|
|
74
76
|
this.accruedFees = payload.accruedFees || 0n;
|
|
@@ -107,60 +109,52 @@ class CreditAccountData_Legacy {
|
|
|
107
109
|
this.tokens[token] = balance;
|
|
108
110
|
});
|
|
109
111
|
}
|
|
110
|
-
setDeleteInProgress(d) {
|
|
111
|
-
this.isDeleting = d;
|
|
112
|
-
}
|
|
113
112
|
static sortBalances(balances, prices, tokens) {
|
|
114
113
|
return Object.entries(balances).sort(
|
|
115
114
|
([addr1, amount1], [addr2, amount2]) => {
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
amount2,
|
|
130
|
-
token2?.decimals
|
|
115
|
+
return this.assetComparator(
|
|
116
|
+
{
|
|
117
|
+
token: addr1,
|
|
118
|
+
balance: amount1
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
token: addr2,
|
|
122
|
+
balance: amount2
|
|
123
|
+
},
|
|
124
|
+
prices,
|
|
125
|
+
prices,
|
|
126
|
+
tokens,
|
|
127
|
+
tokens
|
|
131
128
|
);
|
|
132
|
-
if (totalPrice1 === totalPrice2) {
|
|
133
|
-
return amount1 === amount2 ? this.tokensAbcComparator(token1, token2) : this.amountAbcComparator(amount1, amount2);
|
|
134
|
-
}
|
|
135
|
-
return this.amountAbcComparator(totalPrice1, totalPrice2);
|
|
136
129
|
}
|
|
137
130
|
);
|
|
138
131
|
}
|
|
139
132
|
static sortAssets(balances, prices, tokens) {
|
|
140
133
|
return balances.sort(
|
|
141
|
-
(
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
amount2,
|
|
156
|
-
token2?.decimals
|
|
157
|
-
);
|
|
158
|
-
if (totalPrice1 === totalPrice2) {
|
|
159
|
-
return amount1 === amount2 ? this.tokensAbcComparator(token1, token2) : this.amountAbcComparator(amount1, amount2);
|
|
160
|
-
}
|
|
161
|
-
return this.amountAbcComparator(totalPrice1, totalPrice2);
|
|
162
|
-
}
|
|
134
|
+
(t1, t2) => this.assetComparator(t1, t2, prices, prices, tokens, tokens)
|
|
135
|
+
);
|
|
136
|
+
}
|
|
137
|
+
static assetComparator(t1, t2, prices1, prices2, tokens1, tokens2) {
|
|
138
|
+
const addr1Lc = t1.token.toLowerCase();
|
|
139
|
+
const addr2Lc = t2.token.toLowerCase();
|
|
140
|
+
const token1 = tokens1?.[addr1Lc];
|
|
141
|
+
const token2 = tokens2?.[addr2Lc];
|
|
142
|
+
const price1 = prices1?.[addr1Lc] || import_constants.PRICE_DECIMALS;
|
|
143
|
+
const price2 = prices2?.[addr2Lc] || import_constants.PRICE_DECIMALS;
|
|
144
|
+
const totalPrice1 = import_price.PriceUtils.calcTotalPrice(
|
|
145
|
+
price1,
|
|
146
|
+
t1.balance,
|
|
147
|
+
token1?.decimals
|
|
163
148
|
);
|
|
149
|
+
const totalPrice2 = import_price.PriceUtils.calcTotalPrice(
|
|
150
|
+
price2,
|
|
151
|
+
t2.balance,
|
|
152
|
+
token2?.decimals
|
|
153
|
+
);
|
|
154
|
+
if (totalPrice1 === totalPrice2) {
|
|
155
|
+
return t1.balance === t2.balance ? this.tokensAbcComparator(token1, token2) : this.amountAbcComparator(t1.balance, t2.balance);
|
|
156
|
+
}
|
|
157
|
+
return this.amountAbcComparator(totalPrice1, totalPrice2);
|
|
164
158
|
}
|
|
165
159
|
static tokensAbcComparator(t1, t2) {
|
|
166
160
|
const { symbol: symbol1 = "" } = t1 || {};
|
|
@@ -26,6 +26,8 @@ var import_constants = require("../../constants/index.js");
|
|
|
26
26
|
var import_utils = require("../../utils/index.js");
|
|
27
27
|
class CreditManagerData_Legacy {
|
|
28
28
|
address;
|
|
29
|
+
chainId;
|
|
30
|
+
network;
|
|
29
31
|
underlyingToken;
|
|
30
32
|
pool;
|
|
31
33
|
creditFacade;
|
|
@@ -67,6 +69,8 @@ class CreditManagerData_Legacy {
|
|
|
67
69
|
quotas;
|
|
68
70
|
constructor(payload) {
|
|
69
71
|
this.address = payload.addr.toLowerCase();
|
|
72
|
+
this.chainId = payload.chainId;
|
|
73
|
+
this.network = payload.network;
|
|
70
74
|
this.underlyingToken = payload.underlying.toLowerCase();
|
|
71
75
|
this.name = payload.name;
|
|
72
76
|
this.pool = payload.pool.toLowerCase();
|
|
@@ -30,7 +30,8 @@ var import_utils = require("../../utils/index.js");
|
|
|
30
30
|
var import_formatter = require("../utils/formatter.js");
|
|
31
31
|
class PoolData_Legacy {
|
|
32
32
|
address;
|
|
33
|
-
|
|
33
|
+
chainId;
|
|
34
|
+
network;
|
|
34
35
|
underlyingToken;
|
|
35
36
|
dieselToken;
|
|
36
37
|
stakedDieselToken;
|
|
@@ -62,7 +63,8 @@ class PoolData_Legacy {
|
|
|
62
63
|
lastBaseInterestUpdate;
|
|
63
64
|
constructor(payload, extra) {
|
|
64
65
|
this.address = payload.addr.toLowerCase();
|
|
65
|
-
this.
|
|
66
|
+
this.chainId = payload.chainId;
|
|
67
|
+
this.network = payload.network;
|
|
66
68
|
this.underlyingToken = payload.underlying.toLowerCase();
|
|
67
69
|
this.dieselToken = payload.dieselToken.toLowerCase();
|
|
68
70
|
this.stakedDieselToken = (extra.stakedDieselToken || []).map(
|
|
@@ -151,13 +153,6 @@ class PoolData_Legacy {
|
|
|
151
153
|
});
|
|
152
154
|
return model.read.calcBorrowRate([expectedLiquidity, availableLiquidity]);
|
|
153
155
|
}
|
|
154
|
-
static getPoolType(name) {
|
|
155
|
-
const [identity = ""] = name.split(" ") || [];
|
|
156
|
-
const lc = identity.toLowerCase();
|
|
157
|
-
if (lc === "farm") return "farm";
|
|
158
|
-
if (lc === "trade") return "trade";
|
|
159
|
-
return "universal";
|
|
160
|
-
}
|
|
161
156
|
static calculateUtilization(expected, available) {
|
|
162
157
|
if (expected === 0n) return 0;
|
|
163
158
|
const borrowed = expected - available;
|
|
@@ -169,7 +164,6 @@ class ChartsPoolData {
|
|
|
169
164
|
address;
|
|
170
165
|
underlyingToken;
|
|
171
166
|
dieselToken;
|
|
172
|
-
type;
|
|
173
167
|
version;
|
|
174
168
|
name;
|
|
175
169
|
addLiqCount;
|
|
@@ -222,7 +216,6 @@ class ChartsPoolData {
|
|
|
222
216
|
this.address = (payload.addr || "").toLowerCase();
|
|
223
217
|
this.underlyingToken = (payload.underlyingToken || "").toLowerCase();
|
|
224
218
|
this.dieselToken = (payload.dieselToken || "").toLowerCase();
|
|
225
|
-
this.type = PoolData_Legacy.getPoolType(payload.name || "");
|
|
226
219
|
this.version = payload.version || 1;
|
|
227
220
|
this.name = payload.name || "";
|
|
228
221
|
this.earned7D = payload.earned7D || 0;
|
|
@@ -28,6 +28,7 @@ __export(transactions_exports, {
|
|
|
28
28
|
TxCloseAccount: () => TxCloseAccount,
|
|
29
29
|
TxDecreaseBorrowAmount: () => TxDecreaseBorrowAmount,
|
|
30
30
|
TxEnableTokens: () => TxEnableTokens,
|
|
31
|
+
TxFillOrder: () => TxFillOrder,
|
|
31
32
|
TxGaugeClaim: () => TxGaugeClaim,
|
|
32
33
|
TxGaugeStake: () => TxGaugeStake,
|
|
33
34
|
TxGaugeUnstake: () => TxGaugeUnstake,
|
|
@@ -105,6 +106,8 @@ class TxSerializer {
|
|
|
105
106
|
return new TxUnstakeDiesel(params);
|
|
106
107
|
case "TxEnableTokens":
|
|
107
108
|
return new TxEnableTokens(params);
|
|
109
|
+
case "TxFillOrder":
|
|
110
|
+
return new TxFillOrder(params);
|
|
108
111
|
default:
|
|
109
112
|
throw new Error(`Unknown transaction for parsing: ${e.type}`);
|
|
110
113
|
}
|
|
@@ -641,6 +644,30 @@ class TxEnableTokens extends import_eventOrTx.EVMTx {
|
|
|
641
644
|
};
|
|
642
645
|
}
|
|
643
646
|
}
|
|
647
|
+
class TxFillOrder extends import_eventOrTx.EVMTx {
|
|
648
|
+
amount;
|
|
649
|
+
token;
|
|
650
|
+
network;
|
|
651
|
+
constructor(opts) {
|
|
652
|
+
super(opts);
|
|
653
|
+
this.amount = opts.amount;
|
|
654
|
+
this.token = opts.tokensList[opts.token];
|
|
655
|
+
this.network = opts.network;
|
|
656
|
+
}
|
|
657
|
+
toString() {
|
|
658
|
+
const { title, decimals = 18 } = this.token;
|
|
659
|
+
return `Order opened [${this.network}]: ${(0, import_utils.formatBN)(
|
|
660
|
+
this.amount,
|
|
661
|
+
decimals
|
|
662
|
+
)} ${title}`;
|
|
663
|
+
}
|
|
664
|
+
serialize() {
|
|
665
|
+
return {
|
|
666
|
+
type: "TxFillOrder",
|
|
667
|
+
content: JSON.stringify(this)
|
|
668
|
+
};
|
|
669
|
+
}
|
|
670
|
+
}
|
|
644
671
|
// Annotate the CommonJS export names for ESM import in node:
|
|
645
672
|
0 && (module.exports = {
|
|
646
673
|
TXSwap,
|
|
@@ -653,6 +680,7 @@ class TxEnableTokens extends import_eventOrTx.EVMTx {
|
|
|
653
680
|
TxCloseAccount,
|
|
654
681
|
TxDecreaseBorrowAmount,
|
|
655
682
|
TxEnableTokens,
|
|
683
|
+
TxFillOrder,
|
|
656
684
|
TxGaugeClaim,
|
|
657
685
|
TxGaugeStake,
|
|
658
686
|
TxGaugeUnstake,
|
|
@@ -86,7 +86,7 @@ class GearboxRewardsExtraApy {
|
|
|
86
86
|
pointsInfo2
|
|
87
87
|
);
|
|
88
88
|
if (points !== null) {
|
|
89
|
-
acc2.push({ balance: points, token:
|
|
89
|
+
acc2.push({ balance: points, token: tokenAddress });
|
|
90
90
|
}
|
|
91
91
|
return acc2;
|
|
92
92
|
},
|
|
@@ -98,14 +98,15 @@ class GearboxRewardsExtraApy {
|
|
|
98
98
|
return r;
|
|
99
99
|
}
|
|
100
100
|
static getPoolTokenPoints(tokenBalanceInPool, pool, tokensList, pointsInfo) {
|
|
101
|
-
if (!tokenBalanceInPool
|
|
101
|
+
if (!tokenBalanceInPool && pointsInfo.estimation === "relative")
|
|
102
|
+
return null;
|
|
102
103
|
if (pool.expectedLiquidity <= 0) return 0n;
|
|
103
|
-
const { decimals = 18 } = tokensList[
|
|
104
|
+
const { decimals = 18 } = tokensList[pointsInfo.token] || {};
|
|
104
105
|
const targetFactor = 10n ** BigInt(decimals);
|
|
105
106
|
const { decimals: underlyingDecimals = 18 } = tokensList[pool.underlyingToken] || {};
|
|
106
107
|
const underlyingFactor = 10n ** BigInt(underlyingDecimals);
|
|
107
108
|
const defaultPoints = pointsInfo.amount * targetFactor / import_constants.PERCENTAGE_FACTOR;
|
|
108
|
-
const points = pointsInfo.estimation === "absolute" ? defaultPoints : tokenBalanceInPool
|
|
109
|
+
const points = pointsInfo.estimation === "absolute" ? defaultPoints : (tokenBalanceInPool?.balance || 0n) * defaultPoints / (pool.expectedLiquidity * targetFactor / underlyingFactor);
|
|
109
110
|
return import_math.BigIntMath.min(points, defaultPoints);
|
|
110
111
|
}
|
|
111
112
|
static getPoolPointsTip(poolRewards, pool, token) {
|
|
@@ -14,6 +14,8 @@ import { PriceUtils } from "../utils/price.js";
|
|
|
14
14
|
const MAX_UINT16 = 65535;
|
|
15
15
|
class CreditAccountData_Legacy {
|
|
16
16
|
isSuccessful;
|
|
17
|
+
chainId;
|
|
18
|
+
network;
|
|
17
19
|
creditAccount;
|
|
18
20
|
borrower;
|
|
19
21
|
creditManager;
|
|
@@ -24,7 +26,6 @@ class CreditAccountData_Legacy {
|
|
|
24
26
|
version;
|
|
25
27
|
enabledTokensMask;
|
|
26
28
|
healthFactor;
|
|
27
|
-
isDeleting;
|
|
28
29
|
baseBorrowRateWithoutFee;
|
|
29
30
|
borrowedAmount;
|
|
30
31
|
accruedInterest;
|
|
@@ -42,6 +43,8 @@ class CreditAccountData_Legacy {
|
|
|
42
43
|
quotedTokens = {};
|
|
43
44
|
constructor(payload) {
|
|
44
45
|
this.isSuccessful = payload.isSuccessful;
|
|
46
|
+
this.chainId = payload.chainId;
|
|
47
|
+
this.network = payload.network;
|
|
45
48
|
this.creditAccount = payload.addr.toLowerCase();
|
|
46
49
|
this.borrower = payload.borrower.toLowerCase();
|
|
47
50
|
this.creditManager = payload.creditManager.toLowerCase();
|
|
@@ -54,7 +57,6 @@ class CreditAccountData_Legacy {
|
|
|
54
57
|
(payload.healthFactor || 0n) * PERCENTAGE_FACTOR / WAD
|
|
55
58
|
);
|
|
56
59
|
this.enabledTokensMask = payload.enabledTokensMask;
|
|
57
|
-
this.isDeleting = false;
|
|
58
60
|
this.borrowedAmount = payload.debt;
|
|
59
61
|
this.accruedInterest = payload.accruedInterest || 0n;
|
|
60
62
|
this.accruedFees = payload.accruedFees || 0n;
|
|
@@ -93,60 +95,52 @@ class CreditAccountData_Legacy {
|
|
|
93
95
|
this.tokens[token] = balance;
|
|
94
96
|
});
|
|
95
97
|
}
|
|
96
|
-
setDeleteInProgress(d) {
|
|
97
|
-
this.isDeleting = d;
|
|
98
|
-
}
|
|
99
98
|
static sortBalances(balances, prices, tokens) {
|
|
100
99
|
return Object.entries(balances).sort(
|
|
101
100
|
([addr1, amount1], [addr2, amount2]) => {
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
amount2,
|
|
116
|
-
token2?.decimals
|
|
101
|
+
return this.assetComparator(
|
|
102
|
+
{
|
|
103
|
+
token: addr1,
|
|
104
|
+
balance: amount1
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
token: addr2,
|
|
108
|
+
balance: amount2
|
|
109
|
+
},
|
|
110
|
+
prices,
|
|
111
|
+
prices,
|
|
112
|
+
tokens,
|
|
113
|
+
tokens
|
|
117
114
|
);
|
|
118
|
-
if (totalPrice1 === totalPrice2) {
|
|
119
|
-
return amount1 === amount2 ? this.tokensAbcComparator(token1, token2) : this.amountAbcComparator(amount1, amount2);
|
|
120
|
-
}
|
|
121
|
-
return this.amountAbcComparator(totalPrice1, totalPrice2);
|
|
122
115
|
}
|
|
123
116
|
);
|
|
124
117
|
}
|
|
125
118
|
static sortAssets(balances, prices, tokens) {
|
|
126
119
|
return balances.sort(
|
|
127
|
-
(
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
amount2,
|
|
142
|
-
token2?.decimals
|
|
143
|
-
);
|
|
144
|
-
if (totalPrice1 === totalPrice2) {
|
|
145
|
-
return amount1 === amount2 ? this.tokensAbcComparator(token1, token2) : this.amountAbcComparator(amount1, amount2);
|
|
146
|
-
}
|
|
147
|
-
return this.amountAbcComparator(totalPrice1, totalPrice2);
|
|
148
|
-
}
|
|
120
|
+
(t1, t2) => this.assetComparator(t1, t2, prices, prices, tokens, tokens)
|
|
121
|
+
);
|
|
122
|
+
}
|
|
123
|
+
static assetComparator(t1, t2, prices1, prices2, tokens1, tokens2) {
|
|
124
|
+
const addr1Lc = t1.token.toLowerCase();
|
|
125
|
+
const addr2Lc = t2.token.toLowerCase();
|
|
126
|
+
const token1 = tokens1?.[addr1Lc];
|
|
127
|
+
const token2 = tokens2?.[addr2Lc];
|
|
128
|
+
const price1 = prices1?.[addr1Lc] || PRICE_DECIMALS;
|
|
129
|
+
const price2 = prices2?.[addr2Lc] || PRICE_DECIMALS;
|
|
130
|
+
const totalPrice1 = PriceUtils.calcTotalPrice(
|
|
131
|
+
price1,
|
|
132
|
+
t1.balance,
|
|
133
|
+
token1?.decimals
|
|
149
134
|
);
|
|
135
|
+
const totalPrice2 = PriceUtils.calcTotalPrice(
|
|
136
|
+
price2,
|
|
137
|
+
t2.balance,
|
|
138
|
+
token2?.decimals
|
|
139
|
+
);
|
|
140
|
+
if (totalPrice1 === totalPrice2) {
|
|
141
|
+
return t1.balance === t2.balance ? this.tokensAbcComparator(token1, token2) : this.amountAbcComparator(t1.balance, t2.balance);
|
|
142
|
+
}
|
|
143
|
+
return this.amountAbcComparator(totalPrice1, totalPrice2);
|
|
150
144
|
}
|
|
151
145
|
static tokensAbcComparator(t1, t2) {
|
|
152
146
|
const { symbol: symbol1 = "" } = t1 || {};
|
|
@@ -6,6 +6,8 @@ import {
|
|
|
6
6
|
import { toBigInt } from "../../utils/index.js";
|
|
7
7
|
class CreditManagerData_Legacy {
|
|
8
8
|
address;
|
|
9
|
+
chainId;
|
|
10
|
+
network;
|
|
9
11
|
underlyingToken;
|
|
10
12
|
pool;
|
|
11
13
|
creditFacade;
|
|
@@ -47,6 +49,8 @@ class CreditManagerData_Legacy {
|
|
|
47
49
|
quotas;
|
|
48
50
|
constructor(payload) {
|
|
49
51
|
this.address = payload.addr.toLowerCase();
|
|
52
|
+
this.chainId = payload.chainId;
|
|
53
|
+
this.network = payload.network;
|
|
50
54
|
this.underlyingToken = payload.underlying.toLowerCase();
|
|
51
55
|
this.name = payload.name;
|
|
52
56
|
this.pool = payload.pool.toLowerCase();
|
|
@@ -8,7 +8,8 @@ import { toBigInt } from "../../utils/index.js";
|
|
|
8
8
|
import { rayToNumber } from "../utils/formatter.js";
|
|
9
9
|
class PoolData_Legacy {
|
|
10
10
|
address;
|
|
11
|
-
|
|
11
|
+
chainId;
|
|
12
|
+
network;
|
|
12
13
|
underlyingToken;
|
|
13
14
|
dieselToken;
|
|
14
15
|
stakedDieselToken;
|
|
@@ -40,7 +41,8 @@ class PoolData_Legacy {
|
|
|
40
41
|
lastBaseInterestUpdate;
|
|
41
42
|
constructor(payload, extra) {
|
|
42
43
|
this.address = payload.addr.toLowerCase();
|
|
43
|
-
this.
|
|
44
|
+
this.chainId = payload.chainId;
|
|
45
|
+
this.network = payload.network;
|
|
44
46
|
this.underlyingToken = payload.underlying.toLowerCase();
|
|
45
47
|
this.dieselToken = payload.dieselToken.toLowerCase();
|
|
46
48
|
this.stakedDieselToken = (extra.stakedDieselToken || []).map(
|
|
@@ -129,13 +131,6 @@ class PoolData_Legacy {
|
|
|
129
131
|
});
|
|
130
132
|
return model.read.calcBorrowRate([expectedLiquidity, availableLiquidity]);
|
|
131
133
|
}
|
|
132
|
-
static getPoolType(name) {
|
|
133
|
-
const [identity = ""] = name.split(" ") || [];
|
|
134
|
-
const lc = identity.toLowerCase();
|
|
135
|
-
if (lc === "farm") return "farm";
|
|
136
|
-
if (lc === "trade") return "trade";
|
|
137
|
-
return "universal";
|
|
138
|
-
}
|
|
139
134
|
static calculateUtilization(expected, available) {
|
|
140
135
|
if (expected === 0n) return 0;
|
|
141
136
|
const borrowed = expected - available;
|
|
@@ -147,7 +142,6 @@ class ChartsPoolData {
|
|
|
147
142
|
address;
|
|
148
143
|
underlyingToken;
|
|
149
144
|
dieselToken;
|
|
150
|
-
type;
|
|
151
145
|
version;
|
|
152
146
|
name;
|
|
153
147
|
addLiqCount;
|
|
@@ -200,7 +194,6 @@ class ChartsPoolData {
|
|
|
200
194
|
this.address = (payload.addr || "").toLowerCase();
|
|
201
195
|
this.underlyingToken = (payload.underlyingToken || "").toLowerCase();
|
|
202
196
|
this.dieselToken = (payload.dieselToken || "").toLowerCase();
|
|
203
|
-
this.type = PoolData_Legacy.getPoolType(payload.name || "");
|
|
204
197
|
this.version = payload.version || 1;
|
|
205
198
|
this.name = payload.name || "";
|
|
206
199
|
this.earned7D = payload.earned7D || 0;
|
|
@@ -58,6 +58,8 @@ class TxSerializer {
|
|
|
58
58
|
return new TxUnstakeDiesel(params);
|
|
59
59
|
case "TxEnableTokens":
|
|
60
60
|
return new TxEnableTokens(params);
|
|
61
|
+
case "TxFillOrder":
|
|
62
|
+
return new TxFillOrder(params);
|
|
61
63
|
default:
|
|
62
64
|
throw new Error(`Unknown transaction for parsing: ${e.type}`);
|
|
63
65
|
}
|
|
@@ -594,6 +596,30 @@ class TxEnableTokens extends EVMTx {
|
|
|
594
596
|
};
|
|
595
597
|
}
|
|
596
598
|
}
|
|
599
|
+
class TxFillOrder extends EVMTx {
|
|
600
|
+
amount;
|
|
601
|
+
token;
|
|
602
|
+
network;
|
|
603
|
+
constructor(opts) {
|
|
604
|
+
super(opts);
|
|
605
|
+
this.amount = opts.amount;
|
|
606
|
+
this.token = opts.tokensList[opts.token];
|
|
607
|
+
this.network = opts.network;
|
|
608
|
+
}
|
|
609
|
+
toString() {
|
|
610
|
+
const { title, decimals = 18 } = this.token;
|
|
611
|
+
return `Order opened [${this.network}]: ${formatBN(
|
|
612
|
+
this.amount,
|
|
613
|
+
decimals
|
|
614
|
+
)} ${title}`;
|
|
615
|
+
}
|
|
616
|
+
serialize() {
|
|
617
|
+
return {
|
|
618
|
+
type: "TxFillOrder",
|
|
619
|
+
content: JSON.stringify(this)
|
|
620
|
+
};
|
|
621
|
+
}
|
|
622
|
+
}
|
|
597
623
|
export {
|
|
598
624
|
TXSwap,
|
|
599
625
|
TxAddBot,
|
|
@@ -605,6 +631,7 @@ export {
|
|
|
605
631
|
TxCloseAccount,
|
|
606
632
|
TxDecreaseBorrowAmount,
|
|
607
633
|
TxEnableTokens,
|
|
634
|
+
TxFillOrder,
|
|
608
635
|
TxGaugeClaim,
|
|
609
636
|
TxGaugeStake,
|
|
610
637
|
TxGaugeUnstake,
|
|
@@ -53,7 +53,7 @@ class GearboxRewardsExtraApy {
|
|
|
53
53
|
pointsInfo2
|
|
54
54
|
);
|
|
55
55
|
if (points !== null) {
|
|
56
|
-
acc2.push({ balance: points, token:
|
|
56
|
+
acc2.push({ balance: points, token: tokenAddress });
|
|
57
57
|
}
|
|
58
58
|
return acc2;
|
|
59
59
|
},
|
|
@@ -65,14 +65,15 @@ class GearboxRewardsExtraApy {
|
|
|
65
65
|
return r;
|
|
66
66
|
}
|
|
67
67
|
static getPoolTokenPoints(tokenBalanceInPool, pool, tokensList, pointsInfo) {
|
|
68
|
-
if (!tokenBalanceInPool
|
|
68
|
+
if (!tokenBalanceInPool && pointsInfo.estimation === "relative")
|
|
69
|
+
return null;
|
|
69
70
|
if (pool.expectedLiquidity <= 0) return 0n;
|
|
70
|
-
const { decimals = 18 } = tokensList[
|
|
71
|
+
const { decimals = 18 } = tokensList[pointsInfo.token] || {};
|
|
71
72
|
const targetFactor = 10n ** BigInt(decimals);
|
|
72
73
|
const { decimals: underlyingDecimals = 18 } = tokensList[pool.underlyingToken] || {};
|
|
73
74
|
const underlyingFactor = 10n ** BigInt(underlyingDecimals);
|
|
74
75
|
const defaultPoints = pointsInfo.amount * targetFactor / PERCENTAGE_FACTOR;
|
|
75
|
-
const points = pointsInfo.estimation === "absolute" ? defaultPoints : tokenBalanceInPool
|
|
76
|
+
const points = pointsInfo.estimation === "absolute" ? defaultPoints : (tokenBalanceInPool?.balance || 0n) * defaultPoints / (pool.expectedLiquidity * targetFactor / underlyingFactor);
|
|
76
77
|
return BigIntMath.min(points, defaultPoints);
|
|
77
78
|
}
|
|
78
79
|
static getPoolPointsTip(poolRewards, pool, token) {
|
|
@@ -17,7 +17,7 @@ interface NextAssetProps<T extends Asset> {
|
|
|
17
17
|
export type WrapResult = [Array<Asset>, bigint, bigint];
|
|
18
18
|
export declare class AssetUtils {
|
|
19
19
|
static nextAsset<T extends Asset>({ allowedTokens, selectedAssets, balances, tokensList, prices, }: NextAssetProps<T>): Address | undefined;
|
|
20
|
-
static getBalances
|
|
20
|
+
private static getBalances;
|
|
21
21
|
static constructAssetRecord<A extends Asset>(a: Array<A>): Record<`0x${string}`, A>;
|
|
22
22
|
static memoWrap: (unwrappedAddress: Address, wrappedAddress: Address, prices: Record<Address, bigint>, tokensList: Record<Address, TokenData>) => (assets: Array<Asset>) => WrapResult;
|
|
23
23
|
/**
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Address } from "viem";
|
|
2
|
+
import type { NetworkType } from "../../chain/chains.js";
|
|
2
3
|
import type { Asset } from "../../router/index.js";
|
|
3
4
|
import type { TokensAPYList } from "../apy/index.js";
|
|
4
5
|
import type { CaTokenBalance, CreditAccountDataPayload } from "../payload/creditAccount.js";
|
|
@@ -103,6 +104,8 @@ export interface BotDataLegacy {
|
|
|
103
104
|
}
|
|
104
105
|
export declare class CreditAccountData_Legacy {
|
|
105
106
|
readonly isSuccessful: boolean;
|
|
107
|
+
readonly chainId: number;
|
|
108
|
+
readonly network: NetworkType;
|
|
106
109
|
readonly creditAccount: Address;
|
|
107
110
|
readonly borrower: Address;
|
|
108
111
|
readonly creditManager: Address;
|
|
@@ -113,7 +116,6 @@ export declare class CreditAccountData_Legacy {
|
|
|
113
116
|
readonly version: number;
|
|
114
117
|
readonly enabledTokensMask: bigint;
|
|
115
118
|
readonly healthFactor: number;
|
|
116
|
-
isDeleting: boolean;
|
|
117
119
|
readonly baseBorrowRateWithoutFee: number;
|
|
118
120
|
readonly borrowedAmount: bigint;
|
|
119
121
|
readonly accruedInterest: bigint;
|
|
@@ -130,9 +132,9 @@ export declare class CreditAccountData_Legacy {
|
|
|
130
132
|
readonly forbiddenTokens: Record<Address, true>;
|
|
131
133
|
readonly quotedTokens: Record<Address, true>;
|
|
132
134
|
constructor(payload: CreditAccountDataPayload);
|
|
133
|
-
setDeleteInProgress(d: boolean): void;
|
|
134
135
|
static sortBalances(balances: Record<Address, bigint>, prices: Record<Address, bigint>, tokens: Record<Address, TokenData>): Array<[Address, bigint]>;
|
|
135
|
-
static sortAssets(balances: Array<
|
|
136
|
+
static sortAssets<T extends Asset>(balances: Array<T>, prices: Record<Address, bigint>, tokens: Record<Address, TokenData>): T[];
|
|
137
|
+
static assetComparator<T extends Asset>(t1: T, t2: T, prices1: Record<Address, bigint> | undefined, prices2: Record<Address, bigint> | undefined, tokens1: Record<Address, TokenData> | undefined, tokens2: Record<Address, TokenData> | undefined): 1 | -1 | 0;
|
|
136
138
|
static tokensAbcComparator(t1?: TokenData, t2?: TokenData): 1 | -1 | 0;
|
|
137
139
|
static amountAbcComparator(t1: bigint, t2: bigint): 1 | -1;
|
|
138
140
|
isForbidden(token: Address): boolean;
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import type { Address } from "viem";
|
|
2
|
+
import type { NetworkType } from "../../chain/chains.js";
|
|
2
3
|
import type { ChartsCreditManagerPayload, CreditManagerDataPayload, QuotaInfo } from "../payload/creditManager.js";
|
|
3
4
|
export declare class CreditManagerData_Legacy {
|
|
4
5
|
readonly address: Address;
|
|
6
|
+
readonly chainId: number;
|
|
7
|
+
readonly network: NetworkType;
|
|
5
8
|
readonly underlyingToken: Address;
|
|
6
9
|
readonly pool: Address;
|
|
7
10
|
readonly creditFacade: Address;
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { Address, PublicClient } from "viem";
|
|
2
|
+
import type { NetworkType } from "../../chain/chains.js";
|
|
2
3
|
import type { ChartsPoolDataPayload, LinearModel, PoolDataExtraPayload, PoolDataPayload, UserPoolPayload } from "../payload/pool.js";
|
|
3
|
-
export type PoolType = "universal" | "trade" | "farm";
|
|
4
4
|
export declare class PoolData_Legacy {
|
|
5
5
|
readonly address: Address;
|
|
6
|
-
readonly
|
|
6
|
+
readonly chainId: number;
|
|
7
|
+
readonly network: NetworkType;
|
|
7
8
|
readonly underlyingToken: Address;
|
|
8
9
|
readonly dieselToken: Address;
|
|
9
10
|
readonly stakedDieselToken: Array<Address>;
|
|
@@ -45,7 +46,6 @@ export declare class PoolData_Legacy {
|
|
|
45
46
|
readonly lastBaseInterestUpdate: bigint;
|
|
46
47
|
constructor(payload: PoolDataPayload, extra: PoolDataExtraPayload);
|
|
47
48
|
calculateBorrowRate({ provider, expectedLiquidity, availableLiquidity, }: CalculateBorrowRateProps): Promise<bigint>;
|
|
48
|
-
static getPoolType(name: string): PoolType;
|
|
49
49
|
static calculateUtilization(expected: bigint, available: bigint): number;
|
|
50
50
|
}
|
|
51
51
|
interface CalculateBorrowRateProps {
|
|
@@ -57,7 +57,6 @@ export declare class ChartsPoolData {
|
|
|
57
57
|
readonly address: Address;
|
|
58
58
|
readonly underlyingToken: Address;
|
|
59
59
|
readonly dieselToken: Address;
|
|
60
|
-
readonly type: PoolType;
|
|
61
60
|
readonly version: number;
|
|
62
61
|
readonly name: string;
|
|
63
62
|
readonly addLiqCount: number;
|
|
@@ -4,7 +4,7 @@ import type { TokenData } from "../tokens/tokenData.js";
|
|
|
4
4
|
import type { EVMTxProps } from "./eventOrTx.js";
|
|
5
5
|
import { EVMTx } from "./eventOrTx.js";
|
|
6
6
|
export interface TxSerialized {
|
|
7
|
-
type: "TxAddLiquidity" | "TxRemoveLiquidity" | "TxSwap" | "TxAddCollateral" | "TxIncreaseBorrowAmount" | "TxDecreaseBorrowAmount" | "TxRepayAccount" | "TxCloseAccount" | "TxApprove" | "TxOpenMultitokenAccount" | "TxClaimNFT" | "TxClaimRewards" | "TxUpdateQuota" | "TxGaugeStake" | "TxGaugeUnstake" | "TxGaugeClaim" | "TxGaugeVote" | "TxWithdrawCollateral" | "TxAddBot" | "TxRemoveBot" | "TxLiquidateAccount" | "TxStakeDiesel" | "TxUnstakeDiesel" | "TxEnableTokens";
|
|
7
|
+
type: "TxAddLiquidity" | "TxRemoveLiquidity" | "TxSwap" | "TxAddCollateral" | "TxIncreaseBorrowAmount" | "TxDecreaseBorrowAmount" | "TxRepayAccount" | "TxCloseAccount" | "TxApprove" | "TxOpenMultitokenAccount" | "TxClaimNFT" | "TxClaimRewards" | "TxUpdateQuota" | "TxGaugeStake" | "TxGaugeUnstake" | "TxGaugeClaim" | "TxGaugeVote" | "TxWithdrawCollateral" | "TxAddBot" | "TxRemoveBot" | "TxLiquidateAccount" | "TxStakeDiesel" | "TxUnstakeDiesel" | "TxEnableTokens" | "TxFillOrder";
|
|
8
8
|
content: string;
|
|
9
9
|
}
|
|
10
10
|
export declare class TxSerializer {
|
|
@@ -292,4 +292,18 @@ export declare class TxEnableTokens extends EVMTx {
|
|
|
292
292
|
toString(): string;
|
|
293
293
|
serialize(): TxSerialized;
|
|
294
294
|
}
|
|
295
|
+
interface TxFillOrderProps extends EVMTxProps {
|
|
296
|
+
amount: bigint;
|
|
297
|
+
token: Address;
|
|
298
|
+
network: string;
|
|
299
|
+
tokensList: Record<Address, TokenData>;
|
|
300
|
+
}
|
|
301
|
+
export declare class TxFillOrder extends EVMTx {
|
|
302
|
+
readonly amount: bigint;
|
|
303
|
+
readonly token: TokenData;
|
|
304
|
+
readonly network: string;
|
|
305
|
+
constructor(opts: TxFillOrderProps);
|
|
306
|
+
toString(): string;
|
|
307
|
+
serialize(): TxSerialized;
|
|
308
|
+
}
|
|
295
309
|
export {};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Address } from "viem";
|
|
2
|
+
import type { NetworkType } from "../../chain/index.js";
|
|
2
3
|
export interface CaTokenBalance {
|
|
3
4
|
success: boolean;
|
|
4
5
|
token: Address;
|
|
@@ -41,4 +42,6 @@ export interface CreditAccountDataPayload {
|
|
|
41
42
|
}[];
|
|
42
43
|
cfVersion: bigint;
|
|
43
44
|
expirationDate: number;
|
|
45
|
+
chainId: number;
|
|
46
|
+
network: NetworkType;
|
|
44
47
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Address } from "viem";
|
|
2
|
+
import type { NetworkType } from "../../chain/chains.js";
|
|
2
3
|
import type { BigNumberish } from "../utils/formatter.js";
|
|
3
4
|
import type { PoolDataPayload } from "./pool.js";
|
|
4
5
|
export interface CreditManagerDebtParamsSDK {
|
|
@@ -54,6 +55,8 @@ export interface CreditManagerDataPayload {
|
|
|
54
55
|
liquidationDiscountExpired: number;
|
|
55
56
|
quotas: PoolDataPayload["quotas"];
|
|
56
57
|
isBorrowingForbidden: boolean;
|
|
58
|
+
chainId: number;
|
|
59
|
+
network: NetworkType;
|
|
57
60
|
}
|
|
58
61
|
export interface ChartsCreditManagerPayload {
|
|
59
62
|
addr: Address;
|
|
@@ -2,6 +2,7 @@ import type { AbiParametersToPrimitiveTypes, ExtractAbiFunction } from "abitype"
|
|
|
2
2
|
import type { Address } from "viem";
|
|
3
3
|
import type { iPeripheryCompressorAbi } from "../../../abi/compressors.js";
|
|
4
4
|
import type { Unarray } from "../../base/types.js";
|
|
5
|
+
import type { NetworkType } from "../../chain/chains.js";
|
|
5
6
|
export type ZapperData = Unarray<AbiParametersToPrimitiveTypes<ExtractAbiFunction<typeof iPeripheryCompressorAbi, "getZappers">["outputs"]>>;
|
|
6
7
|
export interface ZapperDataFull extends ZapperData {
|
|
7
8
|
pool: Address;
|
|
@@ -49,6 +50,8 @@ export interface PoolDataPayload {
|
|
|
49
50
|
isActive: boolean;
|
|
50
51
|
}[];
|
|
51
52
|
zappers: readonly ZapperDataFull[];
|
|
53
|
+
chainId: number;
|
|
54
|
+
network: NetworkType;
|
|
52
55
|
}
|
|
53
56
|
export interface PoolDataExtraPayload {
|
|
54
57
|
stakedDieselToken: Array<Address>;
|
|
@@ -2,6 +2,6 @@ import type { Account, Chain, Client, SendTransactionReturnType, Transport } fro
|
|
|
2
2
|
import type { RawTx } from "../../types/index.js";
|
|
3
3
|
export interface SendRawTxParameters {
|
|
4
4
|
account?: Account;
|
|
5
|
-
tx:
|
|
5
|
+
tx: RawTx;
|
|
6
6
|
}
|
|
7
7
|
export declare function sendRawTx<chain extends Chain | undefined = Chain | undefined>(client: Client<Transport, chain, Account | undefined>, params: SendRawTxParameters): Promise<SendTransactionReturnType>;
|