@aurigami/sdk 0.3.4 → 0.4.2

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,7 +1,7 @@
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
- import { Contract, providers } from 'ethers';
4
+ import { Contract } from 'ethers';
5
5
  import { AuriFairLaunch, Comptroller, TokenLock } from '@aurigami/contracts/typechain';
6
6
  import { TokenAmount } from './tokenAmount';
7
7
  import { Token } from './token';
@@ -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>;
@@ -25,5 +31,5 @@ export declare class SdkReadWrite extends SdkRead {
25
31
  export declare class SDK extends BlockchainEntity {
26
32
  constructor();
27
33
  read(networkConnection: NetworkConnection): SdkRead;
28
- static defaultProvider(): providers.Provider;
34
+ readWrite(networkConnection: NetworkConnection): SdkReadWrite;
29
35
  }
@@ -1,12 +1,6 @@
1
1
  import BigNumber from 'bignumber.js';
2
- import { Signer } from 'ethers';
3
- export declare const AVAX_DEFAULT_PROVIDER_URL = "https://api.avax.network/ext/bc/C/rpc";
4
- export declare const AVAX_DEFAULT_PROVIDER: any;
5
- export declare const AURORA_DEFAULT_PROVIDER_URL = "https://mainnet.aurora.dev";
6
- export declare const AURORA_DEFAULT_PROVIDER: any;
7
2
  export declare const dummyAddress: string;
8
3
  export declare const ETHAddress: string;
9
- export declare const AURORA_DEFAULT_SIGNER: Signer;
10
4
  export declare const AURORA_CHAINID = 1313161554;
11
5
  export declare const DECIMAL_PRECISION = 6;
12
6
  export declare type NetworkAddresses = {
@@ -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,12 @@ 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 ethers$1 = require('ethers');
9
+ var ethers = require('ethers');
10
10
  var AuErc20ABI = _interopDefault(require('@aurigami/contracts/artifacts/contracts/AuErc20.sol/AuErc20.json'));
11
11
  var AuETHABI = _interopDefault(require('@aurigami/contracts/artifacts/contracts/AuETH.sol/AuETH.json'));
12
12
  var ComptrollerABI = _interopDefault(require('@aurigami/contracts/artifacts/contracts/Comptroller.sol/Comptroller.json'));
13
13
  var AuriLensABI = _interopDefault(require('@aurigami/contracts/artifacts/contracts/AuriLens.sol/AuriLens.json'));
14
+ var axios = _interopDefault(require('axios'));
14
15
  var TokenLockABI = _interopDefault(require('@aurigami/contracts/artifacts/contracts/TokenLock.sol/TokenLock.json'));
15
16
  var AuriFairLaunchABI = _interopDefault(require('@aurigami/contracts/artifacts/contracts/AuriFairLaunch.sol/AuriFairLaunch.json'));
16
17
 
@@ -896,16 +897,8 @@ var BlockchainEntity = /*#__PURE__*/function () {
896
897
  return BlockchainEntity;
897
898
  }();
898
899
 
899
- var ethers = /*#__PURE__*/require('ethers');
900
-
901
- var AVAX_DEFAULT_PROVIDER_URL = 'https://api.avax.network/ext/bc/C/rpc';
902
- var AVAX_DEFAULT_PROVIDER = /*#__PURE__*/new ethers.providers.JsonRpcProvider(AVAX_DEFAULT_PROVIDER_URL);
903
- var AURORA_DEFAULT_PROVIDER_URL = "https://mainnet.aurora.dev";
904
- var AURORA_DEFAULT_PROVIDER = /*#__PURE__*/new ethers.providers.JsonRpcProvider(AURORA_DEFAULT_PROVIDER_URL);
905
900
  var dummyAddress = "0xDEADbeEfEEeEEEeEEEeEEeeeeeEeEEeeeeEEEEeE";
906
901
  var ETHAddress = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE";
907
- var dummyPrivateKey = '1111111111111111111111111111111111111111111111111111111111111111';
908
- var AURORA_DEFAULT_SIGNER = /*#__PURE__*/new ethers.Wallet(dummyPrivateKey, AURORA_DEFAULT_PROVIDER);
909
902
  var AURORA_CHAINID = 1313161554;
910
903
  var DECIMAL_PRECISION = 6;
911
904
  var networkAddresses = {
@@ -977,7 +970,7 @@ function formatObject(object) {
977
970
  return JSON.stringify(object, null, ' ');
978
971
  }
979
972
  function decimalFactor(decimal) {
980
- return ethers$1.BigNumber.from(10).pow(decimal).toString();
973
+ return ethers.BigNumber.from(10).pow(decimal).toString();
981
974
  }
982
975
  var isSameAddress = function isSameAddress(address1, address2) {
983
976
  return address1.toLowerCase() == address2.toLowerCase();
@@ -1004,7 +997,7 @@ var getCurrentTimestamp = /*#__PURE__*/function () {
1004
997
  }();
1005
998
  function validateAndParseAddress(address) {
1006
999
  try {
1007
- return ethers$1.utils.getAddress(address);
1000
+ return ethers.utils.getAddress(address);
1008
1001
  } catch (error) {
1009
1002
  throw new Error("Invalid address: " + address);
1010
1003
  }
@@ -2009,14 +2002,6 @@ var IUniswapV2PairABI = {
2009
2002
  deployedLinkReferences: deployedLinkReferences
2010
2003
  };
2011
2004
 
2012
- var abi$2 = [
2013
- ];
2014
- var dummyABI = {
2015
- abi: abi$2
2016
- };
2017
-
2018
- var axios = /*#__PURE__*/require('axios');
2019
-
2020
2005
  function fetchPriceFromCoingeckoAPI(_x) {
2021
2006
  return _fetchPriceFromCoingeckoAPI.apply(this, arguments);
2022
2007
  }
@@ -2089,7 +2074,7 @@ function _fetchLPPositions() {
2089
2074
  switch (_context3.prev = _context3.next) {
2090
2075
  case 0:
2091
2076
  promises = [];
2092
- LPContract = new ethers$1.Contract(LPAddress, IUniswapV2PairABI.abi, provider);
2077
+ LPContract = new ethers.Contract(LPAddress, IUniswapV2PairABI.abi, provider);
2093
2078
  promises.push(LPContract.token0());
2094
2079
  promises.push(LPContract.toekn1());
2095
2080
  promises.push(LPContract.getReserves());
@@ -2185,7 +2170,7 @@ function _fetchPriceFromOracle() {
2185
2170
  while (1) {
2186
2171
  switch (_context5.prev = _context5.next) {
2187
2172
  case 0:
2188
- oracleContract = new ethers$1.Contract(networkAddresses.misc.oracle, OracleABI.abi, provider);
2173
+ oracleContract = new ethers.Contract(networkAddresses.misc.oracle, OracleABI.abi, provider);
2189
2174
  _context5.next = 3;
2190
2175
  return oracleContract.getUnderlyingPrice(auTokenAddress);
2191
2176
 
@@ -2214,7 +2199,7 @@ function _fetchUnderlyingTokensPrices() {
2214
2199
  while (1) {
2215
2200
  switch (_context6.prev = _context6.next) {
2216
2201
  case 0:
2217
- auriLens = new ethers$1.Contract(networkAddresses.misc.AURILENS, dummyABI.abi, provider);
2202
+ auriLens = new ethers.Contract(networkAddresses.misc.AURILENS, AuriLensABI.abi, provider);
2218
2203
  auTokenAddresses = networkAddresses.auTokens.map(function (auToken) {
2219
2204
  return auToken.address;
2220
2205
  });
@@ -2296,7 +2281,7 @@ function _fetchValuation() {
2296
2281
  while (1) {
2297
2282
  switch (_context8.prev = _context8.next) {
2298
2283
  case 0:
2299
- if (!(price === null)) {
2284
+ if (!(price === undefined)) {
2300
2285
  _context8.next = 4;
2301
2286
  break;
2302
2287
  }
@@ -2329,14 +2314,14 @@ var MoneyMarketRead = /*#__PURE__*/function (_BlockchainEntityRead) {
2329
2314
  _this = _BlockchainEntityRead.call(this, networkConnection) || this;
2330
2315
 
2331
2316
  if (isSameAddress(underlyingAsset, ETHAddress)) {
2332
- _this.auToken = new ethers$1.Contract(auToken, AuETHABI.abi, networkConnection.provider);
2317
+ _this.auToken = new ethers.Contract(auToken, AuETHABI.abi, networkConnection.provider);
2333
2318
  } else {
2334
- _this.auToken = new ethers$1.Contract(auToken, AuErc20ABI.abi, networkConnection.provider);
2319
+ _this.auToken = new ethers.Contract(auToken, AuErc20ABI.abi, networkConnection.provider);
2335
2320
  }
2336
2321
 
2337
2322
  _this.underlying = new Token(underlyingAsset, getDecimal(underlyingAsset));
2338
- _this._comptroller = new ethers$1.Contract(networkAddresses.misc.COMPTROLLER, ComptrollerABI.abi, networkConnection.provider);
2339
- _this._auriLens = new ethers$1.Contract(networkAddresses.misc.AURILENS, AuriLensABI.abi, networkConnection.provider);
2323
+ _this._comptroller = new ethers.Contract(networkAddresses.misc.COMPTROLLER, ComptrollerABI.abi, networkConnection.provider);
2324
+ _this._auriLens = new ethers.Contract(networkAddresses.misc.AURILENS, AuriLensABI.abi, networkConnection.provider);
2340
2325
  return _this;
2341
2326
  }
2342
2327
 
@@ -2421,7 +2406,7 @@ var MoneyMarketRead = /*#__PURE__*/function (_BlockchainEntityRead) {
2421
2406
  return Promise.all(promises);
2422
2407
 
2423
2408
  case 5:
2424
- return _context3.abrupt("return", new TokenAmount(this.underlying, ethers$1.BigNumber.from(totalCash.rawAmount()).add(totalBorrow.rawAmount()).toString()));
2409
+ return _context3.abrupt("return", new TokenAmount(this.underlying, ethers.BigNumber.from(totalCash.rawAmount()).add(totalBorrow.rawAmount()).toString()));
2425
2410
 
2426
2411
  case 6:
2427
2412
  case "end":
@@ -2940,10 +2925,10 @@ var SdkRead = /*#__PURE__*/function (_BlockchainEntityRead) {
2940
2925
  var _this;
2941
2926
 
2942
2927
  _this = _BlockchainEntityRead.call(this, networkConnection) || this;
2943
- _this._comptroller = new ethers$1.Contract(networkAddresses.misc.COMPTROLLER, ComptrollerABI.abi, networkConnection.provider);
2944
- _this._tokenLock = new ethers$1.Contract(networkAddresses.misc.TOKENLOCK, TokenLockABI.abi, networkConnection.provider);
2945
- _this._auriFairLaunch = new ethers$1.Contract(networkAddresses.misc.AURIFAIRLAUNCH, AuriFairLaunchABI.abi, networkConnection.provider);
2946
- _this._auriLens = new ethers$1.Contract(networkAddresses.misc.AURILENS, AuriLensABI.abi, networkConnection.provider);
2928
+ _this._comptroller = new ethers.Contract(networkAddresses.misc.COMPTROLLER, ComptrollerABI.abi, networkConnection.provider);
2929
+ _this._tokenLock = new ethers.Contract(networkAddresses.misc.TOKENLOCK, TokenLockABI.abi, networkConnection.provider);
2930
+ _this._auriFairLaunch = new ethers.Contract(networkAddresses.misc.AURIFAIRLAUNCH, AuriFairLaunchABI.abi, networkConnection.provider);
2931
+ _this._auriLens = new ethers.Contract(networkAddresses.misc.AURILENS, AuriLensABI.abi, networkConnection.provider);
2947
2932
  return _this;
2948
2933
  }
2949
2934
 
@@ -2961,7 +2946,7 @@ var SdkRead = /*#__PURE__*/function (_BlockchainEntityRead) {
2961
2946
 
2962
2947
  case 2:
2963
2948
  currentTime = _context.sent;
2964
- currentWeek = ethers$1.BigNumber.from(currentTime - REWARDCLAIMSTART).div(7 * ONE_DAY).toNumber();
2949
+ currentWeek = ethers.BigNumber.from(currentTime - REWARDCLAIMSTART).div(7 * ONE_DAY).toNumber();
2965
2950
  denominator = 10000;
2966
2951
  promises = [];
2967
2952
  promises.push(this._tokenLock.percentageLock(currentWeek));
@@ -3002,7 +2987,7 @@ var SdkRead = /*#__PURE__*/function (_BlockchainEntityRead) {
3002
2987
  var _getUserDetails = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee2(userAddress) {
3003
2988
  var _this2 = this;
3004
2989
 
3005
- var marketCount, userMarketDetails, assetsIn, promises, totalBorrowLimit, pricePromises, _loop2, _iterator, _step, underlyingPrices, depositValuationPromises, _loop, i, depositValues, accountLiquidity, rewardBalancesMetadata, lockedAmount, values, borrowedvaluation, bufferedBorrowLimit, borrowableAmount, auToken, moneyMarket;
2990
+ 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;
3006
2991
 
3007
2992
  return runtime_1.wrap(function _callee2$(_context2) {
3008
2993
  while (1) {
@@ -3029,7 +3014,10 @@ var SdkRead = /*#__PURE__*/function (_BlockchainEntityRead) {
3029
3014
  promises.push(moneyMarket.getCollateralRatio().then(function (res) {
3030
3015
  userMarketDetail.collateralRatio = res.toNumber();
3031
3016
  }));
3032
- pricePromises.push(fetchPrice(moneyMarket.underlying.address, _this2._networkConnection.provider));
3017
+ pricePromises.push(fetchPrice(moneyMarket.underlying.address, _this2._networkConnection.provider).then(function (res) {
3018
+ userMarketDetail.underlyingPrice = res.toString();
3019
+ return res;
3020
+ }));
3033
3021
  };
3034
3022
 
3035
3023
  for (_iterator = _createForOfIteratorHelperLoose(networkAddresses.auTokens); !(_step = _iterator()).done;) {
@@ -3090,7 +3078,13 @@ var SdkRead = /*#__PURE__*/function (_BlockchainEntityRead) {
3090
3078
  rewardBalancesMetadata = values[1];
3091
3079
  lockedAmount = values[2];
3092
3080
  borrowedvaluation = totalBorrowLimit.minus(new BigNumber(accountLiquidity[1].toString()).div(decimalFactor(18)));
3081
+
3082
+ if (borrowedvaluation.lt("0.00001")) {
3083
+ borrowedvaluation = new BigNumber(0);
3084
+ }
3085
+
3093
3086
  bufferedBorrowLimit = totalBorrowLimit.multipliedBy(BORROW_LIMIT_BUFFER);
3087
+ minimumBorrowLimitAllowed = borrowedvaluation.div(BORROW_LIMIT_BUFFER);
3094
3088
 
3095
3089
  if (bufferedBorrowLimit.lte(borrowedvaluation)) {
3096
3090
  borrowableAmount = new BigNumber(0);
@@ -3101,7 +3095,8 @@ var SdkRead = /*#__PURE__*/function (_BlockchainEntityRead) {
3101
3095
  for (i = 0; i < marketCount; i++) {
3102
3096
  auToken = networkAddresses.auTokens[i];
3103
3097
  moneyMarket = new MoneyMarketRead(this._networkConnection, auToken.address, auToken.underlying);
3104
- 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());
3105
3100
  }
3106
3101
 
3107
3102
  return _context2.abrupt("return", {
@@ -3118,7 +3113,7 @@ var SdkRead = /*#__PURE__*/function (_BlockchainEntityRead) {
3118
3113
  }
3119
3114
  });
3120
3115
 
3121
- case 35:
3116
+ case 37:
3122
3117
  case "end":
3123
3118
  return _context2.stop();
3124
3119
  }
@@ -3241,6 +3236,18 @@ var SdkRead = /*#__PURE__*/function (_BlockchainEntityRead) {
3241
3236
  return stakeBalanceOf;
3242
3237
  }();
3243
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
+
3244
3251
  return SdkRead;
3245
3252
  }(BlockchainEntityRead);
3246
3253
  var SdkReadWrite = /*#__PURE__*/function (_SdkRead) {
@@ -3336,8 +3343,8 @@ var SDK = /*#__PURE__*/function (_BlockchainEntity) {
3336
3343
  return new SdkRead(networkConnection);
3337
3344
  };
3338
3345
 
3339
- SDK.defaultProvider = function defaultProvider() {
3340
- return new ethers$1.ethers.providers.JsonRpcProvider(AVAX_DEFAULT_PROVIDER_URL);
3346
+ _proto3.readWrite = function readWrite(networkConnection) {
3347
+ return new SdkReadWrite(networkConnection);
3341
3348
  };
3342
3349
 
3343
3350
  return SDK;
@@ -3356,16 +3363,13 @@ var dummyUserMarketDetails = {
3356
3363
  depositBalance: dummyTokenAmount2,
3357
3364
  borrowBalance: dummyZeroTokenAmount,
3358
3365
  isCollateral: true,
3359
- maxWithdrawableAmount: dummyTokenAmount
3366
+ maxWithdrawableAmount: dummyTokenAmount,
3367
+ collateralRatio: 0.5,
3368
+ underlyingPrice: "1"
3360
3369
  };
3361
3370
 
3362
3371
  exports.AURORA_CHAINID = AURORA_CHAINID;
3363
- exports.AURORA_DEFAULT_PROVIDER = AURORA_DEFAULT_PROVIDER;
3364
- exports.AURORA_DEFAULT_PROVIDER_URL = AURORA_DEFAULT_PROVIDER_URL;
3365
- exports.AURORA_DEFAULT_SIGNER = AURORA_DEFAULT_SIGNER;
3366
3372
  exports.AURPLYToken = AURPLYToken;
3367
- exports.AVAX_DEFAULT_PROVIDER = AVAX_DEFAULT_PROVIDER;
3368
- exports.AVAX_DEFAULT_PROVIDER_URL = AVAX_DEFAULT_PROVIDER_URL;
3369
3373
  exports.AurPlyPid = AurPlyPid;
3370
3374
  exports.BORROW_LIMIT_BUFFER = BORROW_LIMIT_BUFFER;
3371
3375
  exports.BlockchainEntity = BlockchainEntity;