@curvefi/api 2.2.0 → 2.2.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/README.md +2 -0
- package/lib/constants/aliases.js +1 -1
- package/lib/constants/coins/avalanche.js +1 -0
- package/lib/constants/pools/avalanche.js +6 -6
- package/lib/constants/pools/ethereum.js +0 -1
- package/lib/pools/PoolTemplate.d.ts +1 -0
- package/lib/pools/PoolTemplate.js +21 -18
- package/lib/utils.js +6 -2
- package/package.json +1 -1
package/README.md
CHANGED
package/lib/constants/aliases.js
CHANGED
|
@@ -27,7 +27,7 @@ exports.ALIASES_POLYGON = (0, utils_1.lowerCaseValues)({
|
|
|
27
27
|
"registry_exchange": "",
|
|
28
28
|
});
|
|
29
29
|
exports.ALIASES_AVALANCHE = (0, utils_1.lowerCaseValues)({
|
|
30
|
-
"crv": "
|
|
30
|
+
"crv": "0x47536F17F4fF30e64A96a7555826b8f9e66ec468",
|
|
31
31
|
"minter": "0xd061D61a4d941c39E5453435B6345Dc261C2fcE0",
|
|
32
32
|
"voting_escrow": "0x5f3b5DfEb7B28CDbD7FAba78963EE202a494e2A2",
|
|
33
33
|
"gauge_controller": "0x2F50D538606Fa9EDD2B11E2446BEb18C9D5846bB",
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.aTokensAvalanche = exports.ycTokensAvalanche = exports.yTokensAvalanche = exports.cTokensAvalanche = exports.COINS_AVALANCHE = void 0;
|
|
4
4
|
var utils_1 = require("../utils");
|
|
5
5
|
exports.COINS_AVALANCHE = (0, utils_1.lowerCaseValues)({
|
|
6
|
+
'crv': '0x47536F17F4fF30e64A96a7555826b8f9e66ec468',
|
|
6
7
|
'crv.e': '0x249848BeCA43aC405b8102Ec90Dd5F22CA513c06',
|
|
7
8
|
// --- USD ---
|
|
8
9
|
'dai.e': '0xd586E7F844cEa2F87f50152665BCbc2C279D8d70',
|
|
@@ -20,7 +20,7 @@ exports.POOLS_DATA_AVALANCHE = (0, utils_1.lowerCasePoolDataAddresses)({
|
|
|
20
20
|
swap_address: '0x7f90122BF0700F9E7e1F688fe926940E8839F353',
|
|
21
21
|
token_address: '0x1337BedC9D22ecbe766dF105c9623922A27963EC',
|
|
22
22
|
gauge_address: '0x5B5CFE992AdAC0C9D48E05854B2d91C73a003858',
|
|
23
|
-
|
|
23
|
+
reward_contract: '0xB504b6EB06760019801a91B451d3f7BD9f027fC9',
|
|
24
24
|
is_lending: true,
|
|
25
25
|
underlying_coins: ['DAI.e', 'USDC.e', 'USDT.e'],
|
|
26
26
|
wrapped_coins: ['avDAI', 'avUSDC', 'avUSDT'],
|
|
@@ -37,7 +37,7 @@ exports.POOLS_DATA_AVALANCHE = (0, utils_1.lowerCasePoolDataAddresses)({
|
|
|
37
37
|
underlying_decimals: [18, 6, 6],
|
|
38
38
|
wrapped_decimals: [18, 6, 6],
|
|
39
39
|
use_lending: [true, true, true],
|
|
40
|
-
reward_tokens: ["
|
|
40
|
+
reward_tokens: ["0x47536F17F4fF30e64A96a7555826b8f9e66ec468"],
|
|
41
41
|
reward_decimals: [18],
|
|
42
42
|
swap_abi: swap_json_1.default,
|
|
43
43
|
gauge_abi: gauge_rewards_only_json_1.default,
|
|
@@ -51,7 +51,7 @@ exports.POOLS_DATA_AVALANCHE = (0, utils_1.lowerCasePoolDataAddresses)({
|
|
|
51
51
|
swap_address: '0x16a7DA911A4DD1d83F3fF066fE28F3C792C50d90',
|
|
52
52
|
token_address: '0xC2b1DF84112619D190193E48148000e3990Bf627',
|
|
53
53
|
gauge_address: '0x0f9cb53Ebe405d49A0bbdBD291A65Ff571bC83e1',
|
|
54
|
-
|
|
54
|
+
reward_contract: '0x75D05190f35567e79012c2F0a02330D3Ed8a1F74',
|
|
55
55
|
is_lending: true,
|
|
56
56
|
underlying_coins: ['WBTC.e', 'renBTC'],
|
|
57
57
|
wrapped_coins: ['avWBTC', 'renBTC'],
|
|
@@ -66,7 +66,7 @@ exports.POOLS_DATA_AVALANCHE = (0, utils_1.lowerCasePoolDataAddresses)({
|
|
|
66
66
|
underlying_decimals: [8, 8],
|
|
67
67
|
wrapped_decimals: [8, 8],
|
|
68
68
|
use_lending: [true, false],
|
|
69
|
-
reward_tokens: ["
|
|
69
|
+
reward_tokens: ["0x47536F17F4fF30e64A96a7555826b8f9e66ec468"],
|
|
70
70
|
reward_decimals: [18],
|
|
71
71
|
swap_abi: swap_json_2.default,
|
|
72
72
|
gauge_abi: gauge_rewards_only_json_1.default,
|
|
@@ -81,7 +81,7 @@ exports.POOLS_DATA_AVALANCHE = (0, utils_1.lowerCasePoolDataAddresses)({
|
|
|
81
81
|
token_address: '0x1daB6560494B04473A0BE3E7D83CF3Fdf3a51828',
|
|
82
82
|
gauge_address: '0x445FE580eF8d70FF569aB36e80c647af338db351',
|
|
83
83
|
deposit_address: '0x58e57cA18B7A47112b877E31929798Cd3D703b0f',
|
|
84
|
-
|
|
84
|
+
reward_contract: '0xa05E565cA0a103FcD999c7A7b8de7Bd15D5f6505',
|
|
85
85
|
is_meta: true,
|
|
86
86
|
is_crypto: true,
|
|
87
87
|
is_fake: true,
|
|
@@ -103,7 +103,7 @@ exports.POOLS_DATA_AVALANCHE = (0, utils_1.lowerCasePoolDataAddresses)({
|
|
|
103
103
|
underlying_decimals: [18, 6, 6, 8, 18],
|
|
104
104
|
wrapped_decimals: [18, 8, 18],
|
|
105
105
|
use_lending: [false, false, false, false, false],
|
|
106
|
-
reward_tokens: ["
|
|
106
|
+
reward_tokens: ["0x47536F17F4fF30e64A96a7555826b8f9e66ec468"],
|
|
107
107
|
reward_decimals: [18],
|
|
108
108
|
swap_abi: swap_json_3.default,
|
|
109
109
|
gauge_abi: gauge_rewards_only_json_1.default,
|
|
@@ -1190,7 +1190,6 @@ exports.POOLS_DATA_ETHEREUM = (0, utils_1.lowerCasePoolDataAddresses)({
|
|
|
1190
1190
|
token_address: '0x5a6A4D54456819380173272A5E8E9B9904BdF41B',
|
|
1191
1191
|
gauge_address: '0xd8b712d29381748dB89c36BCa0138d7c75866ddF',
|
|
1192
1192
|
deposit_address: '0xA79828DF1850E8a3A3064576f380D90aECDD3359',
|
|
1193
|
-
sCurveRewards_address: '0xb76256d1091e93976c61449d6e500d9f46d827d4',
|
|
1194
1193
|
is_meta: true,
|
|
1195
1194
|
base_pool: '3pool',
|
|
1196
1195
|
underlying_coins: ['MIM', 'DAI', 'USDC', 'USDT'],
|
|
@@ -232,7 +232,7 @@ var PoolTemplate = /** @class */ (function () {
|
|
|
232
232
|
return __generator(this, function (_k) {
|
|
233
233
|
switch (_k.label) {
|
|
234
234
|
case 0:
|
|
235
|
-
if (!(curve_1.curve.chainId
|
|
235
|
+
if (![137, 43114].includes(curve_1.curve.chainId)) return [3 /*break*/, 8];
|
|
236
236
|
apy = [];
|
|
237
237
|
_i = 0, _a = this.rewardTokens;
|
|
238
238
|
_k.label = 1;
|
|
@@ -637,6 +637,7 @@ var PoolTemplate = /** @class */ (function () {
|
|
|
637
637
|
this.lpToken = poolData.token_address;
|
|
638
638
|
this.gauge = poolData.gauge_address;
|
|
639
639
|
this.zap = poolData.deposit_address || null;
|
|
640
|
+
this.sRewardContract = poolData.sCurveRewards_address || null;
|
|
640
641
|
this.rewardContract = poolData.reward_contract || null;
|
|
641
642
|
this.isPlain = poolData.is_plain || false;
|
|
642
643
|
this.isLending = poolData.is_lending || false;
|
|
@@ -1144,9 +1145,9 @@ var PoolTemplate = /** @class */ (function () {
|
|
|
1144
1145
|
PoolTemplate.prototype.claimableRewards = function (address) {
|
|
1145
1146
|
if (address === void 0) { address = ""; }
|
|
1146
1147
|
return __awaiter(this, void 0, void 0, function () {
|
|
1147
|
-
var gaugeContract, rewards, _i, _a, rewardToken, rewardTokenContract, symbol, decimals, method, amount, _c, _d, rewardToken, rewardTokenContract, symbol, decimals,
|
|
1148
|
-
return __generator(this, function (
|
|
1149
|
-
switch (
|
|
1148
|
+
var gaugeContract, rewards, _i, _a, rewardToken, rewardTokenContract, symbol, decimals, method, amount, _c, _d, rewardToken, rewardTokenContract, symbol, decimals, _totalAmount, _claimedAmount;
|
|
1149
|
+
return __generator(this, function (_e) {
|
|
1150
|
+
switch (_e.label) {
|
|
1150
1151
|
case 0:
|
|
1151
1152
|
if (this.gauge === ethers_1.ethers.constants.AddressZero) {
|
|
1152
1153
|
throw Error("claimableRewards method doesn't exist for pool ".concat(this.name, " (id: ").concat(this.name, "). There is no gauge"));
|
|
@@ -1158,53 +1159,55 @@ var PoolTemplate = /** @class */ (function () {
|
|
|
1158
1159
|
rewards = [];
|
|
1159
1160
|
if (!('claimable_reward(address,address)' in gaugeContract)) return [3 /*break*/, 7];
|
|
1160
1161
|
_i = 0, _a = this.rewardTokens;
|
|
1161
|
-
|
|
1162
|
+
_e.label = 1;
|
|
1162
1163
|
case 1:
|
|
1163
1164
|
if (!(_i < _a.length)) return [3 /*break*/, 6];
|
|
1164
1165
|
rewardToken = _a[_i];
|
|
1165
1166
|
rewardTokenContract = curve_1.curve.contracts[rewardToken].contract;
|
|
1166
1167
|
return [4 /*yield*/, rewardTokenContract.symbol()];
|
|
1167
1168
|
case 2:
|
|
1168
|
-
symbol =
|
|
1169
|
+
symbol = _e.sent();
|
|
1169
1170
|
return [4 /*yield*/, rewardTokenContract.decimals()];
|
|
1170
1171
|
case 3:
|
|
1171
|
-
decimals =
|
|
1172
|
+
decimals = _e.sent();
|
|
1172
1173
|
method = curve_1.curve.chainId === 1 ? "claimable_reward" : "claimable_reward_write";
|
|
1173
1174
|
_d = (_c = ethers_1.ethers.utils).formatUnits;
|
|
1174
1175
|
return [4 /*yield*/, gaugeContract[method](address, rewardToken, curve_1.curve.constantOptions)];
|
|
1175
1176
|
case 4:
|
|
1176
|
-
amount = _d.apply(_c, [
|
|
1177
|
+
amount = _d.apply(_c, [_e.sent(), decimals]);
|
|
1177
1178
|
rewards.push({
|
|
1178
1179
|
token: rewardToken,
|
|
1179
1180
|
symbol: symbol,
|
|
1180
1181
|
amount: amount,
|
|
1181
1182
|
});
|
|
1182
|
-
|
|
1183
|
+
_e.label = 5;
|
|
1183
1184
|
case 5:
|
|
1184
1185
|
_i++;
|
|
1185
1186
|
return [3 /*break*/, 1];
|
|
1186
|
-
case 6: return [3 /*break*/,
|
|
1187
|
+
case 6: return [3 /*break*/, 12];
|
|
1187
1188
|
case 7:
|
|
1188
|
-
if (!('claimable_reward(address)' in gaugeContract && this.rewardTokens.length > 0)) return [3 /*break*/,
|
|
1189
|
+
if (!('claimable_reward(address)' in gaugeContract && this.rewardTokens.length > 0)) return [3 /*break*/, 12];
|
|
1189
1190
|
rewardToken = this.rewardTokens[0];
|
|
1190
1191
|
rewardTokenContract = curve_1.curve.contracts[rewardToken].contract;
|
|
1191
1192
|
return [4 /*yield*/, rewardTokenContract.symbol()];
|
|
1192
1193
|
case 8:
|
|
1193
|
-
symbol =
|
|
1194
|
+
symbol = _e.sent();
|
|
1194
1195
|
return [4 /*yield*/, rewardTokenContract.decimals()];
|
|
1195
1196
|
case 9:
|
|
1196
|
-
decimals =
|
|
1197
|
-
_f = (_e = ethers_1.ethers.utils).formatUnits;
|
|
1197
|
+
decimals = _e.sent();
|
|
1198
1198
|
return [4 /*yield*/, gaugeContract.claimable_reward(address, curve_1.curve.constantOptions)];
|
|
1199
1199
|
case 10:
|
|
1200
|
-
|
|
1200
|
+
_totalAmount = _e.sent();
|
|
1201
|
+
return [4 /*yield*/, gaugeContract.claimed_rewards_for(address, curve_1.curve.constantOptions)];
|
|
1202
|
+
case 11:
|
|
1203
|
+
_claimedAmount = _e.sent();
|
|
1201
1204
|
rewards.push({
|
|
1202
1205
|
token: rewardToken,
|
|
1203
1206
|
symbol: symbol,
|
|
1204
|
-
amount:
|
|
1207
|
+
amount: ethers_1.ethers.utils.formatUnits(_totalAmount.sub(_claimedAmount), decimals),
|
|
1205
1208
|
});
|
|
1206
|
-
|
|
1207
|
-
case
|
|
1209
|
+
_e.label = 12;
|
|
1210
|
+
case 12: return [2 /*return*/, rewards];
|
|
1208
1211
|
}
|
|
1209
1212
|
});
|
|
1210
1213
|
});
|
package/lib/utils.js
CHANGED
|
@@ -470,12 +470,16 @@ var _getUsdRate = function (assetId) { return __awaiter(void 0, void 0, void 0,
|
|
|
470
470
|
}[assetId] || assetId;
|
|
471
471
|
assetId = (0, exports.isEth)(assetId) ? nativeTokenName : assetId.toLowerCase();
|
|
472
472
|
// No EURT on Coingecko Polygon
|
|
473
|
-
if (assetId.toLowerCase() === curve_1.curve.constants.COINS.eurt
|
|
473
|
+
if (curve_1.curve.chainId === 137 && assetId.toLowerCase() === curve_1.curve.constants.COINS.eurt) {
|
|
474
474
|
chainName = 'ethereum';
|
|
475
475
|
assetId = '0xC581b735A1688071A1746c968e0798D642EDE491'.toLowerCase(); // EURT Ethereum
|
|
476
476
|
}
|
|
477
|
+
// CRV
|
|
478
|
+
if (assetId.toLowerCase() === curve_1.curve.constants.ALIASES.crv) {
|
|
479
|
+
assetId = 'curve-dao-token';
|
|
480
|
+
}
|
|
477
481
|
if (!((((_a = _usdRatesCache[assetId]) === null || _a === void 0 ? void 0 : _a.time) || 0) + 600000 < Date.now())) return [3 /*break*/, 3];
|
|
478
|
-
url = [nativeTokenName, 'bitcoin', 'link'].includes(assetId.toLowerCase()) ?
|
|
482
|
+
url = [nativeTokenName, 'bitcoin', 'link', 'curve-dao-token'].includes(assetId.toLowerCase()) ?
|
|
479
483
|
"https://api.coingecko.com/api/v3/simple/price?ids=".concat(assetId, "&vs_currencies=usd") :
|
|
480
484
|
"https://api.coingecko.com/api/v3/simple/token_price/".concat(chainName, "?contract_addresses=").concat(assetId, "&vs_currencies=usd");
|
|
481
485
|
return [4 /*yield*/, axios_1.default.get(url)];
|