@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 CHANGED
@@ -284,6 +284,8 @@ import curve from "@curvefi/api";
284
284
  // 0xdc69d4cb5b86388fff0b51885677e258883534ae
285
285
  pool.zap;
286
286
  // 0xa79828df1850e8a3a3064576f380d90aecdd3359
287
+ pool.sRewardContract;
288
+ // null
287
289
  pool.rewardContract;
288
290
  // null
289
291
  pool.isPlain;
@@ -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": "0x249848BeCA43aC405b8102Ec90Dd5F22CA513c06",
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
- sCurveRewards_address: '0xB504b6EB06760019801a91B451d3f7BD9f027fC9',
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: ["0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7"],
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
- sCurveRewards_address: '0x75D05190f35567e79012c2F0a02330D3Ed8a1F74',
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: ["0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7"],
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
- sCurveRewards_address: '0xa05E565cA0a103FcD999c7A7b8de7Bd15D5f6505',
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: ["0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7"],
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'],
@@ -9,6 +9,7 @@ export declare class PoolTemplate {
9
9
  lpToken: string;
10
10
  gauge: string;
11
11
  zap: string | null;
12
+ sRewardContract: string | null;
12
13
  rewardContract: string | null;
13
14
  isPlain: boolean;
14
15
  isLending: boolean;
@@ -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 === 137)) return [3 /*break*/, 8];
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, amount, _e, _f;
1148
- return __generator(this, function (_g) {
1149
- switch (_g.label) {
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
- _g.label = 1;
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 = _g.sent();
1169
+ symbol = _e.sent();
1169
1170
  return [4 /*yield*/, rewardTokenContract.decimals()];
1170
1171
  case 3:
1171
- decimals = _g.sent();
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, [_g.sent(), decimals]);
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
- _g.label = 5;
1183
+ _e.label = 5;
1183
1184
  case 5:
1184
1185
  _i++;
1185
1186
  return [3 /*break*/, 1];
1186
- case 6: return [3 /*break*/, 11];
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*/, 11];
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 = _g.sent();
1194
+ symbol = _e.sent();
1194
1195
  return [4 /*yield*/, rewardTokenContract.decimals()];
1195
1196
  case 9:
1196
- decimals = _g.sent();
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
- amount = _f.apply(_e, [_g.sent(), decimals]);
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: amount,
1207
+ amount: ethers_1.ethers.utils.formatUnits(_totalAmount.sub(_claimedAmount), decimals),
1205
1208
  });
1206
- _g.label = 11;
1207
- case 11: return [2 /*return*/, rewards];
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.toLowerCase()) {
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)];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@curvefi/api",
3
- "version": "2.2.0",
3
+ "version": "2.2.1",
4
4
  "description": "JavaScript library for curve.fi",
5
5
  "main": "lib/index.js",
6
6
  "author": "Macket",