@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.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { BlockchainEntity, BlockchainEntityRead } from './BlockchainEntity';
2
- import { LockingDetails, PlyAuroraPoolDetails, NetworkConnection, UserDetails, CurrencyAmount } from './types';
2
+ import { LockingDetails, PlyAuroraPoolDetails, NetworkConnection, UserDetails, UserMarketDetails, CurrencyAmount, HypotheticalStats } from './types';
3
3
  import { TransactionResponse } from '@ethersproject/abstract-provider';
4
4
  import { Contract, providers } from 'ethers';
5
5
  import { AuriFairLaunch, Comptroller, TokenLock } from '@aurigami/contracts/typechain';
@@ -16,6 +16,12 @@ export declare class SdkRead extends BlockchainEntityRead {
16
16
  getPlyAuroraPoolDetails(): Promise<PlyAuroraPoolDetails>;
17
17
  getTokenPrice(token: Token): Promise<CurrencyAmount>;
18
18
  stakeBalanceOf(user: string): Promise<TokenAmount>;
19
+ calcHypotheticalStats(args: {
20
+ userMarketDetail: UserMarketDetails;
21
+ currentBorrowLimit: CurrencyAmount;
22
+ currentBorrowValuation: CurrencyAmount;
23
+ isEnable: boolean;
24
+ }): HypotheticalStats;
19
25
  }
