@defisaver/positions-sdk 2.1.113 → 2.1.115
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/cjs/aaveV3/merkl.d.ts +1 -2
- package/cjs/aaveV3/merkl.js +2 -2
- package/cjs/aaveV4/merkl.d.ts +1 -2
- package/cjs/aaveV4/merkl.js +2 -2
- package/cjs/claiming/aaveV3.d.ts +1 -1
- package/cjs/claiming/aaveV3.js +5 -1
- package/cjs/markets/aave/marketAssets.js +2 -2
- package/cjs/moneymarket/moneymarketCommonService.js +2 -2
- package/cjs/staking/staking.js +5 -1
- package/esm/aaveV3/merkl.d.ts +1 -2
- package/esm/aaveV3/merkl.js +3 -3
- package/esm/aaveV4/merkl.d.ts +1 -2
- package/esm/aaveV4/merkl.js +3 -3
- package/esm/claiming/aaveV3.d.ts +1 -1
- package/esm/claiming/aaveV3.js +6 -2
- package/esm/markets/aave/marketAssets.js +2 -2
- package/esm/moneymarket/moneymarketCommonService.js +2 -2
- package/esm/staking/staking.js +5 -1
- package/package.json +2 -2
- package/src/aaveV3/merkl.ts +4 -4
- package/src/aaveV4/merkl.ts +4 -4
- package/src/claiming/aaveV3.ts +8 -4
- package/src/markets/aave/marketAssets.ts +2 -2
- package/src/moneymarket/moneymarketCommonService.ts +2 -2
- package/src/staking/staking.ts +3 -1
package/cjs/aaveV3/merkl.d.ts
CHANGED
package/cjs/aaveV3/merkl.js
CHANGED
|
@@ -40,8 +40,8 @@ const formatAaveAsset = (_symbol) => {
|
|
|
40
40
|
exports.formatAaveAsset = formatAaveAsset;
|
|
41
41
|
const getMerkleCampaigns = (chainId) => __awaiter(void 0, void 0, void 0, function* () {
|
|
42
42
|
try {
|
|
43
|
-
const res = yield fetch('https://
|
|
44
|
-
signal: AbortSignal.timeout(utils_1.
|
|
43
|
+
const res = yield fetch('https://fe.defisaver.com/api/merkl/opportunities?mainProtocolId=aave', {
|
|
44
|
+
signal: AbortSignal.timeout(utils_1.LONGER_TIMEOUT),
|
|
45
45
|
});
|
|
46
46
|
if (!res.ok)
|
|
47
47
|
throw new Error('Failed to fetch Merkle campaigns');
|
package/cjs/aaveV4/merkl.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { AaveV4MerklRewardMap, AaveV4ReserveAssetData } from '../types';
|
|
2
|
-
import { NetworkNumber } from '../types/common';
|
|
1
|
+
import { AaveV4MerklRewardMap, AaveV4ReserveAssetData, NetworkNumber } from '../types';
|
|
3
2
|
export declare const getAaveV4MerkleCampaigns: (chainId: NetworkNumber) => Promise<AaveV4MerklRewardMap>;
|
|
4
3
|
/**
|
|
5
4
|
* Returns a copy of the asset with scope-specific incentive arrays pre-combined with the asset's
|
package/cjs/aaveV4/merkl.js
CHANGED
|
@@ -34,8 +34,8 @@ const buildIncentive = (opportunity) => {
|
|
|
34
34
|
const getAaveV4MerkleCampaigns = (chainId) => __awaiter(void 0, void 0, void 0, function* () {
|
|
35
35
|
const result = { hub: {}, spoke: {} };
|
|
36
36
|
try {
|
|
37
|
-
const res = yield fetch('https://
|
|
38
|
-
signal: AbortSignal.timeout(utils_1.
|
|
37
|
+
const res = yield fetch('https://fe.defisaver.com/api/merkl/opportunities?mainProtocolId=aave', {
|
|
38
|
+
signal: AbortSignal.timeout(utils_1.LONGER_TIMEOUT),
|
|
39
39
|
});
|
|
40
40
|
if (!res.ok)
|
|
41
41
|
throw new Error('Failed to fetch Aave V4 Merkle campaigns');
|
package/cjs/claiming/aaveV3.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Client } from 'viem';
|
|
2
|
-
import { EthAddress, NetworkNumber } from '../types
|
|
2
|
+
import { EthAddress, NetworkNumber } from '../types';
|
|
3
3
|
import { ClaimableToken } from '../types/claiming';
|
|
4
4
|
export declare function getUnclaimedRewardsForAllMarkets(provider: Client, network: NetworkNumber, walletAddress: EthAddress, marketAddress: EthAddress): Promise<ClaimableToken[]>;
|
|
5
5
|
export declare function getMeritUnclaimedRewards(account: EthAddress, network: NetworkNumber): Promise<ClaimableToken[]>;
|
package/cjs/claiming/aaveV3.js
CHANGED
|
@@ -99,7 +99,7 @@ function getMeritUnclaimedRewards(account, network) {
|
|
|
99
99
|
return __awaiter(this, void 0, void 0, function* () {
|
|
100
100
|
let data;
|
|
101
101
|
try {
|
|
102
|
-
const res = yield fetch(`https://
|
|
102
|
+
const res = yield fetch(`https://fe.defisaver.com/api/merkl/get-user-rewards/${account}?chainId=${network}`, { signal: AbortSignal.timeout(utils_1.LONGER_TIMEOUT) });
|
|
103
103
|
data = yield res.json();
|
|
104
104
|
}
|
|
105
105
|
catch (error) {
|
|
@@ -107,6 +107,10 @@ function getMeritUnclaimedRewards(account, network) {
|
|
|
107
107
|
data = [];
|
|
108
108
|
}
|
|
109
109
|
const claimableTokens = [];
|
|
110
|
+
// Merkl (or our proxy, on a non-2xx) can return a non-array error body; `fetch` doesn't throw on
|
|
111
|
+
// HTTP errors, so guard before iterating. Mirrors the app-side getMeritUnclaimedRewards.
|
|
112
|
+
if (!Array.isArray(data))
|
|
113
|
+
return claimableTokens;
|
|
110
114
|
data.forEach((item) => {
|
|
111
115
|
item.rewards.forEach(reward => {
|
|
112
116
|
const { token, amount, claimed, proofs, } = reward;
|
|
@@ -10,7 +10,7 @@ exports.aaveV1AssetsDefaultMarket = [
|
|
|
10
10
|
exports.aaveV2AssetsDefaultMarket = ['USDT', 'WBTC', 'ETH', 'YFI', 'ZRX', 'UNI', 'AAVE', 'BAT', 'BUSD', 'DAI', 'ENJ', 'KNCL', 'LINK', 'MANA', 'MKR', 'REN', 'SNX', 'SUSD', 'TUSD', 'USDC', 'CRV', 'GUSD', 'BAL', 'xSUSHI', 'RENFIL', 'RAI', 'AMPL', 'USDP', 'DPI', 'FRAX', 'FEI', 'stETH', 'ENS', 'UST', 'CVX', '1INCH', 'LUSD'];
|
|
11
11
|
exports.aaveV3AssetsDefaultMarketEth = [
|
|
12
12
|
'ETH', 'wstETH', 'WBTC', 'USDC', 'DAI', 'LINK', 'AAVE', 'cbETH', 'USDT', 'rETH', 'LUSD', 'CRV', 'MKR', 'SNX', 'BAL', 'UNI', 'LDO', 'ENS', '1INCH', 'FRAX', 'GHO', 'RPL', 'sDAI', 'STG', 'KNC', 'FXS', 'crvUSD', 'PYUSD', 'weETH', 'osETH', 'USDe', 'ETHx', 'sUSDe', 'tBTC', 'cbBTC', 'USDS', 'rsETH', 'LBTC', 'eBTC', 'RLUSD', 'PT eUSDe May', 'PT sUSDe July', 'USDtb',
|
|
13
|
-
'eUSDe', 'PT USDe July', 'PT eUSDe Aug', 'EURC', 'FBTC', 'PT sUSDe Sep', 'PT USDe Sep', 'tETH', 'ezETH', 'XAUt', 'PT sUSDe Nov', 'PT USDe Nov', 'PT sUSDe Feb', 'PT USDe Feb', 'mUSD', 'syrupUSDT', 'USDG', 'PT sUSDe May', 'PT USDe May', 'PT srUSDe Apr', 'PT srUSDe Jun', 'PT USDG May',
|
|
13
|
+
'eUSDe', 'PT USDe July', 'PT eUSDe Aug', 'EURC', 'FBTC', 'PT sUSDe Sep', 'PT USDe Sep', 'tETH', 'ezETH', 'XAUt', 'PT sUSDe Nov', 'PT USDe Nov', 'PT sUSDe Feb', 'PT USDe Feb', 'mUSD', 'syrupUSDT', 'USDG', 'PT sUSDe May', 'PT USDe May', 'PT srUSDe Apr', 'PT srUSDe Jun', 'PT srUSDe Oct', 'PT USDG May',
|
|
14
14
|
];
|
|
15
15
|
exports.aaveV3AssetsDefaultMarketOpt = [
|
|
16
16
|
'DAI', 'USDC.e', 'USDT', 'SUSD', 'AAVE', 'LINK', 'WBTC', 'ETH', 'OP', 'wstETH', 'LUSD', 'MAI', 'rETH', 'USDC',
|
|
@@ -18,7 +18,7 @@ exports.aaveV3AssetsDefaultMarketOpt = [
|
|
|
18
18
|
exports.aaveV3AssetsDefaultMarketArb = ['DAI', 'LINK', 'USDC.e', 'WBTC', 'ETH', 'USDT', 'AAVE', 'EURS', 'wstETH', 'MAI', 'rETH', 'LUSD', 'USDC', 'FRAX', 'ARB', 'weETH', 'GHO', 'ezETH', 'rsETH', 'tBTC'];
|
|
19
19
|
exports.aaveV3AssetsDefaultMarketBase = ['ETH', 'cbETH', 'USDbC', 'wstETH', 'USDC', 'weETH', 'cbBTC', 'ezETH', 'GHO', 'wrsETH', 'LBTC', 'EURC', 'AAVE', 'tBTC', 'syrupUSDC'];
|
|
20
20
|
exports.aaveV3AssetsDefaultMarketLinea = ['ETH', 'USDC', 'weETH', 'ezETH', 'USDT', 'wstETH', 'wrsETH', 'WBTC', 'mUSD'];
|
|
21
|
-
exports.aaveV3AssetsDefaultMarketPlasma = ['ETH', 'USDT', 'sUSDe', 'USDe', 'weETH', 'XAUt', 'PT USDe Jan', 'PT sUSDe Jan', 'wrsETH', 'wstETH', 'syrupUSDT', 'XPL', 'PT USDe Apr', 'PT sUSDe Apr', 'GHO', 'PT sUSDe June', 'PT USDe June'];
|
|
21
|
+
exports.aaveV3AssetsDefaultMarketPlasma = ['ETH', 'USDT', 'sUSDe', 'USDe', 'weETH', 'XAUt', 'PT USDe Jan', 'PT sUSDe Jan', 'wrsETH', 'wstETH', 'syrupUSDT', 'XPL', 'PT USDe Apr', 'PT sUSDe Apr', 'GHO', 'PT sUSDe June', 'PT USDe June', 'PT sUSDe Oct'];
|
|
22
22
|
// @dev Keep assets in array, do not assign directly, so we can parse it and edit it programmatically with `scripts/updateMarkets`
|
|
23
23
|
exports.aaveV3AssetsDefaultMarket = {
|
|
24
24
|
[common_1.NetworkNumber.Eth]: exports.aaveV3AssetsDefaultMarketEth,
|
|
@@ -30,10 +30,10 @@ const calculateBorrowingAssetLimit = (assetBorrowedUsd, borrowLimitUsd) => new d
|
|
|
30
30
|
exports.calculateBorrowingAssetLimit = calculateBorrowingAssetLimit;
|
|
31
31
|
exports.STABLE_ASSETS = [
|
|
32
32
|
'DAI', 'USDC', 'USDT', 'TUSD', 'USDP', 'GUSD', 'BUSD', 'SUSD', 'FRAX', 'LUSD', 'USDC.e', 'GHO', 'sDAI', 'USDA',
|
|
33
|
-
'USDe', 'sUSDe', 'USDS', 'sUSDS', 'USR', 'EURC', 'BOLD', 'BOLD Legacy', 'RLUSD', 'PT sUSDe July', 'PT eUSDe May',
|
|
33
|
+
'USDe', 'sUSDe', 'srUSDe', 'USDS', 'sUSDS', 'USR', 'EURC', 'BOLD', 'BOLD Legacy', 'RLUSD', 'PT sUSDe July', 'PT eUSDe May',
|
|
34
34
|
'USDtb', 'eUSDe', 'PT USDe July', 'PT eUSDe Aug', 'PT sUSDe Sep', 'PT USDe Sep', 'PT sUSDe Nov', 'PT USDe Nov', 'PT sUSDe Jan', 'PT USDe Jan',
|
|
35
35
|
'PT sUSDe Feb', 'PT USDe Feb', 'PT sUSDe Apr', 'PT USDe Apr', 'PT sUSDe May', 'PT USDe May', 'PT srUSDe Apr', 'frxUSD', 'PT sUSDe June',
|
|
36
|
-
'PT USDe June', 'PT srUSDe Jun', 'PT USDG May', 'PT sUSDS Nov',
|
|
36
|
+
'PT USDe June', 'PT srUSDe Jun', 'PT srUSDe Oct', 'PT USDG May', 'PT sUSDS Nov', 'PT sUSDe Oct',
|
|
37
37
|
];
|
|
38
38
|
const isLeveragedPos = (usedAssets, dustLimit = 5) => {
|
|
39
39
|
let borrowUnstable = 0;
|
package/cjs/staking/staking.js
CHANGED
|
@@ -73,7 +73,7 @@ exports.STAKING_ASSETS = [
|
|
|
73
73
|
'ezETH', 'ETHx', 'rsETH', 'pufETH', 'wrsETH', 'wsuperOETHb', 'sUSDS', 'tETH', 'PT sUSDe Sep', 'PT USDe Sep',
|
|
74
74
|
'PT sUSDe Nov', 'PT USDe Nov', 'PT USDe Jan', 'PT sUSDe Jan', 'wrsETH', 'wstETH', 'syrupUSDT', 'syrupUSDC', 'wstUSR',
|
|
75
75
|
'PT sUSDe Feb', 'PT USDe Feb', 'PT sUSDe Apr', 'PT USDe Apr', 'PT sUSDe May', 'PT USDe May', 'PT srUSDe Apr', 'GHO',
|
|
76
|
-
'PT sUSDe June', 'PT USDe June', 'PT srUSDe Jun', 'PT USDG May', 'PT sUSDS Nov',
|
|
76
|
+
'PT sUSDe June', 'PT USDe June', 'PT srUSDe Jun', 'PT srUSDe Oct', 'PT USDG May', 'PT sUSDS Nov', 'PT sUSDe Oct',
|
|
77
77
|
];
|
|
78
78
|
exports.getStakingApy = (0, memoizee_1.default)((asset_1, ...args_1) => __awaiter(void 0, [asset_1, ...args_1], void 0, function* (asset, network = common_1.NetworkNumber.Eth) {
|
|
79
79
|
try {
|
|
@@ -149,8 +149,12 @@ exports.getStakingApy = (0, memoizee_1.default)((asset_1, ...args_1) => __awaite
|
|
|
149
149
|
return yield getApyFromDfsApi('PT srUSDe Apr', network);
|
|
150
150
|
if (asset === 'PT srUSDe Jun')
|
|
151
151
|
return yield getApyFromDfsApi('PT srUSDe Jun', network);
|
|
152
|
+
if (asset === 'PT srUSDe Oct')
|
|
153
|
+
return yield getApyFromDfsApi('PT srUSDe Oct', network);
|
|
152
154
|
if (asset === 'PT sUSDe June')
|
|
153
155
|
return yield getApyFromDfsApi('PT sUSDe June', network);
|
|
156
|
+
if (asset === 'PT sUSDe Oct')
|
|
157
|
+
return yield getApyFromDfsApi('PT sUSDe Oct', network);
|
|
154
158
|
if (asset === 'PT USDe June')
|
|
155
159
|
return yield getApyFromDfsApi('PT USDe June', network);
|
|
156
160
|
if (asset === 'PT USDG May')
|
package/esm/aaveV3/merkl.d.ts
CHANGED
package/esm/aaveV3/merkl.js
CHANGED
|
@@ -8,7 +8,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
10
|
import { aprToApy } from '../moneymarket';
|
|
11
|
-
import {
|
|
11
|
+
import { LONGER_TIMEOUT, wethToEth } from '../services/utils';
|
|
12
12
|
import { OpportunityAction, OpportunityStatus, } from '../types';
|
|
13
13
|
export const getAaveUnderlyingSymbol = (_symbol = '') => {
|
|
14
14
|
let symbol = _symbol
|
|
@@ -35,8 +35,8 @@ export const formatAaveAsset = (_symbol) => {
|
|
|
35
35
|
};
|
|
36
36
|
export const getMerkleCampaigns = (chainId) => __awaiter(void 0, void 0, void 0, function* () {
|
|
37
37
|
try {
|
|
38
|
-
const res = yield fetch('https://
|
|
39
|
-
signal: AbortSignal.timeout(
|
|
38
|
+
const res = yield fetch('https://fe.defisaver.com/api/merkl/opportunities?mainProtocolId=aave', {
|
|
39
|
+
signal: AbortSignal.timeout(LONGER_TIMEOUT),
|
|
40
40
|
});
|
|
41
41
|
if (!res.ok)
|
|
42
42
|
throw new Error('Failed to fetch Merkle campaigns');
|
package/esm/aaveV4/merkl.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { AaveV4MerklRewardMap, AaveV4ReserveAssetData } from '../types';
|
|
2
|
-
import { NetworkNumber } from '../types/common';
|
|
1
|
+
import { AaveV4MerklRewardMap, AaveV4ReserveAssetData, NetworkNumber } from '../types';
|
|
3
2
|
export declare const getAaveV4MerkleCampaigns: (chainId: NetworkNumber) => Promise<AaveV4MerklRewardMap>;
|
|
4
3
|
/**
|
|
5
4
|
* Returns a copy of the asset with scope-specific incentive arrays pre-combined with the asset's
|
package/esm/aaveV4/merkl.js
CHANGED
|
@@ -8,7 +8,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
10
|
import { aprToApy } from '../moneymarket';
|
|
11
|
-
import {
|
|
11
|
+
import { LONGER_TIMEOUT } from '../services/utils';
|
|
12
12
|
import { IncentiveKind, OpportunityAction, OpportunityStatus, } from '../types';
|
|
13
13
|
/**
|
|
14
14
|
* Merkl tags Aave V4 reward campaigns by scope via the `type` field:
|
|
@@ -31,8 +31,8 @@ const buildIncentive = (opportunity) => {
|
|
|
31
31
|
export const getAaveV4MerkleCampaigns = (chainId) => __awaiter(void 0, void 0, void 0, function* () {
|
|
32
32
|
const result = { hub: {}, spoke: {} };
|
|
33
33
|
try {
|
|
34
|
-
const res = yield fetch('https://
|
|
35
|
-
signal: AbortSignal.timeout(
|
|
34
|
+
const res = yield fetch('https://fe.defisaver.com/api/merkl/opportunities?mainProtocolId=aave', {
|
|
35
|
+
signal: AbortSignal.timeout(LONGER_TIMEOUT),
|
|
36
36
|
});
|
|
37
37
|
if (!res.ok)
|
|
38
38
|
throw new Error('Failed to fetch Aave V4 Merkle campaigns');
|
package/esm/claiming/aaveV3.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Client } from 'viem';
|
|
2
|
-
import { EthAddress, NetworkNumber } from '../types
|
|
2
|
+
import { EthAddress, NetworkNumber } from '../types';
|
|
3
3
|
import { ClaimableToken } from '../types/claiming';
|
|
4
4
|
export declare function getUnclaimedRewardsForAllMarkets(provider: Client, network: NetworkNumber, walletAddress: EthAddress, marketAddress: EthAddress): Promise<ClaimableToken[]>;
|
|
5
5
|
export declare function getMeritUnclaimedRewards(account: EthAddress, network: NetworkNumber): Promise<ClaimableToken[]>;
|
package/esm/claiming/aaveV3.js
CHANGED
|
@@ -10,7 +10,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
10
10
|
import Dec from 'decimal.js';
|
|
11
11
|
import { ClaimType } from '../types/claiming';
|
|
12
12
|
import { AaveIncentiveDataProviderV3ContractViem, AaveRewardsControllerViem, } from '../contracts';
|
|
13
|
-
import { compareAddresses, getEthAmountForDecimals } from '../services/utils';
|
|
13
|
+
import { compareAddresses, getEthAmountForDecimals, LONGER_TIMEOUT } from '../services/utils';
|
|
14
14
|
import { getAaveUnderlyingSymbol } from '../helpers/aaveHelpers';
|
|
15
15
|
const mapAaveRewardsToClaimableTokens = (aaveRewards, marketAddress, walletAddress) => aaveRewards.map(reward => ({
|
|
16
16
|
symbol: reward.symbol,
|
|
@@ -92,7 +92,7 @@ export function getMeritUnclaimedRewards(account, network) {
|
|
|
92
92
|
return __awaiter(this, void 0, void 0, function* () {
|
|
93
93
|
let data;
|
|
94
94
|
try {
|
|
95
|
-
const res = yield fetch(`https://
|
|
95
|
+
const res = yield fetch(`https://fe.defisaver.com/api/merkl/get-user-rewards/${account}?chainId=${network}`, { signal: AbortSignal.timeout(LONGER_TIMEOUT) });
|
|
96
96
|
data = yield res.json();
|
|
97
97
|
}
|
|
98
98
|
catch (error) {
|
|
@@ -100,6 +100,10 @@ export function getMeritUnclaimedRewards(account, network) {
|
|
|
100
100
|
data = [];
|
|
101
101
|
}
|
|
102
102
|
const claimableTokens = [];
|
|
103
|
+
// Merkl (or our proxy, on a non-2xx) can return a non-array error body; `fetch` doesn't throw on
|
|
104
|
+
// HTTP errors, so guard before iterating. Mirrors the app-side getMeritUnclaimedRewards.
|
|
105
|
+
if (!Array.isArray(data))
|
|
106
|
+
return claimableTokens;
|
|
103
107
|
data.forEach((item) => {
|
|
104
108
|
item.rewards.forEach(reward => {
|
|
105
109
|
const { token, amount, claimed, proofs, } = reward;
|
|
@@ -7,7 +7,7 @@ export const aaveV1AssetsDefaultMarket = [
|
|
|
7
7
|
export const aaveV2AssetsDefaultMarket = ['USDT', 'WBTC', 'ETH', 'YFI', 'ZRX', 'UNI', 'AAVE', 'BAT', 'BUSD', 'DAI', 'ENJ', 'KNCL', 'LINK', 'MANA', 'MKR', 'REN', 'SNX', 'SUSD', 'TUSD', 'USDC', 'CRV', 'GUSD', 'BAL', 'xSUSHI', 'RENFIL', 'RAI', 'AMPL', 'USDP', 'DPI', 'FRAX', 'FEI', 'stETH', 'ENS', 'UST', 'CVX', '1INCH', 'LUSD'];
|
|
8
8
|
export const aaveV3AssetsDefaultMarketEth = [
|
|
9
9
|
'ETH', 'wstETH', 'WBTC', 'USDC', 'DAI', 'LINK', 'AAVE', 'cbETH', 'USDT', 'rETH', 'LUSD', 'CRV', 'MKR', 'SNX', 'BAL', 'UNI', 'LDO', 'ENS', '1INCH', 'FRAX', 'GHO', 'RPL', 'sDAI', 'STG', 'KNC', 'FXS', 'crvUSD', 'PYUSD', 'weETH', 'osETH', 'USDe', 'ETHx', 'sUSDe', 'tBTC', 'cbBTC', 'USDS', 'rsETH', 'LBTC', 'eBTC', 'RLUSD', 'PT eUSDe May', 'PT sUSDe July', 'USDtb',
|
|
10
|
-
'eUSDe', 'PT USDe July', 'PT eUSDe Aug', 'EURC', 'FBTC', 'PT sUSDe Sep', 'PT USDe Sep', 'tETH', 'ezETH', 'XAUt', 'PT sUSDe Nov', 'PT USDe Nov', 'PT sUSDe Feb', 'PT USDe Feb', 'mUSD', 'syrupUSDT', 'USDG', 'PT sUSDe May', 'PT USDe May', 'PT srUSDe Apr', 'PT srUSDe Jun', 'PT USDG May',
|
|
10
|
+
'eUSDe', 'PT USDe July', 'PT eUSDe Aug', 'EURC', 'FBTC', 'PT sUSDe Sep', 'PT USDe Sep', 'tETH', 'ezETH', 'XAUt', 'PT sUSDe Nov', 'PT USDe Nov', 'PT sUSDe Feb', 'PT USDe Feb', 'mUSD', 'syrupUSDT', 'USDG', 'PT sUSDe May', 'PT USDe May', 'PT srUSDe Apr', 'PT srUSDe Jun', 'PT srUSDe Oct', 'PT USDG May',
|
|
11
11
|
];
|
|
12
12
|
export const aaveV3AssetsDefaultMarketOpt = [
|
|
13
13
|
'DAI', 'USDC.e', 'USDT', 'SUSD', 'AAVE', 'LINK', 'WBTC', 'ETH', 'OP', 'wstETH', 'LUSD', 'MAI', 'rETH', 'USDC',
|
|
@@ -15,7 +15,7 @@ export const aaveV3AssetsDefaultMarketOpt = [
|
|
|
15
15
|
export const aaveV3AssetsDefaultMarketArb = ['DAI', 'LINK', 'USDC.e', 'WBTC', 'ETH', 'USDT', 'AAVE', 'EURS', 'wstETH', 'MAI', 'rETH', 'LUSD', 'USDC', 'FRAX', 'ARB', 'weETH', 'GHO', 'ezETH', 'rsETH', 'tBTC'];
|
|
16
16
|
export const aaveV3AssetsDefaultMarketBase = ['ETH', 'cbETH', 'USDbC', 'wstETH', 'USDC', 'weETH', 'cbBTC', 'ezETH', 'GHO', 'wrsETH', 'LBTC', 'EURC', 'AAVE', 'tBTC', 'syrupUSDC'];
|
|
17
17
|
export const aaveV3AssetsDefaultMarketLinea = ['ETH', 'USDC', 'weETH', 'ezETH', 'USDT', 'wstETH', 'wrsETH', 'WBTC', 'mUSD'];
|
|
18
|
-
export const aaveV3AssetsDefaultMarketPlasma = ['ETH', 'USDT', 'sUSDe', 'USDe', 'weETH', 'XAUt', 'PT USDe Jan', 'PT sUSDe Jan', 'wrsETH', 'wstETH', 'syrupUSDT', 'XPL', 'PT USDe Apr', 'PT sUSDe Apr', 'GHO', 'PT sUSDe June', 'PT USDe June'];
|
|
18
|
+
export const aaveV3AssetsDefaultMarketPlasma = ['ETH', 'USDT', 'sUSDe', 'USDe', 'weETH', 'XAUt', 'PT USDe Jan', 'PT sUSDe Jan', 'wrsETH', 'wstETH', 'syrupUSDT', 'XPL', 'PT USDe Apr', 'PT sUSDe Apr', 'GHO', 'PT sUSDe June', 'PT USDe June', 'PT sUSDe Oct'];
|
|
19
19
|
// @dev Keep assets in array, do not assign directly, so we can parse it and edit it programmatically with `scripts/updateMarkets`
|
|
20
20
|
export const aaveV3AssetsDefaultMarket = {
|
|
21
21
|
[NetworkNumber.Eth]: aaveV3AssetsDefaultMarketEth,
|
|
@@ -19,10 +19,10 @@ export const calcLeverageLiqPrice = (leverageType, assetPrice, borrowedUsd, borr
|
|
|
19
19
|
export const calculateBorrowingAssetLimit = (assetBorrowedUsd, borrowLimitUsd) => new Dec(assetBorrowedUsd).div(borrowLimitUsd).times(100).toString();
|
|
20
20
|
export const STABLE_ASSETS = [
|
|
21
21
|
'DAI', 'USDC', 'USDT', 'TUSD', 'USDP', 'GUSD', 'BUSD', 'SUSD', 'FRAX', 'LUSD', 'USDC.e', 'GHO', 'sDAI', 'USDA',
|
|
22
|
-
'USDe', 'sUSDe', 'USDS', 'sUSDS', 'USR', 'EURC', 'BOLD', 'BOLD Legacy', 'RLUSD', 'PT sUSDe July', 'PT eUSDe May',
|
|
22
|
+
'USDe', 'sUSDe', 'srUSDe', 'USDS', 'sUSDS', 'USR', 'EURC', 'BOLD', 'BOLD Legacy', 'RLUSD', 'PT sUSDe July', 'PT eUSDe May',
|
|
23
23
|
'USDtb', 'eUSDe', 'PT USDe July', 'PT eUSDe Aug', 'PT sUSDe Sep', 'PT USDe Sep', 'PT sUSDe Nov', 'PT USDe Nov', 'PT sUSDe Jan', 'PT USDe Jan',
|
|
24
24
|
'PT sUSDe Feb', 'PT USDe Feb', 'PT sUSDe Apr', 'PT USDe Apr', 'PT sUSDe May', 'PT USDe May', 'PT srUSDe Apr', 'frxUSD', 'PT sUSDe June',
|
|
25
|
-
'PT USDe June', 'PT srUSDe Jun', 'PT USDG May', 'PT sUSDS Nov',
|
|
25
|
+
'PT USDe June', 'PT srUSDe Jun', 'PT srUSDe Oct', 'PT USDG May', 'PT sUSDS Nov', 'PT sUSDe Oct',
|
|
26
26
|
];
|
|
27
27
|
export const isLeveragedPos = (usedAssets, dustLimit = 5) => {
|
|
28
28
|
let borrowUnstable = 0;
|
package/esm/staking/staking.js
CHANGED
|
@@ -67,7 +67,7 @@ export const STAKING_ASSETS = [
|
|
|
67
67
|
'ezETH', 'ETHx', 'rsETH', 'pufETH', 'wrsETH', 'wsuperOETHb', 'sUSDS', 'tETH', 'PT sUSDe Sep', 'PT USDe Sep',
|
|
68
68
|
'PT sUSDe Nov', 'PT USDe Nov', 'PT USDe Jan', 'PT sUSDe Jan', 'wrsETH', 'wstETH', 'syrupUSDT', 'syrupUSDC', 'wstUSR',
|
|
69
69
|
'PT sUSDe Feb', 'PT USDe Feb', 'PT sUSDe Apr', 'PT USDe Apr', 'PT sUSDe May', 'PT USDe May', 'PT srUSDe Apr', 'GHO',
|
|
70
|
-
'PT sUSDe June', 'PT USDe June', 'PT srUSDe Jun', 'PT USDG May', 'PT sUSDS Nov',
|
|
70
|
+
'PT sUSDe June', 'PT USDe June', 'PT srUSDe Jun', 'PT srUSDe Oct', 'PT USDG May', 'PT sUSDS Nov', 'PT sUSDe Oct',
|
|
71
71
|
];
|
|
72
72
|
export const getStakingApy = memoize((asset_1, ...args_1) => __awaiter(void 0, [asset_1, ...args_1], void 0, function* (asset, network = NetworkNumber.Eth) {
|
|
73
73
|
try {
|
|
@@ -143,8 +143,12 @@ export const getStakingApy = memoize((asset_1, ...args_1) => __awaiter(void 0, [
|
|
|
143
143
|
return yield getApyFromDfsApi('PT srUSDe Apr', network);
|
|
144
144
|
if (asset === 'PT srUSDe Jun')
|
|
145
145
|
return yield getApyFromDfsApi('PT srUSDe Jun', network);
|
|
146
|
+
if (asset === 'PT srUSDe Oct')
|
|
147
|
+
return yield getApyFromDfsApi('PT srUSDe Oct', network);
|
|
146
148
|
if (asset === 'PT sUSDe June')
|
|
147
149
|
return yield getApyFromDfsApi('PT sUSDe June', network);
|
|
150
|
+
if (asset === 'PT sUSDe Oct')
|
|
151
|
+
return yield getApyFromDfsApi('PT sUSDe Oct', network);
|
|
148
152
|
if (asset === 'PT USDe June')
|
|
149
153
|
return yield getApyFromDfsApi('PT USDe June', network);
|
|
150
154
|
if (asset === 'PT USDG May')
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@defisaver/positions-sdk",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.115",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "./cjs/index.js",
|
|
6
6
|
"module": "./esm/index.js",
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"author": "",
|
|
22
22
|
"license": "ISC",
|
|
23
23
|
"dependencies": {
|
|
24
|
-
"@defisaver/tokens": "
|
|
24
|
+
"@defisaver/tokens": "1.7.38-pt-oct-1-dev",
|
|
25
25
|
"@types/lodash": "^4.17.15",
|
|
26
26
|
"@types/memoizee": "^0.4.12",
|
|
27
27
|
"decimal.js": "^10.6.0",
|
package/src/aaveV3/merkl.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { aprToApy } from '../moneymarket';
|
|
2
|
-
import {
|
|
2
|
+
import { LONGER_TIMEOUT, wethToEth } from '../services/utils';
|
|
3
3
|
import {
|
|
4
4
|
MerkleRewardMap, MerklOpportunity, OpportunityAction, OpportunityStatus,
|
|
5
|
+
EthAddress, NetworkNumber,
|
|
5
6
|
} from '../types';
|
|
6
|
-
import { EthAddress, NetworkNumber } from '../types/common';
|
|
7
7
|
|
|
8
8
|
export const getAaveUnderlyingSymbol = (_symbol = '') => {
|
|
9
9
|
let symbol = _symbol
|
|
@@ -31,8 +31,8 @@ export const formatAaveAsset = (_symbol: string) => {
|
|
|
31
31
|
|
|
32
32
|
export const getMerkleCampaigns = async (chainId: NetworkNumber): Promise<MerkleRewardMap> => {
|
|
33
33
|
try {
|
|
34
|
-
const res = await fetch('https://
|
|
35
|
-
signal: AbortSignal.timeout(
|
|
34
|
+
const res = await fetch('https://fe.defisaver.com/api/merkl/opportunities?mainProtocolId=aave', {
|
|
35
|
+
signal: AbortSignal.timeout(LONGER_TIMEOUT),
|
|
36
36
|
});
|
|
37
37
|
if (!res.ok) throw new Error('Failed to fetch Merkle campaigns');
|
|
38
38
|
const opportunities = await res.json() as MerklOpportunity[];
|
package/src/aaveV4/merkl.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { aprToApy } from '../moneymarket';
|
|
2
|
-
import {
|
|
2
|
+
import { LONGER_TIMEOUT } from '../services/utils';
|
|
3
3
|
import {
|
|
4
4
|
AaveV4MerklRewardMap,
|
|
5
5
|
AaveV4ReserveAssetData,
|
|
@@ -8,8 +8,8 @@ import {
|
|
|
8
8
|
MerklOpportunity,
|
|
9
9
|
OpportunityAction,
|
|
10
10
|
OpportunityStatus,
|
|
11
|
+
NetworkNumber,
|
|
11
12
|
} from '../types';
|
|
12
|
-
import { NetworkNumber } from '../types/common';
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
15
|
* Merkl tags Aave V4 reward campaigns by scope via the `type` field:
|
|
@@ -34,8 +34,8 @@ const buildIncentive = (opportunity: MerklOpportunity): IncentiveData => {
|
|
|
34
34
|
export const getAaveV4MerkleCampaigns = async (chainId: NetworkNumber): Promise<AaveV4MerklRewardMap> => {
|
|
35
35
|
const result: AaveV4MerklRewardMap = { hub: {}, spoke: {} };
|
|
36
36
|
try {
|
|
37
|
-
const res = await fetch('https://
|
|
38
|
-
signal: AbortSignal.timeout(
|
|
37
|
+
const res = await fetch('https://fe.defisaver.com/api/merkl/opportunities?mainProtocolId=aave', {
|
|
38
|
+
signal: AbortSignal.timeout(LONGER_TIMEOUT),
|
|
39
39
|
});
|
|
40
40
|
if (!res.ok) throw new Error('Failed to fetch Aave V4 Merkle campaigns');
|
|
41
41
|
const opportunities = await res.json() as MerklOpportunity[];
|
package/src/claiming/aaveV3.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { Client } from 'viem';
|
|
2
2
|
import Dec from 'decimal.js';
|
|
3
|
-
import { EthAddress, NetworkNumber } from '../types
|
|
3
|
+
import { EthAddress, NetworkNumber } from '../types';
|
|
4
4
|
import { ClaimableToken, ClaimType } from '../types/claiming';
|
|
5
5
|
import {
|
|
6
6
|
AaveIncentiveDataProviderV3ContractViem,
|
|
7
7
|
AaveRewardsControllerViem,
|
|
8
8
|
} from '../contracts';
|
|
9
|
-
import { compareAddresses, getEthAmountForDecimals } from '../services/utils';
|
|
9
|
+
import { compareAddresses, getEthAmountForDecimals, LONGER_TIMEOUT } from '../services/utils';
|
|
10
10
|
import { getAaveUnderlyingSymbol } from '../helpers/aaveHelpers';
|
|
11
11
|
|
|
12
12
|
type AaveReward = {
|
|
@@ -106,8 +106,8 @@ export async function getUnclaimedRewardsForAllMarkets(
|
|
|
106
106
|
export async function getMeritUnclaimedRewards(account: EthAddress, network: NetworkNumber): Promise<ClaimableToken[]> {
|
|
107
107
|
let data;
|
|
108
108
|
try {
|
|
109
|
-
const res = await fetch(`https://
|
|
110
|
-
{ signal: AbortSignal.timeout(
|
|
109
|
+
const res = await fetch(`https://fe.defisaver.com/api/merkl/get-user-rewards/${account}?chainId=${network}`,
|
|
110
|
+
{ signal: AbortSignal.timeout(LONGER_TIMEOUT) });
|
|
111
111
|
data = await res.json();
|
|
112
112
|
} catch (error) {
|
|
113
113
|
console.error('External API Failure: Aave Merit', error);
|
|
@@ -116,6 +116,10 @@ export async function getMeritUnclaimedRewards(account: EthAddress, network: Net
|
|
|
116
116
|
|
|
117
117
|
const claimableTokens: ClaimableToken[] = [];
|
|
118
118
|
|
|
119
|
+
// Merkl (or our proxy, on a non-2xx) can return a non-array error body; `fetch` doesn't throw on
|
|
120
|
+
// HTTP errors, so guard before iterating. Mirrors the app-side getMeritUnclaimedRewards.
|
|
121
|
+
if (!Array.isArray(data)) return claimableTokens;
|
|
122
|
+
|
|
119
123
|
data.forEach((item: { rewards: any[]; }) => {
|
|
120
124
|
item.rewards.forEach(reward => {
|
|
121
125
|
const {
|
|
@@ -10,7 +10,7 @@ export const aaveV2AssetsDefaultMarket = ['USDT', 'WBTC', 'ETH', 'YFI', 'ZRX', '
|
|
|
10
10
|
|
|
11
11
|
export const aaveV3AssetsDefaultMarketEth = [
|
|
12
12
|
'ETH', 'wstETH', 'WBTC', 'USDC', 'DAI', 'LINK', 'AAVE', 'cbETH', 'USDT', 'rETH', 'LUSD', 'CRV', 'MKR', 'SNX', 'BAL', 'UNI', 'LDO', 'ENS', '1INCH', 'FRAX', 'GHO', 'RPL', 'sDAI', 'STG', 'KNC', 'FXS', 'crvUSD', 'PYUSD', 'weETH', 'osETH', 'USDe', 'ETHx', 'sUSDe', 'tBTC', 'cbBTC', 'USDS', 'rsETH', 'LBTC', 'eBTC', 'RLUSD', 'PT eUSDe May', 'PT sUSDe July', 'USDtb',
|
|
13
|
-
'eUSDe', 'PT USDe July', 'PT eUSDe Aug', 'EURC', 'FBTC', 'PT sUSDe Sep', 'PT USDe Sep', 'tETH', 'ezETH', 'XAUt', 'PT sUSDe Nov', 'PT USDe Nov', 'PT sUSDe Feb', 'PT USDe Feb', 'mUSD', 'syrupUSDT', 'USDG', 'PT sUSDe May', 'PT USDe May', 'PT srUSDe Apr', 'PT srUSDe Jun', 'PT USDG May',
|
|
13
|
+
'eUSDe', 'PT USDe July', 'PT eUSDe Aug', 'EURC', 'FBTC', 'PT sUSDe Sep', 'PT USDe Sep', 'tETH', 'ezETH', 'XAUt', 'PT sUSDe Nov', 'PT USDe Nov', 'PT sUSDe Feb', 'PT USDe Feb', 'mUSD', 'syrupUSDT', 'USDG', 'PT sUSDe May', 'PT USDe May', 'PT srUSDe Apr', 'PT srUSDe Jun', 'PT srUSDe Oct', 'PT USDG May',
|
|
14
14
|
];
|
|
15
15
|
export const aaveV3AssetsDefaultMarketOpt = [
|
|
16
16
|
'DAI', 'USDC.e', 'USDT', 'SUSD', 'AAVE', 'LINK', 'WBTC', 'ETH', 'OP', 'wstETH', 'LUSD', 'MAI', 'rETH', 'USDC',
|
|
@@ -20,7 +20,7 @@ export const aaveV3AssetsDefaultMarketBase = ['ETH', 'cbETH', 'USDbC', 'wstETH',
|
|
|
20
20
|
|
|
21
21
|
export const aaveV3AssetsDefaultMarketLinea = ['ETH', 'USDC', 'weETH', 'ezETH', 'USDT', 'wstETH', 'wrsETH', 'WBTC', 'mUSD'];
|
|
22
22
|
|
|
23
|
-
export const aaveV3AssetsDefaultMarketPlasma = ['ETH', 'USDT', 'sUSDe', 'USDe', 'weETH', 'XAUt', 'PT USDe Jan', 'PT sUSDe Jan', 'wrsETH', 'wstETH', 'syrupUSDT', 'XPL', 'PT USDe Apr', 'PT sUSDe Apr', 'GHO', 'PT sUSDe June', 'PT USDe June'];
|
|
23
|
+
export const aaveV3AssetsDefaultMarketPlasma = ['ETH', 'USDT', 'sUSDe', 'USDe', 'weETH', 'XAUt', 'PT USDe Jan', 'PT sUSDe Jan', 'wrsETH', 'wstETH', 'syrupUSDT', 'XPL', 'PT USDe Apr', 'PT sUSDe Apr', 'GHO', 'PT sUSDe June', 'PT USDe June', 'PT sUSDe Oct'];
|
|
24
24
|
|
|
25
25
|
// @dev Keep assets in array, do not assign directly, so we can parse it and edit it programmatically with `scripts/updateMarkets`
|
|
26
26
|
export const aaveV3AssetsDefaultMarket = {
|
|
@@ -22,10 +22,10 @@ export const calculateBorrowingAssetLimit = (assetBorrowedUsd: string, borrowLim
|
|
|
22
22
|
|
|
23
23
|
export const STABLE_ASSETS = [
|
|
24
24
|
'DAI', 'USDC', 'USDT', 'TUSD', 'USDP', 'GUSD', 'BUSD', 'SUSD', 'FRAX', 'LUSD', 'USDC.e', 'GHO', 'sDAI', 'USDA',
|
|
25
|
-
'USDe', 'sUSDe', 'USDS', 'sUSDS', 'USR', 'EURC', 'BOLD', 'BOLD Legacy', 'RLUSD', 'PT sUSDe July', 'PT eUSDe May',
|
|
25
|
+
'USDe', 'sUSDe', 'srUSDe', 'USDS', 'sUSDS', 'USR', 'EURC', 'BOLD', 'BOLD Legacy', 'RLUSD', 'PT sUSDe July', 'PT eUSDe May',
|
|
26
26
|
'USDtb', 'eUSDe', 'PT USDe July', 'PT eUSDe Aug', 'PT sUSDe Sep', 'PT USDe Sep', 'PT sUSDe Nov', 'PT USDe Nov', 'PT sUSDe Jan', 'PT USDe Jan',
|
|
27
27
|
'PT sUSDe Feb', 'PT USDe Feb', 'PT sUSDe Apr', 'PT USDe Apr', 'PT sUSDe May', 'PT USDe May', 'PT srUSDe Apr', 'frxUSD', 'PT sUSDe June',
|
|
28
|
-
'PT USDe June', 'PT srUSDe Jun', 'PT USDG May', 'PT sUSDS Nov',
|
|
28
|
+
'PT USDe June', 'PT srUSDe Jun', 'PT srUSDe Oct', 'PT USDG May', 'PT sUSDS Nov', 'PT sUSDe Oct',
|
|
29
29
|
];
|
|
30
30
|
|
|
31
31
|
export const isLeveragedPos = (usedAssets: MMUsedAssets, dustLimit = 5) => {
|
package/src/staking/staking.ts
CHANGED
|
@@ -65,7 +65,7 @@ export const STAKING_ASSETS = [
|
|
|
65
65
|
'ezETH', 'ETHx', 'rsETH', 'pufETH', 'wrsETH', 'wsuperOETHb', 'sUSDS', 'tETH', 'PT sUSDe Sep', 'PT USDe Sep',
|
|
66
66
|
'PT sUSDe Nov', 'PT USDe Nov', 'PT USDe Jan', 'PT sUSDe Jan', 'wrsETH', 'wstETH', 'syrupUSDT', 'syrupUSDC', 'wstUSR',
|
|
67
67
|
'PT sUSDe Feb', 'PT USDe Feb', 'PT sUSDe Apr', 'PT USDe Apr', 'PT sUSDe May', 'PT USDe May', 'PT srUSDe Apr', 'GHO',
|
|
68
|
-
'PT sUSDe June', 'PT USDe June', 'PT srUSDe Jun', 'PT USDG May', 'PT sUSDS Nov',
|
|
68
|
+
'PT sUSDe June', 'PT USDe June', 'PT srUSDe Jun', 'PT srUSDe Oct', 'PT USDG May', 'PT sUSDS Nov', 'PT sUSDe Oct',
|
|
69
69
|
];
|
|
70
70
|
|
|
71
71
|
export const getStakingApy = memoize(async (asset: string, network: number = NetworkNumber.Eth) => {
|
|
@@ -106,7 +106,9 @@ export const getStakingApy = memoize(async (asset: string, network: number = Net
|
|
|
106
106
|
if (asset === 'PT USDe May') return await getApyFromDfsApi('PT USDe May', network);
|
|
107
107
|
if (asset === 'PT srUSDe Apr') return await getApyFromDfsApi('PT srUSDe Apr', network);
|
|
108
108
|
if (asset === 'PT srUSDe Jun') return await getApyFromDfsApi('PT srUSDe Jun', network);
|
|
109
|
+
if (asset === 'PT srUSDe Oct') return await getApyFromDfsApi('PT srUSDe Oct', network);
|
|
109
110
|
if (asset === 'PT sUSDe June') return await getApyFromDfsApi('PT sUSDe June', network);
|
|
111
|
+
if (asset === 'PT sUSDe Oct') return await getApyFromDfsApi('PT sUSDe Oct', network);
|
|
110
112
|
if (asset === 'PT USDe June') return await getApyFromDfsApi('PT USDe June', network);
|
|
111
113
|
if (asset === 'PT USDG May') return await getApyFromDfsApi('PT USDG May', network);
|
|
112
114
|
if (asset === 'PT sUSDS Nov') return await getApyFromDfsApi('PT sUSDS Nov', network);
|