@aurigami/sdk 0.3.2 → 0.4.0

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/dist/sdk.esm.js CHANGED
@@ -1,10 +1,12 @@
1
1
  import { Signer } from '@ethersproject/abstract-signer';
2
2
  import BigNumber from 'bignumber.js';
3
+ import { config } from 'dotenv';
3
4
  import { BigNumber as BigNumber$1, utils, Contract, ethers as ethers$1 } from 'ethers';
4
5
  import AuErc20ABI from '@aurigami/contracts/artifacts/contracts/AuErc20.sol/AuErc20.json';
5
6
  import AuETHABI from '@aurigami/contracts/artifacts/contracts/AuETH.sol/AuETH.json';
6
7
  import ComptrollerABI from '@aurigami/contracts/artifacts/contracts/Comptroller.sol/Comptroller.json';
7
8
  import AuriLensABI from '@aurigami/contracts/artifacts/contracts/AuriLens.sol/AuriLens.json';
9
+ import axios from 'axios';
8
10
  import TokenLockABI from '@aurigami/contracts/artifacts/contracts/TokenLock.sol/TokenLock.json';
9
11
  import AuriFairLaunchABI from '@aurigami/contracts/artifacts/contracts/AuriFairLaunch.sol/AuriFairLaunch.json';
10
12
 
@@ -891,10 +893,10 @@ var BlockchainEntity = /*#__PURE__*/function () {
891
893
  }();
892
894
 
893
895
  var ethers = /*#__PURE__*/require('ethers');
894
-
896
+ config();
895
897
  var AVAX_DEFAULT_PROVIDER_URL = 'https://api.avax.network/ext/bc/C/rpc';
896
898
  var AVAX_DEFAULT_PROVIDER = /*#__PURE__*/new ethers.providers.JsonRpcProvider(AVAX_DEFAULT_PROVIDER_URL);
897
- var AURORA_DEFAULT_PROVIDER_URL = "https://mainnet.aurora.dev";
899
+ var AURORA_DEFAULT_PROVIDER_URL = "https://mainnet.aurora.dev/" + process.env.AURORA_API_KEY;
898
900
  var AURORA_DEFAULT_PROVIDER = /*#__PURE__*/new ethers.providers.JsonRpcProvider(AURORA_DEFAULT_PROVIDER_URL);
899
901
  var dummyAddress = "0xDEADbeEfEEeEEEeEEEeEEeeeeeEeEEeeeeEEEEeE";
900
902
  var ETHAddress = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE";
@@ -2005,14 +2007,6 @@ var IUniswapV2PairABI = {
2005
2007
  deployedLinkReferences: deployedLinkReferences
2006
2008
  };
2007
2009
 
2008
- var abi$2 = [
2009
- ];
2010
- var dummyABI = {
2011
- abi: abi$2
2012
- };
2013
-
2014
- var axios = /*#__PURE__*/require('axios');
2015
-
2016
2010
  function fetchPriceFromCoingeckoAPI(_x) {
2017
2011
  return _fetchPriceFromCoingeckoAPI.apply(this, arguments);
2018
2012
  }
