@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.
@@ -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
- const addr1Lc = addr1.toLowerCase();
117
- const addr2Lc = addr2.toLowerCase();
118
- const token1 = tokens[addr1Lc];
119
- const token2 = tokens[addr2Lc];
120
- const price1 = prices[addr1Lc] || import_constants.PRICE_DECIMALS;
121
- const price2 = prices[addr2Lc] || import_constants.PRICE_DECIMALS;
122
- const totalPrice1 = import_price.PriceUtils.calcTotalPrice(
123
- price1,
124
- amount1,
125
- token1?.decimals
126
- );
127
- const totalPrice2 = import_price.PriceUtils.calcTotalPrice(
128
- price2,
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
- ({ token: addr1, balance: amount1 }, { token: addr2, balance: amount2 }) => {
142
- const addr1Lc = addr1.toLowerCase();
143
- const addr2Lc = addr2.toLowerCase();
144
- const token1 = tokens[addr1Lc];
145
- const token2 = tokens[addr2Lc];
146
- const price1 = prices[addr1Lc] || import_constants.PRICE_DECIMALS;
147
- const price2 = prices[addr2Lc] || import_constants.PRICE_DECIMALS;
148
- const totalPrice1 = import_price.PriceUtils.calcTotalPrice(
149
- price1,
150
- amount1,
151
- token1?.decimals
152
- );
153
- const totalPrice2 = import_price.PriceUtils.calcTotalPrice(
154
- price2,
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
- type;
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.type = PoolData_Legacy.getPoolType(payload.name || "");
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: tokenBalance.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) return null;
101
+ if (!tokenBalanceInPool && pointsInfo.estimation === "relative")
102
+ return null;
102
103
  if (pool.expectedLiquidity <= 0) return 0n;
103
- const { decimals = 18 } = tokensList[tokenBalanceInPool.token] || {};
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.balance * defaultPoints / (pool.expectedLiquidity * targetFactor / underlyingFactor);
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
- const addr1Lc = addr1.toLowerCase();
103
- const addr2Lc = addr2.toLowerCase();
104
- const token1 = tokens[addr1Lc];
105
- const token2 = tokens[addr2Lc];
106
- const price1 = prices[addr1Lc] || PRICE_DECIMALS;
107
- const price2 = prices[addr2Lc] || PRICE_DECIMALS;
108
- const totalPrice1 = PriceUtils.calcTotalPrice(
109
- price1,
110
- amount1,
111
- token1?.decimals
112
- );
113
- const totalPrice2 = PriceUtils.calcTotalPrice(
114
- price2,
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
- ({ token: addr1, balance: amount1 }, { token: addr2, balance: amount2 }) => {
128
- const addr1Lc = addr1.toLowerCase();
129
- const addr2Lc = addr2.toLowerCase();
130
- const token1 = tokens[addr1Lc];
131
- const token2 = tokens[addr2Lc];
132
- const price1 = prices[addr1Lc] || PRICE_DECIMALS;
133
- const price2 = prices[addr2Lc] || PRICE_DECIMALS;
134
- const totalPrice1 = PriceUtils.calcTotalPrice(
135
- price1,
136
- amount1,
137
- token1?.decimals
138
- );
139
- const totalPrice2 = PriceUtils.calcTotalPrice(
140
- price2,
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
- type;
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.type = PoolData_Legacy.getPoolType(payload.name || "");
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: tokenBalance.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) return null;
68
+ if (!tokenBalanceInPool && pointsInfo.estimation === "relative")
69
+ return null;
69
70
  if (pool.expectedLiquidity <= 0) return 0n;
70
- const { decimals = 18 } = tokensList[tokenBalanceInPool.token] || {};
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.balance * defaultPoints / (pool.expectedLiquidity * targetFactor / underlyingFactor);
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(allowedTokens: Array<Address>, externalBalances: Record<Address, bigint>): Record<Address, bigint>;
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<Asset>, prices: Record<Address, bigint>, tokens: Record<Address, TokenData>): Asset[];
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 type: PoolType;
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: Pick<RawTx, "to" | "callData" | "value">;
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>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gearbox-protocol/sdk",
3
- "version": "7.6.3",
3
+ "version": "7.7.0-next.2",
4
4
  "description": "Gearbox SDK",
5
5
  "license": "MIT",
6
6
  "main": "./dist/cjs/sdk/index.js",