@defisaver/automation-sdk 3.3.16-dev-13082-morpho-eoa-dev → 3.3.16-liq-prot-dev
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/constants/index.js +117 -42
- package/cjs/index.d.ts +2 -2
- package/cjs/index.js +5 -2
- package/cjs/services/strategiesService.js +157 -12
- package/cjs/services/strategySubService.d.ts +18 -21
- package/cjs/services/strategySubService.js +78 -74
- package/cjs/services/strategySubService.test.js +3 -149
- package/cjs/services/subDataService.d.ts +70 -20
- package/cjs/services/subDataService.js +23 -79
- package/cjs/services/subDataService.test.js +17 -202
- package/cjs/services/utils.d.ts +2 -1
- package/cjs/services/utils.js +14 -1
- package/cjs/types/enums.d.ts +36 -17
- package/cjs/types/enums.js +30 -11
- package/esm/constants/index.js +117 -42
- package/esm/index.d.ts +2 -2
- package/esm/index.js +5 -2
- package/esm/services/strategiesService.js +157 -12
- package/esm/services/strategySubService.d.ts +18 -21
- package/esm/services/strategySubService.js +78 -73
- package/esm/services/strategySubService.test.js +4 -147
- package/esm/services/subDataService.d.ts +70 -20
- package/esm/services/subDataService.js +21 -77
- package/esm/services/subDataService.test.js +18 -200
- package/esm/services/utils.d.ts +2 -1
- package/esm/services/utils.js +13 -1
- package/esm/types/enums.d.ts +36 -17
- package/esm/types/enums.js +30 -11
- package/package.json +1 -1
- package/src/constants/index.ts +119 -43
- package/src/index.ts +22 -6
- package/src/services/strategiesService.ts +221 -12
- package/src/services/strategySubService.test.ts +3 -191
- package/src/services/strategySubService.ts +173 -121
- package/src/services/subDataService.test.ts +18 -214
- package/src/services/subDataService.ts +42 -106
- package/src/services/utils.test.ts +1 -1
- package/src/services/utils.ts +15 -1
- package/src/types/enums.ts +30 -13
|
@@ -1,26 +1,24 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { CloseToAssetType, Bundles, ChainId, RatioState, Strategies } from '../types/enums';
|
|
1
|
+
import { Bundles, ChainId, CloseToAssetType, RatioState, Strategies } from '../types/enums';
|
|
3
2
|
import type { EthereumAddress, StrategyOrBundleIds } from '../types';
|
|
3
|
+
import type { OrderType } from '../types/enums';
|
|
4
4
|
export declare const makerEncode: {
|
|
5
5
|
repayFromSavings(bundleId: StrategyOrBundleIds, vaultId: number, triggerRepayRatio: number, targetRepayRatio: number, isBundle?: boolean, chainId?: ChainId, daiAddr?: EthereumAddress, mcdCdpManagerAddr?: EthereumAddress): (boolean | string[] | Strategies.MainnetIds | Strategies.OptimismIds | Strategies.ArbitrumIds | Strategies.BaseIds | Bundles.MainnetIds | Bundles.OptimismIds | Bundles.ArbitrumIds | Bundles.BaseIds)[];
|
|
6
6
|
closeOnPrice(vaultId: number, ratioState: RatioState, price: string, closeToAssetAddr: EthereumAddress, chainlinkCollAddress: EthereumAddress, chainId?: ChainId, daiAddr?: EthereumAddress, mcdCdpManagerAddr?: EthereumAddress): (boolean | string[] | Strategies.MainnetIds)[];
|
|
7
7
|
trailingStop(vaultId: number, triggerPercentage: number, closeToAssetAddr: EthereumAddress, chainlinkCollAddress: EthereumAddress, roundId: number, chainId?: ChainId, daiAddr?: EthereumAddress, mcdCdpManagerAddr?: EthereumAddress): (boolean | string[] | Strategies.MainnetIds)[];
|
|
8
|
-
|
|
8
|
+
leverageManagement(vaultId: number, triggerRatio: number, targetRatio: number, ratioState: RatioState, isBoost: boolean, daiAddr?: EthereumAddress): (boolean | string[] | Bundles.MainnetIds)[];
|
|
9
|
+
liquidationProtection(vaultId: number, triggerRatio: number, targetRatio: number, ratioState: RatioState, daiAddr?: EthereumAddress): (boolean | string[] | Bundles.MainnetIds)[];
|
|
9
10
|
};
|
|
10
11
|
export declare const liquityEncode: {
|
|
11
12
|
closeOnPrice(priceOverOrUnder: RatioState, price: string, closeToAssetAddr: EthereumAddress, chainlinkCollAddress: EthereumAddress, chainId?: ChainId, collAddr?: EthereumAddress, debtAddr?: EthereumAddress): (boolean | string[] | Strategies.MainnetIds)[];
|
|
12
13
|
trailingStop(triggerPercentage: number, closeToAssetAddr: EthereumAddress, chainlinkCollAddress: EthereumAddress, roundId: number, chainId?: ChainId, collAddr?: EthereumAddress, debtAddr?: EthereumAddress): (boolean | string[] | Strategies.MainnetIds)[];
|
|
13
14
|
paybackFromChickenBondStrategySub(proxyAddress: EthereumAddress, ratio: number, sourceId: string, sourceType: number, ratioState?: RatioState): (boolean | string[] | Bundles.MainnetIds)[];
|
|
14
|
-
|
|
15
|
+
leverageManagement(strategyOrBundleId: number, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
|
|
15
16
|
dsrPayback(proxyAddress: EthereumAddress, triggerRatio: number, targetRatio: number): (boolean | string[] | Strategies.MainnetIds)[];
|
|
16
17
|
dsrSupply(proxyAddress: EthereumAddress, triggerRatio: number, targetRatio: number): (boolean | string[] | Strategies.MainnetIds)[];
|
|
17
18
|
debtInFrontRepay(proxyAddress: EthereumAddress, debtInFrontMin: string, targetRatioIncrease: number): (boolean | string[] | Strategies.MainnetIds)[];
|
|
18
19
|
};
|
|
19
|
-
export declare const chickenBondsEncode: {
|
|
20
|
-
rebond(bondId: number): string[];
|
|
21
|
-
};
|
|
22
20
|
export declare const aaveV2Encode: {
|
|
23
|
-
|
|
21
|
+
leverageManagement(strategyOrBundleId: number, market: EthereumAddress, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
|
|
24
22
|
};
|
|
25
23
|
export declare const aaveV3Encode: {
|
|
26
24
|
closeToAsset(strategyOrBundleId: number, isBundle: boolean | undefined, triggerData: {
|
|
@@ -59,25 +57,24 @@ export declare const aaveV3Encode: {
|
|
|
59
57
|
marketAddr: EthereumAddress;
|
|
60
58
|
targetRatio: number;
|
|
61
59
|
}): (number | boolean | string[])[];
|
|
62
|
-
|
|
60
|
+
leverageManagement(strategyOrBundleId: number, market: EthereumAddress, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number, isGeneric?: boolean): (number | boolean | string[])[];
|
|
61
|
+
liquidationProtection(strategyOrBundleId: number, market: EthereumAddress, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
|
|
63
62
|
leverageManagementOnPriceGeneric(strategyOrBundleId: number, price: number, ratioState: RatioState, collAsset: EthereumAddress, collAssetId: number, debtAsset: EthereumAddress, debtAssetId: number, marketAddr: EthereumAddress, targetRatio: number, user: EthereumAddress): (number | boolean | string[])[];
|
|
64
63
|
closeOnPriceGeneric(strategyOrBundleId: number, collAsset: EthereumAddress, collAssetId: number, debtAsset: EthereumAddress, debtAssetId: number, marketAddr: EthereumAddress, user: EthereumAddress, stopLossPrice?: number, stopLossType?: CloseToAssetType, takeProfitPrice?: number, takeProfitType?: CloseToAssetType): (number | boolean | string[])[];
|
|
65
64
|
collateralSwitch(strategyOrBundleId: number, fromAsset: EthereumAddress, fromAssetId: number, toAsset: EthereumAddress, toAssetId: number, marketAddr: EthereumAddress, amountToSwitch: string, baseTokenAddress: EthereumAddress, quoteTokenAddress: EthereumAddress, price: number, state: RatioState): (number | boolean | string[])[];
|
|
66
65
|
};
|
|
67
66
|
export declare const compoundV2Encode: {
|
|
68
|
-
|
|
67
|
+
leverageManagement(strategyOrBundleId: number, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
|
|
69
68
|
};
|
|
70
69
|
export declare const compoundV3Encode: {
|
|
71
|
-
|
|
70
|
+
leverageManagement(strategyOrBundleId: number, market: EthereumAddress, baseToken: EthereumAddress, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
|
|
71
|
+
liquidationProtection(strategyOrBundleId: number, market: EthereumAddress, baseToken: EthereumAddress, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
|
|
72
72
|
leverageManagementOnPrice(strategyOrBundleId: number, market: EthereumAddress, collToken: EthereumAddress, baseToken: EthereumAddress, targetRatio: number, price: number, priceState: RatioState, ratioState: RatioState, user: EthereumAddress): (number | boolean | string[])[];
|
|
73
73
|
closeOnPrice(strategyOrBundleId: number, market: EthereumAddress, collToken: EthereumAddress, baseToken: EthereumAddress, stopLossPrice: number | undefined, stopLossType: CloseToAssetType | undefined, takeProfitPrice: number | undefined, takeProfitType: CloseToAssetType | undefined, user: EthereumAddress): (number | boolean | string[])[];
|
|
74
74
|
};
|
|
75
|
-
export declare const morphoAaveV2Encode: {
|
|
76
|
-
leverageManagement(triggerRepayRatio: number, triggerBoostRatio: number, targetBoostRatio: number, targetRepayRatio: number, boostEnabled: boolean): string[];
|
|
77
|
-
};
|
|
78
75
|
export declare const exchangeEncode: {
|
|
79
76
|
dca(fromToken: EthereumAddress, toToken: EthereumAddress, amount: string, timestamp: number, interval: number, network: ChainId): (boolean | string[] | Strategies.MainnetIds | Strategies.OptimismIds | Strategies.ArbitrumIds | Strategies.BaseIds)[];
|
|
80
|
-
|
|
77
|
+
limitOrder(fromToken: EthereumAddress, toToken: EthereumAddress, amount: string, targetPrice: string, goodUntil: string | number, orderType: OrderType, fromTokenDecimals: number, toTokenDecimals: number, network: ChainId): (boolean | string[] | Strategies.MainnetIds | Strategies.OptimismIds | Strategies.ArbitrumIds | Strategies.BaseIds)[];
|
|
81
78
|
};
|
|
82
79
|
export declare const sparkEncode: {
|
|
83
80
|
leverageManagementOnPrice(strategyOrBundleId: number, isBundle: boolean | undefined, triggerData: {
|
|
@@ -94,21 +91,19 @@ export declare const sparkEncode: {
|
|
|
94
91
|
targetRatio: number;
|
|
95
92
|
}): (number | boolean | string[])[];
|
|
96
93
|
closeOnPriceGeneric(strategyOrBundleId: number, collAsset: EthereumAddress, collAssetId: number, debtAsset: EthereumAddress, debtAssetId: number, marketAddr: EthereumAddress, user: EthereumAddress, stopLossPrice?: number, stopLossType?: CloseToAssetType, takeProfitPrice?: number, takeProfitType?: CloseToAssetType): (number | boolean | string[])[];
|
|
97
|
-
|
|
94
|
+
leverageManagement(strategyOrBundleId: number, market: EthereumAddress, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
|
|
95
|
+
liquidationProtection(strategyOrBundleId: number, market: EthereumAddress, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
|
|
98
96
|
collateralSwitch(strategyOrBundleId: number, fromAsset: EthereumAddress, fromAssetId: number, toAsset: EthereumAddress, toAssetId: number, marketAddr: EthereumAddress, amountToSwitch: string, baseTokenAddress: EthereumAddress, quoteTokenAddress: EthereumAddress, price: number, state: RatioState): (number | boolean | string[])[];
|
|
99
97
|
};
|
|
100
98
|
export declare const crvUSDEncode: {
|
|
101
99
|
leverageManagement(owner: EthereumAddress, controllerAddr: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number, collTokenAddr: EthereumAddress, crvUSDAddr: EthereumAddress): (boolean | string[] | Bundles.MainnetIds)[];
|
|
102
100
|
payback(proxyAddress: EthereumAddress, addressToPullTokensFrom: EthereumAddress, positionOwner: EthereumAddress, paybackAmount: string, crvUSDAddr: EthereumAddress, controllerAddr: EthereumAddress, minHealthRatio: number): (boolean | string[] | Strategies.MainnetIds)[];
|
|
103
101
|
};
|
|
104
|
-
export type MorphoBlueBundleStrategy = 'repay' | 'boost' | 'repayOnPrice' | 'boostOnPrice' | 'close';
|
|
105
|
-
export declare function getMorphoBlueBundleId(network: ChainId, strategy: MorphoBlueBundleStrategy, isEOA: boolean): number;
|
|
106
102
|
export declare const morphoBlueEncode: {
|
|
107
|
-
leverageManagement(marketId: string, loanToken: EthereumAddress, collToken: EthereumAddress, oracle: EthereumAddress, irm: EthereumAddress, lltv: string, ratioState: RatioState, targetRatio: number, triggerRatio: number, user: EthereumAddress, isEOA: boolean, network: ChainId): (
|
|
103
|
+
leverageManagement(marketId: string, loanToken: EthereumAddress, collToken: EthereumAddress, oracle: EthereumAddress, irm: EthereumAddress, lltv: string, ratioState: RatioState, targetRatio: number, triggerRatio: number, user: EthereumAddress, isEOA: boolean, network: ChainId): (boolean | string[] | Bundles.BaseIds)[] | (boolean | string[] | Bundles.MainnetIds | Bundles.ArbitrumIds)[];
|
|
104
|
+
liquidationProtection(marketId: string, loanToken: EthereumAddress, collToken: EthereumAddress, oracle: EthereumAddress, irm: EthereumAddress, lltv: string, ratioState: RatioState, targetRatio: number, triggerRatio: number, user: EthereumAddress, isEOA: boolean, network: ChainId): (boolean | string[] | Bundles.MainnetIds)[];
|
|
108
105
|
leverageManagementOnPrice(strategyOrBundleId: number, isBundle: boolean | undefined, loanToken: EthereumAddress, collToken: EthereumAddress, oracle: EthereumAddress, irm: EthereumAddress, lltv: string, user: EthereumAddress, targetRatio: number, price: number, priceState: RatioState): (number | boolean | string[])[];
|
|
109
|
-
leverageManagementOnPriceGeneric(loanToken: EthereumAddress, collToken: EthereumAddress, oracle: EthereumAddress, irm: EthereumAddress, lltv: string, user: EthereumAddress, targetRatio: number, price: number, priceState: RatioState, isBoost: boolean, isEOA: boolean, network: ChainId): (number | boolean | string[])[];
|
|
110
106
|
closeOnPrice(strategyOrBundleId: number, loanToken: EthereumAddress, collToken: EthereumAddress, oracle: EthereumAddress, irm: EthereumAddress, lltv: string, user: EthereumAddress, stopLossPrice?: number, stopLossType?: CloseToAssetType, takeProfitPrice?: number, takeProfitType?: CloseToAssetType): (number | boolean | string[])[];
|
|
111
|
-
closeOnPriceGeneric(loanToken: EthereumAddress, collToken: EthereumAddress, oracle: EthereumAddress, irm: EthereumAddress, lltv: string, user: EthereumAddress, stopLossPrice: number | undefined, stopLossType: CloseToAssetType | undefined, takeProfitPrice: number | undefined, takeProfitType: CloseToAssetType | undefined, isEOA: boolean, network: ChainId): (number | boolean | string[])[];
|
|
112
107
|
};
|
|
113
108
|
export declare const liquityV2Encode: {
|
|
114
109
|
leverageManagement(market: EthereumAddress, troveId: string, collToken: EthereumAddress, boldToken: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number, strategyOrBundleId: number): (number | boolean | string[])[];
|
|
@@ -118,9 +113,11 @@ export declare const liquityV2Encode: {
|
|
|
118
113
|
};
|
|
119
114
|
export declare const fluidEncode: {
|
|
120
115
|
leverageManagement(nftId: string, vault: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number, strategyOrBundleId: number): (number | boolean | string[])[];
|
|
116
|
+
liquidationProtection(nftId: string, vault: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number, strategyOrBundleId: number): (number | boolean | string[])[];
|
|
121
117
|
};
|
|
122
118
|
export declare const aaveV4Encode: {
|
|
123
119
|
leverageManagement(strategyOrBundleId: number, owner: EthereumAddress, spoke: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
|
|
120
|
+
liquidationProtection(strategyOrBundleId: number, owner: EthereumAddress, spoke: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
|
|
124
121
|
leverageManagementOnPrice(strategyOrBundleId: number, owner: EthereumAddress, spoke: EthereumAddress, collAsset: EthereumAddress, collAssetId: number, debtAsset: EthereumAddress, debtAssetId: number, targetRatio: number, price: string, priceState: RatioState, ratioState: RatioState): (number | boolean | string[])[];
|
|
125
122
|
closeOnPrice(strategyOrBundleId: number, owner: EthereumAddress, spoke: EthereumAddress, collAsset: EthereumAddress, collAssetId: number, debtAsset: EthereumAddress, debtAssetId: number, stopLossPrice?: string, stopLossType?: CloseToAssetType, takeProfitPrice?: string, takeProfitType?: CloseToAssetType): (number | boolean | string[])[];
|
|
126
123
|
collateralSwitch(strategyOrBundleId: number, owner: EthereumAddress, spoke: EthereumAddress, fromAsset: EthereumAddress, fromAssetId: number, toAsset: EthereumAddress, toAssetId: number, amountToSwitch: string, price: string, ratioState: RatioState): (number | boolean | string[])[];
|
|
@@ -23,10 +23,10 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.aaveV4Encode = exports.fluidEncode = exports.liquityV2Encode = exports.morphoBlueEncode = exports.
|
|
26
|
+
exports.aaveV4Encode = exports.fluidEncode = exports.liquityV2Encode = exports.morphoBlueEncode = exports.crvUSDEncode = exports.sparkEncode = exports.exchangeEncode = exports.compoundV3Encode = exports.compoundV2Encode = exports.aaveV3Encode = exports.aaveV2Encode = exports.liquityEncode = exports.makerEncode = void 0;
|
|
27
27
|
const tokens_1 = require("@defisaver/tokens");
|
|
28
|
-
const enums_1 = require("../types/enums");
|
|
29
28
|
const constants_1 = require("../constants");
|
|
29
|
+
const enums_1 = require("../types/enums");
|
|
30
30
|
const subDataService = __importStar(require("./subDataService"));
|
|
31
31
|
const triggerService = __importStar(require("./triggerService"));
|
|
32
32
|
const utils_1 = require("./utils");
|
|
@@ -56,10 +56,21 @@ exports.makerEncode = {
|
|
|
56
56
|
const isBundle = false;
|
|
57
57
|
return [strategyOrBundleId, isBundle, triggerData, subData];
|
|
58
58
|
},
|
|
59
|
-
|
|
59
|
+
leverageManagement(vaultId, triggerRatio, targetRatio, ratioState, isBoost, daiAddr) {
|
|
60
60
|
const bundleId = isBoost ? enums_1.Bundles.MainnetIds.MAKER_BOOST : enums_1.Bundles.MainnetIds.MAKER_REPAY;
|
|
61
61
|
const triggerData = triggerService.makerRatioTrigger.encode(vaultId, triggerRatio, ratioState);
|
|
62
|
-
const subData = subDataService.
|
|
62
|
+
const subData = subDataService.makerLeverageManagementSubData.encode(vaultId, targetRatio, daiAddr);
|
|
63
|
+
return [
|
|
64
|
+
bundleId,
|
|
65
|
+
true,
|
|
66
|
+
triggerData,
|
|
67
|
+
subData,
|
|
68
|
+
];
|
|
69
|
+
},
|
|
70
|
+
liquidationProtection(vaultId, triggerRatio, targetRatio, ratioState, daiAddr) {
|
|
71
|
+
const bundleId = enums_1.Bundles.MainnetIds.MAKER_SW_LIQUIDATION_PROTECTION;
|
|
72
|
+
const triggerData = triggerService.makerRatioTrigger.encode(vaultId, triggerRatio, ratioState);
|
|
73
|
+
const subData = subDataService.makerLiquidationProtectionSubData.encode(vaultId, targetRatio, daiAddr);
|
|
63
74
|
return [
|
|
64
75
|
bundleId,
|
|
65
76
|
true,
|
|
@@ -93,9 +104,9 @@ exports.liquityEncode = {
|
|
|
93
104
|
const isBundle = true;
|
|
94
105
|
return [strategyId, isBundle, triggerData, subData];
|
|
95
106
|
},
|
|
96
|
-
|
|
107
|
+
leverageManagement(strategyOrBundleId, user, ratioState, targetRatio, triggerRatio) {
|
|
97
108
|
const isBundle = true;
|
|
98
|
-
const subData = subDataService.
|
|
109
|
+
const subData = subDataService.liquityLeverageManagementSubData.encode(targetRatio, ratioState);
|
|
99
110
|
const triggerData = triggerService.liquityRatioTrigger.encode(user, triggerRatio, ratioState);
|
|
100
111
|
return [strategyOrBundleId, isBundle, triggerData, subData];
|
|
101
112
|
},
|
|
@@ -124,15 +135,10 @@ exports.liquityEncode = {
|
|
|
124
135
|
return [strategyOrBundleId, isBundle, triggerData, subData];
|
|
125
136
|
},
|
|
126
137
|
};
|
|
127
|
-
exports.chickenBondsEncode = {
|
|
128
|
-
rebond(bondId) {
|
|
129
|
-
return subDataService.cBondsRebondSubData.encode(bondId);
|
|
130
|
-
},
|
|
131
|
-
};
|
|
132
138
|
exports.aaveV2Encode = {
|
|
133
|
-
|
|
139
|
+
leverageManagement(strategyOrBundleId, market, user, ratioState, targetRatio, triggerRatio) {
|
|
134
140
|
const isBundle = true;
|
|
135
|
-
const subData = subDataService.
|
|
141
|
+
const subData = subDataService.aaveV2LeverageManagementSubData.encode(market, targetRatio, ratioState);
|
|
136
142
|
const triggerData = triggerService.aaveV2RatioTrigger.encode(user, market, triggerRatio, ratioState);
|
|
137
143
|
return [strategyOrBundleId, isBundle, triggerData, subData];
|
|
138
144
|
},
|
|
@@ -159,9 +165,15 @@ exports.aaveV3Encode = {
|
|
|
159
165
|
const triggerDataEncoded = triggerService.aaveV3QuotePriceTrigger.encode(baseTokenAddress, quoteTokenAddress, price, state);
|
|
160
166
|
return [strategyOrBundleId, isBundle, triggerDataEncoded, subDataEncoded];
|
|
161
167
|
},
|
|
162
|
-
|
|
168
|
+
leverageManagement(strategyOrBundleId, market, user, ratioState, targetRatio, triggerRatio, isGeneric = false) {
|
|
163
169
|
const isBundle = true;
|
|
164
|
-
const subData = subDataService.
|
|
170
|
+
const subData = subDataService.aaveV3LeverageManagementSubData.encode(targetRatio, ratioState, market, user, isGeneric);
|
|
171
|
+
const triggerData = triggerService.aaveV3RatioTrigger.encode(user, market, triggerRatio, ratioState);
|
|
172
|
+
return [strategyOrBundleId, isBundle, triggerData, subData];
|
|
173
|
+
},
|
|
174
|
+
liquidationProtection(strategyOrBundleId, market, user, ratioState, targetRatio, triggerRatio) {
|
|
175
|
+
const isBundle = true;
|
|
176
|
+
const subData = subDataService.aaveV3LiquidationProtectionSubData.encode(targetRatio, ratioState, market, user, true);
|
|
165
177
|
const triggerData = triggerService.aaveV3RatioTrigger.encode(user, market, triggerRatio, ratioState);
|
|
166
178
|
return [strategyOrBundleId, isBundle, triggerData, subData];
|
|
167
179
|
},
|
|
@@ -186,17 +198,23 @@ exports.aaveV3Encode = {
|
|
|
186
198
|
},
|
|
187
199
|
};
|
|
188
200
|
exports.compoundV2Encode = {
|
|
189
|
-
|
|
201
|
+
leverageManagement(strategyOrBundleId, user, ratioState, targetRatio, triggerRatio) {
|
|
190
202
|
const isBundle = true;
|
|
191
|
-
const subData = subDataService.
|
|
203
|
+
const subData = subDataService.compoundV2LeverageManagementSubData.encode(targetRatio, ratioState);
|
|
192
204
|
const triggerData = triggerService.compoundV2RatioTrigger.encode(user, triggerRatio, ratioState);
|
|
193
205
|
return [strategyOrBundleId, isBundle, triggerData, subData];
|
|
194
206
|
},
|
|
195
207
|
};
|
|
196
208
|
exports.compoundV3Encode = {
|
|
197
|
-
|
|
209
|
+
leverageManagement(strategyOrBundleId, market, baseToken, user, ratioState, targetRatio, triggerRatio) {
|
|
210
|
+
const isBundle = true;
|
|
211
|
+
const subData = subDataService.compoundV3LeverageManagementSubData.encode(market, baseToken, targetRatio, ratioState);
|
|
212
|
+
const triggerData = triggerService.compoundV3RatioTrigger.encode(user, market, triggerRatio, ratioState);
|
|
213
|
+
return [strategyOrBundleId, isBundle, triggerData, subData];
|
|
214
|
+
},
|
|
215
|
+
liquidationProtection(strategyOrBundleId, market, baseToken, user, ratioState, targetRatio, triggerRatio) {
|
|
198
216
|
const isBundle = true;
|
|
199
|
-
const subData = subDataService.
|
|
217
|
+
const subData = subDataService.compoundV3LiquidationProtectionSubData.encode(market, baseToken, targetRatio, ratioState);
|
|
200
218
|
const triggerData = triggerService.compoundV3RatioTrigger.encode(user, market, triggerRatio, ratioState);
|
|
201
219
|
return [strategyOrBundleId, isBundle, triggerData, subData];
|
|
202
220
|
},
|
|
@@ -215,11 +233,6 @@ exports.compoundV3Encode = {
|
|
|
215
233
|
return [strategyOrBundleId, isBundle, triggerDataEncoded, subDataEncoded];
|
|
216
234
|
},
|
|
217
235
|
};
|
|
218
|
-
exports.morphoAaveV2Encode = {
|
|
219
|
-
leverageManagement(triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled) {
|
|
220
|
-
return subDataService.morphoAaveV2LeverageManagementSubData.encode(triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled);
|
|
221
|
-
},
|
|
222
|
-
};
|
|
223
236
|
exports.exchangeEncode = {
|
|
224
237
|
dca(fromToken, toToken, amount, timestamp, interval, network) {
|
|
225
238
|
(0, utils_1.requireAddresses)([fromToken, toToken]);
|
|
@@ -228,9 +241,9 @@ exports.exchangeEncode = {
|
|
|
228
241
|
const strategyId = constants_1.STRATEGY_IDS[network].EXCHANGE_DCA;
|
|
229
242
|
return [strategyId, false, triggerData, subData];
|
|
230
243
|
},
|
|
231
|
-
|
|
244
|
+
limitOrder(fromToken, toToken, amount, targetPrice, goodUntil, orderType, fromTokenDecimals, toTokenDecimals, network) {
|
|
232
245
|
(0, utils_1.requireAddresses)([fromToken, toToken]);
|
|
233
|
-
const subData = subDataService.
|
|
246
|
+
const subData = subDataService.exchangeLimitOrderSubData.encode(fromToken, toToken, amount);
|
|
234
247
|
const triggerData = triggerService.exchangeOffchainPriceTrigger.encode(targetPrice, Number(goodUntil), orderType, fromTokenDecimals, toTokenDecimals);
|
|
235
248
|
const strategyId = constants_1.STRATEGY_IDS[network].EXCHANGE_LIMIT_ORDER;
|
|
236
249
|
return [strategyId, false, triggerData, subData];
|
|
@@ -251,9 +264,15 @@ exports.sparkEncode = {
|
|
|
251
264
|
const triggerDataEncoded = triggerService.sparkQuotePriceRangeTrigger.encode(collAsset, debtAsset, stopLossPrice, takeProfitPrice);
|
|
252
265
|
return [strategyOrBundleId, isBundle, triggerDataEncoded, subDataEncoded];
|
|
253
266
|
},
|
|
254
|
-
|
|
267
|
+
leverageManagement(strategyOrBundleId, market, user, ratioState, targetRatio, triggerRatio) {
|
|
268
|
+
const isBundle = true;
|
|
269
|
+
const subData = subDataService.sparkLeverageManagementSubData.encode(targetRatio, ratioState);
|
|
270
|
+
const triggerData = triggerService.sparkRatioTrigger.encode(user, market, triggerRatio, ratioState);
|
|
271
|
+
return [strategyOrBundleId, isBundle, triggerData, subData];
|
|
272
|
+
},
|
|
273
|
+
liquidationProtection(strategyOrBundleId, market, user, ratioState, targetRatio, triggerRatio) {
|
|
255
274
|
const isBundle = true;
|
|
256
|
-
const subData = subDataService.
|
|
275
|
+
const subData = subDataService.sparkLiquidationProtectionSubData.encode(targetRatio, ratioState);
|
|
257
276
|
const triggerData = triggerService.sparkRatioTrigger.encode(user, market, triggerRatio, ratioState);
|
|
258
277
|
return [strategyOrBundleId, isBundle, triggerData, subData];
|
|
259
278
|
},
|
|
@@ -281,43 +300,31 @@ exports.crvUSDEncode = {
|
|
|
281
300
|
return [strategyId, isBundle, triggerData, subData];
|
|
282
301
|
},
|
|
283
302
|
};
|
|
284
|
-
function getMorphoBlueBundlesIds(network) {
|
|
285
|
-
switch (network) {
|
|
286
|
-
case enums_1.ChainId.Ethereum:
|
|
287
|
-
return enums_1.Bundles.MainnetIds;
|
|
288
|
-
case enums_1.ChainId.Base:
|
|
289
|
-
return enums_1.Bundles.BaseIds;
|
|
290
|
-
case enums_1.ChainId.Arbitrum:
|
|
291
|
-
return enums_1.Bundles.ArbitrumIds;
|
|
292
|
-
default:
|
|
293
|
-
throw new Error(`Morpho Blue strategies are not supported on chain ${network}`);
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
function getMorphoBlueBundleId(network, strategy, isEOA) {
|
|
297
|
-
const bundlesIds = getMorphoBlueBundlesIds(network);
|
|
298
|
-
switch (strategy) {
|
|
299
|
-
case 'repay':
|
|
300
|
-
return isEOA ? bundlesIds.MORPHO_BLUE_EOA_REPAY : bundlesIds.MORPHO_BLUE_REPAY;
|
|
301
|
-
case 'boost':
|
|
302
|
-
return isEOA ? bundlesIds.MORPHO_BLUE_EOA_BOOST : bundlesIds.MORPHO_BLUE_BOOST;
|
|
303
|
-
case 'repayOnPrice':
|
|
304
|
-
return isEOA ? bundlesIds.MORPHO_BLUE_EOA_REPAY_ON_PRICE : bundlesIds.MORPHO_BLUE_REPAY_ON_PRICE;
|
|
305
|
-
case 'boostOnPrice':
|
|
306
|
-
return isEOA ? bundlesIds.MORPHO_BLUE_EOA_BOOST_ON_PRICE : bundlesIds.MORPHO_BLUE_BOOST_ON_PRICE;
|
|
307
|
-
case 'close':
|
|
308
|
-
return isEOA ? bundlesIds.MORPHO_BLUE_EOA_CLOSE : bundlesIds.MORPHO_BLUE_CLOSE;
|
|
309
|
-
default:
|
|
310
|
-
throw new Error(`Unknown Morpho Blue strategy: ${strategy}`);
|
|
311
|
-
}
|
|
312
|
-
}
|
|
313
|
-
exports.getMorphoBlueBundleId = getMorphoBlueBundleId;
|
|
314
303
|
exports.morphoBlueEncode = {
|
|
315
304
|
leverageManagement(marketId, loanToken, collToken, oracle, irm, lltv, ratioState, targetRatio, triggerRatio, user, isEOA, network) {
|
|
316
305
|
const subData = subDataService.morphoBlueLeverageManagementSubData.encode(loanToken, collToken, oracle, irm, lltv, ratioState, targetRatio, user, isEOA);
|
|
317
306
|
const triggerData = triggerService.morphoBlueRatioTrigger.encode(marketId, user, triggerRatio, ratioState);
|
|
318
307
|
// over is boost, under is repay
|
|
319
308
|
const isBoost = ratioState === enums_1.RatioState.OVER;
|
|
320
|
-
|
|
309
|
+
let strategyOrBundleId;
|
|
310
|
+
if (network === enums_1.ChainId.Base) {
|
|
311
|
+
return [isBoost ? enums_1.Bundles.BaseIds.MORPHO_BLUE_BOOST : enums_1.Bundles.BaseIds.MORPHO_BLUE_REPAY, true, triggerData, subData];
|
|
312
|
+
}
|
|
313
|
+
const bundlesIds = network === enums_1.ChainId.Arbitrum ? enums_1.Bundles.ArbitrumIds : enums_1.Bundles.MainnetIds;
|
|
314
|
+
if (isBoost)
|
|
315
|
+
strategyOrBundleId = isEOA ? bundlesIds.MORPHO_BLUE_EOA_BOOST : bundlesIds.MORPHO_BLUE_BOOST;
|
|
316
|
+
else
|
|
317
|
+
strategyOrBundleId = isEOA ? bundlesIds.MORPHO_BLUE_EOA_REPAY : bundlesIds.MORPHO_BLUE_REPAY;
|
|
318
|
+
const isBundle = true;
|
|
319
|
+
return [strategyOrBundleId, isBundle, triggerData, subData];
|
|
320
|
+
},
|
|
321
|
+
liquidationProtection(marketId, loanToken, collToken, oracle, irm, lltv, ratioState, targetRatio, triggerRatio, user, isEOA, network) {
|
|
322
|
+
const subData = subDataService.morphoBlueLiquidationProtectionSubData.encode(loanToken, collToken, oracle, irm, lltv, ratioState, targetRatio, user, isEOA);
|
|
323
|
+
const triggerData = triggerService.morphoBlueRatioTrigger.encode(marketId, user, triggerRatio, ratioState);
|
|
324
|
+
// Type casting because there is no MORPHO_BLUE_EOA_LIQUIDATION_PROTECTION for Base chain.
|
|
325
|
+
// That is fine because we will just always send isEOA == false for Base chain.
|
|
326
|
+
const bundleNetwork = (0, utils_1.getBundleIdsByNetwork)(network);
|
|
327
|
+
const bundleId = isEOA ? bundleNetwork.MORPHO_BLUE_EOA_LIQUIDATION_PROTECTION : bundleNetwork.MORPHO_BLUE_SW_LIQUIDATION_PROTECTION;
|
|
321
328
|
const isBundle = true;
|
|
322
329
|
return [bundleId, isBundle, triggerData, subData];
|
|
323
330
|
},
|
|
@@ -326,13 +333,6 @@ exports.morphoBlueEncode = {
|
|
|
326
333
|
const triggerData = triggerService.morphoBluePriceTrigger.encode(oracle, collToken, loanToken, price, priceState);
|
|
327
334
|
return [strategyOrBundleId, isBundle, triggerData, subData];
|
|
328
335
|
},
|
|
329
|
-
leverageManagementOnPriceGeneric(loanToken, collToken, oracle, irm, lltv, user, targetRatio, price, priceState, isBoost, isEOA, network) {
|
|
330
|
-
const subData = subDataService.morphoBlueLeverageManagementOnPriceSubData.encode(loanToken, collToken, oracle, irm, lltv, targetRatio, user);
|
|
331
|
-
const triggerData = triggerService.morphoBluePriceTrigger.encode(oracle, collToken, loanToken, price, priceState);
|
|
332
|
-
const bundleId = getMorphoBlueBundleId(network, isBoost ? 'boostOnPrice' : 'repayOnPrice', isEOA);
|
|
333
|
-
const isBundle = true;
|
|
334
|
-
return [bundleId, isBundle, triggerData, subData];
|
|
335
|
-
},
|
|
336
336
|
closeOnPrice(strategyOrBundleId, loanToken, collToken, oracle, irm, lltv, user, stopLossPrice = 0, stopLossType = enums_1.CloseToAssetType.DEBT, takeProfitPrice = 0, takeProfitType = enums_1.CloseToAssetType.COLLATERAL) {
|
|
337
337
|
const isBundle = true;
|
|
338
338
|
const closeType = (0, utils_1.getCloseStrategyType)(stopLossPrice, stopLossType, takeProfitPrice, takeProfitType);
|
|
@@ -340,14 +340,6 @@ exports.morphoBlueEncode = {
|
|
|
340
340
|
const triggerDataEncoded = triggerService.morphoBluePriceRangeTrigger.encode(oracle, collToken, loanToken, stopLossPrice, takeProfitPrice);
|
|
341
341
|
return [strategyOrBundleId, isBundle, triggerDataEncoded, subDataEncoded];
|
|
342
342
|
},
|
|
343
|
-
closeOnPriceGeneric(loanToken, collToken, oracle, irm, lltv, user, stopLossPrice = 0, stopLossType = enums_1.CloseToAssetType.DEBT, takeProfitPrice = 0, takeProfitType = enums_1.CloseToAssetType.COLLATERAL, isEOA, network) {
|
|
344
|
-
const isBundle = true;
|
|
345
|
-
const closeType = (0, utils_1.getCloseStrategyType)(stopLossPrice, stopLossType, takeProfitPrice, takeProfitType);
|
|
346
|
-
const subDataEncoded = subDataService.morphoBlueCloseOnPriceSubData.encode(loanToken, collToken, oracle, irm, lltv, user, closeType);
|
|
347
|
-
const triggerDataEncoded = triggerService.morphoBluePriceRangeTrigger.encode(oracle, collToken, loanToken, stopLossPrice, takeProfitPrice);
|
|
348
|
-
const bundleId = getMorphoBlueBundleId(network, 'close', isEOA);
|
|
349
|
-
return [bundleId, isBundle, triggerDataEncoded, subDataEncoded];
|
|
350
|
-
},
|
|
351
343
|
};
|
|
352
344
|
exports.liquityV2Encode = {
|
|
353
345
|
leverageManagement(market, troveId, collToken, boldToken, ratioState, targetRatio, triggerRatio, strategyOrBundleId) {
|
|
@@ -384,6 +376,12 @@ exports.fluidEncode = {
|
|
|
384
376
|
const triggerData = triggerService.fluidRatioTrigger.encode(nftId, triggerRatio, ratioState);
|
|
385
377
|
return [strategyOrBundleId, isBundle, triggerData, subData];
|
|
386
378
|
},
|
|
379
|
+
liquidationProtection(nftId, vault, ratioState, targetRatio, triggerRatio, strategyOrBundleId) {
|
|
380
|
+
const isBundle = true;
|
|
381
|
+
const subData = subDataService.fluidLiquidationProtectionSubData.encode(nftId, vault, ratioState, targetRatio);
|
|
382
|
+
const triggerData = triggerService.fluidRatioTrigger.encode(nftId, triggerRatio, ratioState);
|
|
383
|
+
return [strategyOrBundleId, isBundle, triggerData, subData];
|
|
384
|
+
},
|
|
387
385
|
};
|
|
388
386
|
exports.aaveV4Encode = {
|
|
389
387
|
leverageManagement(strategyOrBundleId, owner, spoke, ratioState, targetRatio, triggerRatio) {
|
|
@@ -392,6 +390,12 @@ exports.aaveV4Encode = {
|
|
|
392
390
|
const triggerData = triggerService.aaveV4RatioTrigger.encode(owner, spoke, triggerRatio, ratioState);
|
|
393
391
|
return [strategyOrBundleId, isBundle, triggerData, subData];
|
|
394
392
|
},
|
|
393
|
+
liquidationProtection(strategyOrBundleId, owner, spoke, ratioState, targetRatio, triggerRatio) {
|
|
394
|
+
const isBundle = true;
|
|
395
|
+
const subData = subDataService.aaveV4LiquidationProtectionSubData.encode(spoke, owner, ratioState, targetRatio);
|
|
396
|
+
const triggerData = triggerService.aaveV4RatioTrigger.encode(owner, spoke, triggerRatio, ratioState);
|
|
397
|
+
return [strategyOrBundleId, isBundle, triggerData, subData];
|
|
398
|
+
},
|
|
395
399
|
leverageManagementOnPrice(strategyOrBundleId, owner, spoke, collAsset, collAssetId, debtAsset, debtAssetId, targetRatio, price, priceState, ratioState) {
|
|
396
400
|
const isBundle = true;
|
|
397
401
|
const subData = subDataService.aaveV4LeverageManagementOnPriceSubData.encode(spoke, owner, collAsset, collAssetId, debtAsset, debtAssetId, ratioState, targetRatio);
|
|
@@ -22,12 +22,8 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
22
22
|
__setModuleDefault(result, mod);
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
-
};
|
|
28
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
26
|
const chai_1 = require("chai");
|
|
30
|
-
const decimal_js_1 = __importDefault(require("decimal.js"));
|
|
31
27
|
const sdk_1 = require("@defisaver/sdk");
|
|
32
28
|
const tokens_1 = require("@defisaver/tokens");
|
|
33
29
|
const web3Utils = __importStar(require("web3-utils"));
|
|
@@ -124,7 +120,7 @@ describe('Feature: strategySubService.ts', () => {
|
|
|
124
120
|
});
|
|
125
121
|
});
|
|
126
122
|
});
|
|
127
|
-
describe('
|
|
123
|
+
describe('leverageManagement()', () => {
|
|
128
124
|
const examples = [
|
|
129
125
|
// Repay scenario (isBoost=false, RatioState.UNDER)
|
|
130
126
|
[
|
|
@@ -167,7 +163,7 @@ describe('Feature: strategySubService.ts', () => {
|
|
|
167
163
|
];
|
|
168
164
|
examples.forEach(([expected, actual]) => {
|
|
169
165
|
it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
|
|
170
|
-
(0, chai_1.expect)(strategySubService_1.makerEncode.
|
|
166
|
+
(0, chai_1.expect)(strategySubService_1.makerEncode.leverageManagement(...actual)).to.eql(expected);
|
|
171
167
|
});
|
|
172
168
|
});
|
|
173
169
|
});
|
|
@@ -294,21 +290,6 @@ describe('Feature: strategySubService.ts', () => {
|
|
|
294
290
|
});
|
|
295
291
|
});
|
|
296
292
|
});
|
|
297
|
-
describe('When testing strategySubService.chickenBondsEncode', () => {
|
|
298
|
-
describe('rebond()', () => {
|
|
299
|
-
const examples = [
|
|
300
|
-
[
|
|
301
|
-
['0x00000000000000000000000000000000000000000000000000000000000005e3'],
|
|
302
|
-
[1507]
|
|
303
|
-
]
|
|
304
|
-
];
|
|
305
|
-
examples.forEach(([expected, actual]) => {
|
|
306
|
-
it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
|
|
307
|
-
(0, chai_1.expect)(strategySubService_1.chickenBondsEncode.rebond(...actual)).to.eql(expected);
|
|
308
|
-
});
|
|
309
|
-
});
|
|
310
|
-
});
|
|
311
|
-
});
|
|
312
293
|
describe('When testing strategySubService.aaveV3Encode', () => {
|
|
313
294
|
describe('closeToAsset()', () => {
|
|
314
295
|
const examples = [
|
|
@@ -998,25 +979,6 @@ describe('Feature: strategySubService.ts', () => {
|
|
|
998
979
|
});
|
|
999
980
|
});
|
|
1000
981
|
});
|
|
1001
|
-
describe('When testing strategySubService.morphoAaveV2Encode', () => {
|
|
1002
|
-
describe('leverageManagement()', () => {
|
|
1003
|
-
const examples = [
|
|
1004
|
-
[
|
|
1005
|
-
[new decimal_js_1.default(160).mul(1e16).toString(), new decimal_js_1.default(220).mul(1e16).toString(), new decimal_js_1.default(180).mul(1e16).toString(), new decimal_js_1.default(190).mul(1e16).toString(), true],
|
|
1006
|
-
[160, 220, 180, 190, true]
|
|
1007
|
-
],
|
|
1008
|
-
[
|
|
1009
|
-
[new decimal_js_1.default(160).mul(1e16).toString(), new decimal_js_1.default(200).mul(1e16).toString(), new decimal_js_1.default(180).mul(1e16).toString(), new decimal_js_1.default(190).mul(1e16).toString(), false],
|
|
1010
|
-
[160, 200, 180, 190, false]
|
|
1011
|
-
],
|
|
1012
|
-
];
|
|
1013
|
-
examples.forEach(([expected, actual]) => {
|
|
1014
|
-
it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
|
|
1015
|
-
(0, chai_1.expect)(strategySubService_1.morphoAaveV2Encode.leverageManagement(...actual)).to.eql(expected);
|
|
1016
|
-
});
|
|
1017
|
-
});
|
|
1018
|
-
});
|
|
1019
|
-
});
|
|
1020
982
|
describe('When testing strategySubService.exchangeEncode', () => {
|
|
1021
983
|
describe('dca()', () => {
|
|
1022
984
|
const examples = [
|
|
@@ -1292,75 +1254,6 @@ describe('Feature: strategySubService.ts', () => {
|
|
|
1292
1254
|
});
|
|
1293
1255
|
});
|
|
1294
1256
|
});
|
|
1295
|
-
describe('leverageManagementOnPriceGeneric()', () => {
|
|
1296
|
-
const examples = [
|
|
1297
|
-
[
|
|
1298
|
-
[
|
|
1299
|
-
enums_1.Bundles.MainnetIds.MORPHO_BLUE_REPAY_ON_PRICE,
|
|
1300
|
-
true,
|
|
1301
|
-
['0x000000000000000000000000870ac11d48b15db9a138cf899d20f13f79ba00bc0000000000000000000000007f39c581f595b53c5cb19bd0b3f8da6c935e2ca0000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000003a352944000000000000000000000000000000000000000000000000000000000000000001'],
|
|
1302
|
-
[
|
|
1303
|
-
'0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
|
|
1304
|
-
'0x0000000000000000000000007f39c581f595b53c5cb19bd0b3f8da6c935e2ca0',
|
|
1305
|
-
'0x000000000000000000000000870ac11d48b15db9a138cf899d20f13f79ba00bc',
|
|
1306
|
-
'0x0000000000000000000000000000000000000000000000000000000000000000',
|
|
1307
|
-
'0x0000000000000000000000000000000000000000000000000d1d507e40be8000',
|
|
1308
|
-
'0x0000000000000000000000000000000000000000000000001bc16d674ec80000',
|
|
1309
|
-
'0x0000000000000000000000001031d218133afab8c2b819b1366c7e434ad91e9c',
|
|
1310
|
-
],
|
|
1311
|
-
],
|
|
1312
|
-
[
|
|
1313
|
-
web3Utils.toChecksumAddress('0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'),
|
|
1314
|
-
web3Utils.toChecksumAddress('0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0'),
|
|
1315
|
-
web3Utils.toChecksumAddress('0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC'),
|
|
1316
|
-
web3Utils.toChecksumAddress('0x0000000000000000000000000000000000000000'),
|
|
1317
|
-
'945000000000000000',
|
|
1318
|
-
web3Utils.toChecksumAddress('0x1031d218133AFaB8c2B819B1366c7E434Ad91E9c'),
|
|
1319
|
-
200,
|
|
1320
|
-
2500,
|
|
1321
|
-
enums_1.RatioState.UNDER,
|
|
1322
|
-
false,
|
|
1323
|
-
false,
|
|
1324
|
-
enums_1.ChainId.Ethereum,
|
|
1325
|
-
],
|
|
1326
|
-
],
|
|
1327
|
-
[
|
|
1328
|
-
[
|
|
1329
|
-
enums_1.Bundles.MainnetIds.MORPHO_BLUE_BOOST_ON_PRICE,
|
|
1330
|
-
true,
|
|
1331
|
-
['0x000000000000000000000000870ac11d48b15db9a138cf899d20f13f79ba00bc0000000000000000000000007f39c581f595b53c5cb19bd0b3f8da6c935e2ca0000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000005d21dba0000000000000000000000000000000000000000000000000000000000000000000'],
|
|
1332
|
-
[
|
|
1333
|
-
'0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
|
|
1334
|
-
'0x0000000000000000000000007f39c581f595b53c5cb19bd0b3f8da6c935e2ca0',
|
|
1335
|
-
'0x000000000000000000000000870ac11d48b15db9a138cf899d20f13f79ba00bc',
|
|
1336
|
-
'0x0000000000000000000000000000000000000000000000000000000000000000',
|
|
1337
|
-
'0x0000000000000000000000000000000000000000000000000d1d507e40be8000',
|
|
1338
|
-
'0x00000000000000000000000000000000000000000000000016345785d8a00000',
|
|
1339
|
-
'0x0000000000000000000000001031d218133afab8c2b819b1366c7e434ad91e9c',
|
|
1340
|
-
],
|
|
1341
|
-
],
|
|
1342
|
-
[
|
|
1343
|
-
web3Utils.toChecksumAddress('0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'),
|
|
1344
|
-
web3Utils.toChecksumAddress('0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0'),
|
|
1345
|
-
web3Utils.toChecksumAddress('0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC'),
|
|
1346
|
-
web3Utils.toChecksumAddress('0x0000000000000000000000000000000000000000'),
|
|
1347
|
-
'945000000000000000',
|
|
1348
|
-
web3Utils.toChecksumAddress('0x1031d218133AFaB8c2B819B1366c7E434Ad91E9c'),
|
|
1349
|
-
160,
|
|
1350
|
-
4000,
|
|
1351
|
-
enums_1.RatioState.OVER,
|
|
1352
|
-
true,
|
|
1353
|
-
false,
|
|
1354
|
-
enums_1.ChainId.Ethereum,
|
|
1355
|
-
],
|
|
1356
|
-
],
|
|
1357
|
-
];
|
|
1358
|
-
examples.forEach(([expected, actual]) => {
|
|
1359
|
-
it(`Given ${JSON.stringify(actual)} should return expected value: ${JSON.stringify(expected)}`, () => {
|
|
1360
|
-
(0, chai_1.expect)(strategySubService_1.morphoBlueEncode.leverageManagementOnPriceGeneric(...actual)).to.eql(expected);
|
|
1361
|
-
});
|
|
1362
|
-
});
|
|
1363
|
-
});
|
|
1364
1257
|
describe('closeOnPrice()', () => {
|
|
1365
1258
|
const examples = [
|
|
1366
1259
|
[
|
|
@@ -1389,7 +1282,7 @@ describe('Feature: strategySubService.ts', () => {
|
|
|
1389
1282
|
1500,
|
|
1390
1283
|
enums_1.CloseToAssetType.DEBT,
|
|
1391
1284
|
4000,
|
|
1392
|
-
enums_1.CloseToAssetType.COLLATERAL
|
|
1285
|
+
enums_1.CloseToAssetType.COLLATERAL
|
|
1393
1286
|
]
|
|
1394
1287
|
],
|
|
1395
1288
|
];
|
|
@@ -1399,45 +1292,6 @@ describe('Feature: strategySubService.ts', () => {
|
|
|
1399
1292
|
});
|
|
1400
1293
|
});
|
|
1401
1294
|
});
|
|
1402
|
-
describe('closeOnPriceGeneric()', () => {
|
|
1403
|
-
const examples = [
|
|
1404
|
-
[
|
|
1405
|
-
[
|
|
1406
|
-
enums_1.Bundles.MainnetIds.MORPHO_BLUE_CLOSE,
|
|
1407
|
-
true,
|
|
1408
|
-
['0x000000000000000000000000870ac11d48b15db9a138cf899d20f13f79ba00bc0000000000000000000000007f39c581f595b53c5cb19bd0b3f8da6c935e2ca0000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000000000000000000000000000000000022ecb25c000000000000000000000000000000000000000000000000000000005d21dba000'],
|
|
1409
|
-
[
|
|
1410
|
-
'0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
|
|
1411
|
-
'0x0000000000000000000000007f39c581f595b53c5cb19bd0b3f8da6c935e2ca0',
|
|
1412
|
-
'0x000000000000000000000000870ac11d48b15db9a138cf899d20f13f79ba00bc',
|
|
1413
|
-
'0x0000000000000000000000000000000000000000000000000000000000000000',
|
|
1414
|
-
'0x0000000000000000000000000000000000000000000000000d1d507e40be8000',
|
|
1415
|
-
'0x0000000000000000000000001031d218133afab8c2b819b1366c7e434ad91e9c',
|
|
1416
|
-
'0x0000000000000000000000000000000000000000000000000000000000000005',
|
|
1417
|
-
],
|
|
1418
|
-
],
|
|
1419
|
-
[
|
|
1420
|
-
web3Utils.toChecksumAddress('0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'),
|
|
1421
|
-
web3Utils.toChecksumAddress('0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0'),
|
|
1422
|
-
web3Utils.toChecksumAddress('0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC'),
|
|
1423
|
-
web3Utils.toChecksumAddress('0x0000000000000000000000000000000000000000'),
|
|
1424
|
-
'945000000000000000',
|
|
1425
|
-
web3Utils.toChecksumAddress('0x1031d218133AFaB8c2B819B1366c7E434Ad91E9c'),
|
|
1426
|
-
1500,
|
|
1427
|
-
enums_1.CloseToAssetType.DEBT,
|
|
1428
|
-
4000,
|
|
1429
|
-
enums_1.CloseToAssetType.COLLATERAL,
|
|
1430
|
-
false,
|
|
1431
|
-
enums_1.ChainId.Ethereum,
|
|
1432
|
-
]
|
|
1433
|
-
],
|
|
1434
|
-
];
|
|
1435
|
-
examples.forEach(([expected, actual]) => {
|
|
1436
|
-
it(`Given ${JSON.stringify(actual)} should return expected value: ${JSON.stringify(expected)}`, () => {
|
|
1437
|
-
(0, chai_1.expect)(strategySubService_1.morphoBlueEncode.closeOnPriceGeneric(...actual)).to.eql(expected);
|
|
1438
|
-
});
|
|
1439
|
-
});
|
|
1440
|
-
});
|
|
1441
1295
|
});
|
|
1442
1296
|
describe('When testing strategySubService.sparkEncode', () => {
|
|
1443
1297
|
describe('leverageManagementOnPrice()', () => {
|