@@ -2210,7 +2204,7 @@ function _fetchUnderlyingTokensPrices() {
2210
2204
  while (1) {
2211
2205
  switch (_context6.prev = _context6.next) {
2212
2206
  case 0:
2213
- auriLens = new Contract(networkAddresses.misc.AURILENS, dummyABI.abi, provider);
2207
+ auriLens = new Contract(networkAddresses.misc.AURILENS, AuriLensABI.abi, provider);
2214
2208
  auTokenAddresses = networkAddresses.auTokens.map(function (auToken) {
2215
2209
  return auToken.address;
2216
2210
  });
@@ -2952,11 +2946,10 @@ var SdkRead = /*#__PURE__*/function (_BlockchainEntityRead) {
2952
2946
  while (1) {
2953
2947
  switch (_context.prev = _context.next) {
2954
2948
  case 0:
2955
- console.log(this._networkConnection.provider);
2956
- _context.next = 3;
2949
+ _context.next = 2;
2957
2950
  return getCurrentTimestamp(this._networkConnection.provider);
2958
2951
 
2959
- case 3:
2952
+ case 2:
2960
2953
  currentTime = _context.sent;
2961
2954
  currentWeek = BigNumber$1.from(currentTime - REWARDCLAIMSTART).div(7 * ONE_DAY).toNumber();
2962
2955
  denominator = 10000;
@@ -2965,14 +2958,14 @@ var SdkRead = /*#__PURE__*/function (_BlockchainEntityRead) {
2965
2958
  promises.push(this._tokenLock.percentageLock(currentWeek + 1)["catch"](function (err) {
2966
2959
  return denominator;
2967
2960
  }));
2968
- _context.next = 11;
2961
+ _context.next = 10;
2969
2962
  return Promise.all(promises).then(function (res) {
2970
2963
  return res.map(function (v) {
2971
2964
  return v.toString();
2972
2965
  });
2973
2966
  });
2974
2967
 
2975
- case 11:
2968
+ case 10:
2976
2969
  values = _context.sent;
2977
2970
  return _context.abrupt("return", {
2978
2971
  vestingStart: REWARDCLAIMSTART,
@@ -2980,7 +2973,7 @@ var SdkRead = /*#__PURE__*/function (_BlockchainEntityRead) {
2980
2973
  nextUnlockPortion: new BigNumber(denominator).minus(values[1]).div(denominator).toNumber()
2981
2974
  });
2982
2975
 
2983
- case 13:
2976
+ case 12:
2984
2977
  case "end":
2985
2978
  return _context.stop();
2986
2979
  }
@@ -2999,7 +2992,7 @@ var SdkRead = /*#__PURE__*/function (_BlockchainEntityRead) {
2999
2992
  var _getUserDetails = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee2(userAddress) {
3000
2993
  var _this2 = this;
3001
2994
 
3002
- var marketCount, userMarketDetails, assetsIn, collateralRatio, promises, totalBorrowLimit, pricePromises, _loop2, _iterator, _step, underlyingPrices, depositValuationPromises, _loop, i, depositValues, accountLiquidity, rewardBalancesMetadata, lockedAmount, values, borrowedvaluation, bufferedBorrowLimit, borrowableAmount, auToken, moneyMarket;
2995
+ var marketCount, userMarketDetails, assetsIn, promises, totalBorrowLimit, pricePromises, _loop2, _iterator, _step, underlyingPrices, depositValuationPromises, _loop, i, depositValues, accountLiquidity, rewardBalancesMetadata, lockedAmount, values, borrowedvaluation, bufferedBorrowLimit, minimumBorrowLimitAllowed, borrowableAmount, auToken, moneyMarket, maxWithdrawCap;
3003
2996
 
3004
2997
  return runtime_1.wrap(function _callee2$(_context2) {
3005
2998
  while (1) {
@@ -3007,7 +3000,6 @@ var SdkRead = /*#__PURE__*/function (_BlockchainEntityRead) {
3007
3000
  case 0:
3008
3001
  marketCount = networkAddresses.auTokens.length;
3009
3002
  userMarketDetails = [];
3010
- collateralRatio = new Array(marketCount);
3011
3003
  promises = [];
3012
3004
  totalBorrowLimit = new BigNumber(0);
3013
3005
  pricePromises = [];
@@ -3025,9 +3017,12 @@ var SdkRead = /*#__PURE__*/function (_BlockchainEntityRead) {
3025
3017
  userMarketDetail.borrowBalance = res;
3026
3018
  }));
3027
3019
  promises.push(moneyMarket.getCollateralRatio().then(function (res) {
3028
- collateralRatio[i] = res;
3020
+ userMarketDetail.collateralRatio = res.toNumber();
3021
+ }));
3022
+ pricePromises.push(fetchPrice(moneyMarket.underlying.address, _this2._networkConnection.provider).then(function (res) {
3023
+ userMarketDetail.underlyingPrice = res.toString();
3024
+ return res;
3029
3025
  }));
3030
- pricePromises.push(fetchPrice(moneyMarket.underlying.address, _this2._networkConnection.provider));
3031
3026
  };
3032
3027
 
3033
3028
  for (_iterator = _createForOfIteratorHelperLoose(networkAddresses.auTokens); !(_step = _iterator()).done;) {
@@ -3037,24 +3032,26 @@ var SdkRead = /*#__PURE__*/function (_BlockchainEntityRead) {
3037
3032
  promises.push(this._comptroller.getAssetsIn(userAddress).then(function (res) {
3038
3033
  assetsIn = res;
3039
3034
  }));
3040
- _context2.next = 11;
3035
+ _context2.next = 10;
3041
3036
  return Promise.all(promises);
3042
3037
 
3043
- case 11:
3044
- _context2.next = 13;
3038
+ case 10:
3039
+ _context2.next = 12;
3045
3040
  return Promise.all(pricePromises);
3046
3041
 
3047
- case 13:
3042
+ case 12:
3048
3043
  underlyingPrices = _context2.sent;
3049
3044
  depositValuationPromises = [];
3050
3045
 
3051
3046
  _loop = function _loop() {
3052
3047
  var auToken = networkAddresses.auTokens[i];
3053
3048
 
3054
- if (assetsIn.filter(function (auAddress) {
3055
- isSameAddress(auToken.address, auAddress);
3056
- }).length > 0) {
3049
+ if (assetsIn.find(function (auAddress) {
3050
+ return isSameAddress(auToken.address, auAddress);
3051
+ }) !== undefined) {
3057
3052
  userMarketDetails[i].isCollateral = true;
3053
+ } else {
3054
+ userMarketDetails[i].isCollateral = false;
3058
3055
  }
3059
3056
 
3060
3057
  depositValuationPromises.push(fetchValuation(userMarketDetails[i].depositBalance, _this2._networkConnection.provider, underlyingPrices[i]));
@@ -3064,29 +3061,30 @@ var SdkRead = /*#__PURE__*/function (_BlockchainEntityRead) {
3064
3061
  _loop();
3065
3062
  }
3066
3063
 
3067
- _context2.next = 19;
3064
+ _context2.next = 18;
3068
3065
  return Promise.all(depositValuationPromises);
3069
3066
 
3070
- case 19:
3067
+ case 18:
3071
3068
  depositValues = _context2.sent;
3072
3069
  totalBorrowLimit = depositValues.reduce(function (p, v, index) {
3073
- if (userMarketDetails[index].isCollateral) return p.plus(v.multipliedBy(collateralRatio[index]));
3070
+ if (userMarketDetails[index].isCollateral) return p.plus(v.multipliedBy(userMarketDetails[index].collateralRatio));
3074
3071
  return p;
3075
- });
3072
+ }, new BigNumber(0));
3076
3073
  promises = [];
3077
3074
  promises.push(this._comptroller.getAccountLiquidity(userAddress));
3078
3075
  promises.push(this._auriLens.callStatic.getRewardBalancesMetadata(this._comptroller.address, this._auriFairLaunch.address, userAddress, [AurPlyPid]));
3079
3076
  promises.push(this._tokenLock.lockedAmounts(userAddress));
3080
- _context2.next = 27;
3077
+ _context2.next = 26;
3081
3078
  return Promise.all(promises);
3082
3079
 
3083
- case 27:
3080
+ case 26:
3084
3081
  values = _context2.sent;
3085
3082
  accountLiquidity = values[0];
3086
3083
  rewardBalancesMetadata = values[1];
3087
3084
  lockedAmount = values[2];
3088
3085
  borrowedvaluation = totalBorrowLimit.minus(new BigNumber(accountLiquidity[1].toString()).div(decimalFactor(18)));
3089
3086
  bufferedBorrowLimit = totalBorrowLimit.multipliedBy(BORROW_LIMIT_BUFFER);
3087
+ minimumBorrowLimitAllowed = borrowedvaluation.div(BORROW_LIMIT_BUFFER);
3090
3088
 
3091
3089
  if (bufferedBorrowLimit.lte(borrowedvaluation)) {
3092
3090
  borrowableAmount = new BigNumber(0);
@@ -3097,7 +3095,8 @@ var SdkRead = /*#__PURE__*/function (_BlockchainEntityRead) {
3097
3095
  for (i = 0; i < marketCount; i++) {
3098
3096
  auToken = networkAddresses.auTokens[i];
3099
3097
  moneyMarket = new MoneyMarketRead(this._networkConnection, auToken.address, auToken.underlying);
3100
- userMarketDetails[i].maxWithdrawableAmount = new TokenAmount(moneyMarket.underlying, borrowableAmount.div(underlyingPrices[i]).toFixed(18));
3098
+ maxWithdrawCap = totalBorrowLimit.minus(minimumBorrowLimitAllowed).div(userMarketDetails[i].collateralRatio).div(underlyingPrices[i]);
3099
+ userMarketDetails[i].maxWithdrawableAmount = userMarketDetails[i].isCollateral && maxWithdrawCap.lt(userMarketDetails[i].depositBalance.formattedAmount()) ? new TokenAmount(moneyMarket.underlying, maxWithdrawCap.toFixed(24), false) : new TokenAmount(moneyMarket.underlying, userMarketDetails[i].depositBalance.rawAmount());
3101
3100
  }
3102
3101
 
3103
3102
  return _context2.abrupt("return", {
@@ -3237,6 +3236,18 @@ var SdkRead = /*#__PURE__*/function (_BlockchainEntityRead) {
3237
3236
  return stakeBalanceOf;
3238
3237
  }();
3239
3238
 
3239
+ _proto.calcHypotheticalStats = function calcHypotheticalStats(args) {
3240
+ var deltaBorrowLimit = new BigNumber(args.userMarketDetail.depositBalance.formattedAmount()).multipliedBy(args.userMarketDetail.underlyingPrice).multipliedBy(args.userMarketDetail.collateralRatio).multipliedBy(BORROW_LIMIT_BUFFER);
3241
+ var newBorrowLimit = args.isEnable ? new BigNumber(args.currentBorrowLimit.amount).plus(deltaBorrowLimit) : new BigNumber(args.currentBorrowLimit.amount).minus(deltaBorrowLimit);
3242
+ return {
3243
+ newBorrowLimit: {
3244
+ amount: newBorrowLimit.toFixed(DECIMAL_PRECISION),
3245
+ currency: "USD"
3246
+ },
3247
+ newBorrowUtilization: new BigNumber(args.currentBorrowValuation.amount).div(newBorrowLimit).toNumber()
3248
+ };
3249
+ };
3250
+
3240
3251
  return SdkRead;
3241
3252
  }(BlockchainEntityRead);
3242
3253
  var SdkReadWrite = /*#__PURE__*/function (_SdkRead) {
@@ -3352,7 +3363,8 @@ var dummyUserMarketDetails = {
3352
3363
  depositBalance: dummyTokenAmount2,
3353
3364
  borrowBalance: dummyZeroTokenAmount,
3354
3365
  isCollateral: true,
3355
- maxWithdrawableAmount: dummyTokenAmount
3366
+ maxWithdrawableAmount: dummyTokenAmount,
3367
+ collateralRatio: 0.5
3356
3368
  };
3357
3369
 
3358
3370
  export { AURORA_CHAINID, AURORA_DEFAULT_PROVIDER, AURORA_DEFAULT_PROVIDER_URL, AURORA_DEFAULT_SIGNER, AURPLYToken, AVAX_DEFAULT_PROVIDER, AVAX_DEFAULT_PROVIDER_URL, AurPlyPid, BORROW_LIMIT_BUFFER, BlockchainEntity, BlockchainEntityRead, BlockchainEntityReadWrite, ComptrollerRewardType, DECIMAL_PRECISION, ETHAddress, MoneyMarket, MoneyMarketRead, MoneyMarketReadWrite, ONE_DAY, ONE_YEAR, PLYToken, REWARDCLAIMSTART, SDK, SdkRead, SdkReadWrite, Token, TokenAmount, calcLMRewardApr, decimalFactor, dummyAddress, dummyMarketAddress, dummyPly, dummyPlyAurora, dummyToken, dummyTokenAmount, dummyTokenAmount2, dummyTokenAmount3, dummyUserMarketDetails, dummyZeroTokenAmount, fetchLPPositions, fetchLPPrice, fetchPrice, fetchPriceFromCoingecko, fetchPriceFromCoingeckoAPI, fetchPriceFromOracle, fetchUnderlyingTokensPrices, fetchValuation, formatObject, getCurrentTimestamp, getDecimal, isSameAddress, networkAddresses, validateAndParseAddress };