@defisaver/positions-sdk 2.1.43-aave-v4-dev-4 → 2.1.43-aave-v4-dev-6

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.
@@ -85,6 +85,10 @@ const formatReserveAsset = (reserveAsset, hubAsset, reserveId, oracleDecimals, n
85
85
  supplyRate: '0', // To be implemented
86
86
  supplyIncentives,
87
87
  borrowIncentives,
88
+ canBeBorrowed: reserveAsset.spokeActive && !reserveAsset.spokePaused && !reserveAsset.paused && !reserveAsset.frozen,
89
+ canBeSupplied: reserveAsset.spokeActive && !reserveAsset.spokePaused && !reserveAsset.paused && !reserveAsset.frozen,
90
+ canBeWithdrawn: reserveAsset.spokeActive && !reserveAsset.spokePaused && !reserveAsset.paused,
91
+ canBePayBacked: reserveAsset.spokeActive && !reserveAsset.spokePaused && !reserveAsset.paused,
88
92
  });
89
93
  });
90
94
  function _getAaveV4SpokeData(provider_1, network_1, market_1) {
@@ -142,6 +146,7 @@ function _getAaveV4AccountData(provider_1, network_1, spokeData_1, address_1) {
142
146
  isSupplied: !new decimal_js_1.default(supplied).eq(0),
143
147
  isBorrowed: usedReserveAsset.isBorrowing,
144
148
  collateral: usedReserveAsset.isUsingAsCollateral,
149
+ collateralFactor: new decimal_js_1.default(usedReserveAsset.collateralFactor).div(10000).toNumber(),
145
150
  };
146
151
  return acc;
147
152
  }, {});
@@ -150,6 +155,7 @@ function _getAaveV4AccountData(provider_1, network_1, spokeData_1, address_1) {
150
155
  usedAssets,
151
156
  assetsData: spokeData.assetsData,
152
157
  network,
158
+ useUserCollateralFactor: true,
153
159
  }));
154
160
  });
155
161
  }
@@ -1,7 +1,9 @@
1
- import { AaveV4AggregatedPositionData, AaveV4AssetsData, AaveV4UsedReserveAssets } from '../../types';
1
+ import { AaveV4AggregatedPositionData, AaveV4AssetsData, AaveV4ReserveAssetData, AaveV4UsedReserveAsset, AaveV4UsedReserveAssets } from '../../types';
2
2
  import { NetworkNumber } from '../../types/common';
