@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.
- package/cjs/aaveV4/index.js +6 -0
- package/cjs/helpers/aaveV4Helpers/index.d.ts +4 -2
- package/cjs/helpers/aaveV4Helpers/index.js +6 -6
- package/cjs/types/aaveV4.d.ts +5 -0
- package/esm/aaveV4/index.js +6 -0
- package/esm/helpers/aaveV4Helpers/index.d.ts +4 -2
- package/esm/helpers/aaveV4Helpers/index.js +4 -5
- package/esm/types/aaveV4.d.ts +5 -0
- package/package.json +1 -1
- package/src/aaveV4/index.ts +6 -0
- package/src/helpers/aaveV4Helpers/index.ts +9 -8
- package/src/types/aaveV4.ts +5 -0
package/cjs/aaveV4/index.js
CHANGED
|
@@ -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
|
|
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
|
|
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}`]
|
|
15
|
-
payload.liquidationLimitUsd =
|
|
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);
|
package/cjs/types/aaveV4.d.ts
CHANGED
|
@@ -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/esm/aaveV4/index.js
CHANGED
|
@@ -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
|
|
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
|
|
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}`]
|
|
9
|
-
payload.liquidationLimitUsd =
|
|
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);
|
package/esm/types/aaveV4.d.ts
CHANGED
|
@@ -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
package/src/aaveV4/index.ts
CHANGED
|
@@ -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 {
|
|
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}`]
|
|
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);
|
package/src/types/aaveV4.ts
CHANGED
|
@@ -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 {
|