@defisaver/positions-sdk 0.0.32 → 0.0.34

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.
Files changed (86) hide show
  1. package/README.md +63 -63
  2. package/cjs/config/contracts.d.ts +908 -41
  3. package/cjs/config/contracts.js +171 -44
  4. package/cjs/contracts.js +4 -10
  5. package/cjs/curveUsd/index.js +1 -1
  6. package/cjs/helpers/curveUsdHelpers/index.d.ts +2 -1
  7. package/cjs/helpers/curveUsdHelpers/index.js +25 -17
  8. package/cjs/markets/morphoBlue/index.d.ts +2 -0
  9. package/cjs/markets/morphoBlue/index.js +17 -1
  10. package/cjs/moneymarket/moneymarketCommonService.js +1 -1
  11. package/cjs/morphoBlue/index.js +6 -3
  12. package/cjs/services/utils.d.ts +4 -0
  13. package/cjs/services/utils.js +13 -1
  14. package/cjs/types/contracts/generated/CrvUSDView.d.ts +30 -4
  15. package/cjs/types/curveUsd.d.ts +6 -0
  16. package/cjs/types/morphoBlue.d.ts +2 -1
  17. package/cjs/types/morphoBlue.js +1 -0
  18. package/esm/config/contracts.d.ts +908 -41
  19. package/esm/config/contracts.js +171 -44
  20. package/esm/contracts.js +4 -10
  21. package/esm/curveUsd/index.js +1 -1
  22. package/esm/helpers/curveUsdHelpers/index.d.ts +2 -1
  23. package/esm/helpers/curveUsdHelpers/index.js +26 -18
  24. package/esm/markets/morphoBlue/index.d.ts +2 -0
  25. package/esm/markets/morphoBlue/index.js +15 -0
  26. package/esm/moneymarket/moneymarketCommonService.js +1 -1
  27. package/esm/morphoBlue/index.js +6 -3
  28. package/esm/services/utils.d.ts +4 -0
  29. package/esm/services/utils.js +11 -0
  30. package/esm/types/contracts/generated/CrvUSDView.d.ts +30 -4
  31. package/esm/types/curveUsd.d.ts +6 -0
  32. package/esm/types/morphoBlue.d.ts +2 -1
  33. package/esm/types/morphoBlue.js +1 -0
  34. package/package.json +40 -40
  35. package/src/aaveV2/index.ts +226 -226
  36. package/src/aaveV3/index.ts +561 -561
  37. package/src/assets/index.ts +60 -60
  38. package/src/chickenBonds/index.ts +123 -123
  39. package/src/compoundV2/index.ts +219 -219
  40. package/src/compoundV3/index.ts +275 -275
  41. package/src/config/contracts.js +817 -690
  42. package/src/constants/index.ts +5 -5
  43. package/src/contracts.ts +124 -130
  44. package/src/curveUsd/index.ts +228 -228
  45. package/src/exchange/index.ts +17 -17
  46. package/src/helpers/aaveHelpers/index.ts +134 -134
  47. package/src/helpers/chickenBondsHelpers/index.ts +23 -23
  48. package/src/helpers/compoundHelpers/index.ts +181 -181
  49. package/src/helpers/curveUsdHelpers/index.ts +40 -32
  50. package/src/helpers/index.ts +6 -6
  51. package/src/helpers/makerHelpers/index.ts +94 -94
  52. package/src/helpers/morphoBlueHelpers/index.ts +46 -46
  53. package/src/helpers/sparkHelpers/index.ts +106 -106
  54. package/src/index.ts +42 -42
  55. package/src/liquity/index.ts +116 -116
  56. package/src/maker/index.ts +101 -101
  57. package/src/markets/aave/index.ts +80 -80
  58. package/src/markets/aave/marketAssets.ts +24 -24
  59. package/src/markets/compound/index.ts +141 -141
  60. package/src/markets/compound/marketsAssets.ts +48 -48
  61. package/src/markets/curveUsd/index.ts +69 -69
  62. package/src/markets/index.ts +4 -4
  63. package/src/markets/morphoBlue/index.ts +36 -20
  64. package/src/markets/spark/index.ts +29 -29
  65. package/src/markets/spark/marketAssets.ts +10 -10
  66. package/src/moneymarket/moneymarketCommonService.ts +75 -75
  67. package/src/morphoAaveV2/index.ts +255 -255
  68. package/src/morphoAaveV3/index.ts +619 -619
  69. package/src/morphoBlue/index.ts +170 -165
  70. package/src/multicall/index.ts +22 -22
  71. package/src/services/dsrService.ts +15 -15
  72. package/src/services/priceService.ts +21 -21
  73. package/src/services/utils.ts +48 -35
  74. package/src/spark/index.ts +422 -422
  75. package/src/staking/staking.ts +167 -167
  76. package/src/types/aave.ts +256 -256
  77. package/src/types/chickenBonds.ts +45 -45
  78. package/src/types/common.ts +83 -83
  79. package/src/types/compound.ts +128 -128
  80. package/src/types/contracts/generated/CrvUSDView.ts +43 -8
  81. package/src/types/curveUsd.ts +118 -112
  82. package/src/types/index.ts +7 -7
  83. package/src/types/liquity.ts +30 -30
  84. package/src/types/maker.ts +50 -50
  85. package/src/types/morphoBlue.ts +80 -79
  86. package/src/types/spark.ts +106 -106
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MorphoBlueMarkets = exports.MORPHO_BLUE_WSTETH_ETH = void 0;
3
+ exports.MorphoBlueMarkets = exports.MORPHO_BLUE_WSTETH_USDC = exports.MORPHO_BLUE_WSTETH_ETH = void 0;
4
4
  const types_1 = require("../../types");
