@gearbox-protocol/sdk 14.6.0-next.5 → 14.7.0-next.1
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/cjs/abi/compressors/subcompressors/withdrawal/infinifiWithdrawalSubcompressor.js +2 -1
- package/dist/cjs/abi/compressors/subcompressors/withdrawal/kelpLRTWithdrawalSubcompressor.js +2 -1
- package/dist/cjs/abi/compressors/subcompressors/withdrawal/mellowWithdrawalSubcompressor.js +2 -1
- package/dist/cjs/abi/compressors/subcompressors/withdrawal/midasWithdrawalSubcompressor.js +2 -1
- package/dist/cjs/abi/compressors/subcompressors/withdrawal/securitizeRedemptionSubcompressor.js +2 -1
- package/dist/cjs/abi/compressors/subcompressors/withdrawal/upshiftWithdrawalSubcompressor.js +2 -1
- package/dist/cjs/abi/compressors/withdrawalCompressor.js +2 -1
- package/dist/cjs/common-utils/utils/strategies/index.js +2 -0
- package/dist/cjs/common-utils/utils/strategies/points/get-complex-points-list.js +38 -0
- package/dist/cjs/common-utils/utils/strategies/points/get-points-info.js +43 -0
- package/dist/cjs/common-utils/utils/strategies/points/get-points-rates.js +33 -0
- package/dist/cjs/common-utils/utils/strategies/points/get-strategy-points.js +81 -0
- package/dist/cjs/common-utils/utils/strategies/points/index.js +28 -0
- package/dist/cjs/common-utils/utils/strategies/strategy-info/get-strategy-info-core.js +16 -4
- package/dist/cjs/common-utils/utils/strategies/strategy-info/get-strategy-max-apy.js +9 -15
- package/dist/cjs/common-utils/utils/strategies/types/index.js +2 -0
- package/dist/cjs/common-utils/utils/strategies/types/points-slices.js +16 -0
- package/dist/esm/abi/compressors/subcompressors/withdrawal/infinifiWithdrawalSubcompressor.js +2 -1
- package/dist/esm/abi/compressors/subcompressors/withdrawal/kelpLRTWithdrawalSubcompressor.js +2 -1
- package/dist/esm/abi/compressors/subcompressors/withdrawal/mellowWithdrawalSubcompressor.js +2 -1
- package/dist/esm/abi/compressors/subcompressors/withdrawal/midasWithdrawalSubcompressor.js +2 -1
- package/dist/esm/abi/compressors/subcompressors/withdrawal/securitizeRedemptionSubcompressor.js +2 -1
- package/dist/esm/abi/compressors/subcompressors/withdrawal/upshiftWithdrawalSubcompressor.js +2 -1
- package/dist/esm/abi/compressors/withdrawalCompressor.js +2 -1
- package/dist/esm/common-utils/utils/strategies/index.js +1 -0
- package/dist/esm/common-utils/utils/strategies/points/get-complex-points-list.js +14 -0
- package/dist/esm/common-utils/utils/strategies/points/get-points-info.js +19 -0
- package/dist/esm/common-utils/utils/strategies/points/get-points-rates.js +9 -0
- package/dist/esm/common-utils/utils/strategies/points/get-strategy-points.js +57 -0
- package/dist/esm/common-utils/utils/strategies/points/index.js +4 -0
- package/dist/esm/common-utils/utils/strategies/strategy-info/get-strategy-info-core.js +16 -4
- package/dist/esm/common-utils/utils/strategies/strategy-info/get-strategy-max-apy.js +9 -15
- package/dist/esm/common-utils/utils/strategies/types/index.js +1 -0
- package/dist/esm/common-utils/utils/strategies/types/points-slices.js +0 -0
- package/dist/types/abi/compressors/subcompressors/withdrawal/infinifiWithdrawalSubcompressor.d.ts +4 -0
- package/dist/types/abi/compressors/subcompressors/withdrawal/kelpLRTWithdrawalSubcompressor.d.ts +4 -0
- package/dist/types/abi/compressors/subcompressors/withdrawal/mellowWithdrawalSubcompressor.d.ts +4 -0
- package/dist/types/abi/compressors/subcompressors/withdrawal/midasWithdrawalSubcompressor.d.ts +4 -0
- package/dist/types/abi/compressors/subcompressors/withdrawal/securitizeRedemptionSubcompressor.d.ts +4 -0
- package/dist/types/abi/compressors/subcompressors/withdrawal/upshiftWithdrawalSubcompressor.d.ts +4 -0
- package/dist/types/abi/compressors/withdrawalCompressor.d.ts +4 -0
- package/dist/types/common-utils/utils/creditAccount/calc-quota-borrow-rate.d.ts +1 -1
- package/dist/types/common-utils/utils/strategies/index.d.ts +1 -0
- package/dist/types/common-utils/utils/strategies/points/get-complex-points-list.d.ts +3 -0
- package/dist/types/common-utils/utils/strategies/points/get-points-info.d.ts +8 -0
- package/dist/types/common-utils/utils/strategies/points/get-points-rates.d.ts +2 -0
- package/dist/types/common-utils/utils/strategies/points/get-strategy-points.d.ts +16 -0
- package/dist/types/common-utils/utils/strategies/points/index.d.ts +4 -0
- package/dist/types/common-utils/utils/strategies/strategy-info/get-strategy-max-apy.d.ts +2 -2
- package/dist/types/common-utils/utils/strategies/strategy-info/types.d.ts +1 -0
- package/dist/types/common-utils/utils/strategies/types/index.d.ts +1 -0
- package/dist/types/common-utils/utils/strategies/types/points-slices.d.ts +32 -0
- package/dist/types/permissionless/bindings/compressors/withdrawal-compressor.d.ts +4 -0
- package/package.json +1 -1
|
@@ -20,6 +20,7 @@ __reExport(strategies_exports, require("./credit-managers/index.js"), module.exp
|
|
|
20
20
|
__reExport(strategies_exports, require("./eligibility/index.js"), module.exports);
|
|
21
21
|
__reExport(strategies_exports, require("./leverage/index.js"), module.exports);
|
|
22
22
|
__reExport(strategies_exports, require("./lists/index.js"), module.exports);
|
|
23
|
+
__reExport(strategies_exports, require("./points/index.js"), module.exports);
|
|
23
24
|
__reExport(strategies_exports, require("./sort-strategy-cms-by-availability/index.js"), module.exports);
|
|
24
25
|
__reExport(strategies_exports, require("./strategy-info/index.js"), module.exports);
|
|
25
26
|
__reExport(strategies_exports, require("./strategy-state/index.js"), module.exports);
|
|
@@ -32,6 +33,7 @@ __reExport(strategies_exports, require("./types.js"), module.exports);
|
|
|
32
33
|
...require("./eligibility/index.js"),
|
|
33
34
|
...require("./leverage/index.js"),
|
|
34
35
|
...require("./lists/index.js"),
|
|
36
|
+
...require("./points/index.js"),
|
|
35
37
|
...require("./sort-strategy-cms-by-availability/index.js"),
|
|
36
38
|
...require("./strategy-info/index.js"),
|
|
37
39
|
...require("./strategy-state/index.js"),
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var get_complex_points_list_exports = {};
|
|
20
|
+
__export(get_complex_points_list_exports, {
|
|
21
|
+
getComplexPointsList: () => getComplexPointsList
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(get_complex_points_list_exports);
|
|
24
|
+
var import_mappers = require("../../../../sdk/utils/mappers.js");
|
|
25
|
+
function getComplexPointsList(baseList, extraList, pool) {
|
|
26
|
+
if (!pool) return baseList;
|
|
27
|
+
const poolExtra = extraList?.[pool];
|
|
28
|
+
if (!poolExtra) return baseList;
|
|
29
|
+
const baseCopy = { ...baseList };
|
|
30
|
+
import_mappers.TypedObjectUtils.entries(poolExtra).forEach(([token, extra]) => {
|
|
31
|
+
baseCopy[token] = extra;
|
|
32
|
+
});
|
|
33
|
+
return baseCopy;
|
|
34
|
+
}
|
|
35
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
36
|
+
0 && (module.exports = {
|
|
37
|
+
getComplexPointsList
|
|
38
|
+
});
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var get_points_info_exports = {};
|
|
20
|
+
__export(get_points_info_exports, {
|
|
21
|
+
getPointsInfo: () => getPointsInfo
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(get_points_info_exports);
|
|
24
|
+
function getPointsInfo({
|
|
25
|
+
chainId,
|
|
26
|
+
pointsList,
|
|
27
|
+
token,
|
|
28
|
+
creditManagers
|
|
29
|
+
}) {
|
|
30
|
+
if (chainId === void 0 || !pointsList || !token) return void 0;
|
|
31
|
+
const info = pointsList[token];
|
|
32
|
+
const r = info ? {
|
|
33
|
+
...info,
|
|
34
|
+
debtRewards: creditManagers ? info.debtRewards?.filter(
|
|
35
|
+
(r2) => r2.cm === "any" || creditManagers[r2.cm]
|
|
36
|
+
) : info.debtRewards
|
|
37
|
+
} : info;
|
|
38
|
+
return r;
|
|
39
|
+
}
|
|
40
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
41
|
+
0 && (module.exports = {
|
|
42
|
+
getPointsInfo
|
|
43
|
+
});
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var get_points_rates_exports = {};
|
|
20
|
+
__export(get_points_rates_exports, {
|
|
21
|
+
getPointsRates: () => getPointsRates
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(get_points_rates_exports);
|
|
24
|
+
var import_math = require("../../../../sdk/constants/math.js");
|
|
25
|
+
function getPointsRates(rewards, leverage) {
|
|
26
|
+
return rewards.map(
|
|
27
|
+
(r) => r.multiplier === "soon" ? r.multiplier : leverage * r.multiplier / import_math.LEVERAGE_DECIMALS
|
|
28
|
+
);
|
|
29
|
+
}
|
|
30
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
31
|
+
0 && (module.exports = {
|
|
32
|
+
getPointsRates
|
|
33
|
+
});
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var get_strategy_points_exports = {};
|
|
20
|
+
__export(get_strategy_points_exports, {
|
|
21
|
+
getStrategyPoints: () => getStrategyPoints
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(get_strategy_points_exports);
|
|
24
|
+
var import_leverage = require("../leverage/index.js");
|
|
25
|
+
var import_types = require("../types.js");
|
|
26
|
+
var import_get_complex_points_list = require("./get-complex-points-list.js");
|
|
27
|
+
var import_get_points_info = require("./get-points-info.js");
|
|
28
|
+
var import_get_points_rates = require("./get-points-rates.js");
|
|
29
|
+
const EMPTY_CHAIN_ID = 0;
|
|
30
|
+
const EMPTY_ARRAY = [];
|
|
31
|
+
function getStrategyPoints({
|
|
32
|
+
strategy,
|
|
33
|
+
info,
|
|
34
|
+
strategyCreditManagers,
|
|
35
|
+
apyListByNetwork
|
|
36
|
+
}) {
|
|
37
|
+
const { maxLeverage = 0n, minCreditManager } = info || {};
|
|
38
|
+
const chainId = strategy.chainId;
|
|
39
|
+
const apySnapshotForChain = apyListByNetwork?.[chainId || EMPTY_CHAIN_ID];
|
|
40
|
+
const cmPointsList = (0, import_get_complex_points_list.getComplexPointsList)(
|
|
41
|
+
apySnapshotForChain?.pointsList,
|
|
42
|
+
apySnapshotForChain?.extraCollateralPointsList,
|
|
43
|
+
minCreditManager?.pool ?? import_types.EMPTY_ADDRESS
|
|
44
|
+
);
|
|
45
|
+
const pointsInfo = (0, import_get_points_info.getPointsInfo)({
|
|
46
|
+
chainId,
|
|
47
|
+
pointsList: cmPointsList,
|
|
48
|
+
token: strategy.tokenOutAddress,
|
|
49
|
+
creditManagers: minCreditManager ? { [minCreditManager.address]: minCreditManager } : void 0
|
|
50
|
+
});
|
|
51
|
+
const debtPointsList = (0, import_get_complex_points_list.getComplexPointsList)(
|
|
52
|
+
apySnapshotForChain?.pointsList,
|
|
53
|
+
apySnapshotForChain?.extraCollateralPointsList,
|
|
54
|
+
import_types.EMPTY_ADDRESS
|
|
55
|
+
);
|
|
56
|
+
const pointsInfoDebt = (0, import_get_points_info.getPointsInfo)({
|
|
57
|
+
chainId,
|
|
58
|
+
pointsList: debtPointsList,
|
|
59
|
+
token: strategy.tokenOutAddress,
|
|
60
|
+
creditManagers: strategyCreditManagers
|
|
61
|
+
});
|
|
62
|
+
const { rewards = EMPTY_ARRAY } = pointsInfo || {};
|
|
63
|
+
const { debtRewards = EMPTY_ARRAY } = pointsInfoDebt || {};
|
|
64
|
+
const rewardRates = (0, import_get_points_rates.getPointsRates)(rewards, BigInt(maxLeverage));
|
|
65
|
+
const debtRewardRates = (0, import_get_points_rates.getPointsRates)(
|
|
66
|
+
debtRewards,
|
|
67
|
+
(0, import_leverage.getFactorFromLeverage)(maxLeverage)
|
|
68
|
+
);
|
|
69
|
+
return {
|
|
70
|
+
pointsInfo,
|
|
71
|
+
pointsInfoDebt,
|
|
72
|
+
rewards,
|
|
73
|
+
debtRewards,
|
|
74
|
+
rewardRates,
|
|
75
|
+
debtRewardRates
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
79
|
+
0 && (module.exports = {
|
|
80
|
+
getStrategyPoints
|
|
81
|
+
});
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __copyProps = (to, from, except, desc) => {
|
|
7
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
8
|
+
for (let key of __getOwnPropNames(from))
|
|
9
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
10
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
11
|
+
}
|
|
12
|
+
return to;
|
|
13
|
+
};
|
|
14
|
+
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
15
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
16
|
+
var points_exports = {};
|
|
17
|
+
module.exports = __toCommonJS(points_exports);
|
|
18
|
+
__reExport(points_exports, require("./get-complex-points-list.js"), module.exports);
|
|
19
|
+
__reExport(points_exports, require("./get-points-info.js"), module.exports);
|
|
20
|
+
__reExport(points_exports, require("./get-points-rates.js"), module.exports);
|
|
21
|
+
__reExport(points_exports, require("./get-strategy-points.js"), module.exports);
|
|
22
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
23
|
+
0 && (module.exports = {
|
|
24
|
+
...require("./get-complex-points-list.js"),
|
|
25
|
+
...require("./get-points-info.js"),
|
|
26
|
+
...require("./get-points-rates.js"),
|
|
27
|
+
...require("./get-strategy-points.js")
|
|
28
|
+
});
|
|
@@ -21,6 +21,7 @@ __export(get_strategy_info_core_exports, {
|
|
|
21
21
|
getStrategyInfoCore: () => getStrategyInfoCore
|
|
22
22
|
});
|
|
23
23
|
module.exports = __toCommonJS(get_strategy_info_core_exports);
|
|
24
|
+
var import__ = require("../../index.js");
|
|
24
25
|
var import_price_math = require("../../price-math.js");
|
|
25
26
|
var import_leverage = require("../leverage/index.js");
|
|
26
27
|
var import_sort_strategy_cms_by_availability = require("../sort-strategy-cms-by-availability/index.js");
|
|
@@ -65,8 +66,8 @@ function getStrategyInfoCore({
|
|
|
65
66
|
bonusAPY,
|
|
66
67
|
totalMaxApy = 0,
|
|
67
68
|
maxLeverage = 0n,
|
|
68
|
-
|
|
69
|
-
|
|
69
|
+
effectiveBaseRate = 0,
|
|
70
|
+
effectiveQuotaRate = 0n
|
|
70
71
|
} = (0, import_get_strategy_max_apy.getStrategyMaxAPY)(
|
|
71
72
|
targetTokenAddress,
|
|
72
73
|
minCreditManager,
|
|
@@ -86,14 +87,25 @@ function getStrategyInfoCore({
|
|
|
86
87
|
availableToBorrow,
|
|
87
88
|
underlyingDecimals
|
|
88
89
|
);
|
|
89
|
-
const r = BigInt(
|
|
90
|
-
const qr =
|
|
90
|
+
const r = BigInt(effectiveBaseRate) * (0, import_leverage.getFactorFromLeverage)(maxLeverage) / maxLeverage;
|
|
91
|
+
const qr = effectiveQuotaRate;
|
|
91
92
|
const totalBorrowRate = Number(r + qr);
|
|
93
|
+
const baseQuotaRateWithFee = (0, import__.getSingleQuotaBorrowRate)({
|
|
94
|
+
quotaRates: minCreditManager?.quotas || {},
|
|
95
|
+
feeInterest: minCreditManager?.feeInterest || 0,
|
|
96
|
+
quotas: {
|
|
97
|
+
[targetTokenAddress]: {
|
|
98
|
+
token: targetTokenAddress,
|
|
99
|
+
balance: 1n
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
});
|
|
92
103
|
return {
|
|
93
104
|
maxLeverage,
|
|
94
105
|
maxAPY: totalMaxApy,
|
|
95
106
|
bonusAPY,
|
|
96
107
|
totalBorrowRate,
|
|
108
|
+
baseQuotaRateWithFee,
|
|
97
109
|
availableToBorrowMoney,
|
|
98
110
|
minCreditManager
|
|
99
111
|
};
|
|
@@ -35,27 +35,21 @@ function getStrategyMaxAPY(targetToken, cm, apyListByNetwork, slippage, quotaRes
|
|
|
35
35
|
apyListByNetwork?.[cm.chainId]?.extraCollateralAPYList,
|
|
36
36
|
cm.pool
|
|
37
37
|
);
|
|
38
|
-
const
|
|
38
|
+
const effectiveBaseRate = (0, import_calculate_effective_borrow_rate.calculateEffectiveBorrowRate)({
|
|
39
39
|
underlyingTokenAddress: cm.underlyingToken,
|
|
40
40
|
baseRateWithFee: cm.baseBorrowRate,
|
|
41
41
|
apyList: apyRecord
|
|
42
42
|
});
|
|
43
43
|
const lt = cm.liquidationThresholds[targetToken] || 0n;
|
|
44
44
|
const feeInterest = cm.feeInterest;
|
|
45
|
-
const tokenQuota = cm.quotas[targetToken]
|
|
46
|
-
token: targetToken,
|
|
47
|
-
rate: 0n,
|
|
48
|
-
quotaIncreaseFee: 0n,
|
|
49
|
-
totalQuoted: 0n,
|
|
50
|
-
limit: 0n,
|
|
51
|
-
isActive: true
|
|
52
|
-
};
|
|
45
|
+
const tokenQuota = cm.quotas[targetToken];
|
|
53
46
|
const qRate = (tokenQuota?.rate || 0n) * lt / import_sdk.PERCENTAGE_FACTOR;
|
|
54
47
|
const qRate_reserve = qRate * (import_sdk.PERCENTAGE_FACTOR + (0, import_sdk.toBigInt)(quotaReserve)) / import_sdk.PERCENTAGE_FACTOR;
|
|
55
|
-
const
|
|
48
|
+
const effectiveQuotaRate = (0, import_get_single_quota_borrow_rate.getSingleQuotaBorrowRate)({
|
|
56
49
|
quotaRates: {
|
|
57
50
|
[targetToken]: {
|
|
58
51
|
...tokenQuota,
|
|
52
|
+
isActive: tokenQuota?.isActive ?? true,
|
|
59
53
|
rate: qRate_reserve
|
|
60
54
|
}
|
|
61
55
|
},
|
|
@@ -79,20 +73,20 @@ function getStrategyMaxAPY(targetToken, cm, apyListByNetwork, slippage, quotaRes
|
|
|
79
73
|
const maxAPY = apyRecord ? (0, import_max_apy_formula.maxAPYFormula)({
|
|
80
74
|
apy,
|
|
81
75
|
leverage,
|
|
82
|
-
baseRateWithFee,
|
|
83
|
-
quotaRateWithFee: Number(
|
|
76
|
+
baseRateWithFee: effectiveBaseRate,
|
|
77
|
+
quotaRateWithFee: Number(effectiveQuotaRate)
|
|
84
78
|
}) : void 0;
|
|
85
79
|
const bonusAPY = import_bonus_apy_from_points.BONUS_APY_FROM_POINTS[targetToken];
|
|
86
80
|
const bonusAPYTotal = BigInt(bonusAPY?.value || 0) * leverage / import_sdk.LEVERAGE_DECIMALS;
|
|
87
81
|
const totalMaxApy = (maxAPY || 0) + Number(bonusAPYTotal);
|
|
88
|
-
const totalBorrowRate =
|
|
82
|
+
const totalBorrowRate = effectiveBaseRate + Number(effectiveQuotaRate);
|
|
89
83
|
return {
|
|
90
84
|
totalMaxApy,
|
|
91
85
|
bonusAPY,
|
|
92
86
|
maxAPY: maxAPY || 0,
|
|
93
87
|
maxLeverage: leverage,
|
|
94
|
-
|
|
95
|
-
|
|
88
|
+
effectiveBaseRate,
|
|
89
|
+
effectiveQuotaRate,
|
|
96
90
|
totalBorrowRate
|
|
97
91
|
};
|
|
98
92
|
}
|
|
@@ -20,6 +20,7 @@ __reExport(types_exports, require("./constants.js"), module.exports);
|
|
|
20
20
|
__reExport(types_exports, require("./credit-manager-data-legacy.js"), module.exports);
|
|
21
21
|
__reExport(types_exports, require("./curator-filter.js"), module.exports);
|
|
22
22
|
__reExport(types_exports, require("./legacy-strategy-data-source.js"), module.exports);
|
|
23
|
+
__reExport(types_exports, require("./points-slices.js"), module.exports);
|
|
23
24
|
__reExport(types_exports, require("./sdk-state.js"), module.exports);
|
|
24
25
|
__reExport(types_exports, require("./strategies-cm-list.js"), module.exports);
|
|
25
26
|
__reExport(types_exports, require("./strategy.js"), module.exports);
|
|
@@ -32,6 +33,7 @@ __reExport(types_exports, require("./targetable.js"), module.exports);
|
|
|
32
33
|
...require("./credit-manager-data-legacy.js"),
|
|
33
34
|
...require("./curator-filter.js"),
|
|
34
35
|
...require("./legacy-strategy-data-source.js"),
|
|
36
|
+
...require("./points-slices.js"),
|
|
35
37
|
...require("./sdk-state.js"),
|
|
36
38
|
...require("./strategies-cm-list.js"),
|
|
37
39
|
...require("./strategy.js"),
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __copyProps = (to, from, except, desc) => {
|
|
7
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
8
|
+
for (let key of __getOwnPropNames(from))
|
|
9
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
10
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
11
|
+
}
|
|
12
|
+
return to;
|
|
13
|
+
};
|
|
14
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
15
|
+
var points_slices_exports = {};
|
|
16
|
+
module.exports = __toCommonJS(points_slices_exports);
|
|
@@ -3,6 +3,7 @@ export * from "./credit-managers/index.js";
|
|
|
3
3
|
export * from "./eligibility/index.js";
|
|
4
4
|
export * from "./leverage/index.js";
|
|
5
5
|
export * from "./lists/index.js";
|
|
6
|
+
export * from "./points/index.js";
|
|
6
7
|
export * from "./sort-strategy-cms-by-availability/index.js";
|
|
7
8
|
export * from "./strategy-info/index.js";
|
|
8
9
|
export * from "./strategy-state/index.js";
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { TypedObjectUtils } from "../../../../sdk/utils/mappers.js";
|
|
2
|
+
function getComplexPointsList(baseList, extraList, pool) {
|
|
3
|
+
if (!pool) return baseList;
|
|
4
|
+
const poolExtra = extraList?.[pool];
|
|
5
|
+
if (!poolExtra) return baseList;
|
|
6
|
+
const baseCopy = { ...baseList };
|
|
7
|
+
TypedObjectUtils.entries(poolExtra).forEach(([token, extra]) => {
|
|
8
|
+
baseCopy[token] = extra;
|
|
9
|
+
});
|
|
10
|
+
return baseCopy;
|
|
11
|
+
}
|
|
12
|
+
export {
|
|
13
|
+
getComplexPointsList
|
|
14
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
function getPointsInfo({
|
|
2
|
+
chainId,
|
|
3
|
+
pointsList,
|
|
4
|
+
token,
|
|
5
|
+
creditManagers
|
|
6
|
+
}) {
|
|
7
|
+
if (chainId === void 0 || !pointsList || !token) return void 0;
|
|
8
|
+
const info = pointsList[token];
|
|
9
|
+
const r = info ? {
|
|
10
|
+
...info,
|
|
11
|
+
debtRewards: creditManagers ? info.debtRewards?.filter(
|
|
12
|
+
(r2) => r2.cm === "any" || creditManagers[r2.cm]
|
|
13
|
+
) : info.debtRewards
|
|
14
|
+
} : info;
|
|
15
|
+
return r;
|
|
16
|
+
}
|
|
17
|
+
export {
|
|
18
|
+
getPointsInfo
|
|
19
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { LEVERAGE_DECIMALS } from "../../../../sdk/constants/math.js";
|
|
2
|
+
function getPointsRates(rewards, leverage) {
|
|
3
|
+
return rewards.map(
|
|
4
|
+
(r) => r.multiplier === "soon" ? r.multiplier : leverage * r.multiplier / LEVERAGE_DECIMALS
|
|
5
|
+
);
|
|
6
|
+
}
|
|
7
|
+
export {
|
|
8
|
+
getPointsRates
|
|
9
|
+
};
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { getFactorFromLeverage } from "../leverage/index.js";
|
|
2
|
+
import { EMPTY_ADDRESS } from "../types.js";
|
|
3
|
+
import { getComplexPointsList } from "./get-complex-points-list.js";
|
|
4
|
+
import { getPointsInfo } from "./get-points-info.js";
|
|
5
|
+
import { getPointsRates } from "./get-points-rates.js";
|
|
6
|
+
const EMPTY_CHAIN_ID = 0;
|
|
7
|
+
const EMPTY_ARRAY = [];
|
|
8
|
+
function getStrategyPoints({
|
|
9
|
+
strategy,
|
|
10
|
+
info,
|
|
11
|
+
strategyCreditManagers,
|
|
12
|
+
apyListByNetwork
|
|
13
|
+
}) {
|
|
14
|
+
const { maxLeverage = 0n, minCreditManager } = info || {};
|
|
15
|
+
const chainId = strategy.chainId;
|
|
16
|
+
const apySnapshotForChain = apyListByNetwork?.[chainId || EMPTY_CHAIN_ID];
|
|
17
|
+
const cmPointsList = getComplexPointsList(
|
|
18
|
+
apySnapshotForChain?.pointsList,
|
|
19
|
+
apySnapshotForChain?.extraCollateralPointsList,
|
|
20
|
+
minCreditManager?.pool ?? EMPTY_ADDRESS
|
|
21
|
+
);
|
|
22
|
+
const pointsInfo = getPointsInfo({
|
|
23
|
+
chainId,
|
|
24
|
+
pointsList: cmPointsList,
|
|
25
|
+
token: strategy.tokenOutAddress,
|
|
26
|
+
creditManagers: minCreditManager ? { [minCreditManager.address]: minCreditManager } : void 0
|
|
27
|
+
});
|
|
28
|
+
const debtPointsList = getComplexPointsList(
|
|
29
|
+
apySnapshotForChain?.pointsList,
|
|
30
|
+
apySnapshotForChain?.extraCollateralPointsList,
|
|
31
|
+
EMPTY_ADDRESS
|
|
32
|
+
);
|
|
33
|
+
const pointsInfoDebt = getPointsInfo({
|
|
34
|
+
chainId,
|
|
35
|
+
pointsList: debtPointsList,
|
|
36
|
+
token: strategy.tokenOutAddress,
|
|
37
|
+
creditManagers: strategyCreditManagers
|
|
38
|
+
});
|
|
39
|
+
const { rewards = EMPTY_ARRAY } = pointsInfo || {};
|
|
40
|
+
const { debtRewards = EMPTY_ARRAY } = pointsInfoDebt || {};
|
|
41
|
+
const rewardRates = getPointsRates(rewards, BigInt(maxLeverage));
|
|
42
|
+
const debtRewardRates = getPointsRates(
|
|
43
|
+
debtRewards,
|
|
44
|
+
getFactorFromLeverage(maxLeverage)
|
|
45
|
+
);
|
|
46
|
+
return {
|
|
47
|
+
pointsInfo,
|
|
48
|
+
pointsInfoDebt,
|
|
49
|
+
rewards,
|
|
50
|
+
debtRewards,
|
|
51
|
+
rewardRates,
|
|
52
|
+
debtRewardRates
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
export {
|
|
56
|
+
getStrategyPoints
|
|
57
|
+
};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { getSingleQuotaBorrowRate } from "../../index.js";
|
|
1
2
|
import { PriceUtils } from "../../price-math.js";
|
|
2
3
|
import { getFactorFromLeverage } from "../leverage/index.js";
|
|
3
4
|
import { sortStrategyCMsByAvailability } from "../sort-strategy-cms-by-availability/index.js";
|
|
@@ -42,8 +43,8 @@ function getStrategyInfoCore({
|
|
|
42
43
|
bonusAPY,
|
|
43
44
|
totalMaxApy = 0,
|
|
44
45
|
maxLeverage = 0n,
|
|
45
|
-
|
|
46
|
-
|
|
46
|
+
effectiveBaseRate = 0,
|
|
47
|
+
effectiveQuotaRate = 0n
|
|
47
48
|
} = getStrategyMaxAPY(
|
|
48
49
|
targetTokenAddress,
|
|
49
50
|
minCreditManager,
|
|
@@ -63,14 +64,25 @@ function getStrategyInfoCore({
|
|
|
63
64
|
availableToBorrow,
|
|
64
65
|
underlyingDecimals
|
|
65
66
|
);
|
|
66
|
-
const r = BigInt(
|
|
67
|
-
const qr =
|
|
67
|
+
const r = BigInt(effectiveBaseRate) * getFactorFromLeverage(maxLeverage) / maxLeverage;
|
|
68
|
+
const qr = effectiveQuotaRate;
|
|
68
69
|
const totalBorrowRate = Number(r + qr);
|
|
70
|
+
const baseQuotaRateWithFee = getSingleQuotaBorrowRate({
|
|
71
|
+
quotaRates: minCreditManager?.quotas || {},
|
|
72
|
+
feeInterest: minCreditManager?.feeInterest || 0,
|
|
73
|
+
quotas: {
|
|
74
|
+
[targetTokenAddress]: {
|
|
75
|
+
token: targetTokenAddress,
|
|
76
|
+
balance: 1n
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
});
|
|
69
80
|
return {
|
|
70
81
|
maxLeverage,
|
|
71
82
|
maxAPY: totalMaxApy,
|
|
72
83
|
bonusAPY,
|
|
73
84
|
totalBorrowRate,
|
|
85
|
+
baseQuotaRateWithFee,
|
|
74
86
|
availableToBorrowMoney,
|
|
75
87
|
minCreditManager
|
|
76
88
|
};
|
|
@@ -19,27 +19,21 @@ function getStrategyMaxAPY(targetToken, cm, apyListByNetwork, slippage, quotaRes
|
|
|
19
19
|
apyListByNetwork?.[cm.chainId]?.extraCollateralAPYList,
|
|
20
20
|
cm.pool
|
|
21
21
|
);
|
|
22
|
-
const
|
|
22
|
+
const effectiveBaseRate = calculateEffectiveBorrowRate({
|
|
23
23
|
underlyingTokenAddress: cm.underlyingToken,
|
|
24
24
|
baseRateWithFee: cm.baseBorrowRate,
|
|
25
25
|
apyList: apyRecord
|
|
26
26
|
});
|
|
27
27
|
const lt = cm.liquidationThresholds[targetToken] || 0n;
|
|
28
28
|
const feeInterest = cm.feeInterest;
|
|
29
|
-
const tokenQuota = cm.quotas[targetToken]
|
|
30
|
-
token: targetToken,
|
|
31
|
-
rate: 0n,
|
|
32
|
-
quotaIncreaseFee: 0n,
|
|
33
|
-
totalQuoted: 0n,
|
|
34
|
-
limit: 0n,
|
|
35
|
-
isActive: true
|
|
36
|
-
};
|
|
29
|
+
const tokenQuota = cm.quotas[targetToken];
|
|
37
30
|
const qRate = (tokenQuota?.rate || 0n) * lt / PERCENTAGE_FACTOR;
|
|
38
31
|
const qRate_reserve = qRate * (PERCENTAGE_FACTOR + toBigInt(quotaReserve)) / PERCENTAGE_FACTOR;
|
|
39
|
-
const
|
|
32
|
+
const effectiveQuotaRate = getSingleQuotaBorrowRate({
|
|
40
33
|
quotaRates: {
|
|
41
34
|
[targetToken]: {
|
|
42
35
|
...tokenQuota,
|
|
36
|
+
isActive: tokenQuota?.isActive ?? true,
|
|
43
37
|
rate: qRate_reserve
|
|
44
38
|
}
|
|
45
39
|
},
|
|
@@ -63,20 +57,20 @@ function getStrategyMaxAPY(targetToken, cm, apyListByNetwork, slippage, quotaRes
|
|
|
63
57
|
const maxAPY = apyRecord ? maxAPYFormula({
|
|
64
58
|
apy,
|
|
65
59
|
leverage,
|
|
66
|
-
baseRateWithFee,
|
|
67
|
-
quotaRateWithFee: Number(
|
|
60
|
+
baseRateWithFee: effectiveBaseRate,
|
|
61
|
+
quotaRateWithFee: Number(effectiveQuotaRate)
|
|
68
62
|
}) : void 0;
|
|
69
63
|
const bonusAPY = BONUS_APY_FROM_POINTS[targetToken];
|
|
70
64
|
const bonusAPYTotal = BigInt(bonusAPY?.value || 0) * leverage / LEVERAGE_DECIMALS;
|
|
71
65
|
const totalMaxApy = (maxAPY || 0) + Number(bonusAPYTotal);
|
|
72
|
-
const totalBorrowRate =
|
|
66
|
+
const totalBorrowRate = effectiveBaseRate + Number(effectiveQuotaRate);
|
|
73
67
|
return {
|
|
74
68
|
totalMaxApy,
|
|
75
69
|
bonusAPY,
|
|
76
70
|
maxAPY: maxAPY || 0,
|
|
77
71
|
maxLeverage: leverage,
|
|
78
|
-
|
|
79
|
-
|
|
72
|
+
effectiveBaseRate,
|
|
73
|
+
effectiveQuotaRate,
|
|
80
74
|
totalBorrowRate
|
|
81
75
|
};
|
|
82
76
|
}
|
|
@@ -3,6 +3,7 @@ export * from "./constants.js";
|
|
|
3
3
|
export * from "./credit-manager-data-legacy.js";
|
|
4
4
|
export * from "./curator-filter.js";
|
|
5
5
|
export * from "./legacy-strategy-data-source.js";
|
|
6
|
+
export * from "./points-slices.js";
|
|
6
7
|
export * from "./sdk-state.js";
|
|
7
8
|
export * from "./strategies-cm-list.js";
|
|
8
9
|
export * from "./strategy.js";
|
|
File without changes
|
package/dist/types/abi/compressors/subcompressors/withdrawal/infinifiWithdrawalSubcompressor.d.ts
CHANGED
|
@@ -135,6 +135,10 @@ export declare const infinifiWithdrawalSubcompressorAbi: readonly [{
|
|
|
135
135
|
readonly name: "withdrawalLength";
|
|
136
136
|
readonly type: "uint256";
|
|
137
137
|
readonly internalType: "uint256";
|
|
138
|
+
}, {
|
|
139
|
+
readonly name: "maxWithdrawals";
|
|
140
|
+
readonly type: "uint256";
|
|
141
|
+
readonly internalType: "uint256";
|
|
138
142
|
}];
|
|
139
143
|
}];
|
|
140
144
|
readonly stateMutability: "view";
|
package/dist/types/abi/compressors/subcompressors/withdrawal/kelpLRTWithdrawalSubcompressor.d.ts
CHANGED
|
@@ -135,6 +135,10 @@ export declare const kelpLRTWithdrawalSubcompressorAbi: readonly [{
|
|
|
135
135
|
readonly name: "withdrawalLength";
|
|
136
136
|
readonly type: "uint256";
|
|
137
137
|
readonly internalType: "uint256";
|
|
138
|
+
}, {
|
|
139
|
+
readonly name: "maxWithdrawals";
|
|
140
|
+
readonly type: "uint256";
|
|
141
|
+
readonly internalType: "uint256";
|
|
138
142
|
}];
|
|
139
143
|
}];
|
|
140
144
|
readonly stateMutability: "view";
|
package/dist/types/abi/compressors/subcompressors/withdrawal/mellowWithdrawalSubcompressor.d.ts
CHANGED
|
@@ -135,6 +135,10 @@ export declare const mellowWithdrawalSubcompressorAbi: readonly [{
|
|
|
135
135
|
readonly name: "withdrawalLength";
|
|
136
136
|
readonly type: "uint256";
|
|
137
137
|
readonly internalType: "uint256";
|
|
138
|
+
}, {
|
|
139
|
+
readonly name: "maxWithdrawals";
|
|
140
|
+
readonly type: "uint256";
|
|
141
|
+
readonly internalType: "uint256";
|
|
138
142
|
}];
|
|
139
143
|
}];
|
|
140
144
|
readonly stateMutability: "view";
|
package/dist/types/abi/compressors/subcompressors/withdrawal/midasWithdrawalSubcompressor.d.ts
CHANGED
|
@@ -135,6 +135,10 @@ export declare const midasWithdrawalSubcompressorAbi: readonly [{
|
|
|
135
135
|
readonly name: "withdrawalLength";
|
|
136
136
|
readonly type: "uint256";
|
|
137
137
|
readonly internalType: "uint256";
|
|
138
|
+
}, {
|
|
139
|
+
readonly name: "maxWithdrawals";
|
|
140
|
+
readonly type: "uint256";
|
|
141
|
+
readonly internalType: "uint256";
|
|
138
142
|
}];
|
|
139
143
|
}];
|
|
140
144
|
readonly stateMutability: "view";
|
package/dist/types/abi/compressors/subcompressors/withdrawal/securitizeRedemptionSubcompressor.d.ts
CHANGED
|
@@ -135,6 +135,10 @@ export declare const securitizeRedemptionSubcompressorAbi: readonly [{
|
|
|
135
135
|
readonly name: "withdrawalLength";
|
|
136
136
|
readonly type: "uint256";
|
|
137
137
|
readonly internalType: "uint256";
|
|
138
|
+
}, {
|
|
139
|
+
readonly name: "maxWithdrawals";
|
|
140
|
+
readonly type: "uint256";
|
|
141
|
+
readonly internalType: "uint256";
|
|
138
142
|
}];
|
|
139
143
|
}];
|
|
140
144
|
readonly stateMutability: "view";
|
package/dist/types/abi/compressors/subcompressors/withdrawal/upshiftWithdrawalSubcompressor.d.ts
CHANGED
|
@@ -135,6 +135,10 @@ export declare const upshiftWithdrawalSubcompressorAbi: readonly [{
|
|
|
135
135
|
readonly name: "withdrawalLength";
|
|
136
136
|
readonly type: "uint256";
|
|
137
137
|
readonly internalType: "uint256";
|
|
138
|
+
}, {
|
|
139
|
+
readonly name: "maxWithdrawals";
|
|
140
|
+
readonly type: "uint256";
|
|
141
|
+
readonly internalType: "uint256";
|
|
138
142
|
}];
|
|
139
143
|
}];
|
|
140
144
|
readonly stateMutability: "view";
|
|
@@ -163,6 +163,10 @@ export declare const withdrawalCompressorAbi: readonly [{
|
|
|
163
163
|
readonly name: "withdrawalLength";
|
|
164
164
|
readonly type: "uint256";
|
|
165
165
|
readonly internalType: "uint256";
|
|
166
|
+
}, {
|
|
167
|
+
readonly name: "maxWithdrawals";
|
|
168
|
+
readonly type: "uint256";
|
|
169
|
+
readonly internalType: "uint256";
|
|
166
170
|
}];
|
|
167
171
|
}];
|
|
168
172
|
readonly stateMutability: "view";
|
|
@@ -3,7 +3,7 @@ import type { Asset } from "../../../sdk/index.js";
|
|
|
3
3
|
import type { QuotaInfoSlice } from "./types.js";
|
|
4
4
|
export interface CalcQuotaBorrowRateProps {
|
|
5
5
|
quotas: Record<Address, Asset>;
|
|
6
|
-
quotaRates: Record<Address, QuotaInfoSlice>;
|
|
6
|
+
quotaRates: Record<Address, QuotaInfoSlice | undefined>;
|
|
7
7
|
}
|
|
8
8
|
/**
|
|
9
9
|
* Aggregates weighted quota borrow rate exposure across active quotas.
|
|
@@ -3,6 +3,7 @@ export * from "./credit-managers/index.js";
|
|
|
3
3
|
export * from "./eligibility/index.js";
|
|
4
4
|
export * from "./leverage/index.js";
|
|
5
5
|
export * from "./lists/index.js";
|
|
6
|
+
export * from "./points/index.js";
|
|
6
7
|
export * from "./sort-strategy-cms-by-availability/index.js";
|
|
7
8
|
export * from "./strategy-info/index.js";
|
|
8
9
|
export * from "./strategy-state/index.js";
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { Address } from "viem";
|
|
2
|
+
import type { LocalPointsInfo } from "../types.js";
|
|
3
|
+
export declare function getComplexPointsList<T extends Address | undefined = undefined>(baseList: Record<Address, LocalPointsInfo> | undefined, extraList: Record<Address, Record<Address, LocalPointsInfo>> | undefined, pool: T | undefined): Record<Address, LocalPointsInfo> | undefined;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Address } from "viem";
|
|
2
|
+
import type { LocalPointsInfo, PointsList, StrategyCreditManagerLike } from "../types.js";
|
|
3
|
+
export declare function getPointsInfo({ chainId, pointsList, token, creditManagers, }: {
|
|
4
|
+
chainId: number | undefined;
|
|
5
|
+
pointsList: PointsList | undefined;
|
|
6
|
+
token: Address | undefined;
|
|
7
|
+
creditManagers: Record<Address, StrategyCreditManagerLike> | undefined;
|
|
8
|
+
}): LocalPointsInfo | undefined;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Address } from "viem";
|
|
2
|
+
import type { APYListByNetwork, Strategy, StrategyCreditManagerLike, StrategyInfoLike } from "../types.js";
|
|
3
|
+
export interface GetStrategyPointsProps {
|
|
4
|
+
readonly strategy: Strategy;
|
|
5
|
+
readonly info: StrategyInfoLike | undefined;
|
|
6
|
+
readonly strategyCreditManagers: Record<Address, StrategyCreditManagerLike>;
|
|
7
|
+
readonly apyListByNetwork: APYListByNetwork | undefined;
|
|
8
|
+
}
|
|
9
|
+
export declare function getStrategyPoints({ strategy, info, strategyCreditManagers, apyListByNetwork, }: GetStrategyPointsProps): {
|
|
10
|
+
pointsInfo: import("../types.js").LocalPointsInfo | undefined;
|
|
11
|
+
pointsInfoDebt: import("../types.js").LocalPointsInfo | undefined;
|
|
12
|
+
rewards: import("../types.js").LocalPointsReward[];
|
|
13
|
+
debtRewards: import("../types.js").LocalDebtReward[];
|
|
14
|
+
rewardRates: (bigint | "soon")[];
|
|
15
|
+
debtRewardRates: (bigint | "soon")[];
|
|
16
|
+
};
|
|
@@ -8,8 +8,8 @@ export declare function getStrategyMaxAPY(targetToken: Address, cm: CMForStrateg
|
|
|
8
8
|
} | undefined;
|
|
9
9
|
maxAPY: number;
|
|
10
10
|
maxLeverage: bigint;
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
effectiveBaseRate: number;
|
|
12
|
+
effectiveQuotaRate: bigint;
|
|
13
13
|
totalBorrowRate: number;
|
|
14
14
|
} | undefined;
|
|
15
15
|
export {};
|
|
@@ -63,6 +63,7 @@ export interface StrategyInfoResult<CM extends CreditManagerSlice = CreditManage
|
|
|
63
63
|
totalBorrowRate: number;
|
|
64
64
|
availableToBorrowMoney: bigint;
|
|
65
65
|
minCreditManager: CM;
|
|
66
|
+
baseQuotaRateWithFee: bigint;
|
|
66
67
|
}
|
|
67
68
|
export interface GetStrategyInfoArgs<ID extends string | number, CM extends CreditManagerSlice> {
|
|
68
69
|
strategy: StrategySlice<ID>;
|
|
@@ -4,6 +4,7 @@ export * from "./constants.js";
|
|
|
4
4
|
export * from "./credit-manager-data-legacy.js";
|
|
5
5
|
export * from "./curator-filter.js";
|
|
6
6
|
export * from "./legacy-strategy-data-source.js";
|
|
7
|
+
export * from "./points-slices.js";
|
|
7
8
|
export * from "./sdk-state.js";
|
|
8
9
|
export * from "./strategies-cm-list.js";
|
|
9
10
|
export * from "./strategy.js";
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { Address } from "viem";
|
|
2
|
+
export type PointsMultiplier = bigint | "soon";
|
|
3
|
+
export interface LocalPointsReward {
|
|
4
|
+
name: string;
|
|
5
|
+
units: string;
|
|
6
|
+
type: string;
|
|
7
|
+
multiplier: PointsMultiplier;
|
|
8
|
+
}
|
|
9
|
+
export interface LocalDebtReward extends LocalPointsReward {
|
|
10
|
+
cm: Address | "any";
|
|
11
|
+
}
|
|
12
|
+
export interface LocalPointsInfo {
|
|
13
|
+
symbol: string;
|
|
14
|
+
address: Address;
|
|
15
|
+
rewards?: Array<LocalPointsReward> | undefined;
|
|
16
|
+
debtRewards?: Array<LocalDebtReward> | undefined;
|
|
17
|
+
}
|
|
18
|
+
export type PointsList = Record<Address, LocalPointsInfo>;
|
|
19
|
+
export type BasePointsList = Record<Address, LocalPointsInfo>;
|
|
20
|
+
export type ExtraCollateralPointsList = Record<Address, Record<Address, LocalPointsInfo>>;
|
|
21
|
+
export type APYListByNetwork = Partial<Record<number, {
|
|
22
|
+
pointsList?: BasePointsList;
|
|
23
|
+
extraCollateralPointsList?: ExtraCollateralPointsList;
|
|
24
|
+
} | undefined>>;
|
|
25
|
+
export interface StrategyCreditManagerLike {
|
|
26
|
+
address: Address;
|
|
27
|
+
pool?: Address | undefined;
|
|
28
|
+
}
|
|
29
|
+
export interface StrategyInfoLike {
|
|
30
|
+
maxLeverage?: bigint | undefined;
|
|
31
|
+
minCreditManager?: StrategyCreditManagerLike | undefined;
|
|
32
|
+
}
|
|
@@ -165,6 +165,10 @@ declare const abi: readonly [{
|
|
|
165
165
|
readonly name: "withdrawalLength";
|
|
166
166
|
readonly type: "uint256";
|
|
167
167
|
readonly internalType: "uint256";
|
|
168
|
+
}, {
|
|
169
|
+
readonly name: "maxWithdrawals";
|
|
170
|
+
readonly type: "uint256";
|
|
171
|
+
readonly internalType: "uint256";
|
|
168
172
|
}];
|
|
169
173
|
}];
|
|
170
174
|
readonly stateMutability: "view";
|