20
26
  export declare class SdkReadWrite extends SdkRead {
21
27
  claim(): Promise<TransactionResponse>;
@@ -2,7 +2,7 @@ import BigNumber from 'bignumber.js';
2
2
  import { Signer } from 'ethers';
3
3
  export declare const AVAX_DEFAULT_PROVIDER_URL = "https://api.avax.network/ext/bc/C/rpc";
4
4
  export declare const AVAX_DEFAULT_PROVIDER: any;
5
- export declare const AURORA_DEFAULT_PROVIDER_URL = "https://mainnet.aurora.dev";
5
+ export declare const AURORA_DEFAULT_PROVIDER_URL: string;
6
6
  export declare const AURORA_DEFAULT_PROVIDER: any;
7
7
  export declare const dummyAddress: string;
8
8
  export declare const ETHAddress: string;
@@ -13,6 +13,9 @@ export declare function fetchLPPositions(LPAddress: Address, provider: providers
13
13
  }>;
14
14
  export declare function fetchLPPrice(address: Address, provider: providers.Provider): Promise<BigNumber>;
15
15
  export declare function fetchPriceFromOracle(auTokenAddress: Address, underlyingDecimal: number, provider: providers.Provider): Promise<BigNumber>;
16
- export declare function fetchUnderlyingTokensPrices(provider: providers.Provider): Promise<any>;
16
+ export declare function fetchUnderlyingTokensPrices(provider: providers.Provider): Promise<{
17
+ auToken: string;
18
+ underlyingPrice: BigNumber;
19
+ }[]>;
17
20
  export declare function fetchPrice(address: Address, provider: providers.Provider): Promise<BigNumber>;
18
21
  export declare function fetchValuation(tokenAmount: TokenAmount, provider: providers.Provider, price?: BigNumber): Promise<BigNumber>;
@@ -6,11 +6,13 @@ function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'defau
6
6
 
7
7
  var abstractSigner = require('@ethersproject/abstract-signer');
8
8
  var BigNumber = _interopDefault(require('bignumber.js'));
9
+ var dotenv = require('dotenv');
9
10
  var ethers$1 = require('ethers');
10
11
  var AuErc20ABI = _interopDefault(require('@aurigami/contracts/artifacts/contracts/AuErc20.sol/AuErc20.json'));
11
12
  var AuETHABI = _interopDefault(require('@aurigami/contracts/artifacts/contracts/AuETH.sol/AuETH.json'));
12
13
  var ComptrollerABI = _interopDefault(require('@aurigami/contracts/artifacts/contracts/Comptroller.sol/Comptroller.json'));
13
14
  var AuriLensABI = _interopDefault(require('@aurigami/contracts/artifacts/contracts/AuriLens.sol/AuriLens.json'));
15
+ var axios = _interopDefault(require('axios'));
14
16
  var TokenLockABI = _interopDefault(require('@aurigami/contracts/artifacts/contracts/TokenLock.sol/TokenLock.json'));
15
17
  var AuriFairLaunchABI = _interopDefault(require('@aurigami/contracts/artifacts/contracts/AuriFairLaunch.sol/AuriFairLaunch.json'));
16
18
 
@@ -897,10 +899,10 @@ var BlockchainEntity = /*#__PURE__*/function () {
897
899
  }();
898
900
 
899
901
  var ethers = /*#__PURE__*/require('ethers');
900
-
902
+ dotenv.config();
901
903
  var AVAX_DEFAULT_PROVIDER_URL = 'https://api.avax.network/ext/bc/C/rpc';
902
904
  var AVAX_DEFAULT_PROVIDER = /*#__PURE__*/new ethers.providers.JsonRpcProvider(AVAX_DEFAULT_PROVIDER_URL);
903
- var AURORA_DEFAULT_PROVIDER_URL = "https://mainnet.aurora.dev";
905
+ var AURORA_DEFAULT_PROVIDER_URL = "https://mainnet.aurora.dev/" + process.env.AURORA_API_KEY;
904
906
  var AURORA_DEFAULT_PROVIDER = /*#__PURE__*/new ethers.providers.JsonRpcProvider(AURORA_DEFAULT_PROVIDER_URL);
905
907
  var dummyAddress = "0xDEADbeEfEEeEEEeEEEeEEeeeeeEeEEeeeeEEEEeE";
906
908
  var ETHAddress = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE";
@@ -2009,14 +2011,6 @@ var IUniswapV2PairABI = {
2009
2011
  deployedLinkReferences: deployedLinkReferences
2010
2012
  };
2011
2013
 
2012
- var abi$2 = [
2013
- ];
2014
- var dummyABI = {
2015
- abi: abi$2
2016
- };
2017
-
2018
- var axios = /*#__PURE__*/require('axios');
2019
-
2020
2014
  function fetchPriceFromCoingeckoAPI(_x) {
2021
2015
  return _fetchPriceFromCoingeckoAPI.apply(this, arguments);
2022
2016
  }
@@ -2214,7 +2208,7 @@ function _fetchUnderlyingTokensPrices() {
2214
2208
  while (1) {
2215
2209
  switch (_context6.prev = _context6.next) {
2216
2210
  case 0:
2217
- auriLens = new ethers$1.Contract(networkAddresses.misc.AURILENS, dummyABI.abi, provider);
2211
+ auriLens = new ethers$1.Contract(networkAddresses.misc.AURILENS, AuriLensABI.abi, provider);
2218
2212
  auTokenAddresses = networkAddresses.auTokens.map(function (auToken) {
2219
2213
  return auToken.address;
2220
2214
  });
@@ -2956,11 +2950,10 @@ var SdkRead = /*#__PURE__*/function (_BlockchainEntityRead) {
2956
2950
  while (1) {
2957
2951
  switch (_context.prev = _context.next) {
2958
2952
  case 0:
2959
- console.log(this._networkConnection.provider);
2960
- _context.next = 3;
2953
+ _context.next = 2;
2961
2954
  return getCurrentTimestamp(this._networkConnection.provider);
2962
2955
 
2963
- case 3:
2956
+ case 2:
2964
2957
  currentTime = _context.sent;
2965
2958
  currentWeek = ethers$1.BigNumber.from(currentTime - REWARDCLAIMSTART).div(7 * ONE_DAY).toNumber();
2966
2959
  denominator = 10000;
@@ -2969,14 +2962,14 @@ var SdkRead = /*#__PURE__*/function (_BlockchainEntityRead) {
2969
2962
  promises.push(this._tokenLock.percentageLock(currentWeek + 1)["catch"](function (err) {
2970
2963
  return denominator;
2971
2964
  }));
2972
- _context.next = 11;
2965
+ _context.next = 10;
2973
2966
  return Promise.all(promises).then(function (res) {
2974
2967
  return res.map(function (v) {
2975
2968
  return v.toString();
2976
2969
  });
2977
2970
  });
2978
2971
 
2979
- case 11:
2972
+ case 10:
2980
2973
  values = _context.sent;
2981
2974
  return _context.abrupt("return", {
2982
2975
  vestingStart: REWARDCLAIMSTART,
@@ -2984,7 +2977,7 @@ var SdkRead = /*#__PURE__*/function (_BlockchainEntityRead) {
2984
2977
  nextUnlockPortion: new BigNumber(denominator).minus(values[1]).div(denominator).toNumber()
2985
2978
  });
2986
2979
 
2987
- case 13:
2980
+ case 12:
2988
2981
  case "end":
2989
2982
  return _context.stop();
2990
2983
  }
@@ -3003,7 +2996,7 @@ var SdkRead = /*#__PURE__*/function (_BlockchainEntityRead) {
3003
2996
  var _getUserDetails = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee2(userAddress) {
3004
2997
  var _this2 = this;
3005
2998
 
3006
- 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;
2999
+ 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;
3007
3000
 
3008
3001
  return runtime_1.wrap(function _callee2$(_context2) {
3009
3002
  while (1) {
@@ -3011,7 +3004,6 @@ var SdkRead = /*#__PURE__*/function (_BlockchainEntityRead) {
3011
3004
  case 0:
3012
3005
  marketCount = networkAddresses.auTokens.length;
3013
3006
  userMarketDetails = [];
3014
- collateralRatio = new Array(marketCount);
3015
3007
  promises = [];
3016
3008
  totalBorrowLimit = new BigNumber(0);
3017
3009
  pricePromises = [];
@@ -3029,9 +3021,12 @@ var SdkRead = /*#__PURE__*/function (_BlockchainEntityRead) {
3029
3021
  userMarketDetail.borrowBalance = res;
3030
3022
  }));
3031
3023
  promises.push(moneyMarket.getCollateralRatio().then(function (res) {
3032
- collateralRatio[i] = res;
3024
+ userMarketDetail.collateralRatio = res.toNumber();
3025
+ }));
3026
+ pricePromises.push(fetchPrice(moneyMarket.underlying.address, _this2._networkConnection.provider).then(function (res) {
3027
+ userMarketDetail.underlyingPrice = res.toString();
3028
+ return res;
3033
3029
  }));
3034
- pricePromises.push(fetchPrice(moneyMarket.underlying.address, _this2._networkConnection.provider));
3035
3030
  };
3036
3031
 
3037
3032
  for (_iterator = _createForOfIteratorHelperLoose(networkAddresses.auTokens); !(_step = _iterator()).done;) {
@@ -3041,24 +3036,26 @@ var SdkRead = /*#__PURE__*/function (_BlockchainEntityRead) {
3041
3036
  promises.push(this._comptroller.getAssetsIn(userAddress).then(function (res) {
3042
3037
  assetsIn = res;
3043
3038
  }));
3044
- _context2.next = 11;
3039
+ _context2.next = 10;
3045
3040
  return Promise.all(promises);
3046
3041
 
3047
- case 11:
3048
- _context2.next = 13;
3042
+ case 10:
3043
+ _context2.next = 12;
3049
3044
  return Promise.all(pricePromises);
3050
3045
 
3051
- case 13:
3046
+ case 12:
3052
3047
  underlyingPrices = _context2.sent;
3053
3048
  depositValuationPromises = [];
3054
3049
 
3055
3050
  _loop = function _loop() {
3056
3051
  var auToken = networkAddresses.auTokens[i];
3057
3052
 
3058
- if (assetsIn.filter(function (auAddress) {
3059
- isSameAddress(auToken.address, auAddress);
3060
- }).length > 0) {
3053
+ if (assetsIn.find(function (auAddress) {
3054
+ return isSameAddress(auToken.address, auAddress);
3055
+ }) !== undefined) {
3061
3056
  userMarketDetails[i].isCollateral = true;
3057
+ } else {
3058
+ userMarketDetails[i].isCollateral = false;
3062
3059
  }
3063
3060
 
3064
3061
  depositValuationPromises.push(fetchValuation(userMarketDetails[i].depositBalance, _this2._networkConnection.provider, underlyingPrices[i]));
@@ -3068,29 +3065,30 @@ var SdkRead = /*#__PURE__*/function (_BlockchainEntityRead) {
3068
3065
  _loop();
3069
3066
  }
3070
3067
 
3071
- _context2.next = 19;
3068
+ _context2.next = 18;
3072
3069
  return Promise.all(depositValuationPromises);
3073
3070
 
3074
- case 19:
3071
+ case 18:
3075
3072
  depositValues = _context2.sent;
3076
3073
  totalBorrowLimit = depositValues.reduce(function (p, v, index) {
3077
- if (userMarketDetails[index].isCollateral) return p.plus(v.multipliedBy(collateralRatio[index]));
3074
+ if (userMarketDetails[index].isCollateral) return p.plus(v.multipliedBy(userMarketDetails[index].collateralRatio));
3078
3075
  return p;
3079
- });
3076
+ }, new BigNumber(0));
3080
3077
  promises = [];
3081
3078
  promises.push(this._comptroller.getAccountLiquidity(userAddress));
3082
3079
  promises.push(this._auriLens.callStatic.getRewardBalancesMetadata(this._comptroller.address, this._auriFairLaunch.address, userAddress, [AurPlyPid]));
3083
3080
  promises.push(this._tokenLock.lockedAmounts(userAddress));
3084
- _context2.next = 27;
3081
+ _context2.next = 26;
3085
3082
  return Promise.all(promises);
3086
3083
 
3087
- case 27:
3084
+ case 26:
3088
3085
  values = _context2.sent;
3089
3086
  accountLiquidity = values[0];
3090
3087
  rewardBalancesMetadata = values[1];
3091
3088
  lockedAmount = values[2];
3092
3089
  borrowedvaluation = totalBorrowLimit.minus(new BigNumber(accountLiquidity[1].toString()).div(decimalFactor(18)));
3093
3090
  bufferedBorrowLimit = totalBorrowLimit.multipliedBy(BORROW_LIMIT_BUFFER);
3091
+ minimumBorrowLimitAllowed = borrowedvaluation.div(BORROW_LIMIT_BUFFER);
3094
3092
 
3095
3093
  if (bufferedBorrowLimit.lte(borrowedvaluation)) {
3096
3094
  borrowableAmount = new BigNumber(0);
@@ -3101,7 +3099,8 @@ var SdkRead = /*#__PURE__*/function (_BlockchainEntityRead) {
3101
3099
  for (i = 0; i < marketCount; i++) {
3102
3100
  auToken = networkAddresses.auTokens[i];
3103
3101
  moneyMarket = new MoneyMarketRead(this._networkConnection, auToken.address, auToken.underlying);
3104
- userMarketDetails[i].maxWithdrawableAmount = new TokenAmount(moneyMarket.underlying, borrowableAmount.div(underlyingPrices[i]).toFixed(18));
3102
+ maxWithdrawCap = totalBorrowLimit.minus(minimumBorrowLimitAllowed).div(userMarketDetails[i].collateralRatio).div(underlyingPrices[i]);
3103
+ 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());
3105
3104
  }
3106
3105
 
3107
3106
  return _context2.abrupt("return", {
@@ -3241,6 +3240,18 @@ var SdkRead = /*#__PURE__*/function (_BlockchainEntityRead) {
3241
3240
  return stakeBalanceOf;
3242
3241
  }();
3243
3242
 
3243
+ _proto.calcHypotheticalStats = function calcHypotheticalStats(args) {
3244
+ var deltaBorrowLimit = new BigNumber(args.userMarketDetail.depositBalance.formattedAmount()).multipliedBy(args.userMarketDetail.underlyingPrice).multipliedBy(args.userMarketDetail.collateralRatio).multipliedBy(BORROW_LIMIT_BUFFER);
3245
+ var newBorrowLimit = args.isEnable ? new BigNumber(args.currentBorrowLimit.amount).plus(deltaBorrowLimit) : new BigNumber(args.currentBorrowLimit.amount).minus(deltaBorrowLimit);
3246
+ return {
3247
+ newBorrowLimit: {
3248
+ amount: newBorrowLimit.toFixed(DECIMAL_PRECISION),
3249
+ currency: "USD"
3250
+ },
3251
+ newBorrowUtilization: new BigNumber(args.currentBorrowValuation.amount).div(newBorrowLimit).toNumber()
3252
+ };
3253
+ };
3254
+
3244
3255
  return SdkRead;
3245
3256
  }(BlockchainEntityRead);
3246
3257
  var SdkReadWrite = /*#__PURE__*/function (_SdkRead) {
@@ -3356,7 +3367,8 @@ var dummyUserMarketDetails = {
3356
3367
  depositBalance: dummyTokenAmount2,
3357
3368
  borrowBalance: dummyZeroTokenAmount,
3358
3369
  isCollateral: true,
3359
- maxWithdrawableAmount: dummyTokenAmount
3370
+ maxWithdrawableAmount: dummyTokenAmount,
3371
+ collateralRatio: 0.5
3360
3372
  };
3361
3373
 
3362
3374
  exports.AURORA_CHAINID = AURORA_CHAINID;