5
5
  const common_1 = require("../../types/common");
6
6
  const MORPHO_BLUE_WSTETH_ETH = (networkId = common_1.NetworkNumber.Eth) => ({
@@ -18,7 +18,23 @@ const MORPHO_BLUE_WSTETH_ETH = (networkId = common_1.NetworkNumber.Eth) => ({
18
18
  protocolName: 'morpho-blue',
19
19
  });
20
20
  exports.MORPHO_BLUE_WSTETH_ETH = MORPHO_BLUE_WSTETH_ETH;
21
+ const MORPHO_BLUE_WSTETH_USDC = (networkId = common_1.NetworkNumber.Eth) => ({
22
+ chainIds: [1],
23
+ label: 'Morpho Blue',
24
+ shortLabel: 'wstETH/USDC',
25
+ value: types_1.MorphoBlueVersions.MorphoBlueWstEthUSDC,
26
+ url: 'default',
27
+ loanToken: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
28
+ collateralToken: '0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0',
29
+ oracle: '0x48F7E36EB6B826B2dF4B2E630B62Cd25e89E40e2',
30
+ irm: '0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC',
31
+ lltv: 0.86,
32
+ // icon: SvgAdapter(protocolIcons.spark),
33
+ protocolName: 'morpho-blue',
34
+ });
35
+ exports.MORPHO_BLUE_WSTETH_USDC = MORPHO_BLUE_WSTETH_USDC;
21
36
  const MorphoBlueMarkets = (networkId) => ({
22
37
  [types_1.MorphoBlueVersions.MorphoBlueWstEthEth]: (0, exports.MORPHO_BLUE_WSTETH_ETH)(networkId),
38
+ [types_1.MorphoBlueVersions.MorphoBlueWstEthUSDC]: (0, exports.MORPHO_BLUE_WSTETH_USDC)(networkId),
23
39
  });
24
40
  exports.MorphoBlueMarkets = MorphoBlueMarkets;
@@ -27,7 +27,7 @@ const calcLeverageLiqPrice = (leverageType, assetPrice, borrowedUsd, borrowLimit
27
27
  exports.calcLeverageLiqPrice = calcLeverageLiqPrice;
28
28
  const calculateBorrowingAssetLimit = (assetBorrowedUsd, borrowLimitUsd) => new decimal_js_1.default(assetBorrowedUsd).div(borrowLimitUsd).times(100).toString();
29
29
  exports.calculateBorrowingAssetLimit = calculateBorrowingAssetLimit;
30
- exports.STABLE_ASSETS = ['DAI', 'USDC', 'USDT', 'TUSD', 'USDP', 'GUSD', 'BUSD', 'SUSD', 'FRAX', 'LUSD', 'USDC.e', 'GHO', 'sDAI'];
30
+ exports.STABLE_ASSETS = ['DAI', 'USDC', 'USDT', 'TUSD', 'USDP', 'GUSD', 'BUSD', 'SUSD', 'FRAX', 'LUSD', 'USDC.e', 'GHO', 'sDAI', 'crvUSD'];
31
31
  const isLeveragedPos = (usedAssets, dustLimit = 5) => {
32
32
  let borrowUnstable = 0;
33
33
  let supplyStable = 0;
@@ -77,7 +77,10 @@ function getMorphoBlueMarketData(web3, network, selectedMarket, mainnetWeb3) {
77
77
  const supplyRate = getSupplyRate(marketInfo.totalSupplyAssets, marketInfo.totalBorrowAssets, marketInfo.borrowRate, marketInfo.fee);
78
78
  const compoundedBorrowRate = getBorrowRate(marketInfo.borrowRate, marketInfo.totalBorrowShares);
79
79
  const utillization = new decimal_js_1.default(marketInfo.totalBorrowAssets).div(marketInfo.totalSupplyAssets).mul(100).toString();
80
- const oracleRate = new decimal_js_1.default(marketInfo.oracle).div(1e36).toString();
80
+ const oracleScaleFactor = new decimal_js_1.default(36).add(loanTokenInfo.decimals).sub(collateralTokenInfo.decimals).toString();
81
+ const oracleScale = new decimal_js_1.default(10).pow(oracleScaleFactor).toString();
82
+ const scale = new decimal_js_1.default(10).pow(loanTokenInfo.decimals).toString();
83
+ const oracleRate = new decimal_js_1.default(marketInfo.oracle).div(oracleScale).toString();
81
84
  const assetsData = {};
82
85
  assetsData[(0, utils_1.wethToEth)(loanTokenInfo.symbol)] = {
83
86
  symbol: (0, utils_1.wethToEth)(loanTokenInfo.symbol),
@@ -85,8 +88,8 @@ function getMorphoBlueMarketData(web3, network, selectedMarket, mainnetWeb3) {
85
88
  price: new decimal_js_1.default(loanTokenPrice).div(1e8).toString(),
86
89
  supplyRate: new decimal_js_1.default(supplyRate).div(constants_1.WAD).mul(100).toString(),
87
90
  borrowRate: new decimal_js_1.default(compoundedBorrowRate).div(constants_1.WAD).mul(100).toString(),
88
- totalSupply: new decimal_js_1.default(marketInfo.totalSupplyAssets).div(constants_1.WAD).toString(),
89
- totalBorrow: new decimal_js_1.default(marketInfo.totalBorrowAssets).div(constants_1.WAD).toString(),
91
+ totalSupply: new decimal_js_1.default(marketInfo.totalSupplyAssets).div(scale).toString(),
92
+ totalBorrow: new decimal_js_1.default(marketInfo.totalBorrowAssets).div(scale).toString(),
90
93
  };
91
94
  assetsData[(0, utils_1.wethToEth)(collateralTokenInfo.symbol)] = {
92
95
  symbol: (0, utils_1.wethToEth)(collateralTokenInfo.symbol),
@@ -14,3 +14,7 @@ export declare const handleWbtcLegacy: (asset: string) => string;
14
14
  export declare const wethToEthByAddress: (maybeWethAddr: string, chainId?: NetworkNumber) => string;
15
15
  export declare const ethToWethByAddress: (maybeEthAddr: string, chainId?: NetworkNumber) => string;
16
16
  export declare const bytesToString: (hex: string) => string;
17
+ /**
18
+ * Map an input value from one range (minInput, maxInput) to a value in another range (minOutput, maxOutput)
19
+ */
20
+ export declare const mapRange: (input: number | string, minInput: number | string, maxInput: number | string, minOutput: number | string, maxOutput: number | string) => number;
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.bytesToString = exports.ethToWethByAddress = exports.wethToEthByAddress = exports.handleWbtcLegacy = exports.getEthAmountForDecimals = exports.compareAddresses = exports.isAddress = exports.ADDRESS_REGEX = exports.getAbiItem = exports.wstEthToStEth = exports.stEthToWstEth = exports.wethToEth = exports.ethToWeth = exports.addToObjectIf = exports.isLayer2Network = void 0;
6
+ exports.mapRange = exports.bytesToString = exports.ethToWethByAddress = exports.wethToEthByAddress = exports.handleWbtcLegacy = exports.getEthAmountForDecimals = exports.compareAddresses = exports.isAddress = exports.ADDRESS_REGEX = exports.getAbiItem = exports.wstEthToStEth = exports.stEthToWstEth = exports.wethToEth = exports.ethToWeth = exports.addToObjectIf = exports.isLayer2Network = void 0;
7
7
  const decimal_js_1 = __importDefault(require("decimal.js"));
8
8
  const tokens_1 = require("@defisaver/tokens");
9
9
  const common_1 = require("../types/common");
@@ -39,3 +39,15 @@ const bytesToString = (hex) => Buffer.from(hex.replace(/^0x/, ''), 'hex')
39
39
  // eslint-disable-next-line no-control-regex
40
40
  .replace(/\x00/g, '');
41
41
  exports.bytesToString = bytesToString;
42
+ /**
43
+ * Map an input value from one range (minInput, maxInput) to a value in another range (minOutput, maxOutput)
44
+ */
45
+ const mapRange = (input, minInput, maxInput, minOutput, maxOutput) => {
46
+ // slope = 1.0 * (output_end - output_start) / (input_end - input_start)
47
+ const inputDiff = new decimal_js_1.default(maxInput).minus(minInput);
48
+ const outputDiff = new decimal_js_1.default(maxOutput).minus(minOutput);
49
+ const slope = new decimal_js_1.default(outputDiff).div(inputDiff);
50
+ // output = output_start + slope * (input - input_start)
51
+ return new decimal_js_1.default(minOutput).plus(new decimal_js_1.default(slope).mul(new decimal_js_1.default(input).minus(minInput))).toDP(2).toNumber();
52
+ };
53
+ exports.mapRange = mapRange;
@@ -138,7 +138,9 @@ export declare namespace CurveUsdView {
138
138
  [
139
139
  number | string | BN[],
140
140
  number | string | BN[]
141
- ]
141
+ ],
142
+ number | string | BN,
143
+ boolean
142
144
  ] | {
143
145
  loanExists: boolean;
144
146
  collateralPrice: number | string | BN;
@@ -152,6 +154,8 @@ export declare namespace CurveUsdView {
152
154
  health: number | string | BN;
153
155
  bandRange: [number | string | BN, number | string | BN];
154
156
  usersBands: [number | string | BN[], number | string | BN[]];
157
+ collRatio: number | string | BN;
158
+ isInSoftLiquidation: boolean;
155
159
  };
156
160
  type UserDataStructOutputArray = [
157
161
  boolean,
@@ -171,7 +175,9 @@ export declare namespace CurveUsdView {
171
175
  [
172
176
  string[],
173
177
  string[]
174
- ]
178
+ ],
179
+ string,
180
+ boolean
175
181
  ];
176
182
  type UserDataStructOutputStruct = {
177
183
  loanExists: boolean;
@@ -186,6 +192,8 @@ export declare namespace CurveUsdView {
186
192
  health: string;
187
193
  bandRange: [string, string];
188
194
  usersBands: [string[], string[]];
195
+ collRatio: string;
196
+ isInSoftLiquidation: boolean;
189
197
  };
190
198
  type UserDataStructOutput = UserDataStructOutputArray & UserDataStructOutputStruct;
191
199
  }
@@ -193,15 +201,33 @@ export interface CrvUSDView extends BaseContract {
193
201
  constructor(jsonInterface: any[], address?: string, options?: ContractOptions): CrvUSDView;
194
202
  clone(): CrvUSDView;
195
203
  methods: {
204
+ WBTC_HEALTH_ZAP(): NonPayableTransactionObject<string>;
205
+ WBTC_MARKET(): NonPayableTransactionObject<string>;
196
206
  createLoanData(market: string, collateral: number | string | BN, debt: number | string | BN, N: number | string | BN): NonPayableTransactionObject<CurveUsdView.CreateLoanDataStructOutput>;
197
207
  getBandData(market: string, n: number | string | BN): NonPayableTransactionObject<CurveUsdView.BandStructOutput>;
198
- "getBandsData(address,uint256,uint256,uint256)"(market: string, collateral: number | string | BN, debt: number | string | BN, N: number | string | BN): NonPayableTransactionObject<CurveUsdView.BandStructOutput[]>;
199
- "getBandsData(address,int256,int256)"(market: string, from: number | string | BN, to: number | string | BN): NonPayableTransactionObject<CurveUsdView.BandStructOutput[]>;
208
+ getBandsData(market: string, from: number | string | BN, to: number | string | BN): NonPayableTransactionObject<CurveUsdView.BandStructOutput[]>;
209
+ getBandsDataForPosition(market: string, collateral: number | string | BN, debt: number | string | BN, N: number | string | BN): NonPayableTransactionObject<CurveUsdView.BandStructOutput[]>;
210
+ getCollAmountsFromAMM(_controllerAddress: string, _user: string): NonPayableTransactionObject<[
211
+ string,
212
+ string
213
+ ] & {
214
+ crvUsdAmount: string;
215
+ collAmount: string;
216
+ }>;
217
+ getCollateralRatio(_user: string, _controllerAddr: string): NonPayableTransactionObject<[
218
+ string,
219
+ boolean
220
+ ] & {
221
+ collRatio: string;
222
+ isInSoftLiquidation: boolean;
223
+ }>;
200
224
  globalData(market: string): NonPayableTransactionObject<CurveUsdView.GlobalDataStructOutput>;
201
225
  healthCalculator(market: string, user: string, collChange: number | string | BN, debtChange: number | string | BN, isFull: boolean, numBands: number | string | BN): NonPayableTransactionObject<string>;
226
+ isControllerValid(_controllerAddr: string): NonPayableTransactionObject<boolean>;
202
227
  maxBorrow(market: string, collateral: number | string | BN, N: number | string | BN): NonPayableTransactionObject<string>;
203
228
  minCollateral(market: string, debt: number | string | BN, N: number | string | BN): NonPayableTransactionObject<string>;
204
229
  userData(market: string, user: string): NonPayableTransactionObject<CurveUsdView.UserDataStructOutput>;
230
+ userMaxWithdraw(_controllerAddress: string, _user: string): NonPayableTransactionObject<string>;
205
231
  };
206
232
  events: {
207
233
  allEvents(options?: EventOptions, cb?: Callback<EventLog>): EventEmitter;
@@ -67,6 +67,12 @@ export interface CrvUSDAggregatedPositionData {
67
67
  borrowedUsd: string;
68
68
  borrowed: string;
69
69
  safetyRatio: string;
70
+ borrowLimitUsd: string;
71
+ minAllowedRatio: number;
72
+ collFactor: string;
73
+ leveragedType: string;
74
+ leveragedAsset?: string;
75
+ liquidationPrice?: string;
70
76
  }
71
77
  export interface CrvUSDUsedAsset {
72
78
  isSupplied: boolean;
@@ -1,6 +1,7 @@
1
1
  import { MMUsedAssets, NetworkNumber } from './common';
2
2
  export declare enum MorphoBlueVersions {
3
- MorphoBlueWstEthEth = "morphobluewstetheth"
3
+ MorphoBlueWstEthEth = "morphobluewstetheth",
4
+ MorphoBlueWstEthUSDC = "morphobluewstethusdc"
4
5
  }
5
6
  export interface MorphoBlueMarketData {
6
7
  chainIds: NetworkNumber[];
@@ -4,4 +4,5 @@ exports.MorphoBlueVersions = void 0;
4
4
  var MorphoBlueVersions;
5
5
  (function (MorphoBlueVersions) {
6
6
  MorphoBlueVersions["MorphoBlueWstEthEth"] = "morphobluewstetheth";
7
+ MorphoBlueVersions["MorphoBlueWstEthUSDC"] = "morphobluewstethusdc";
7
8
  })(MorphoBlueVersions || (exports.MorphoBlueVersions = MorphoBlueVersions = {}));