3
- export declare const aaveV4GetAggregatedPositionData: ({ usedAssets, assetsData, network, }: {
3
+ export declare const aaveV4GetCollateralFactor: (assetData: AaveV4ReserveAssetData, usedAssetData: AaveV4UsedReserveAsset, useUserCollateralFactor?: boolean) => number;
4
+ export declare const aaveV4GetAggregatedPositionData: ({ usedAssets, assetsData, network, useUserCollateralFactor, }: {
4
5
  usedAssets: AaveV4UsedReserveAssets;
5
6
  assetsData: AaveV4AssetsData;
6
7
  network: NetworkNumber;
8
+ useUserCollateralFactor?: boolean;
7
9
  }) => AaveV4AggregatedPositionData;
@@ -3,18 +3,18 @@ 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.aaveV4GetAggregatedPositionData = void 0;
6
+ exports.aaveV4GetAggregatedPositionData = exports.aaveV4GetCollateralFactor = void 0;
7
7
  const decimal_js_1 = __importDefault(require("decimal.js"));
8
8
  const moneymarket_1 = require("../../moneymarket");
9
- const aaveV4GetAggregatedPositionData = ({ usedAssets, assetsData, network, }) => {
9
+ const aaveV4GetCollateralFactor = (assetData, usedAssetData, useUserCollateralFactor = false) => (useUserCollateralFactor ? usedAssetData.collateralFactor : assetData.collateralFactor);
10
+ exports.aaveV4GetCollateralFactor = aaveV4GetCollateralFactor;
11
+ const aaveV4GetAggregatedPositionData = ({ usedAssets, assetsData, network, useUserCollateralFactor = false, }) => {
10
12
  var _a;
11
13
  const payload = {};
12
14
  payload.suppliedUsd = (0, moneymarket_1.getAssetsTotal)(usedAssets, ({ isSupplied }) => isSupplied, ({ suppliedUsd }) => suppliedUsd);
13
15
  payload.suppliedCollateralUsd = (0, moneymarket_1.getAssetsTotal)(usedAssets, ({ isSupplied, collateral }) => isSupplied && collateral, ({ suppliedUsd }) => suppliedUsd);
14
- payload.borrowLimitUsd = (0, moneymarket_1.getAssetsTotal)(usedAssets, ({ isSupplied, collateral }) => isSupplied && collateral, ({ symbol, suppliedUsd, reserveId }) => new decimal_js_1.default(suppliedUsd).mul(assetsData[`${symbol}-${reserveId}`].collateralFactor));
15
- payload.liquidationLimitUsd = (0, moneymarket_1.getAssetsTotal)(usedAssets, ({ isSupplied, collateral }) => isSupplied && collateral,
16
- // TODO: Verify if liquidation factor is available in Aave V4, currently using collateralFactor as placeholder
17
- ({ symbol, suppliedUsd, reserveId }) => new decimal_js_1.default(suppliedUsd).mul(assetsData[`${symbol}-${reserveId}`].collateralFactor));
16
+ payload.borrowLimitUsd = (0, moneymarket_1.getAssetsTotal)(usedAssets, ({ isSupplied, collateral }) => isSupplied && collateral, ({ symbol, suppliedUsd, reserveId }) => new decimal_js_1.default(suppliedUsd).mul((0, exports.aaveV4GetCollateralFactor)(assetsData[`${symbol}-${reserveId}`], usedAssets[`${symbol}-${reserveId}`], useUserCollateralFactor)));
17
+ payload.liquidationLimitUsd = payload.borrowLimitUsd;
18
18
  payload.borrowedUsd = (0, moneymarket_1.getAssetsTotal)(usedAssets, ({ isBorrowed }) => isBorrowed, ({ borrowedUsd }) => borrowedUsd);
19
19
  payload.drawnUsd = (0, moneymarket_1.getAssetsTotal)(usedAssets, ({ isBorrowed }) => isBorrowed, ({ drawnUsd }) => drawnUsd);
20
20
  payload.premiumUsd = (0, moneymarket_1.getAssetsTotal)(usedAssets, ({ isBorrowed }) => isBorrowed, ({ premiumUsd }) => premiumUsd);
@@ -68,6 +68,10 @@ export interface AaveV4ReserveAssetData {
68
68
  supplyRate: string;
69
69
  supplyIncentives: IncentiveData[];
70
70
  borrowIncentives: IncentiveData[];
71
+ canBeBorrowed: boolean;
72
+ canBeSupplied: boolean;
73
+ canBeWithdrawn: boolean;
74
+ canBePayBacked: boolean;
71
75
  }
72
76
  export type AaveV4AssetsData = Record<string, AaveV4ReserveAssetData>;
73
77
  export interface AaveV4SpokeData {
@@ -91,6 +95,7 @@ export interface AaveV4UsedReserveAsset {
91
95
  isSupplied: boolean;
92
96
  isBorrowed: boolean;
93
97
  collateral: boolean;
98
+ collateralFactor: number;
94
99
  }
95
100
  export interface AaveV4AggregatedPositionData {
96
101
  suppliedUsd: string;
@@ -76,6 +76,10 @@ const formatReserveAsset = (reserveAsset, hubAsset, reserveId, oracleDecimals, n
76
76
  supplyRate: '0', // To be implemented
77
77
  supplyIncentives,
78
78
  borrowIncentives,
79
+ canBeBorrowed: reserveAsset.spokeActive && !reserveAsset.spokePaused && !reserveAsset.paused && !reserveAsset.frozen,
80
+ canBeSupplied: reserveAsset.spokeActive && !reserveAsset.spokePaused && !reserveAsset.paused && !reserveAsset.frozen,
81
+ canBeWithdrawn: reserveAsset.spokeActive && !reserveAsset.spokePaused && !reserveAsset.paused,
82
+ canBePayBacked: reserveAsset.spokeActive && !reserveAsset.spokePaused && !reserveAsset.paused,
79
83
  });
80
84
  });
81
85
  export function _getAaveV4SpokeData(provider_1, network_1, market_1) {
@@ -133,6 +137,7 @@ export function _getAaveV4AccountData(provider_1, network_1, spokeData_1, addres
133
137
  isSupplied: !new Dec(supplied).eq(0),
134
138
  isBorrowed: usedReserveAsset.isBorrowing,
135
139
  collateral: usedReserveAsset.isUsingAsCollateral,
140
+ collateralFactor: new Dec(usedReserveAsset.collateralFactor).div(10000).toNumber(),
136
141
  };
137
142
  return acc;
138
143
  }, {});
@@ -141,6 +146,7 @@ export function _getAaveV4AccountData(provider_1, network_1, spokeData_1, addres
141
146
  usedAssets,
142
147
  assetsData: spokeData.assetsData,
143
148
  network,
149
+ useUserCollateralFactor: true,
144
150
  }));
