@defisaver/sdk 0.2.9 → 0.2.10
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/ACTIONS.md +21 -379
- package/DEV.md +298 -0
- package/index.js +11 -2
- package/package.json +2 -2
- package/src/Action.js +20 -8
- package/src/ActionWithL2.js +36 -0
- package/src/actions/aave/AaveBorrowAction.js +11 -2
- package/src/actions/aave/AaveClaimStkAaveAction.js +5 -5
- package/src/actions/aave/AaveCollateralSwitchAction.js +5 -4
- package/src/actions/aave/AavePaybackAction.js +11 -2
- package/src/actions/aave/AaveSupplyAction.js +6 -6
- package/src/actions/aave/AaveWithdrawAction.js +8 -1
- package/src/actions/aaveV3/AaveV3ATokenPaybackAction.js +58 -0
- package/src/actions/aaveV3/AaveV3BorrowAction.js +59 -0
- package/src/actions/aaveV3/AaveV3ClaimRewardsAction.js +45 -0
- package/src/actions/aaveV3/AaveV3CollateralSwitchAction.js +45 -0
- package/src/actions/aaveV3/AaveV3PaybackAction.js +68 -0
- package/src/actions/aaveV3/AaveV3SetEModeAction.js +40 -0
- package/src/actions/aaveV3/AaveV3SupplyAction.js +69 -0
- package/src/actions/aaveV3/AaveV3SwapBorrowRateModeAction.js +43 -0
- package/src/actions/aaveV3/AaveV3WithdrawAction.js +46 -0
- package/src/actions/aaveV3/index.js +21 -0
- package/src/actions/balancer/BalancerV2ClaimAction.js +12 -10
- package/src/actions/balancer/BalancerV2SupplyAction.js +16 -14
- package/src/actions/balancer/BalancerV2WithdrawAction.js +17 -15
- package/src/actions/basic/AutomationV2Unsub.js +3 -3
- package/src/actions/basic/ChangeProxyOwnerAction.js +4 -2
- package/src/actions/basic/GasFeeAction.js +6 -6
- package/src/actions/basic/PullTokenAction.js +9 -3
- package/src/actions/basic/SellAction.js +17 -10
- package/src/actions/basic/SendTokenAction.js +9 -4
- package/src/actions/basic/SubInputsAction.js +8 -3
- package/src/actions/basic/SumInputsAction.js +8 -3
- package/src/actions/basic/TokenBalanceAction.js +3 -3
- package/src/actions/basic/UnwrapEthAction.js +18 -5
- package/src/actions/basic/WrapEthAction.js +15 -5
- package/src/actions/basic/index.js +0 -6
- package/src/actions/checkers/MakerRatioCheckAction.js +5 -5
- package/src/actions/compound/CompoundBorrowAction.js +7 -1
- package/src/actions/compound/CompoundClaimAction.js +3 -3
- package/src/actions/compound/CompoundCollateralSwitchAction.js +4 -2
- package/src/actions/compound/CompoundGetDebtAction.js +3 -3
- package/src/actions/compound/CompoundPaybackAction.js +7 -1
- package/src/actions/compound/CompoundSupplyAction.js +4 -4
- package/src/actions/compound/CompoundWithdrawAction.js +7 -1
- package/src/actions/curve/CurveClaimFeesAction.js +4 -4
- package/src/actions/curve/CurveDepositAction.js +7 -7
- package/src/actions/curve/CurveGaugeDepositAction.js +6 -6
- package/src/actions/curve/CurveGaugeWithdrawAction.js +4 -4
- package/src/actions/curve/CurveMintCrvAction.js +3 -3
- package/src/actions/curve/CurveStethPoolDepositAction.js +9 -9
- package/src/actions/curve/CurveStethPoolWithdrawAction.js +9 -11
- package/src/actions/curve/CurveSwapAction.js +15 -15
- package/src/actions/curve/CurveWithdrawAction.js +7 -7
- package/src/actions/dydx/DyDxWithdrawAction.js +7 -1
- package/src/actions/flashloan/AaveV2FlashLoanAction.js +2 -2
- package/src/actions/flashloan/AaveV3FlashLoanAction.js +26 -0
- package/src/actions/flashloan/AaveV3FlashLoanPaybackAction.js +17 -0
- package/src/actions/flashloan/BalancerFlashLoanAction.js +2 -2
- package/src/actions/flashloan/DyDxFlashLoanAction.js +1 -5
- package/src/actions/flashloan/MakerFlashLoanAction.js +2 -2
- package/src/actions/flashloan/index.js +4 -0
- package/src/actions/guni/GUniDeposit.js +9 -9
- package/src/actions/guni/GUniWithdraw.js +5 -5
- package/src/actions/index.js +2 -2
- package/src/actions/insta/InstPullTokensAction.js +4 -4
- package/src/actions/lido/LidoStakeAction.js +7 -2
- package/src/actions/lido/LidoUnwrapAction.js +7 -2
- package/src/actions/lido/LidoWrapAction.js +7 -7
- package/src/actions/liquity/LiquityBorrowAction.js +5 -5
- package/src/actions/liquity/LiquityClaimAction.js +3 -3
- package/src/actions/liquity/LiquityCloseAction.js +4 -4
- package/src/actions/liquity/LiquityEthGainToTroveAction.js +3 -3
- package/src/actions/liquity/LiquityOpenAction.js +8 -8
- package/src/actions/liquity/LiquityPaybackAction.js +5 -5
- package/src/actions/liquity/LiquityRedeemAction.js +7 -7
- package/src/actions/liquity/LiquitySPDepositAction.js +7 -7
- package/src/actions/liquity/LiquitySPWithdrawAction.js +6 -6
- package/src/actions/liquity/LiquityStakeAction.js +7 -7
- package/src/actions/liquity/LiquitySupplyAction.js +5 -5
- package/src/actions/liquity/LiquityUnstakeAction.js +6 -6
- package/src/actions/liquity/LiquityWithdrawAction.js +4 -4
- package/src/actions/maker/MakerClaimAction.js +4 -4
- package/src/actions/maker/MakerGenerateAction.js +8 -1
- package/src/actions/maker/MakerGiveAction.js +4 -4
- package/src/actions/maker/MakerMergeAction.js +7 -1
- package/src/actions/maker/MakerOpenVaultAction.js +6 -1
- package/src/actions/maker/MakerPaybackAction.js +9 -2
- package/src/actions/maker/MakerRatioAction.js +5 -1
- package/src/actions/maker/MakerSupplyAction.js +9 -1
- package/src/actions/maker/MakerWithdrawAction.js +9 -1
- package/src/actions/mstable/MStableClaimAction.js +4 -4
- package/src/actions/mstable/MStableDepositAction.js +16 -16
- package/src/actions/mstable/MStableWithdrawAction.js +15 -15
- package/src/actions/rari/RariDepositAction.js +5 -5
- package/src/actions/rari/RariWithdrawAction.js +6 -6
- package/src/actions/reflexer/ReflexerGenerateAction.js +7 -1
- package/src/actions/reflexer/ReflexerNativeUniV2SaviourDepositAction.js +5 -5
- package/src/actions/reflexer/ReflexerNativeUniV2SaviourGetReservesAction.js +8 -3
- package/src/actions/reflexer/ReflexerNativeUniV2SaviourWithdrawAction.js +9 -4
- package/src/actions/reflexer/ReflexerOpenSafeAction.js +5 -1
- package/src/actions/reflexer/ReflexerPaybackAction.js +7 -1
- package/src/actions/reflexer/ReflexerSupplyAction.js +8 -1
- package/src/actions/reflexer/ReflexerWithdrawAction.js +8 -1
- package/src/actions/uniswap/UniswapSupplyAction.js +22 -20
- package/src/actions/uniswap/UniswapWithdrawAction.js +18 -16
- package/src/actions/uniswapV3/UniswapV3CollectAction.js +9 -7
- package/src/actions/uniswapV3/UniswapV3CreatePoolAction.js +22 -20
- package/src/actions/uniswapV3/UniswapV3MintAction.js +21 -19
- package/src/actions/uniswapV3/UniswapV3SupplyAction.js +19 -17
- package/src/actions/uniswapV3/UniswapV3WithdrawAction.js +14 -12
- package/src/actions/yearn/YearnSupplyAction.js +6 -6
- package/src/actions/yearn/YearnWithdrawAction.js +6 -6
- package/src/addresses.js +217 -152
- package/src/config.js +83 -0
- package/src/triggers/ChainLinkPriceTrigger.js +2 -2
- package/src/triggers/CompoundRatioTrigger.js +1 -1
- package/src/triggers/GasPriceTrigger.js +1 -1
- package/src/triggers/LiquityRatioTrigger.js +2 -2
- package/src/triggers/MakerRatioTrigger.js +5 -1
- package/src/triggers/ReflexerRatioTrigger.js +1 -1
- package/src/triggers/TimestampTrigger.js +1 -1
- package/src/triggers/UniV3CurrentTickTrigger.js +1 -1
- package/src/types.js +33 -0
- package/src/utils/index.js +0 -2
- package/test/Action.js +1 -2
- package/test/accessLists/access-lists.js +2 -1
- package/test/actions/maker/MakerPaybackAction.js +2 -2
- package/test/index.js +4 -1
- package/src/actions/basic/SendTokenAndUnwrapAction.js +0 -30
- package/src/actions/basic/ToggleSubAction.js +0 -19
- package/src/actions/basic/UpdateSubAction.js +0 -19
- package/src/actions/convex/ConvexClaimAction.js +0 -60
- package/src/actions/convex/ConvexDepositAction.js +0 -67
- package/src/actions/convex/ConvexWithdrawAction.js +0 -65
- package/src/actions/convex/index.js +0 -9
- package/src/utils/convex-utils.js +0 -20
- package/src/utils/convexPoolInfo.json +0 -1039
- package/test/Strategy.js +0 -44
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
const ActionWithL2 = require("../../ActionWithL2");
|
|
2
|
+
const { getAddr } = require('../../addresses.js');
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* AaveV3ClaimRewardsAction
|
|
6
|
+
*/
|
|
7
|
+
class AaveV3ClaimRewardsAction extends ActionWithL2 {
|
|
8
|
+
/**
|
|
9
|
+
* @param assetsLength {number} Address provider for specific market
|
|
10
|
+
* @param amount {string} length of two arrays
|
|
11
|
+
* @param to {EthAddress}
|
|
12
|
+
* @param reward {EthAddress}
|
|
13
|
+
* @param assets {Array<EthAddress>}
|
|
14
|
+
*/
|
|
15
|
+
constructor(assetsLength, amount, to, reward, assets) {
|
|
16
|
+
super(
|
|
17
|
+
'AaveV3ClaimRewards',
|
|
18
|
+
getAddr('AaveV3ClaimRewards'),
|
|
19
|
+
[['uint8', 'uint256', 'address', 'address', 'address[]']],
|
|
20
|
+
[[assetsLength, amount, to, reward, assets]],
|
|
21
|
+
);
|
|
22
|
+
}
|
|
23
|
+
encodeInputs() {
|
|
24
|
+
// executeActionDirectL2
|
|
25
|
+
let encodedInput = "0x2895f3aa";
|
|
26
|
+
// assetsLength
|
|
27
|
+
encodedInput = encodedInput.concat(this.numberToBytes1(this.args[0][0]));
|
|
28
|
+
// amount
|
|
29
|
+
encodedInput = encodedInput.concat(this.numberToBytes32(this.args[0][1]));
|
|
30
|
+
// to
|
|
31
|
+
encodedInput = encodedInput.concat(this.addressToBytes20(this.args[0][2]));
|
|
32
|
+
// reward
|
|
33
|
+
encodedInput = encodedInput.concat(this.addressToBytes20(this.args[0][3]));
|
|
34
|
+
// assets
|
|
35
|
+
const arrayLength = this.args[0][0];
|
|
36
|
+
for (let i = 0; i < arrayLength; i++){
|
|
37
|
+
// assets[i]
|
|
38
|
+
encodedInput = encodedInput.concat(this.addressToBytes20(this.args[0][4][i]))
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
return encodedInput;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
module.exports = AaveV3ClaimRewardsAction;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
const ActionWithL2 = require("../../ActionWithL2");
|
|
2
|
+
const { getAddr } = require('../../addresses.js');
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* AaveV3CollateralSwitchAction - Aave enable/disable token usage as collateral for AaveV3 position
|
|
6
|
+
*/
|
|
7
|
+
class AaveV3CollateralSwitchAction extends ActionWithL2 {
|
|
8
|
+
/**
|
|
9
|
+
* @param useDefaultMarket {boolean} If this is true it defaults to the hardcoded market in contract
|
|
10
|
+
* @param market {EthAddress} Address provider for specific market
|
|
11
|
+
* @param arrayLength {number} length of two arrays
|
|
12
|
+
* @param assetIds {Array<number>}
|
|
13
|
+
* @param useAsCollateral {Array<boolean>}
|
|
14
|
+
*/
|
|
15
|
+
constructor(useDefaultMarket, market, arrayLength, assetIds, useAsCollateral) {
|
|
16
|
+
super(
|
|
17
|
+
'AaveV3CollateralSwitch',
|
|
18
|
+
getAddr('AaveV3CollateralSwitch'),
|
|
19
|
+
[['uint8','bool', 'uint16[]', 'bool[]','address']],
|
|
20
|
+
[[arrayLength, useDefaultMarket, assetIds, useAsCollateral, market]],
|
|
21
|
+
);
|
|
22
|
+
}
|
|
23
|
+
encodeInputs() {
|
|
24
|
+
// executeActionDirectL2
|
|
25
|
+
let encodedInput = "0x2895f3aa";
|
|
26
|
+
// arrayLength
|
|
27
|
+
encodedInput = encodedInput.concat(this.numberToBytes1(this.args[0][0]));
|
|
28
|
+
// useDefaultMarket
|
|
29
|
+
encodedInput = encodedInput.concat(this.boolToBytes1(this.args[0][1]));
|
|
30
|
+
const arrayLength = this.args[0][0];
|
|
31
|
+
for (let i = 0; i < arrayLength; i++){
|
|
32
|
+
// assetIds[i]
|
|
33
|
+
encodedInput = encodedInput.concat(this.numberToBytes2(this.args[0][2][i]));
|
|
34
|
+
// useAsCollateral[i]
|
|
35
|
+
encodedInput = encodedInput.concat(this.boolToBytes1(this.args[0][3][i]));
|
|
36
|
+
}
|
|
37
|
+
if (!this.args[0][1]){
|
|
38
|
+
// market
|
|
39
|
+
encodedInput = encodedInput.concat(this.addressToBytes20(this.args[0][4]));
|
|
40
|
+
}
|
|
41
|
+
return encodedInput;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
module.exports = AaveV3CollateralSwitchAction;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
const ActionWithL2 = require("../../ActionWithL2");
|
|
2
|
+
const { getAssetInfoByAddress } = require("@defisaver/tokens");
|
|
3
|
+
const { getAddr } = require('../../addresses.js');
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* AaveV3PaybackAction - Payback debt on Aave using underlying token
|
|
7
|
+
*/
|
|
8
|
+
class AaveV3PaybackAction extends ActionWithL2 {
|
|
9
|
+
/**
|
|
10
|
+
* @param useOnDefaultMarket {boolean} If this is true it defaults to the hardcoded market in contract
|
|
11
|
+
* @param market {EthAddress} Address provider for specific market
|
|
12
|
+
* @param amount {string} Amount of tokens to be payed back
|
|
13
|
+
* @param from {EthAddress} Tokens will be supplied from this address
|
|
14
|
+
* @param rateMode {number} Type of borrow debt [Stable: 1, Variable: 2]
|
|
15
|
+
* @param tokenAddr {EthAddress}
|
|
16
|
+
* @param assetId {number} The id of the underlying asset to be repaid
|
|
17
|
+
* @param useOnBehalf {boolean} use on behalf param or default to proxy
|
|
18
|
+
* @param onBehalf {EthAddress} For what user we are paying back the debt, defaults to proxy
|
|
19
|
+
*/
|
|
20
|
+
constructor(useOnDefaultMarket, market, amount, from, rateMode, tokenAddr, assetId, useOnBehalf , onBehalf = getAddr('Empty')) {
|
|
21
|
+
super('AaveV3Payback', getAddr('AaveV3Payback'),
|
|
22
|
+
[['uint256','address','uint8','uint16', 'bool', 'bool','address','address']],
|
|
23
|
+
[[amount, from, rateMode, assetId, useOnDefaultMarket, useOnBehalf, market, onBehalf]]
|
|
24
|
+
);
|
|
25
|
+
|
|
26
|
+
this.mappableArgs = [
|
|
27
|
+
this.args[0][0],
|
|
28
|
+
this.args[0][1],
|
|
29
|
+
this.args[0][6],
|
|
30
|
+
this.args[0][7],
|
|
31
|
+
];
|
|
32
|
+
this.tokenForApproval = tokenAddr;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
async getAssetsToApprove() {
|
|
36
|
+
const asset = getAssetInfoByAddress(this.tokenForApproval);
|
|
37
|
+
if (asset.symbol !== 'ETH') return [{asset: this.tokenForApproval, owner: this.args[3]}];
|
|
38
|
+
return [];
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
encodeInputs() {
|
|
42
|
+
// executeActionDirectL2
|
|
43
|
+
let encodedInput = "0x2895f3aa";
|
|
44
|
+
// amount
|
|
45
|
+
encodedInput = encodedInput.concat(this.numberToBytes32(this.args[0][0]));
|
|
46
|
+
// from
|
|
47
|
+
encodedInput = encodedInput.concat(this.addressToBytes20(this.args[0][1]));
|
|
48
|
+
// rateMode
|
|
49
|
+
encodedInput = encodedInput.concat(this.numberToBytes1(this.args[0][2]));
|
|
50
|
+
// assetId
|
|
51
|
+
encodedInput = encodedInput.concat(this.numberToBytes2(this.args[0][3]));
|
|
52
|
+
// useDefaultMarket
|
|
53
|
+
encodedInput = encodedInput.concat(this.boolToBytes1(this.args[0][4]));
|
|
54
|
+
// useOnBehalf
|
|
55
|
+
encodedInput = encodedInput.concat(this.boolToBytes1(this.args[0][5]));
|
|
56
|
+
if (!this.args[0][4]) {
|
|
57
|
+
// market
|
|
58
|
+
encodedInput = encodedInput.concat(this.addressToBytes20(this.args[0][6]));
|
|
59
|
+
}
|
|
60
|
+
if (this.args[0][5]) {
|
|
61
|
+
// onBehalf
|
|
62
|
+
encodedInput = encodedInput.concat(this.addressToBytes20(this.args[0][7]));
|
|
63
|
+
}
|
|
64
|
+
return encodedInput;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
module.exports = AaveV3PaybackAction;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
const ActionWithL2 = require("../../ActionWithL2");
|
|
2
|
+
const { getAddr } = require('../../addresses.js');
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* AaveV3SetEModeAction - Set EMode for the proxy AaveV3 position
|
|
6
|
+
*/
|
|
7
|
+
class AaveV3SetEModeAction extends ActionWithL2 {
|
|
8
|
+
/**
|
|
9
|
+
* @param categoryId {EthAddress} ID of the category emode
|
|
10
|
+
* @param useOnDefaultMarket {boolean} If this is true it defaults to the hardcoded market in contract
|
|
11
|
+
* @param market {EthAddress} Address provider for specific market
|
|
12
|
+
*/
|
|
13
|
+
constructor(categoryId, useOnDefaultMarket, market) {
|
|
14
|
+
super('AaveV3SetEMode', getAddr('AaveV3SetEMode'),
|
|
15
|
+
[['uint8', 'bool', 'address']],
|
|
16
|
+
[[categoryId, useOnDefaultMarket, market]]
|
|
17
|
+
);
|
|
18
|
+
|
|
19
|
+
this.mappableArgs = [
|
|
20
|
+
this.args[0][2],
|
|
21
|
+
];
|
|
22
|
+
}
|
|
23
|
+
encodeInputs() {
|
|
24
|
+
// executeActionDirectL2
|
|
25
|
+
let encodedInput = "0x2895f3aa";
|
|
26
|
+
// categoryId
|
|
27
|
+
encodedInput = encodedInput.concat(this.numberToBytes1(this.args[0][0]));
|
|
28
|
+
// useOnDefaultMarket
|
|
29
|
+
encodedInput = encodedInput.concat(this.boolToBytes1(this.args[0][1]));
|
|
30
|
+
if (!this.args[0][1]){
|
|
31
|
+
// market
|
|
32
|
+
encodedInput = encodedInput.concat(this.addressToBytes20(this.args[0][2]));
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
return encodedInput;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
module.exports = AaveV3SetEModeAction;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
const ActionWithL2 = require("../../ActionWithL2");
|
|
2
|
+
const { getAssetInfoByAddress } = require("@defisaver/tokens");
|
|
3
|
+
const { getAddr } = require('../../addresses.js');
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* AaveV3SupplyAction - Supply token to an aave position on Aave V3
|
|
7
|
+
*/
|
|
8
|
+
class AaveV3SupplyAction extends ActionWithL2 {
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* @param amount {string} Amount of tokens to be deposited
|
|
12
|
+
* @param from {EthAddress} Tokens will be supplied from this address
|
|
13
|
+
* @param tokenAddress {EthAddress} Address of the token
|
|
14
|
+
* @param assetId {number} The id of the token to be deposited
|
|
15
|
+
* @param enableAsColl {boolean} If we need to enable asset as collateral
|
|
16
|
+
* @param useDefaultMarket {boolean} If this is true it defaults to the hardcoded market in contract
|
|
17
|
+
* @param useOnBehalf {boolean} use on behalf param or default to proxy
|
|
18
|
+
* @param market {EthAddress} Address provider for specific market
|
|
19
|
+
* @param [onBehalf] {EthAddress} For what user we are supplying the tokens, defaults to proxy
|
|
20
|
+
*/
|
|
21
|
+
constructor(amount, from, tokenAddress, assetId, enableAsColl, useDefaultMarket, useOnBehalf ,market, onBehalf = getAddr('Empty')) {
|
|
22
|
+
super('AaveV3Supply', getAddr('AaveV3Supply'),
|
|
23
|
+
[['uint256','address','uint16','bool','bool','bool','address','address']],
|
|
24
|
+
[[amount, from, assetId, enableAsColl, useDefaultMarket, useOnBehalf, market, onBehalf]]
|
|
25
|
+
);
|
|
26
|
+
|
|
27
|
+
this.mappableArgs = [
|
|
28
|
+
this.args[0][0],
|
|
29
|
+
this.args[0][1],
|
|
30
|
+
this.args[0][6],
|
|
31
|
+
this.args[0][7],
|
|
32
|
+
];
|
|
33
|
+
this.tokenForApproval = tokenAddress;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
async getAssetsToApprove() {
|
|
37
|
+
const asset = getAssetInfoByAddress(this.tokenForApproval);
|
|
38
|
+
if (asset.symbol !== 'ETH') return [{asset: this.tokenForApproval, owner: this.args[0][2]}];
|
|
39
|
+
return [];
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
encodeInputs() {
|
|
43
|
+
// executeActionDirectL2
|
|
44
|
+
let encodedInput = "0x2895f3aa";
|
|
45
|
+
// amount
|
|
46
|
+
encodedInput = encodedInput.concat(this.numberToBytes32(this.args[0][0]));
|
|
47
|
+
// from
|
|
48
|
+
encodedInput = encodedInput.concat(this.addressToBytes20(this.args[0][1]));
|
|
49
|
+
// assetId
|
|
50
|
+
encodedInput = encodedInput.concat(this.numberToBytes2(this.args[0][2]));
|
|
51
|
+
// enableAsColl
|
|
52
|
+
encodedInput = encodedInput.concat(this.boolToBytes1(this.args[0][3]));
|
|
53
|
+
// useDefaultMarket
|
|
54
|
+
encodedInput = encodedInput.concat(this.boolToBytes1(this.args[0][4]));
|
|
55
|
+
// useOnBehalf
|
|
56
|
+
encodedInput = encodedInput.concat(this.boolToBytes1(this.args[0][5]));
|
|
57
|
+
if (!this.args[0][4]) {
|
|
58
|
+
// market
|
|
59
|
+
encodedInput = encodedInput.concat(this.addressToBytes20(this.args[0][6]));
|
|
60
|
+
}
|
|
61
|
+
if (this.args[0][5]) {
|
|
62
|
+
// onBehalf
|
|
63
|
+
encodedInput = encodedInput.concat(this.addressToBytes20(this.args[0][7]));
|
|
64
|
+
}
|
|
65
|
+
return encodedInput;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
module.exports = AaveV3SupplyAction;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
const ActionWithL2 = require("../../ActionWithL2");
|
|
2
|
+
const { getAddr } = require('../../addresses.js');
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* AaveV3SwapBorrowRateModeAction - Swaps proxy positions borrow rate mode between stable and variable.
|
|
6
|
+
*/
|
|
7
|
+
class AaveV3SwapBorrowRateModeAction extends ActionWithL2 {
|
|
8
|
+
/**
|
|
9
|
+
* @param asset {EthAddress} address of the underlying asset
|
|
10
|
+
* @param rateMode {string} rate mode the user is swapping from.[Stable: 1, Variable: 2]
|
|
11
|
+
* @param useDefaultMarket {boolean} If this is true it defaults to the hardcoded market in contract
|
|
12
|
+
* @param market {EthAddress} Address provider for specific market
|
|
13
|
+
*
|
|
14
|
+
*/
|
|
15
|
+
constructor(asset, rateMode, useDefaultMarket, market) {
|
|
16
|
+
super('AaveV3SwapBorrowRateMode', getAddr('AaveV3SwapBorrowRateMode'),
|
|
17
|
+
[['address','uint256','bool','address']],
|
|
18
|
+
[[asset, rateMode, useDefaultMarket, market]]
|
|
19
|
+
);
|
|
20
|
+
|
|
21
|
+
this.mappableArgs = [
|
|
22
|
+
this.args[0][0],
|
|
23
|
+
this.args[0][3],
|
|
24
|
+
];
|
|
25
|
+
}
|
|
26
|
+
encodeInputs() {
|
|
27
|
+
// executeActionDirectL2
|
|
28
|
+
let encodedInput = "0x2895f3aa";
|
|
29
|
+
// asset
|
|
30
|
+
encodedInput = encodedInput.concat(this.addressToBytes20(this.args[0][0]));
|
|
31
|
+
// rateMode
|
|
32
|
+
encodedInput = encodedInput.concat(this.numberToBytes32(this.args[0][1]));
|
|
33
|
+
// useOnDefaultMarket
|
|
34
|
+
encodedInput = encodedInput.concat(this.boolToBytes1(this.args[0][2]))
|
|
35
|
+
if (!this.args[0][2]){
|
|
36
|
+
// market
|
|
37
|
+
encodedInput = encodedInput.concat(this.addressToBytes20(this.args[0][3]));
|
|
38
|
+
}
|
|
39
|
+
return encodedInput;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
module.exports = AaveV3SwapBorrowRateModeAction;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
const ActionWithL2 = require("../../ActionWithL2");
|
|
2
|
+
const { getAddr } = require('../../addresses.js');
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* AaveV3WithdrawAction - Withdraw a previously supplied token from a position in AaveV3
|
|
6
|
+
*/
|
|
7
|
+
class AaveV3WithdrawAction extends ActionWithL2 {
|
|
8
|
+
/**
|
|
9
|
+
* @param assetId {number} The id of the token to be deposited
|
|
10
|
+
* @param useDefaultMarket {boolean} If this is true it defaults to the hardcoded market in contract
|
|
11
|
+
* @param amount {string} Amount of tokens to be withdrawn -> send type(uint).max for whole amount
|
|
12
|
+
* @param to {EthAddress} Where the withdrawn tokens will be sent
|
|
13
|
+
* @param market {EthAddress} Address provider for specific market
|
|
14
|
+
*/
|
|
15
|
+
constructor(assetId, useDefaultMarket, amount, to, market) {
|
|
16
|
+
super('AaveV3Withdraw', getAddr('AaveV3Withdraw'),
|
|
17
|
+
[['uint16','bool','uint256','address','address']],
|
|
18
|
+
[[assetId, useDefaultMarket, amount, to, market]]
|
|
19
|
+
);
|
|
20
|
+
|
|
21
|
+
this.mappableArgs = [
|
|
22
|
+
this.args[0][2],
|
|
23
|
+
this.args[0][3],
|
|
24
|
+
this.args[0][4],
|
|
25
|
+
];
|
|
26
|
+
}
|
|
27
|
+
encodeInputs() {
|
|
28
|
+
// executeActionDirectL2
|
|
29
|
+
let encodedInput = "0x2895f3aa";
|
|
30
|
+
// assetId
|
|
31
|
+
encodedInput = encodedInput.concat(this.numberToBytes2(this.args[0][0]));
|
|
32
|
+
// useOnDefaultMarket
|
|
33
|
+
encodedInput = encodedInput.concat(this.boolToBytes1(this.args[0][1]))
|
|
34
|
+
// amount
|
|
35
|
+
encodedInput = encodedInput.concat(this.numberToBytes32(this.args[0][2]));
|
|
36
|
+
// from
|
|
37
|
+
encodedInput = encodedInput.concat(this.addressToBytes20(this.args[0][3]));
|
|
38
|
+
if (!this.args[0][1]){
|
|
39
|
+
// market
|
|
40
|
+
encodedInput = encodedInput.concat(this.addressToBytes20(this.args[0][4]));
|
|
41
|
+
}
|
|
42
|
+
return encodedInput;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
module.exports = AaveV3WithdrawAction;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
const AaveV3SupplyAction = require('./AaveV3SupplyAction');
|
|
2
|
+
const AaveV3BorrowAction = require('./AaveV3BorrowAction');
|
|
3
|
+
const AaveV3PaybackAction = require('./AaveV3PaybackAction');
|
|
4
|
+
const AaveV3WithdrawAction = require('./AaveV3WithdrawAction');
|
|
5
|
+
const AaveV3SetEModeAction = require('./AaveV3SetEModeAction');
|
|
6
|
+
const AaveV3ATokenPaybackAction = require('./AaveV3ATokenPaybackAction');
|
|
7
|
+
const AaveV3CollateralSwitchAction = require('./AaveV3CollateralSwitchAction');
|
|
8
|
+
const AaveV3ClaimRewardsAction = require('./AaveV3ClaimRewardsAction');
|
|
9
|
+
const AaveV3SwapBorrowRateModeAction = require('./AaveV3SwapBorrowRateModeAction');
|
|
10
|
+
|
|
11
|
+
module.exports = {
|
|
12
|
+
AaveV3SupplyAction,
|
|
13
|
+
AaveV3BorrowAction,
|
|
14
|
+
AaveV3PaybackAction,
|
|
15
|
+
AaveV3WithdrawAction,
|
|
16
|
+
AaveV3SetEModeAction,
|
|
17
|
+
AaveV3ATokenPaybackAction,
|
|
18
|
+
AaveV3CollateralSwitchAction,
|
|
19
|
+
AaveV3ClaimRewardsAction,
|
|
20
|
+
AaveV3SwapBorrowRateModeAction,
|
|
21
|
+
}
|
|
@@ -17,27 +17,29 @@ class BalancerV2ClaimAction extends Action {
|
|
|
17
17
|
'BalancerV2Claim',
|
|
18
18
|
getAddr('BalancerV2Claim'),
|
|
19
19
|
[
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
20
|
+
[
|
|
21
|
+
"address",
|
|
22
|
+
"address",
|
|
23
|
+
"uint256[]",
|
|
24
|
+
"uint256[]",
|
|
25
|
+
"bytes32[][]",
|
|
26
|
+
],
|
|
25
27
|
],
|
|
26
|
-
[liquidityProvider, to, weeks, balances, merkleProofs]
|
|
28
|
+
[[liquidityProvider, to, weeks, balances, merkleProofs]]
|
|
27
29
|
);
|
|
28
30
|
|
|
29
31
|
this.mappableArgs = [
|
|
30
|
-
this.args[0],
|
|
31
|
-
this.args[1],
|
|
32
|
+
this.args[0][0],
|
|
33
|
+
this.args[0][1],
|
|
32
34
|
];
|
|
33
35
|
}
|
|
34
36
|
|
|
35
37
|
async getAssetsToApprove() {
|
|
36
38
|
|
|
37
39
|
const approveArr = [];
|
|
38
|
-
if (this.args[0] !== this.args[1]){
|
|
40
|
+
if (this.args[0][0] !== this.args[0][1]){
|
|
39
41
|
const tokenAddress = getAddr('BalancerToken');
|
|
40
|
-
approveArr.push({asset: tokenAddress, owner: this.args[0]});
|
|
42
|
+
approveArr.push({asset: tokenAddress, owner: this.args[0][0]});
|
|
41
43
|
}
|
|
42
44
|
return approveArr;
|
|
43
45
|
}
|
|
@@ -18,30 +18,32 @@ class BalancerV2SupplyAction extends Action {
|
|
|
18
18
|
'BalancerV2Supply',
|
|
19
19
|
getAddr('BalancerV2Supply'),
|
|
20
20
|
[
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
21
|
+
[
|
|
22
|
+
"bytes32",
|
|
23
|
+
"address",
|
|
24
|
+
"address",
|
|
25
|
+
"address[]",
|
|
26
|
+
"uint256[]",
|
|
27
|
+
"bytes",
|
|
28
|
+
],
|
|
27
29
|
],
|
|
28
|
-
[poolId, from, to, tokens, maxAmountsIn, userData]
|
|
30
|
+
[[poolId, from, to, tokens, maxAmountsIn, userData]]
|
|
29
31
|
);
|
|
30
32
|
|
|
31
33
|
this.mappableArgs = [
|
|
32
|
-
this.args[1],
|
|
33
|
-
this.args[2],
|
|
34
|
+
this.args[0][1],
|
|
35
|
+
this.args[0][2],
|
|
34
36
|
];
|
|
35
|
-
for (let i = 0; i < this.args[4].length; i++){
|
|
36
|
-
this.mappableArgs.push(this.args[4][i]);
|
|
37
|
+
for (let i = 0; i < this.args[0][4].length; i++){
|
|
38
|
+
this.mappableArgs.push(this.args[0][4][i]);
|
|
37
39
|
}
|
|
38
40
|
}
|
|
39
41
|
|
|
40
42
|
async getAssetsToApprove() {
|
|
41
43
|
const approveArr = [];
|
|
42
|
-
const tokens = this.args[3];
|
|
43
|
-
tokens.forEach(token => approveArr.push({asset: token, owner: this.args[1], specialApproveLabel: 'balancer'}));
|
|
44
|
-
|
|
44
|
+
const tokens = this.args[0][3];
|
|
45
|
+
tokens.forEach(token => approveArr.push({asset: token, owner: this.args[0][1], specialApproveLabel: 'balancer'}));
|
|
46
|
+
|
|
45
47
|
return approveArr;
|
|
46
48
|
}
|
|
47
49
|
}
|
|
@@ -19,34 +19,36 @@ class BalancerV2WithdrawAction extends Action {
|
|
|
19
19
|
'BalancerV2Withdraw',
|
|
20
20
|
getAddr('BalancerV2Withdraw'),
|
|
21
21
|
[
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
22
|
+
[
|
|
23
|
+
"bytes32",
|
|
24
|
+
"address",
|
|
25
|
+
"address",
|
|
26
|
+
"uint256",
|
|
27
|
+
"address[]",
|
|
28
|
+
"uint256[]",
|
|
29
|
+
"bytes",
|
|
30
|
+
],
|
|
29
31
|
],
|
|
30
|
-
[poolId, from, to, lpTokenAmount, tokens, minAmountsOut, userData]
|
|
32
|
+
[[poolId, from, to, lpTokenAmount, tokens, minAmountsOut, userData]]
|
|
31
33
|
);
|
|
32
34
|
|
|
33
35
|
this.from = from;
|
|
34
36
|
|
|
35
37
|
this.mappableArgs = [
|
|
36
|
-
this.args[1],
|
|
37
|
-
this.args[2],
|
|
38
|
-
this.args[3],
|
|
38
|
+
this.args[0][1],
|
|
39
|
+
this.args[0][2],
|
|
40
|
+
this.args[0][3],
|
|
39
41
|
];
|
|
40
42
|
|
|
41
|
-
for (let i = 0; i < this.args[5].length; i++){
|
|
42
|
-
this.mappableArgs.push(this.args[5][i]);
|
|
43
|
+
for (let i = 0; i < this.args[0][5].length; i++){
|
|
44
|
+
this.mappableArgs.push(this.args[0][5][i]);
|
|
43
45
|
}
|
|
44
46
|
}
|
|
45
47
|
|
|
46
48
|
async getAssetsToApprove() {
|
|
47
49
|
const approveArr = [];
|
|
48
|
-
const token = this.args[0].slice(0,42);
|
|
49
|
-
approveArr.push({asset: token, owner: this.args[1], specialApproveLabel: 'balancer'});
|
|
50
|
+
const token = this.args[0][0].slice(0,42);
|
|
51
|
+
approveArr.push({asset: token, owner: this.args[0][1], specialApproveLabel: 'balancer'});
|
|
50
52
|
return approveArr;
|
|
51
53
|
}
|
|
52
54
|
}
|
|
@@ -6,10 +6,10 @@ class AutomationV2Unsub extends Action {
|
|
|
6
6
|
super(
|
|
7
7
|
'AutomationV2Unsub',
|
|
8
8
|
getAddr('AutomationV2Unsub'),
|
|
9
|
-
["uint256", "uint256"],
|
|
10
|
-
[cdpId, protocol]
|
|
9
|
+
[["uint256", "uint256"]],
|
|
10
|
+
[[cdpId, protocol]]
|
|
11
11
|
);
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
module.exports = AutomationV2Unsub;
|
|
15
|
+
module.exports = AutomationV2Unsub;
|
|
@@ -9,8 +9,10 @@ class ChangeProxyOwnerAction extends Action {
|
|
|
9
9
|
* @param newOwner {Address} Address of new owner
|
|
10
10
|
*/
|
|
11
11
|
constructor(newOwner) {
|
|
12
|
-
super("ChangeProxyOwner", getAddr("ChangeProxyOwner"), ["address"], [...arguments]);
|
|
13
|
-
|
|
12
|
+
super("ChangeProxyOwner", getAddr("ChangeProxyOwner"), [["address"]], [[...arguments]]);
|
|
13
|
+
|
|
14
|
+
this.mappableArgs = [this.args[0][0]];
|
|
15
|
+
}
|
|
14
16
|
}
|
|
15
17
|
|
|
16
18
|
module.exports = ChangeProxyOwnerAction;
|
|
@@ -11,17 +11,17 @@ class GasFeeAction extends Action {
|
|
|
11
11
|
constructor(gasStart, feeToken, availableAmount, dfsFeeDivider = 2000) {
|
|
12
12
|
super("GasFeeTaker",
|
|
13
13
|
getAddr("GasFeeTaker"),
|
|
14
|
-
["uint256", "address", "uint256", "uint256"],
|
|
15
|
-
[gasStart, feeToken, availableAmount, dfsFeeDivider],
|
|
14
|
+
[["uint256", "address", "uint256", "uint256"]],
|
|
15
|
+
[[gasStart, feeToken, availableAmount, dfsFeeDivider]],
|
|
16
16
|
);
|
|
17
17
|
|
|
18
18
|
this.mappableArgs = [
|
|
19
|
-
this.args[1],
|
|
20
|
-
this.args[2],
|
|
21
|
-
this.args[3],
|
|
19
|
+
this.args[0][1],
|
|
20
|
+
this.args[0][2],
|
|
21
|
+
this.args[0][3],
|
|
22
22
|
];
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
module.exports = GasFeeAction;
|
|
27
|
+
module.exports = GasFeeAction;
|
|
@@ -17,13 +17,19 @@ class PullTokenAction extends Action {
|
|
|
17
17
|
super(
|
|
18
18
|
'PullToken',
|
|
19
19
|
getAddr('PullToken'),
|
|
20
|
-
[
|
|
20
|
+
[[
|
|
21
21
|
"address",
|
|
22
22
|
"address",
|
|
23
23
|
"uint",
|
|
24
|
-
],
|
|
25
|
-
[...arguments]
|
|
24
|
+
]],
|
|
25
|
+
[[...arguments]]
|
|
26
26
|
);
|
|
27
|
+
|
|
28
|
+
this.mappableArgs = [
|
|
29
|
+
this.args[0][0],
|
|
30
|
+
this.args[0][1],
|
|
31
|
+
this.args[0][2],
|
|
32
|
+
];
|
|
27
33
|
}
|
|
28
34
|
|
|
29
35
|
async getAssetsToApprove() {
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
const
|
|
2
|
-
const
|
|
3
|
-
const
|
|
1
|
+
const ActionAbi = require('../../abis/Action.json');
|
|
2
|
+
const AbiCoder = require('web3-eth-abi');
|
|
3
|
+
const ActionWithL2 = require("../../ActionWithL2");
|
|
4
|
+
const { requireAddress } = require("../../utils/general");
|
|
5
|
+
const { getAssetInfoByAddress } = require("@defisaver/tokens");
|
|
4
6
|
const { getAddr } = require('../../addresses.js');
|
|
5
|
-
const Dec = require('decimal.js');
|
|
6
7
|
|
|
7
8
|
/**
|
|
8
9
|
* Sells token on DeFi Saver exchange aggregator
|
|
9
10
|
*/
|
|
10
|
-
class SellAction extends
|
|
11
|
+
class SellAction extends ActionWithL2 {
|
|
11
12
|
/**
|
|
12
13
|
* @param exchangeOrder {Array} Standard DFS Exchange data
|
|
13
14
|
* @param from {string} Order sender
|
|
@@ -19,25 +20,31 @@ class SellAction extends Action {
|
|
|
19
20
|
super(
|
|
20
21
|
'DFSSell',
|
|
21
22
|
getAddr('DFSSell'),
|
|
22
|
-
[
|
|
23
|
+
[[
|
|
23
24
|
["address","address","uint256","uint256","uint256","uint256","address","address","bytes",["address","address","address","uint256","uint256","bytes"]],
|
|
24
25
|
"address",
|
|
25
26
|
"address",
|
|
27
|
+
]
|
|
26
28
|
],
|
|
27
|
-
[exchangeOrder, from, to]
|
|
29
|
+
[[exchangeOrder, from, to]]
|
|
28
30
|
);
|
|
29
31
|
|
|
30
32
|
this.protocolFee = protocolFee;
|
|
31
33
|
|
|
32
34
|
this.mappableArgs = [
|
|
33
|
-
this.args[0][0],
|
|
35
|
+
this.args[0][0][0],
|
|
36
|
+
this.args[0][0][1],
|
|
37
|
+
this.args[0][0][2],
|
|
34
38
|
this.args[0][1],
|
|
35
39
|
this.args[0][2],
|
|
36
|
-
this.args[1],
|
|
37
|
-
this.args[2],
|
|
38
40
|
];
|
|
39
41
|
}
|
|
40
42
|
|
|
43
|
+
encodeInputs() {
|
|
44
|
+
const executeActionDirectAbi = ActionAbi.find(({ name }) => name === 'executeActionDirect');
|
|
45
|
+
return AbiCoder.encodeFunctionCall(executeActionDirectAbi, this._encodeForCall());
|
|
46
|
+
}
|
|
47
|
+
|
|
41
48
|
async getAssetsToApprove() {
|
|
42
49
|
const asset = getAssetInfoByAddress(this.args[0][0]);
|
|
43
50
|
if (asset.symbol !== 'ETH') return [{asset: this.args[0][0], owner: this.args[1]}];
|