@suilend/sdk 1.1.99 → 2.0.1
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/_generated/_dependencies/source/0x1/ascii/structs.d.ts +7 -7
- package/_generated/_dependencies/source/0x1/ascii/structs.js +35 -75
- package/_generated/_dependencies/source/0x1/index.js +3 -6
- package/_generated/_dependencies/source/0x1/option/structs.d.ts +3 -3
- package/_generated/_dependencies/source/0x1/option/structs.js +31 -69
- package/_generated/_dependencies/source/0x1/type-name/structs.d.ts +5 -5
- package/_generated/_dependencies/source/0x1/type-name/structs.js +20 -25
- package/_generated/_dependencies/source/0x2/bag/structs.d.ts +7 -7
- package/_generated/_dependencies/source/0x2/bag/structs.js +24 -29
- package/_generated/_dependencies/source/0x2/balance/structs.d.ts +7 -7
- package/_generated/_dependencies/source/0x2/balance/structs.js +49 -56
- package/_generated/_dependencies/source/0x2/index.js +3 -6
- package/_generated/_dependencies/source/0x2/object/structs.d.ts +8 -8
- package/_generated/_dependencies/source/0x2/object/structs.js +34 -41
- package/_generated/_dependencies/source/0x2/object-table/structs.d.ts +7 -7
- package/_generated/_dependencies/source/0x2/object-table/structs.js +31 -36
- package/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/i64/structs.d.ts +5 -5
- package/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/i64/structs.js +23 -28
- package/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/index.js +4 -7
- package/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price/structs.d.ts +11 -11
- package/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price/structs.js +32 -37
- package/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price-feed/structs.d.ts +23 -23
- package/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price-feed/structs.js +29 -34
- package/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price-identifier/structs.d.ts +4 -4
- package/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price-identifier/structs.js +21 -59
- package/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price-info/structs.d.ts +55 -55
- package/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price-info/structs.js +46 -53
- package/_generated/_framework/reified.d.ts +2 -2
- package/_generated/_framework/reified.js +27 -40
- package/_generated/_framework/util.js +26 -40
- package/_generated/_framework/vector.d.ts +4 -4
- package/_generated/_framework/vector.js +16 -21
- package/_generated/suilend/cell/structs.d.ts +4 -4
- package/_generated/suilend/cell/structs.js +31 -36
- package/_generated/suilend/decimal/structs.d.ts +4 -4
- package/_generated/suilend/decimal/structs.js +19 -24
- package/_generated/suilend/index.js +8 -12
- package/_generated/suilend/lending-market/functions.d.ts +1 -0
- package/_generated/suilend/lending-market/functions.js +271 -302
- package/_generated/suilend/lending-market/structs.d.ts +146 -146
- package/_generated/suilend/lending-market/structs.js +549 -617
- package/_generated/suilend/lending-market-registry/functions.js +7 -11
- package/_generated/suilend/liquidity-mining/structs.d.ts +50 -50
- package/_generated/suilend/liquidity-mining/structs.js +159 -205
- package/_generated/suilend/obligation/structs.d.ts +106 -106
- package/_generated/suilend/obligation/structs.js +313 -363
- package/_generated/suilend/rate-limiter/functions.js +23 -31
- package/_generated/suilend/rate-limiter/structs.d.ts +15 -15
- package/_generated/suilend/rate-limiter/structs.js +49 -56
- package/_generated/suilend/reserve/structs.d.ts +139 -139
- package/_generated/suilend/reserve/structs.js +397 -451
- package/_generated/suilend/reserve-config/functions.js +149 -190
- package/_generated/suilend/reserve-config/structs.d.ts +33 -33
- package/_generated/suilend/reserve-config/structs.js +109 -149
- package/api/events.js +1 -5
- package/api/index.js +1 -17
- package/client.d.ts +10 -10
- package/client.js +118 -128
- package/index.js +7 -23
- package/lib/constants.js +3 -9
- package/lib/index.js +5 -21
- package/lib/initialize.d.ts +3 -3
- package/lib/initialize.js +103 -140
- package/lib/liquidityMining.d.ts +3 -3
- package/lib/liquidityMining.js +57 -72
- package/lib/pyth.js +9 -14
- package/lib/strategyOwnerCap.js +106 -119
- package/lib/transactions.js +2 -7
- package/lib/types.js +4 -7
- package/mmt.js +2 -5
- package/package.json +1 -1
- package/parsers/apiReserveAssetDataEvent.js +25 -33
- package/parsers/index.js +5 -21
- package/parsers/lendingMarket.d.ts +1 -1
- package/parsers/lendingMarket.js +12 -19
- package/parsers/obligation.js +19 -26
- package/parsers/rateLimiter.js +11 -19
- package/parsers/reserve.d.ts +1 -1
- package/parsers/reserve.js +42 -85
- package/strategies.d.ts +11 -11
- package/strategies.js +547 -586
- package/swap/index.js +2 -18
- package/swap/quote.js +57 -65
- package/swap/transaction.d.ts +2 -2
- package/swap/transaction.js +40 -35
- package/utils/events.d.ts +3 -3
- package/utils/events.js +18 -35
- package/utils/index.js +16 -40
- package/utils/obligation.d.ts +4 -4
- package/utils/obligation.js +17 -60
- package/utils/simulate.js +118 -143
package/lib/liquidityMining.js
CHANGED
|
@@ -1,21 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const types_1 = require("./types");
|
|
12
|
-
const getDepositShare = (reserve, share) => share.div(10 ** reserve.mintDecimals).times(reserve.cTokenExchangeRate);
|
|
13
|
-
exports.getDepositShare = getDepositShare;
|
|
14
|
-
const getDepositShareUsd = (reserve, share) => (0, exports.getDepositShare)(reserve, share).times(reserve.price);
|
|
15
|
-
const getBorrowShare = (reserve, share) => share.div(10 ** reserve.mintDecimals).times(reserve.cumulativeBorrowRate);
|
|
16
|
-
exports.getBorrowShare = getBorrowShare;
|
|
17
|
-
const getBorrowShareUsd = (reserve, share) => (0, exports.getBorrowShare)(reserve, share).times(reserve.price);
|
|
18
|
-
const formatRewards = (parsedReserveMap, coinMetadataMap, priceMap, obligations) => {
|
|
1
|
+
import BigNumber from "bignumber.js";
|
|
2
|
+
import { cloneDeep } from "lodash";
|
|
3
|
+
import { MS_PER_YEAR, NORMALIZED_eTHIRD_COINTYPE, NORMALIZED_sdeUSD_COINTYPE, isSendPoints, } from "@suilend/sui-fe";
|
|
4
|
+
import { WAD } from "./constants";
|
|
5
|
+
import { Side } from "./types";
|
|
6
|
+
export const getDepositShare = (reserve, share) => share.div(10 ** reserve.mintDecimals).times(reserve.cTokenExchangeRate);
|
|
7
|
+
const getDepositShareUsd = (reserve, share) => getDepositShare(reserve, share).times(reserve.price);
|
|
8
|
+
export const getBorrowShare = (reserve, share) => share.div(10 ** reserve.mintDecimals).times(reserve.cumulativeBorrowRate);
|
|
9
|
+
const getBorrowShareUsd = (reserve, share) => getBorrowShare(reserve, share).times(reserve.price);
|
|
10
|
+
export const formatRewards = (parsedReserveMap, coinMetadataMap, priceMap, obligations) => {
|
|
19
11
|
const nowMs = Date.now();
|
|
20
12
|
const rewardMap = {};
|
|
21
13
|
const getRewardSummary = (reserve, poolReward, side) => {
|
|
@@ -23,24 +15,24 @@ const formatRewards = (parsedReserveMap, coinMetadataMap, priceMap, obligations)
|
|
|
23
15
|
const rewardPrice = priceMap === null || priceMap === void 0 ? void 0 : priceMap[poolReward.coinType];
|
|
24
16
|
const isActive = nowMs >= poolReward.startTimeMs && nowMs < poolReward.endTimeMs;
|
|
25
17
|
const aprPercent = rewardPrice
|
|
26
|
-
? new
|
|
27
|
-
? new
|
|
18
|
+
? new BigNumber(reserve.depositsPoolRewardManager.totalShares.toString()).eq(0)
|
|
19
|
+
? new BigNumber(0)
|
|
28
20
|
: poolReward.totalRewards
|
|
29
21
|
.times(rewardPrice)
|
|
30
|
-
.times(new
|
|
31
|
-
.div(side ===
|
|
32
|
-
? getDepositShareUsd(reserve, new
|
|
33
|
-
: getBorrowShareUsd(reserve, new
|
|
22
|
+
.times(new BigNumber(MS_PER_YEAR).div(poolReward.endTimeMs - poolReward.startTimeMs))
|
|
23
|
+
.div(side === Side.DEPOSIT
|
|
24
|
+
? getDepositShareUsd(reserve, new BigNumber(reserve.depositsPoolRewardManager.totalShares.toString()))
|
|
25
|
+
: getBorrowShareUsd(reserve, new BigNumber(reserve.borrowsPoolRewardManager.totalShares.toString())))
|
|
34
26
|
.times(100)
|
|
35
27
|
: undefined;
|
|
36
28
|
const perDay = rewardPrice
|
|
37
29
|
? undefined
|
|
38
30
|
: poolReward.totalRewards
|
|
39
|
-
.times(new
|
|
31
|
+
.times(new BigNumber(MS_PER_YEAR).div(poolReward.endTimeMs - poolReward.startTimeMs))
|
|
40
32
|
.div(365)
|
|
41
|
-
.div(side ===
|
|
42
|
-
?
|
|
43
|
-
:
|
|
33
|
+
.div(side === Side.DEPOSIT
|
|
34
|
+
? getDepositShare(reserve, new BigNumber(reserve.depositsPoolRewardManager.totalShares.toString()))
|
|
35
|
+
: getBorrowShare(reserve, new BigNumber(reserve.borrowsPoolRewardManager.totalShares.toString())));
|
|
44
36
|
return {
|
|
45
37
|
stats: {
|
|
46
38
|
id: poolReward.id,
|
|
@@ -58,7 +50,7 @@ const formatRewards = (parsedReserveMap, coinMetadataMap, priceMap, obligations)
|
|
|
58
50
|
},
|
|
59
51
|
obligationClaims: Object.fromEntries((obligations !== null && obligations !== void 0 ? obligations : [])
|
|
60
52
|
.map((obligation) => {
|
|
61
|
-
const claim = getObligationClaim(obligation, poolReward, side ===
|
|
53
|
+
const claim = getObligationClaim(obligation, poolReward, side === Side.DEPOSIT
|
|
62
54
|
? reserve.depositsPoolRewardManager.id
|
|
63
55
|
: reserve.borrowsPoolRewardManager.id, reserve.arrayIndex);
|
|
64
56
|
if (!claim)
|
|
@@ -69,7 +61,7 @@ const formatRewards = (parsedReserveMap, coinMetadataMap, priceMap, obligations)
|
|
|
69
61
|
};
|
|
70
62
|
};
|
|
71
63
|
Object.values(parsedReserveMap).forEach((reserve) => {
|
|
72
|
-
const depositRewards = reserve.depositsPoolRewardManager.poolRewards.map((poolReward) => getRewardSummary(reserve, poolReward,
|
|
64
|
+
const depositRewards = reserve.depositsPoolRewardManager.poolRewards.map((poolReward) => getRewardSummary(reserve, poolReward, Side.DEPOSIT));
|
|
73
65
|
// if (reserve.coinType === NORMALIZED_LBTC_COINTYPE) {
|
|
74
66
|
// depositRewards.push({
|
|
75
67
|
// stats: {
|
|
@@ -88,15 +80,14 @@ const formatRewards = (parsedReserveMap, coinMetadataMap, priceMap, obligations)
|
|
|
88
80
|
// obligationClaims: {}, // Can not be claimed, will be distributed directly to the user ~once per day
|
|
89
81
|
// });
|
|
90
82
|
// }
|
|
91
|
-
const borrowRewards = reserve.borrowsPoolRewardManager.poolRewards.map((poolReward) => getRewardSummary(reserve, poolReward,
|
|
83
|
+
const borrowRewards = reserve.borrowsPoolRewardManager.poolRewards.map((poolReward) => getRewardSummary(reserve, poolReward, Side.BORROW));
|
|
92
84
|
rewardMap[reserve.coinType] = {
|
|
93
|
-
[
|
|
94
|
-
[
|
|
85
|
+
[Side.DEPOSIT]: depositRewards,
|
|
86
|
+
[Side.BORROW]: borrowRewards,
|
|
95
87
|
};
|
|
96
88
|
});
|
|
97
89
|
return rewardMap;
|
|
98
90
|
};
|
|
99
|
-
exports.formatRewards = formatRewards;
|
|
100
91
|
const getObligationClaim = (obligation, poolReward, reservePoolManagerId, reserveArrayIndex) => {
|
|
101
92
|
const userRewardManager = obligation.original.userRewardManagers.find((urm) => urm.poolRewardManagerId === reservePoolManagerId);
|
|
102
93
|
if (!userRewardManager)
|
|
@@ -106,16 +97,15 @@ const getObligationClaim = (obligation, poolReward, reservePoolManagerId, reserv
|
|
|
106
97
|
return;
|
|
107
98
|
return {
|
|
108
99
|
claimableAmount: (userReward === null || userReward === void 0 ? void 0 : userReward.earnedRewards)
|
|
109
|
-
? new
|
|
110
|
-
.div(
|
|
100
|
+
? new BigNumber(userReward.earnedRewards.value.toString())
|
|
101
|
+
.div(WAD)
|
|
111
102
|
.div(10 ** poolReward.mintDecimals)
|
|
112
|
-
: new
|
|
103
|
+
: new BigNumber(0),
|
|
113
104
|
reserveArrayIndex,
|
|
114
105
|
};
|
|
115
106
|
};
|
|
116
|
-
const getFilteredRewards = (rewards) => rewards.filter((r) => r.stats.isActive);
|
|
117
|
-
|
|
118
|
-
const getDedupedAprRewards = (filteredRewards) => {
|
|
107
|
+
export const getFilteredRewards = (rewards) => rewards.filter((r) => r.stats.isActive);
|
|
108
|
+
export const getDedupedAprRewards = (filteredRewards) => {
|
|
119
109
|
const aprRewards = filteredRewards.filter((r) => r.stats.aprPercent !== undefined);
|
|
120
110
|
const result = [];
|
|
121
111
|
for (const reward of aprRewards) {
|
|
@@ -124,12 +114,11 @@ const getDedupedAprRewards = (filteredRewards) => {
|
|
|
124
114
|
result[index].stats.aprPercent = result[index].stats.aprPercent.plus(reward.stats.aprPercent);
|
|
125
115
|
}
|
|
126
116
|
else
|
|
127
|
-
result.push(
|
|
117
|
+
result.push(cloneDeep(reward));
|
|
128
118
|
}
|
|
129
119
|
return result;
|
|
130
120
|
};
|
|
131
|
-
|
|
132
|
-
const getDedupedPerDayRewards = (filteredRewards) => {
|
|
121
|
+
export const getDedupedPerDayRewards = (filteredRewards) => {
|
|
133
122
|
const perDayRewards = filteredRewards.filter((r) => r.stats.perDay !== undefined);
|
|
134
123
|
const result = [];
|
|
135
124
|
for (const reward of perDayRewards) {
|
|
@@ -138,59 +127,56 @@ const getDedupedPerDayRewards = (filteredRewards) => {
|
|
|
138
127
|
result[index].stats.perDay = result[index].stats.perDay.plus(reward.stats.perDay);
|
|
139
128
|
}
|
|
140
129
|
else
|
|
141
|
-
result.push(
|
|
130
|
+
result.push(cloneDeep(reward));
|
|
142
131
|
}
|
|
143
132
|
return result;
|
|
144
133
|
};
|
|
145
|
-
|
|
146
|
-
const
|
|
147
|
-
exports.getRewardsAprPercent = getRewardsAprPercent;
|
|
148
|
-
const getStakingYieldAprPercent = (side, coinType, lstStatsMap, elixirSdeUsdAprPercent) => {
|
|
134
|
+
export const getRewardsAprPercent = (side, filteredRewards) => getDedupedAprRewards(filteredRewards).reduce((acc, reward) => acc.plus(reward.stats.aprPercent.times(side === Side.DEPOSIT ? 1 : -1)), new BigNumber(0));
|
|
135
|
+
export const getStakingYieldAprPercent = (side, coinType, lstStatsMap, sdeUsdAprPercent, eThirdAprPercent) => {
|
|
149
136
|
var _a;
|
|
150
|
-
return side ===
|
|
151
|
-
? coinType ===
|
|
152
|
-
?
|
|
153
|
-
:
|
|
137
|
+
return side === Side.DEPOSIT
|
|
138
|
+
? coinType === NORMALIZED_sdeUSD_COINTYPE
|
|
139
|
+
? sdeUsdAprPercent
|
|
140
|
+
: coinType === NORMALIZED_eTHIRD_COINTYPE
|
|
141
|
+
? eThirdAprPercent
|
|
142
|
+
: (_a = lstStatsMap[coinType]) === null || _a === void 0 ? void 0 : _a.aprPercent
|
|
154
143
|
: undefined;
|
|
155
144
|
};
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
.plus((0, exports.getRewardsAprPercent)(side, filteredRewards))
|
|
145
|
+
export const getTotalAprPercent = (side, aprPercent, filteredRewards, stakingYieldAprPercent) => aprPercent
|
|
146
|
+
.plus(getRewardsAprPercent(side, filteredRewards))
|
|
159
147
|
.plus(stakingYieldAprPercent !== null && stakingYieldAprPercent !== void 0 ? stakingYieldAprPercent : 0);
|
|
160
|
-
|
|
161
|
-
const getNetAprPercent = (obligation, rewardMap, lstStatsMap, elixirSdeUsdAprPercent, noShares) => {
|
|
148
|
+
export const getNetAprPercent = (obligation, rewardMap, lstStatsMap, sdeUsdAprPercent, eThirdAprPercent, noShares) => {
|
|
162
149
|
const weightedDepositedAmountUsd_aprPercent = obligation.deposits.reduce((acc, deposit) => {
|
|
163
150
|
var _a;
|
|
164
151
|
const weightedDepositedAmountUsd_baseAprPercent = deposit.reserve.depositAprPercent.times(deposit.depositedAmountUsd);
|
|
165
|
-
const weightedDepositedAmountUsd_stakingYieldAprPercent = new
|
|
166
|
-
const weightedDepositedAmountUsd_rewardsAprPercent =
|
|
167
|
-
? getDepositShareUsd(deposit.reserve, new
|
|
152
|
+
const weightedDepositedAmountUsd_stakingYieldAprPercent = new BigNumber((_a = getStakingYieldAprPercent(Side.DEPOSIT, deposit.reserve.coinType, lstStatsMap, sdeUsdAprPercent, eThirdAprPercent)) !== null && _a !== void 0 ? _a : 0).times(deposit.depositedAmountUsd);
|
|
153
|
+
const weightedDepositedAmountUsd_rewardsAprPercent = getRewardsAprPercent(Side.DEPOSIT, getFilteredRewards(rewardMap[deposit.reserve.coinType].deposit)).times(!noShares
|
|
154
|
+
? getDepositShareUsd(deposit.reserve, new BigNumber(deposit.userRewardManager.share.toString()))
|
|
168
155
|
: deposit.depositedAmountUsd);
|
|
169
156
|
return acc
|
|
170
157
|
.plus(weightedDepositedAmountUsd_baseAprPercent)
|
|
171
158
|
.plus(weightedDepositedAmountUsd_stakingYieldAprPercent)
|
|
172
159
|
.plus(weightedDepositedAmountUsd_rewardsAprPercent);
|
|
173
|
-
}, new
|
|
160
|
+
}, new BigNumber(0));
|
|
174
161
|
const weightedBorrowedAmountUsd_aprPercent = obligation.borrows.reduce((acc, borrow) => {
|
|
175
162
|
const weightedBorrowedAmountUsd_baseAprPercent = borrow.reserve.borrowAprPercent.times(borrow.borrowedAmountUsd);
|
|
176
|
-
const weightedBorrowedAmountUsd_rewardsAprPercent =
|
|
177
|
-
? getBorrowShareUsd(borrow.reserve, new
|
|
163
|
+
const weightedBorrowedAmountUsd_rewardsAprPercent = getRewardsAprPercent(Side.BORROW, getFilteredRewards(rewardMap[borrow.reserve.coinType].borrow)).times(!noShares
|
|
164
|
+
? getBorrowShareUsd(borrow.reserve, new BigNumber(borrow.userRewardManager.share.toString()))
|
|
178
165
|
: borrow.borrowedAmountUsd);
|
|
179
166
|
return acc
|
|
180
167
|
.plus(weightedBorrowedAmountUsd_baseAprPercent)
|
|
181
168
|
.plus(weightedBorrowedAmountUsd_rewardsAprPercent);
|
|
182
|
-
}, new
|
|
169
|
+
}, new BigNumber(0));
|
|
183
170
|
const aprPercentWeightedNetValueUsd = weightedDepositedAmountUsd_aprPercent.minus(weightedBorrowedAmountUsd_aprPercent);
|
|
184
171
|
return !obligation.netValueUsd.eq(0)
|
|
185
172
|
? aprPercentWeightedNetValueUsd.div(obligation.netValueUsd)
|
|
186
|
-
: new
|
|
173
|
+
: new BigNumber(0);
|
|
187
174
|
};
|
|
188
|
-
|
|
189
|
-
const getRewardsMap = (obligation, rewardMap, coinMetadataMap) => {
|
|
175
|
+
export const getRewardsMap = (obligation, rewardMap, coinMetadataMap) => {
|
|
190
176
|
const result = {};
|
|
191
177
|
if (obligation) {
|
|
192
178
|
Object.values(rewardMap).flatMap((rewards) => [...rewards.deposit, ...rewards.borrow].forEach((r) => {
|
|
193
|
-
if (
|
|
179
|
+
if (isSendPoints(r.stats.rewardCoinType))
|
|
194
180
|
return;
|
|
195
181
|
if (!r.obligationClaims[obligation.id])
|
|
196
182
|
return;
|
|
@@ -201,17 +187,16 @@ const getRewardsMap = (obligation, rewardMap, coinMetadataMap) => {
|
|
|
201
187
|
return;
|
|
202
188
|
if (!result[r.stats.rewardCoinType])
|
|
203
189
|
result[r.stats.rewardCoinType] = {
|
|
204
|
-
amount: new
|
|
205
|
-
rawAmount: new
|
|
190
|
+
amount: new BigNumber(0),
|
|
191
|
+
rawAmount: new BigNumber(0),
|
|
206
192
|
rewards: [],
|
|
207
193
|
};
|
|
208
194
|
result[r.stats.rewardCoinType].amount = result[r.stats.rewardCoinType].amount.plus(r.obligationClaims[obligation.id].claimableAmount);
|
|
209
195
|
result[r.stats.rewardCoinType].rawAmount = result[r.stats.rewardCoinType].amount
|
|
210
196
|
.times(10 ** coinMetadataMap[r.stats.rewardCoinType].decimals)
|
|
211
|
-
.integerValue(
|
|
197
|
+
.integerValue(BigNumber.ROUND_DOWN);
|
|
212
198
|
result[r.stats.rewardCoinType].rewards.push(r);
|
|
213
199
|
}));
|
|
214
200
|
}
|
|
215
201
|
return result;
|
|
216
202
|
};
|
|
217
|
-
exports.getRewardsMap = getRewardsMap;
|
package/lib/pyth.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
2
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
3
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -8,37 +7,34 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
7
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
8
|
});
|
|
10
9
|
};
|
|
11
|
-
|
|
12
|
-
exports.getWorkingPythEndpoint = exports.testPrimaryPythConnection = exports.PRIMARY_PYTH_ENDPOINT = void 0;
|
|
13
|
-
exports.PRIMARY_PYTH_ENDPOINT = "https://hermes.pyth.network";
|
|
10
|
+
export const PRIMARY_PYTH_ENDPOINT = "https://hermes.pyth.network";
|
|
14
11
|
/**
|
|
15
12
|
* Tests if the primary Pyth connection endpoint is working by checking the /live endpoint
|
|
16
13
|
* @returns true if the connection is working, false otherwise
|
|
17
14
|
*/
|
|
18
|
-
const testPrimaryPythConnection = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
15
|
+
export const testPrimaryPythConnection = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
19
16
|
try {
|
|
20
|
-
const res = yield fetch(`${
|
|
17
|
+
const res = yield fetch(`${PRIMARY_PYTH_ENDPOINT}/live`, {
|
|
21
18
|
signal: AbortSignal.timeout(5 * 1000), // 5 second timeout
|
|
22
19
|
});
|
|
23
20
|
return res.ok;
|
|
24
21
|
}
|
|
25
22
|
catch (err) {
|
|
26
|
-
console.warn(`[testPrimaryPythConnection] Pyth connection test failed for ${
|
|
23
|
+
console.warn(`[testPrimaryPythConnection] Pyth connection test failed for ${PRIMARY_PYTH_ENDPOINT}:`, err);
|
|
27
24
|
return false;
|
|
28
25
|
}
|
|
29
26
|
});
|
|
30
|
-
exports.testPrimaryPythConnection = testPrimaryPythConnection;
|
|
31
27
|
/**
|
|
32
28
|
* Gets a working Pyth connection endpoint, trying primary first, then fallback if provided
|
|
33
29
|
* @param fallbackPythEndpoint Optional fallback endpoint
|
|
34
30
|
* @returns The endpoint URL that is working, or the primary endpoint if fallback fails
|
|
35
31
|
*/
|
|
36
|
-
const getWorkingPythEndpoint = (fallbackPythEndpoint) => __awaiter(void 0, void 0, void 0, function* () {
|
|
32
|
+
export const getWorkingPythEndpoint = (fallbackPythEndpoint) => __awaiter(void 0, void 0, void 0, function* () {
|
|
37
33
|
// Test primary endpoint first
|
|
38
|
-
const primaryWorking = yield
|
|
34
|
+
const primaryWorking = yield testPrimaryPythConnection();
|
|
39
35
|
if (primaryWorking) {
|
|
40
|
-
console.log(`[getWorkingPythEndpoint] Using primary Pyth endpoint: ${
|
|
41
|
-
return
|
|
36
|
+
console.log(`[getWorkingPythEndpoint] Using primary Pyth endpoint: ${PRIMARY_PYTH_ENDPOINT}`);
|
|
37
|
+
return PRIMARY_PYTH_ENDPOINT;
|
|
42
38
|
}
|
|
43
39
|
// If primary fails and fallback is provided, use fallback
|
|
44
40
|
if (!!fallbackPythEndpoint) {
|
|
@@ -47,7 +43,6 @@ const getWorkingPythEndpoint = (fallbackPythEndpoint) => __awaiter(void 0, void
|
|
|
47
43
|
}
|
|
48
44
|
else {
|
|
49
45
|
console.error(`[getWorkingPythEndpoint] Primary Pyth endpoint failed, no fallback provided, using primary anyway`);
|
|
50
|
-
return
|
|
46
|
+
return PRIMARY_PYTH_ENDPOINT;
|
|
51
47
|
}
|
|
52
48
|
});
|
|
53
|
-
exports.getWorkingPythEndpoint = getWorkingPythEndpoint;
|