145
151
  });
146
152
  }
@@ -1,7 +1,9 @@
1
- import { AaveV4AggregatedPositionData, AaveV4AssetsData, AaveV4UsedReserveAssets } from '../../types';
1
+ import { AaveV4AggregatedPositionData, AaveV4AssetsData, AaveV4ReserveAssetData, AaveV4UsedReserveAsset, AaveV4UsedReserveAssets } from '../../types';
2
2
  import { NetworkNumber } from '../../types/common';
3
- export declare const aaveV4GetAggregatedPositionData: ({ usedAssets, assetsData, network, }: {
3
+ export declare const aaveV4GetCollateralFactor: (assetData: AaveV4ReserveAssetData, usedAssetData: AaveV4UsedReserveAsset, useUserCollateralFactor?: boolean) => number;
4
+ export declare const aaveV4GetAggregatedPositionData: ({ usedAssets, assetsData, network, useUserCollateralFactor, }: {
4
5
  usedAssets: AaveV4UsedReserveAssets;
5
6
  assetsData: AaveV4AssetsData;
6
7
  network: NetworkNumber;
8
+ useUserCollateralFactor?: boolean;
7
9
  }) => AaveV4AggregatedPositionData;
@@ -1,14 +1,13 @@
1
1
  import Dec from 'decimal.js';
2
2
  import { calcLeverageLiqPrice, getAssetsTotal, isLeveragedPos } from '../../moneymarket';
3
- export const aaveV4GetAggregatedPositionData = ({ usedAssets, assetsData, network, }) => {
3
+ export const aaveV4GetCollateralFactor = (assetData, usedAssetData, useUserCollateralFactor = false) => (useUserCollateralFactor ? usedAssetData.collateralFactor : assetData.collateralFactor);
4
+ export const aaveV4GetAggregatedPositionData = ({ usedAssets, assetsData, network, useUserCollateralFactor = false, }) => {
4
5
  var _a;
5
6
  const payload = {};
6
7
  payload.suppliedUsd = getAssetsTotal(usedAssets, ({ isSupplied }) => isSupplied, ({ suppliedUsd }) => suppliedUsd);
7
8
  payload.suppliedCollateralUsd = getAssetsTotal(usedAssets, ({ isSupplied, collateral }) => isSupplied && collateral, ({ suppliedUsd }) => suppliedUsd);
8
- payload.borrowLimitUsd = getAssetsTotal(usedAssets, ({ isSupplied, collateral }) => isSupplied && collateral, ({ symbol, suppliedUsd, reserveId }) => new Dec(suppliedUsd).mul(assetsData[`${symbol}-${reserveId}`].collateralFactor));
9
- payload.liquidationLimitUsd = getAssetsTotal(usedAssets, ({ isSupplied, collateral }) => isSupplied && collateral,
10
- // TODO: Verify if liquidation factor is available in Aave V4, currently using collateralFactor as placeholder
11
- ({ symbol, suppliedUsd, reserveId }) => new Dec(suppliedUsd).mul(assetsData[`${symbol}-${reserveId}`].collateralFactor));
9
+ payload.borrowLimitUsd = getAssetsTotal(usedAssets, ({ isSupplied, collateral }) => isSupplied && collateral, ({ symbol, suppliedUsd, reserveId }) => new Dec(suppliedUsd).mul(aaveV4GetCollateralFactor(assetsData[`${symbol}-${reserveId}`], usedAssets[`${symbol}-${reserveId}`], useUserCollateralFactor)));
10
+ payload.liquidationLimitUsd = payload.borrowLimitUsd;
12
11
  payload.borrowedUsd = getAssetsTotal(usedAssets, ({ isBorrowed }) => isBorrowed, ({ borrowedUsd }) => borrowedUsd);
13
12
  payload.drawnUsd = getAssetsTotal(usedAssets, ({ isBorrowed }) => isBorrowed, ({ drawnUsd }) => drawnUsd);
14
13
  payload.premiumUsd = getAssetsTotal(usedAssets, ({ isBorrowed }) => isBorrowed, ({ premiumUsd }) => premiumUsd);
@@ -68,6 +68,10 @@ export interface AaveV4ReserveAssetData {
68
68
  supplyRate: string;
69
69
  supplyIncentives: IncentiveData[];
70
70
  borrowIncentives: IncentiveData[];
71
+ canBeBorrowed: boolean;
72
+ canBeSupplied: boolean;
73
+ canBeWithdrawn: boolean;
74
+ canBePayBacked: boolean;
71
75
  }
72
76
  export type AaveV4AssetsData = Record<string, AaveV4ReserveAssetData>;
73
77
  export interface AaveV4SpokeData {
@@ -91,6 +95,7 @@ export interface AaveV4UsedReserveAsset {
91
95
  isSupplied: boolean;
92
96
  isBorrowed: boolean;
93
97
  collateral: boolean;
98
+ collateralFactor: number;
94
99
  }
95
100
  export interface AaveV4AggregatedPositionData {
96
101
  suppliedUsd: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@defisaver/positions-sdk",
3
- "version": "2.1.43-aave-v4-dev-4",
3
+ "version": "2.1.43-aave-v4-dev-6",
4
4
  "description": "",
5
5
  "main": "./cjs/index.js",
6
6
  "module": "./esm/index.js",
@@ -82,6 +82,10 @@ const formatReserveAsset = async (reserveAsset: AaveV4ReserveAssetOnChain, hubAs
82
82
  supplyRate: '0', // To be implemented
83
83
  supplyIncentives,
84
84
  borrowIncentives,
85
+ canBeBorrowed: reserveAsset.spokeActive && !reserveAsset.spokePaused && !reserveAsset.paused && !reserveAsset.frozen,
86
+ canBeSupplied: reserveAsset.spokeActive && !reserveAsset.spokePaused && !reserveAsset.paused && !reserveAsset.frozen,
87
+ canBeWithdrawn: reserveAsset.spokeActive && !reserveAsset.spokePaused && !reserveAsset.paused,
88
+ canBePayBacked: reserveAsset.spokeActive && !reserveAsset.spokePaused && !reserveAsset.paused,
85
89
  });
86
90
  };
87
91
 
@@ -142,6 +146,7 @@ export async function _getAaveV4AccountData(provider: Client, network: NetworkNu
142
146
  isSupplied: !new Dec(supplied).eq(0),
143
147
  isBorrowed: usedReserveAsset.isBorrowing,
144
148
  collateral: usedReserveAsset.isUsingAsCollateral,
149
+ collateralFactor: new Dec(usedReserveAsset.collateralFactor).div(10000).toNumber(),
145
150
  };
146
151
  return acc;
147
152
  }, {});
@@ -153,6 +158,7 @@ export async function _getAaveV4AccountData(provider: Client, network: NetworkNu
153
158
  usedAssets,
154
159
  assetsData: spokeData.assetsData,
155
160
  network,
161
+ useUserCollateralFactor: true,
156
162
  }),
157
163
  };
