@aurigami/sdk 0.4.0 → 0.4.5

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, UserMarketDetails, CurrencyAmount, HypotheticalStats } from './types';
2
+ import { LockingDetails, PlyAuroraPoolDetails, NetworkConnection, UserDetails, UserMarketDetails, CurrencyAmount, HypotheticalStats, MarketAction } 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,11 +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: {
19
+ calcHypotheticalStats({ userMarketDetail, currentBorrowLimit, currentBorrowValuation, action, tokenAmount }: {
20
20
  userMarketDetail: UserMarketDetails;
21
21
  currentBorrowLimit: CurrencyAmount;
22
22
  currentBorrowValuation: CurrencyAmount;
23
- isEnable: boolean;
23
+ action: MarketAction;
24
+ tokenAmount?: TokenAmount;
24
25
  }): HypotheticalStats;
25
26
  }
26
27
  export declare class SdkReadWrite extends SdkRead {
@@ -31,5 +32,5 @@ export declare class SdkReadWrite extends SdkRead {
31
32
  export declare class SDK extends BlockchainEntity {
32
33
  constructor();
33
34
  read(networkConnection: NetworkConnection): SdkRead;
34
- static defaultProvider(): providers.Provider;
35
+ readWrite(networkConnection: NetworkConnection): SdkReadWrite;
35
36
  }
@@ -1,14 +1,9 @@
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: string;
6
- export declare const AURORA_DEFAULT_PROVIDER: any;
2
+ import { ethers } from 'ethers';
7
3
  export declare const dummyAddress: string;
8
4
  export declare const ETHAddress: string;
9
- export declare const AURORA_DEFAULT_SIGNER: Signer;
10
5
  export declare const AURORA_CHAINID = 1313161554;
11
- export declare const DECIMAL_PRECISION = 6;
6
+ export declare const DECIMAL_PRECISION = 10;
12
7
  export declare type NetworkAddresses = {
13
8
  auTokens: {
14
9
  address: string;
@@ -23,3 +18,4 @@ export declare const REWARDCLAIMSTART = 1640995200;
23
18
  export declare const ONE_DAY = 86400;
24
19
  export declare const ONE_YEAR: number;
25
20
  export declare const AurPlyPid = 0;
21
+ export declare const INF: ethers.BigNumber;
@@ -18,4 +18,5 @@ export declare function fetchUnderlyingTokensPrices(provider: providers.Provider
18
18
  underlyingPrice: BigNumber;
19
19
  }[]>;
20
20
  export declare function fetchPrice(address: Address, provider: providers.Provider): Promise<BigNumber>;
21
- export declare function fetchValuation(tokenAmount: TokenAmount, provider: providers.Provider, price?: BigNumber): Promise<BigNumber>;
21
+ export declare function fetchValuation(tokenAmount: TokenAmount, provider: providers.Provider): Promise<BigNumber>;
22
+ export declare function calcValuation(tokenAmount: TokenAmount, price: BigNumber): BigNumber;
@@ -6,8 +6,7 @@ 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');
10
- var ethers$1 = require('ethers');
9
+ var ethers = require('ethers');
11
10
  var AuErc20ABI = _interopDefault(require('@aurigami/contracts/artifacts/contracts/AuErc20.sol/AuErc20.json'));
12
11
  var AuETHABI = _interopDefault(require('@aurigami/contracts/artifacts/contracts/AuETH.sol/AuETH.json'));
13
12
  var ComptrollerABI = _interopDefault(require('@aurigami/contracts/artifacts/contracts/Comptroller.sol/Comptroller.json'));
@@ -898,18 +897,24 @@ var BlockchainEntity = /*#__PURE__*/function () {
898
897
  return BlockchainEntity;
899
898
  }();
900
899
 
901
- var ethers = /*#__PURE__*/require('ethers');
902
- dotenv.config();
903
- var AVAX_DEFAULT_PROVIDER_URL = 'https://api.avax.network/ext/bc/C/rpc';
904
- var AVAX_DEFAULT_PROVIDER = /*#__PURE__*/new ethers.providers.JsonRpcProvider(AVAX_DEFAULT_PROVIDER_URL);
905
- var AURORA_DEFAULT_PROVIDER_URL = "https://mainnet.aurora.dev/" + process.env.AURORA_API_KEY;
906
- var AURORA_DEFAULT_PROVIDER = /*#__PURE__*/new ethers.providers.JsonRpcProvider(AURORA_DEFAULT_PROVIDER_URL);
900
+ (function (ComptrollerRewardType) {
901
+ ComptrollerRewardType[ComptrollerRewardType["PLY"] = 0] = "PLY";
902
+ ComptrollerRewardType[ComptrollerRewardType["AURORA"] = 1] = "AURORA";
903
+ })(exports.ComptrollerRewardType || (exports.ComptrollerRewardType = {}));
904
+
905
+ (function (MarketAction) {
906
+ MarketAction[MarketAction["Deposit"] = 0] = "Deposit";
907
+ MarketAction[MarketAction["Borrow"] = 1] = "Borrow";
908
+ MarketAction[MarketAction["Withdraw"] = 2] = "Withdraw";
909
+ MarketAction[MarketAction["Repay"] = 3] = "Repay";
910
+ MarketAction[MarketAction["EnableCollateral"] = 4] = "EnableCollateral";
911
+ MarketAction[MarketAction["DisableCollateral"] = 5] = "DisableCollateral";
912
+ })(exports.MarketAction || (exports.MarketAction = {}));
913
+
907
914
  var dummyAddress = "0xDEADbeEfEEeEEEeEEEeEEeeeeeEeEEeeeeEEEEeE";
908
915
  var ETHAddress = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE";
909
- var dummyPrivateKey = '1111111111111111111111111111111111111111111111111111111111111111';
910
- var AURORA_DEFAULT_SIGNER = /*#__PURE__*/new ethers.Wallet(dummyPrivateKey, AURORA_DEFAULT_PROVIDER);
911
916
  var AURORA_CHAINID = 1313161554;
912
- var DECIMAL_PRECISION = 6;
917
+ var DECIMAL_PRECISION = 10;
913
918
  var networkAddresses = {
914
919
  auTokens: [{
915
920
  address: /*#__PURE__*/'0x2dEf6eb801757655AD227110d65C80DB595bBc60'.toLowerCase(),
@@ -954,6 +959,7 @@ var REWARDCLAIMSTART = 1640995200;
954
959
  var ONE_DAY = 86400;
955
960
  var ONE_YEAR = ONE_DAY * 365;
956
961
  var AurPlyPid = 0;
962
+ var INF = /*#__PURE__*/ethers.BigNumber.from(2).pow(256).sub(1);
957
963
 
958
964
  var decimalRecords = {
959
965
  '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee': 18,
@@ -979,7 +985,7 @@ function formatObject(object) {
979
985
  return JSON.stringify(object, null, ' ');
980
986
  }
981
987
  function decimalFactor(decimal) {
982
- return ethers$1.BigNumber.from(10).pow(decimal).toString();
988
+ return ethers.BigNumber.from(10).pow(decimal).toString();
983
989
  }
984
990
  var isSameAddress = function isSameAddress(address1, address2) {
985
991
  return address1.toLowerCase() == address2.toLowerCase();
@@ -1006,7 +1012,7 @@ var getCurrentTimestamp = /*#__PURE__*/function () {
1006
1012
  }();
1007
1013
  function validateAndParseAddress(address) {
1008
1014
  try {
1009
- return ethers$1.utils.getAddress(address);
1015
+ return ethers.utils.getAddress(address);
1010
1016
  } catch (error) {
1011
1017
  throw new Error("Invalid address: " + address);
1012
1018
  }
@@ -1022,11 +1028,6 @@ function calcLMRewardApr(rewardsValue, totalStakeValue, frequencyPerYear) {
1022
1028
  return rewardsValue.multipliedBy(frequencyPerYear).dividedBy(totalStakeValue);
1023
1029
  }
1024
1030
 
1025
- (function (ComptrollerRewardType) {
1026
- ComptrollerRewardType[ComptrollerRewardType["PLY"] = 0] = "PLY";
1027
- ComptrollerRewardType[ComptrollerRewardType["AURORA"] = 1] = "AURORA";
1028
- })(exports.ComptrollerRewardType || (exports.ComptrollerRewardType = {}));
1029
-
1030
1031
  var Token = function Token(address, decimals) {
1031
1032
  this.address = address.toLowerCase();
1032
1033
  this.decimals = decimals;
@@ -2083,7 +2084,7 @@ function _fetchLPPositions() {
2083
2084
  switch (_context3.prev = _context3.next) {
2084
2085
  case 0:
2085
2086
  promises = [];
2086
- LPContract = new ethers$1.Contract(LPAddress, IUniswapV2PairABI.abi, provider);
2087
+ LPContract = new ethers.Contract(LPAddress, IUniswapV2PairABI.abi, provider);
2087
2088
  promises.push(LPContract.token0());
2088
2089
  promises.push(LPContract.toekn1());
2089
2090
  promises.push(LPContract.getReserves());
@@ -2179,7 +2180,7 @@ function _fetchPriceFromOracle() {
2179
2180
  while (1) {
2180
2181
  switch (_context5.prev = _context5.next) {
2181
2182
  case 0:
2182
- oracleContract = new ethers$1.Contract(networkAddresses.misc.oracle, OracleABI.abi, provider);
2183
+ oracleContract = new ethers.Contract(networkAddresses.misc.oracle, OracleABI.abi, provider);
2183
2184
  _context5.next = 3;
2184
2185
  return oracleContract.getUnderlyingPrice(auTokenAddress);
2185
2186
 
@@ -2208,7 +2209,7 @@ function _fetchUnderlyingTokensPrices() {
2208
2209
  while (1) {
2209
2210
  switch (_context6.prev = _context6.next) {
2210
2211
  case 0:
2211
- auriLens = new ethers$1.Contract(networkAddresses.misc.AURILENS, AuriLensABI.abi, provider);
2212
+ auriLens = new ethers.Contract(networkAddresses.misc.AURILENS, AuriLensABI.abi, provider);
2212
2213
  auTokenAddresses = networkAddresses.auTokens.map(function (auToken) {
2213
2214
  return auToken.address;
2214
2215
  });
@@ -2280,31 +2281,25 @@ function _fetchPrice() {
2280
2281
  return _fetchPrice.apply(this, arguments);
2281
2282
  }
2282
2283
 
2283
- function fetchValuation(_x13, _x14, _x15) {
2284
+ function fetchValuation(_x13, _x14) {
2284
2285
  return _fetchValuation.apply(this, arguments);
2285
2286
  }
2286
2287
 
2287
2288
  function _fetchValuation() {
2288
- _fetchValuation = _asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee8(tokenAmount, provider, price) {
2289
+ _fetchValuation = _asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee8(tokenAmount, provider) {
2290
+ var price;
2289
2291
  return runtime_1.wrap(function _callee8$(_context8) {
2290
2292
  while (1) {
2291
2293
  switch (_context8.prev = _context8.next) {
2292
2294
  case 0:
2293
- if (!(price === null)) {
2294
- _context8.next = 4;
2295
- break;
2296
- }
2297
-
2298
- _context8.next = 3;
2295
+ _context8.next = 2;
2299
2296
  return fetchPrice(tokenAmount.token.address, provider);
2300
2297
 
2301
- case 3:
2298
+ case 2:
2302
2299
  price = _context8.sent;
2300
+ return _context8.abrupt("return", calcValuation(tokenAmount, price));
2303
2301
 
2304
2302
  case 4:
2305
- return _context8.abrupt("return", new BigNumber(tokenAmount.formattedAmount()).multipliedBy(price));
2306
-
2307
- case 5:
2308
2303
  case "end":
2309
2304
  return _context8.stop();
2310
2305
  }
@@ -2314,6 +2309,10 @@ function _fetchValuation() {
2314
2309
  return _fetchValuation.apply(this, arguments);
2315
2310
  }
2316
2311
 
2312
+ function calcValuation(tokenAmount, price) {
2313
+ return new BigNumber(tokenAmount.formattedAmount()).multipliedBy(price);
2314
+ }
2315
+
2317
2316
  var MoneyMarketRead = /*#__PURE__*/function (_BlockchainEntityRead) {
2318
2317
  _inheritsLoose(MoneyMarketRead, _BlockchainEntityRead);
2319
2318
 
@@ -2323,14 +2322,14 @@ var MoneyMarketRead = /*#__PURE__*/function (_BlockchainEntityRead) {
2323
2322
  _this = _BlockchainEntityRead.call(this, networkConnection) || this;
2324
2323
 
2325
2324
  if (isSameAddress(underlyingAsset, ETHAddress)) {
2326
- _this.auToken = new ethers$1.Contract(auToken, AuETHABI.abi, networkConnection.provider);
2325
+ _this.auToken = new ethers.Contract(auToken, AuETHABI.abi, networkConnection.provider);
2327
2326
  } else {
2328
- _this.auToken = new ethers$1.Contract(auToken, AuErc20ABI.abi, networkConnection.provider);
2327
+ _this.auToken = new ethers.Contract(auToken, AuErc20ABI.abi, networkConnection.provider);
2329
2328
  }
2330
2329
 
2331
2330
  _this.underlying = new Token(underlyingAsset, getDecimal(underlyingAsset));
2332
- _this._comptroller = new ethers$1.Contract(networkAddresses.misc.COMPTROLLER, ComptrollerABI.abi, networkConnection.provider);
2333
- _this._auriLens = new ethers$1.Contract(networkAddresses.misc.AURILENS, AuriLensABI.abi, networkConnection.provider);
2331
+ _this._comptroller = new ethers.Contract(networkAddresses.misc.COMPTROLLER, ComptrollerABI.abi, networkConnection.provider);
2332
+ _this._auriLens = new ethers.Contract(networkAddresses.misc.AURILENS, AuriLensABI.abi, networkConnection.provider);
2334
2333
  return _this;
2335
2334
  }
2336
2335
 
@@ -2415,7 +2414,7 @@ var MoneyMarketRead = /*#__PURE__*/function (_BlockchainEntityRead) {
2415
2414
  return Promise.all(promises);
2416
2415
 
2417
2416
  case 5:
2418
- return _context3.abrupt("return", new TokenAmount(this.underlying, ethers$1.BigNumber.from(totalCash.rawAmount()).add(totalBorrow.rawAmount()).toString()));
2417
+ return _context3.abrupt("return", new TokenAmount(this.underlying, ethers.BigNumber.from(totalCash.rawAmount()).add(totalBorrow.rawAmount()).toString()));
2419
2418
 
2420
2419
  case 6:
2421
2420
  case "end":
@@ -2635,7 +2634,7 @@ var MoneyMarketRead = /*#__PURE__*/function (_BlockchainEntityRead) {
2635
2634
  case 11:
2636
2635
  _context9.t0 = calcLMRewardApr;
2637
2636
  _context9.next = 14;
2638
- return fetchValuation(new TokenAmount(PLYToken, rewardSpeeds.plyRewardBorrowSpeed.toString()), this._networkConnection.provider, plyPrice);
2637
+ return calcValuation(new TokenAmount(PLYToken, rewardSpeeds.plyRewardBorrowSpeed.toString()), plyPrice);
2639
2638
 
2640
2639
  case 14:
2641
2640
  _context9.t1 = _context9.sent;
@@ -2644,7 +2643,7 @@ var MoneyMarketRead = /*#__PURE__*/function (_BlockchainEntityRead) {
2644
2643
  borrowPlyApy = (0, _context9.t0)(_context9.t1, _context9.t2, _context9.t3);
2645
2644
  _context9.t4 = calcLMRewardApr;
2646
2645
  _context9.next = 21;
2647
- return fetchValuation(new TokenAmount(PLYToken, rewardSpeeds.plyRewardSupplySpeed.toString()), this._networkConnection.provider, plyPrice);
2646
+ return calcValuation(new TokenAmount(PLYToken, rewardSpeeds.plyRewardSupplySpeed.toString()), plyPrice);
2648
2647
 
2649
2648
  case 21:
2650
2649
  _context9.t5 = _context9.sent;
@@ -2808,9 +2807,17 @@ var MoneyMarketReadWrite = /*#__PURE__*/function (_MoneyMarketRead) {
2808
2807
  while (1) {
2809
2808
  switch (_context14.prev = _context14.next) {
2810
2809
  case 0:
2810
+ if (!new BigNumber(amount.rawAmount()).lt(0)) {
2811
+ _context14.next = 2;
2812
+ break;
2813
+ }
2814
+
2815
+ return _context14.abrupt("return", this.auToken.connect(this._networkConnection.signer).redeemUnderlying(INF));
2816
+
2817
+ case 2:
2811
2818
  return _context14.abrupt("return", this.auToken.connect(this._networkConnection.signer).redeemUnderlying(amount.rawAmount()));
2812
2819
 
2813
- case 1:
2820
+ case 3:
2814
2821
  case "end":
2815
2822
  return _context14.stop();
2816
2823
  }
@@ -2934,10 +2941,10 @@ var SdkRead = /*#__PURE__*/function (_BlockchainEntityRead) {
2934
2941
  var _this;
2935
2942
 
2936
2943
  _this = _BlockchainEntityRead.call(this, networkConnection) || this;
2937
- _this._comptroller = new ethers$1.Contract(networkAddresses.misc.COMPTROLLER, ComptrollerABI.abi, networkConnection.provider);
2938
- _this._tokenLock = new ethers$1.Contract(networkAddresses.misc.TOKENLOCK, TokenLockABI.abi, networkConnection.provider);
2939
- _this._auriFairLaunch = new ethers$1.Contract(networkAddresses.misc.AURIFAIRLAUNCH, AuriFairLaunchABI.abi, networkConnection.provider);
2940
- _this._auriLens = new ethers$1.Contract(networkAddresses.misc.AURILENS, AuriLensABI.abi, networkConnection.provider);
2944
+ _this._comptroller = new ethers.Contract(networkAddresses.misc.COMPTROLLER, ComptrollerABI.abi, networkConnection.provider);
2945
+ _this._tokenLock = new ethers.Contract(networkAddresses.misc.TOKENLOCK, TokenLockABI.abi, networkConnection.provider);
2946
+ _this._auriFairLaunch = new ethers.Contract(networkAddresses.misc.AURIFAIRLAUNCH, AuriFairLaunchABI.abi, networkConnection.provider);
2947
+ _this._auriLens = new ethers.Contract(networkAddresses.misc.AURILENS, AuriLensABI.abi, networkConnection.provider);
2941
2948
  return _this;
2942
2949
  }
2943
2950
 
@@ -2955,7 +2962,7 @@ var SdkRead = /*#__PURE__*/function (_BlockchainEntityRead) {
2955
2962
 
2956
2963
  case 2:
2957
2964
  currentTime = _context.sent;
2958
- currentWeek = ethers$1.BigNumber.from(currentTime - REWARDCLAIMSTART).div(7 * ONE_DAY).toNumber();
2965
+ currentWeek = ethers.BigNumber.from(currentTime - REWARDCLAIMSTART).div(7 * ONE_DAY).toNumber();
2959
2966
  denominator = 10000;
2960
2967
  promises = [];
2961
2968
  promises.push(this._tokenLock.percentageLock(currentWeek));
@@ -2996,7 +3003,7 @@ var SdkRead = /*#__PURE__*/function (_BlockchainEntityRead) {
2996
3003
  var _getUserDetails = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee2(userAddress) {
2997
3004
  var _this2 = this;
2998
3005
 
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;
3006
+ var marketCount, userMarketDetails, assetsIn, promises, totalBorrowLimit, pricePromises, _loop2, _iterator, _step, underlyingPrices, depositValues, _loop, i, accountLiquidity, rewardBalancesMetadata, lockedAmount, values, borrowedvaluation, bufferedBorrowLimit, minimumBorrowLimitAllowed, borrowableAmount, auToken, moneyMarket, maxWithdrawCap;
3000
3007
 
3001
3008
  return runtime_1.wrap(function _callee2$(_context2) {
3002
3009
  while (1) {
@@ -3045,7 +3052,7 @@ var SdkRead = /*#__PURE__*/function (_BlockchainEntityRead) {
3045
3052
 
3046
3053
  case 12:
3047
3054
  underlyingPrices = _context2.sent;
3048
- depositValuationPromises = [];
3055
+ depositValues = [];
3049
3056
 
3050
3057
  _loop = function _loop() {
3051
3058
  var auToken = networkAddresses.auTokens[i];
@@ -3058,18 +3065,13 @@ var SdkRead = /*#__PURE__*/function (_BlockchainEntityRead) {
3058
3065
  userMarketDetails[i].isCollateral = false;
3059
3066
  }
3060
3067
 
3061
- depositValuationPromises.push(fetchValuation(userMarketDetails[i].depositBalance, _this2._networkConnection.provider, underlyingPrices[i]));
3068
+ depositValues.push(calcValuation(userMarketDetails[i].depositBalance, underlyingPrices[i]));
3062
3069
  };
3063
3070
 
3064
3071
  for (i = 0; i < marketCount; i++) {
3065
3072
  _loop();
3066
3073
  }
3067
3074
 
3068
- _context2.next = 18;
3069
- return Promise.all(depositValuationPromises);
3070
-
3071
- case 18:
3072
- depositValues = _context2.sent;
3073
3075
  totalBorrowLimit = depositValues.reduce(function (p, v, index) {
3074
3076
  if (userMarketDetails[index].isCollateral) return p.plus(v.multipliedBy(userMarketDetails[index].collateralRatio));
3075
3077
  return p;
@@ -3078,15 +3080,20 @@ var SdkRead = /*#__PURE__*/function (_BlockchainEntityRead) {
3078
3080
  promises.push(this._comptroller.getAccountLiquidity(userAddress));
3079
3081
  promises.push(this._auriLens.callStatic.getRewardBalancesMetadata(this._comptroller.address, this._auriFairLaunch.address, userAddress, [AurPlyPid]));
3080
3082
  promises.push(this._tokenLock.lockedAmounts(userAddress));
3081
- _context2.next = 26;
3083
+ _context2.next = 23;
3082
3084
  return Promise.all(promises);
3083
3085
 
3084
- case 26:
3086
+ case 23:
3085
3087
  values = _context2.sent;
3086
3088
  accountLiquidity = values[0];
3087
3089
  rewardBalancesMetadata = values[1];
3088
3090
  lockedAmount = values[2];
3089
3091
  borrowedvaluation = totalBorrowLimit.minus(new BigNumber(accountLiquidity[1].toString()).div(decimalFactor(18)));
3092
+
3093
+ if (borrowedvaluation.lt("0.00001")) {
3094
+ borrowedvaluation = new BigNumber(0);
3095
+ }
3096
+
3090
3097
  bufferedBorrowLimit = totalBorrowLimit.multipliedBy(BORROW_LIMIT_BUFFER);
3091
3098
  minimumBorrowLimitAllowed = borrowedvaluation.div(BORROW_LIMIT_BUFFER);
3092
3099
 
@@ -3117,7 +3124,7 @@ var SdkRead = /*#__PURE__*/function (_BlockchainEntityRead) {
3117
3124
  }
3118
3125
  });
3119
3126
 
3120
- case 36:
3127
+ case 34:
3121
3128
  case "end":
3122
3129
  return _context2.stop();
3123
3130
  }
@@ -3240,15 +3247,41 @@ var SdkRead = /*#__PURE__*/function (_BlockchainEntityRead) {
3240
3247
  return stakeBalanceOf;
3241
3248
  }();
3242
3249
 
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);
3250
+ _proto.calcHypotheticalStats = function calcHypotheticalStats(_ref) {
3251
+ var userMarketDetail = _ref.userMarketDetail,
3252
+ currentBorrowLimit = _ref.currentBorrowLimit,
3253
+ currentBorrowValuation = _ref.currentBorrowValuation,
3254
+ action = _ref.action,
3255
+ tokenAmount = _ref.tokenAmount;
3256
+ var newBorrowLimit = new BigNumber(currentBorrowLimit.amount),
3257
+ newBorrowValuation = new BigNumber(currentBorrowValuation.amount);
3258
+
3259
+ switch (action) {
3260
+ case exports.MarketAction.EnableCollateral:
3261
+ case exports.MarketAction.DisableCollateral:
3262
+ var deltaBorrowLimit = calcValuation(userMarketDetail.depositBalance, new BigNumber(userMarketDetail.underlyingPrice)).multipliedBy(userMarketDetail.collateralRatio).multipliedBy(BORROW_LIMIT_BUFFER);
3263
+ newBorrowLimit = action == exports.MarketAction.EnableCollateral ? newBorrowLimit.plus(deltaBorrowLimit) : newBorrowLimit.minus(deltaBorrowLimit);
3264
+ break;
3265
+
3266
+ case exports.MarketAction.Deposit:
3267
+ case exports.MarketAction.Withdraw:
3268
+ deltaBorrowLimit = calcValuation(tokenAmount, new BigNumber(userMarketDetail.underlyingPrice)).multipliedBy(userMarketDetail.collateralRatio).multipliedBy(BORROW_LIMIT_BUFFER);
3269
+ newBorrowLimit = action == exports.MarketAction.Deposit ? newBorrowLimit.plus(deltaBorrowLimit) : newBorrowLimit.minus(deltaBorrowLimit);
3270
+ break;
3271
+
3272
+ case exports.MarketAction.Borrow:
3273
+ case exports.MarketAction.Repay:
3274
+ var deltaBorrowValuation = calcValuation(tokenAmount, new BigNumber(userMarketDetail.underlyingPrice));
3275
+ newBorrowValuation = action == exports.MarketAction.Borrow ? newBorrowValuation.plus(deltaBorrowValuation) : newBorrowValuation.minus(deltaBorrowValuation);
3276
+ break;
3277
+ }
3278
+
3246
3279
  return {
3247
3280
  newBorrowLimit: {
3248
3281
  amount: newBorrowLimit.toFixed(DECIMAL_PRECISION),
3249
3282
  currency: "USD"
3250
3283
  },
3251
- newBorrowUtilization: new BigNumber(args.currentBorrowValuation.amount).div(newBorrowLimit).toNumber()
3284
+ newBorrowUtilization: newBorrowValuation.div(newBorrowLimit).toNumber()
3252
3285
  };
3253
3286
  };
3254
3287
 
@@ -3347,8 +3380,8 @@ var SDK = /*#__PURE__*/function (_BlockchainEntity) {
3347
3380
  return new SdkRead(networkConnection);
3348
3381
  };
3349
3382
 
3350
- SDK.defaultProvider = function defaultProvider() {
3351
- return new ethers$1.ethers.providers.JsonRpcProvider(AVAX_DEFAULT_PROVIDER_URL);
3383
+ _proto3.readWrite = function readWrite(networkConnection) {
3384
+ return new SdkReadWrite(networkConnection);
3352
3385
  };
3353
3386
 
3354
3387
  return SDK;
@@ -3368,16 +3401,12 @@ var dummyUserMarketDetails = {
3368
3401
  borrowBalance: dummyZeroTokenAmount,
3369
3402
  isCollateral: true,
3370
3403
  maxWithdrawableAmount: dummyTokenAmount,
3371
- collateralRatio: 0.5
3404
+ collateralRatio: 0.5,
3405
+ underlyingPrice: "1"
3372
3406
  };
3373
3407
 
3374
3408
  exports.AURORA_CHAINID = AURORA_CHAINID;
3375
- exports.AURORA_DEFAULT_PROVIDER = AURORA_DEFAULT_PROVIDER;
3376
- exports.AURORA_DEFAULT_PROVIDER_URL = AURORA_DEFAULT_PROVIDER_URL;
3377
- exports.AURORA_DEFAULT_SIGNER = AURORA_DEFAULT_SIGNER;
3378
3409
  exports.AURPLYToken = AURPLYToken;
3379
- exports.AVAX_DEFAULT_PROVIDER = AVAX_DEFAULT_PROVIDER;
3380
- exports.AVAX_DEFAULT_PROVIDER_URL = AVAX_DEFAULT_PROVIDER_URL;
3381
3410
  exports.AurPlyPid = AurPlyPid;
3382
3411
  exports.BORROW_LIMIT_BUFFER = BORROW_LIMIT_BUFFER;
3383
3412
  exports.BlockchainEntity = BlockchainEntity;
@@ -3385,6 +3414,7 @@ exports.BlockchainEntityRead = BlockchainEntityRead;
3385
3414
  exports.BlockchainEntityReadWrite = BlockchainEntityReadWrite;
3386
3415
  exports.DECIMAL_PRECISION = DECIMAL_PRECISION;
3387
3416
  exports.ETHAddress = ETHAddress;
3417
+ exports.INF = INF;
3388
3418
  exports.MoneyMarket = MoneyMarket;
3389
3419
  exports.MoneyMarketRead = MoneyMarketRead;
3390
3420
  exports.MoneyMarketReadWrite = MoneyMarketReadWrite;
@@ -3398,6 +3428,7 @@ exports.SdkReadWrite = SdkReadWrite;
3398
3428
  exports.Token = Token;
3399
3429
  exports.TokenAmount = TokenAmount;
3400
3430
  exports.calcLMRewardApr = calcLMRewardApr;
3431
+ exports.calcValuation = calcValuation;
3401
3432
  exports.decimalFactor = decimalFactor;
3402
3433
  exports.dummyAddress = dummyAddress;
3403
3434
  exports.dummyMarketAddress = dummyMarketAddress;