158
164
  }
@@ -1,16 +1,22 @@
1
1
  import Dec from 'decimal.js';
2
2
  import { calcLeverageLiqPrice, getAssetsTotal, isLeveragedPos } from '../../moneymarket';
3
- import { AaveV4AggregatedPositionData, AaveV4AssetsData, AaveV4UsedReserveAssets } from '../../types';
3
+ import {
4
+ AaveV4AggregatedPositionData, AaveV4AssetsData, AaveV4ReserveAssetData, AaveV4UsedReserveAsset, AaveV4UsedReserveAssets,
5
+ } from '../../types';
4
6
  import { NetworkNumber } from '../../types/common';
5
7
 
8
+ export const aaveV4GetCollateralFactor = (assetData: AaveV4ReserveAssetData, usedAssetData: AaveV4UsedReserveAsset, useUserCollateralFactor: boolean = false): number => (useUserCollateralFactor ? usedAssetData.collateralFactor : assetData.collateralFactor);
9
+
6
10
  export const aaveV4GetAggregatedPositionData = ({
7
11
  usedAssets,
8
12
  assetsData,
9
13
  network,
14
+ useUserCollateralFactor = false,
10
15
  }: {
11
16
  usedAssets: AaveV4UsedReserveAssets,
12
17
  assetsData: AaveV4AssetsData,
13
18
  network: NetworkNumber,
19
+ useUserCollateralFactor?: boolean,
14
20
  }): AaveV4AggregatedPositionData => {
15
21
  const payload = {} as AaveV4AggregatedPositionData;
16
22
  payload.suppliedUsd = getAssetsTotal(usedAssets, ({ isSupplied }: { isSupplied: boolean }) => isSupplied, ({ suppliedUsd }: { suppliedUsd: string }) => suppliedUsd);
@@ -18,14 +24,9 @@ export const aaveV4GetAggregatedPositionData = ({
18
24
  payload.borrowLimitUsd = getAssetsTotal(
19
25
  usedAssets,
20
26
  ({ isSupplied, collateral }: { isSupplied: boolean, collateral: string }) => isSupplied && collateral,
21
- ({ symbol, suppliedUsd, reserveId }: { symbol: string, suppliedUsd: string, reserveId: number }) => new Dec(suppliedUsd).mul(assetsData[`${symbol}-${reserveId}`].collateralFactor),
22
- );
23
- payload.liquidationLimitUsd = getAssetsTotal(
24
- usedAssets,
25
- ({ isSupplied, collateral }: { isSupplied: boolean, collateral: string }) => isSupplied && collateral,
26
- // TODO: Verify if liquidation factor is available in Aave V4, currently using collateralFactor as placeholder
27
- ({ symbol, suppliedUsd, reserveId }: { symbol: string, suppliedUsd: string, reserveId: number }) => new Dec(suppliedUsd).mul(assetsData[`${symbol}-${reserveId}`].collateralFactor),
27
+ ({ symbol, suppliedUsd, reserveId }: { symbol: string, suppliedUsd: string, reserveId: number }) => new Dec(suppliedUsd).mul(aaveV4GetCollateralFactor(assetsData[`${symbol}-${reserveId}`], usedAssets[`${symbol}-${reserveId}`], useUserCollateralFactor)),
28
28
  );
29
+ payload.liquidationLimitUsd = payload.borrowLimitUsd;
29
30
  payload.borrowedUsd = getAssetsTotal(usedAssets, ({ isBorrowed }: { isBorrowed: boolean }) => isBorrowed, ({ borrowedUsd }: { borrowedUsd: string }) => borrowedUsd);
30
31
  payload.drawnUsd = getAssetsTotal(usedAssets, ({ isBorrowed }: { isBorrowed: boolean }) => isBorrowed, ({ drawnUsd }: { drawnUsd: string }) => drawnUsd);
31
32
  payload.premiumUsd = getAssetsTotal(usedAssets, ({ isBorrowed }: { isBorrowed: boolean }) => isBorrowed, ({ premiumUsd }: { premiumUsd: string }) => premiumUsd);
@@ -75,6 +75,10 @@ export interface AaveV4ReserveAssetData {
75
75
  supplyRate: string,
76
76
  supplyIncentives: IncentiveData[];
77
77
  borrowIncentives: IncentiveData[];
78
+ canBeBorrowed: boolean;
79
+ canBeSupplied: boolean;
80
+ canBeWithdrawn: boolean;
81
+ canBePayBacked: boolean;
78
82
  }
79
83
 
80
84
  export type AaveV4AssetsData = Record<string, AaveV4ReserveAssetData>;
@@ -101,6 +105,7 @@ export interface AaveV4UsedReserveAsset {
101
105
  isSupplied: boolean,
102
106
  isBorrowed: boolean,
103
107
  collateral: boolean,
108
+ collateralFactor: number,
104
109
  }
105
110
 
106
111
  export interface AaveV4AggregatedPositionData {