@defisaver/sdk 0.2.5 → 0.2.8

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.
Files changed (139) hide show
  1. package/ACTIONS.md +379 -21
  2. package/DEV.md +0 -298
  3. package/index.js +2 -11
  4. package/package.json +2 -2
  5. package/src/Action.js +8 -20
  6. package/src/actions/aave/AaveBorrowAction.js +2 -11
  7. package/src/actions/aave/AaveClaimStkAaveAction.js +5 -5
  8. package/src/actions/aave/AaveCollateralSwitchAction.js +4 -5
  9. package/src/actions/aave/AavePaybackAction.js +2 -11
  10. package/src/actions/aave/AaveSupplyAction.js +6 -6
  11. package/src/actions/aave/AaveWithdrawAction.js +1 -8
  12. package/src/actions/balancer/BalancerV2ClaimAction.js +10 -12
  13. package/src/actions/balancer/BalancerV2SupplyAction.js +14 -16
  14. package/src/actions/balancer/BalancerV2WithdrawAction.js +15 -17
  15. package/src/actions/basic/AutomationV2Unsub.js +3 -3
  16. package/src/actions/basic/ChangeProxyOwnerAction.js +2 -4
  17. package/src/actions/basic/GasFeeAction.js +6 -6
  18. package/src/actions/basic/PullTokenAction.js +3 -9
  19. package/src/actions/basic/SellAction.js +5 -6
  20. package/src/actions/basic/SendTokenAction.js +4 -9
  21. package/src/actions/basic/SendTokenAndUnwrapAction.js +30 -0
  22. package/src/actions/basic/SubInputsAction.js +3 -8
  23. package/src/actions/basic/SumInputsAction.js +3 -8
  24. package/src/actions/basic/ToggleSubAction.js +19 -0
  25. package/src/actions/basic/TokenBalanceAction.js +3 -3
  26. package/src/actions/basic/UnwrapEthAction.js +5 -18
  27. package/src/actions/basic/UpdateSubAction.js +19 -0
  28. package/src/actions/basic/WrapEthAction.js +5 -15
  29. package/src/actions/basic/index.js +6 -0
  30. package/src/actions/checkers/MakerRatioCheckAction.js +5 -5
  31. package/src/actions/compound/CompoundBorrowAction.js +1 -7
  32. package/src/actions/compound/CompoundClaimAction.js +3 -3
  33. package/src/actions/compound/CompoundCollateralSwitchAction.js +2 -4
  34. package/src/actions/compound/CompoundGetDebtAction.js +3 -3
  35. package/src/actions/compound/CompoundPaybackAction.js +1 -7
  36. package/src/actions/compound/CompoundSupplyAction.js +4 -4
  37. package/src/actions/compound/CompoundWithdrawAction.js +1 -7
  38. package/src/actions/convex/ConvexClaimAction.js +60 -0
  39. package/src/actions/convex/ConvexDepositAction.js +67 -0
  40. package/src/actions/convex/ConvexWithdrawAction.js +65 -0
  41. package/src/actions/convex/index.js +9 -0
  42. package/src/actions/curve/CurveClaimFeesAction.js +4 -4
  43. package/src/actions/curve/CurveDepositAction.js +7 -7
  44. package/src/actions/curve/CurveGaugeDepositAction.js +6 -6
  45. package/src/actions/curve/CurveGaugeWithdrawAction.js +4 -4
  46. package/src/actions/curve/CurveMintCrvAction.js +3 -3
  47. package/src/actions/curve/CurveStethPoolDepositAction.js +9 -9
  48. package/src/actions/curve/CurveStethPoolWithdrawAction.js +11 -9
  49. package/src/actions/curve/CurveSwapAction.js +15 -15
  50. package/src/actions/curve/CurveWithdrawAction.js +7 -7
  51. package/src/actions/dydx/DyDxWithdrawAction.js +1 -7
  52. package/src/actions/flashloan/AaveV2FlashLoanAction.js +2 -2
  53. package/src/actions/flashloan/BalancerFlashLoanAction.js +2 -2
  54. package/src/actions/flashloan/DyDxFlashLoanAction.js +5 -1
  55. package/src/actions/flashloan/MakerFlashLoanAction.js +2 -2
  56. package/src/actions/flashloan/index.js +0 -4
  57. package/src/actions/guni/GUniDeposit.js +9 -9
  58. package/src/actions/guni/GUniWithdraw.js +5 -5
  59. package/src/actions/index.js +2 -2
  60. package/src/actions/insta/InstPullTokensAction.js +4 -4
  61. package/src/actions/lido/LidoStakeAction.js +2 -7
  62. package/src/actions/lido/LidoUnwrapAction.js +2 -7
  63. package/src/actions/lido/LidoWrapAction.js +7 -7
  64. package/src/actions/liquity/LiquityBorrowAction.js +5 -5
  65. package/src/actions/liquity/LiquityClaimAction.js +3 -3
  66. package/src/actions/liquity/LiquityCloseAction.js +4 -4
  67. package/src/actions/liquity/LiquityEthGainToTroveAction.js +3 -3
  68. package/src/actions/liquity/LiquityOpenAction.js +8 -8
  69. package/src/actions/liquity/LiquityPaybackAction.js +5 -5
  70. package/src/actions/liquity/LiquityRedeemAction.js +7 -7
  71. package/src/actions/liquity/LiquitySPDepositAction.js +7 -7
  72. package/src/actions/liquity/LiquitySPWithdrawAction.js +6 -6
  73. package/src/actions/liquity/LiquityStakeAction.js +7 -7
  74. package/src/actions/liquity/LiquitySupplyAction.js +5 -5
  75. package/src/actions/liquity/LiquityUnstakeAction.js +6 -6
  76. package/src/actions/liquity/LiquityWithdrawAction.js +4 -4
  77. package/src/actions/maker/MakerClaimAction.js +4 -4
  78. package/src/actions/maker/MakerGenerateAction.js +1 -8
  79. package/src/actions/maker/MakerGiveAction.js +4 -4
  80. package/src/actions/maker/MakerMergeAction.js +1 -7
  81. package/src/actions/maker/MakerOpenVaultAction.js +1 -6
  82. package/src/actions/maker/MakerPaybackAction.js +2 -9
  83. package/src/actions/maker/MakerRatioAction.js +1 -5
  84. package/src/actions/maker/MakerSupplyAction.js +1 -9
  85. package/src/actions/maker/MakerWithdrawAction.js +1 -9
  86. package/src/actions/mstable/MStableClaimAction.js +4 -4
  87. package/src/actions/mstable/MStableDepositAction.js +16 -16
  88. package/src/actions/mstable/MStableWithdrawAction.js +15 -15
  89. package/src/actions/rari/RariDepositAction.js +5 -5
  90. package/src/actions/rari/RariWithdrawAction.js +6 -6
  91. package/src/actions/reflexer/ReflexerGenerateAction.js +1 -7
  92. package/src/actions/reflexer/ReflexerNativeUniV2SaviourDepositAction.js +5 -5
  93. package/src/actions/reflexer/ReflexerNativeUniV2SaviourGetReservesAction.js +3 -8
  94. package/src/actions/reflexer/ReflexerNativeUniV2SaviourWithdrawAction.js +4 -9
  95. package/src/actions/reflexer/ReflexerOpenSafeAction.js +1 -5
  96. package/src/actions/reflexer/ReflexerPaybackAction.js +1 -7
  97. package/src/actions/reflexer/ReflexerSupplyAction.js +1 -8
  98. package/src/actions/reflexer/ReflexerWithdrawAction.js +1 -8
  99. package/src/actions/uniswap/UniswapSupplyAction.js +20 -22
  100. package/src/actions/uniswap/UniswapWithdrawAction.js +16 -18
  101. package/src/actions/uniswapV3/UniswapV3CollectAction.js +7 -9
  102. package/src/actions/uniswapV3/UniswapV3CreatePoolAction.js +20 -22
  103. package/src/actions/uniswapV3/UniswapV3MintAction.js +19 -21
  104. package/src/actions/uniswapV3/UniswapV3SupplyAction.js +17 -19
  105. package/src/actions/uniswapV3/UniswapV3WithdrawAction.js +12 -14
  106. package/src/actions/yearn/YearnSupplyAction.js +6 -6
  107. package/src/actions/yearn/YearnWithdrawAction.js +6 -6
  108. package/src/addresses.js +152 -187
  109. package/src/triggers/ChainLinkPriceTrigger.js +2 -2
  110. package/src/triggers/CompoundRatioTrigger.js +1 -1
  111. package/src/triggers/GasPriceTrigger.js +1 -1
  112. package/src/triggers/LiquityRatioTrigger.js +2 -2
  113. package/src/triggers/MakerRatioTrigger.js +1 -5
  114. package/src/triggers/ReflexerRatioTrigger.js +1 -1
  115. package/src/triggers/TimestampTrigger.js +1 -1
  116. package/src/triggers/UniV3CurrentTickTrigger.js +1 -1
  117. package/src/types.js +0 -33
  118. package/src/utils/convex-utils.js +20 -0
  119. package/src/utils/convexPoolInfo.json +1039 -0
  120. package/src/utils/index.js +2 -0
  121. package/test/Action.js +2 -1
  122. package/test/Strategy.js +44 -0
  123. package/test/accessLists/access-lists.js +1 -2
  124. package/test/actions/maker/MakerPaybackAction.js +2 -2
  125. package/test/index.js +1 -4
  126. package/src/ActionWithL2.js +0 -36
  127. package/src/actions/aaveV3/AaveV3ATokenPaybackAction.js +0 -58
  128. package/src/actions/aaveV3/AaveV3BorrowAction.js +0 -59
  129. package/src/actions/aaveV3/AaveV3ClaimRewardsAction.js +0 -45
  130. package/src/actions/aaveV3/AaveV3CollateralSwitchAction.js +0 -45
  131. package/src/actions/aaveV3/AaveV3PaybackAction.js +0 -68
  132. package/src/actions/aaveV3/AaveV3SetEModeAction.js +0 -40
  133. package/src/actions/aaveV3/AaveV3SupplyAction.js +0 -69
  134. package/src/actions/aaveV3/AaveV3SwapBorrowRateModeAction.js +0 -43
  135. package/src/actions/aaveV3/AaveV3WithdrawAction.js +0 -46
  136. package/src/actions/aaveV3/index.js +0 -21
  137. package/src/actions/flashloan/AaveV3FlashLoanAction.js +0 -26
  138. package/src/actions/flashloan/AaveV3FlashLoanPaybackAction.js +0 -17
  139. package/src/config.js +0 -83
@@ -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,10 +9,8 @@ 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
-
14
- this.mappableArgs = [this.args[0][0]];
15
- }
12
+ super("ChangeProxyOwner", getAddr("ChangeProxyOwner"), ["address"], [...arguments]);
13
+ }
16
14
  }
17
15
 
18
16
  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[0][1],
20
- this.args[0][2],
21
- this.args[0][3],
19
+ this.args[1],
20
+ this.args[2],
21
+ this.args[3],
22
22
  ];
23
23
  }
24
24
 
25
25
  }
26
26
 
27
- module.exports = GasFeeAction;
27
+ module.exports = GasFeeAction;
@@ -17,19 +17,13 @@ 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
- ];
33
27
  }
34
28
 
35
29
  async getAssetsToApprove() {
@@ -19,23 +19,22 @@ class SellAction extends Action {
19
19
  super(
20
20
  'DFSSell',
21
21
  getAddr('DFSSell'),
22
- [[
22
+ [
23
23
  ["address","address","uint256","uint256","uint256","uint256","address","address","bytes",["address","address","address","uint256","uint256","bytes"]],
24
24
  "address",
25
25
  "address",
26
- ]
27
26
  ],
28
- [[exchangeOrder, from, to]]
27
+ [exchangeOrder, from, to]
29
28
  );
30
29
 
31
30
  this.protocolFee = protocolFee;
32
31
 
33
32
  this.mappableArgs = [
34
- this.args[0][0][0],
35
- this.args[0][0][1],
36
- this.args[0][0][2],
33
+ this.args[0][0],
37
34
  this.args[0][1],
38
35
  this.args[0][2],
36
+ this.args[1],
37
+ this.args[2],
39
38
  ];
40
39
  }
41
40
 
@@ -1,5 +1,6 @@
1
1
  const Action = require("../../Action");
2
2
  const {requireAddress} = require("../../utils/general");
3
+ const {getAssetInfoByAddress} = require("@defisaver/tokens");
3
4
  const { getAddr } = require('../../addresses.js');
4
5
 
5
6
  /**
@@ -16,19 +17,13 @@ class SendTokenAction extends Action {
16
17
  super(
17
18
  'SendToken',
18
19
  getAddr('SendToken'),
19
- [[
20
+ [
20
21
  "address",
21
22
  "address",
22
23
  "uint",
23
- ]],
24
- [[...arguments]]
24
+ ],
25
+ [...arguments]
25
26
  );
26
-
27
- this.mappableArgs = [
28
- this.args[0][0],
29
- this.args[0][1],
30
- this.args[0][2],
31
- ];
32
27
  }
33
28
  }
34
29
 
@@ -0,0 +1,30 @@
1
+ const Action = require("../../Action");
2
+ const {requireAddress} = require("../../utils/general");
3
+ const {getAssetInfoByAddress} = require("@defisaver/tokens");
4
+ const { getAddr } = require('../../addresses.js');
5
+
6
+ /**
7
+ * Transfers specified token from recipe (DsProxy) to specified address unwraps if Weth address
8
+ */
9
+ class SendTokenAndUnwrapAction extends Action {
10
+ /**
11
+ * @param token {string} Token address
12
+ * @param to {string} Transfer recipient
13
+ * @param amount {string} Transfer amount (-1 for whole Recipe (DsProxy) balance)
14
+ */
15
+ constructor(token, to, amount) {
16
+ requireAddress(to);
17
+ super(
18
+ 'SendTokenAndUnwrap',
19
+ getAddr('SendTokenAndUnwrap'),
20
+ [
21
+ "address",
22
+ "address",
23
+ "uint",
24
+ ],
25
+ [...arguments]
26
+ );
27
+ }
28
+ }
29
+
30
+ module.exports = SendTokenAndUnwrapAction;
@@ -9,17 +9,12 @@ class SubInputsAction extends Action {
9
9
  super(
10
10
  'SubInputs',
11
11
  getAddr('SubInputs'),
12
- [[
12
+ [
13
13
  "uint",
14
14
  "uint",
15
- ]],
16
- [[...arguments]]
15
+ ],
16
+ [...arguments]
17
17
  );
18
-
19
- this.mappableArgs = [
20
- this.args[0][0],
21
- this.args[0][1],
22
- ];
23
18
  }
24
19
  }
25
20
 
@@ -9,17 +9,12 @@ class SumInputsAction extends Action {
9
9
  super(
10
10
  'SumInputs',
11
11
  getAddr('SumInputs'),
12
- [[
12
+ [
13
13
  "uint",
14
14
  "uint",
15
- ]],
16
- [[...arguments]]
15
+ ],
16
+ [...arguments]
17
17
  );
18
-
19
- this.mappableArgs = [
20
- this.args[0][0],
21
- this.args[0][1],
22
- ];
23
18
  }
24
19
  }
25
20
 
@@ -0,0 +1,19 @@
1
+ const Action = require("../../Action");
2
+ const {getAddr} = require("../../addresses.js");
3
+
4
+ /**
5
+ * Sets the state of the sub to active or deactivated
6
+ */
7
+ class ToggleSubAction extends Action {
8
+ /**
9
+ * @param subId Id of the subscription in the SubStorage contract
10
+ * @param active Set to true to activate action, to false to deactivate
11
+ */
12
+ constructor(subId, active) {
13
+ super("ToggleSub", getAddr("ToggleSub"), ["uint256", "bool"], [...arguments]);
14
+
15
+ }
16
+
17
+ }
18
+
19
+ module.exports = ToggleSubAction;
@@ -6,11 +6,11 @@ class TokenBalanceAction extends Action {
6
6
  super(
7
7
  'TokenBalance',
8
8
  getAddr('TokenBalance'),
9
- [[
9
+ [
10
10
  "address",
11
11
  "address",
12
- ]],
13
- [[...arguments]]
12
+ ],
13
+ [...arguments]
14
14
  );
15
15
  }
16
16
  }
@@ -1,11 +1,11 @@
1
- const ActionWithL2 = require("../../ActionWithL2");
1
+ const Action = require("../../Action");
2
2
  const {requireAddress} = require("../../utils/general");
3
3
  const {getAddr} = require('../../addresses.js');
4
4
 
5
5
  /**
6
6
  * Unwraps a specified amount of WETH from the proxy
7
7
  */
8
- class UnwrapEthAction extends ActionWithL2 {
8
+ class UnwrapEthAction extends Action {
9
9
  /**
10
10
  * @param amount {string} Token address
11
11
  * @param to {string} Transfer recipient
@@ -15,25 +15,12 @@ class UnwrapEthAction extends ActionWithL2 {
15
15
  super(
16
16
  'UnwrapEth',
17
17
  getAddr('UnwrapEth'),
18
- [[
18
+ [
19
19
  "uint256",
20
20
  "address"
21
- ]],
22
- [[...arguments]]
21
+ ],
22
+ [...arguments]
23
23
  );
24
-
25
- this.mappableArgs = [
26
- this.args[0][0],
27
- this.args[0][1],
28
- ];
29
- }
30
- encodeInputs(){
31
- // executeActionDirectL2
32
- let encodedInput = "0x2895f3aa";
33
- // amount
34
- encodedInput = encodedInput.concat(this.numberToBytes32(this.args[0][0]));
35
- // to
36
- encodedInput = encodedInput.concat(this.addressToBytes20(this.args[0][1]));
37
24
  }
38
25
  }
39
26
 
@@ -0,0 +1,19 @@
1
+ const Action = require("../../Action");
2
+ const {getAddr} = require("../../addresses.js");
3
+
4
+ /**
5
+ * Action for updating sub data
6
+ */
7
+ class UpdateSubAction extends Action {
8
+ /**
9
+ * @param subId id of the subscription in the SubStorage contract
10
+ * @param sub object that contains new sub information
11
+ */
12
+ constructor(subId, sub) {
13
+ super("UpdateSub", getAddr("UpdateSub"), ["uint256", "(uint64,bool,bytes[],bytes32[])"], [...arguments]);
14
+
15
+ }
16
+
17
+ }
18
+
19
+ module.exports = UpdateSubAction;
@@ -1,29 +1,19 @@
1
- const ActionWithL2 = require("../../ActionWithL2");
2
- const { getAddr } = require("../../addresses.js");
1
+ const Action = require("../../Action");
2
+ const {getAddr} = require("../../addresses.js");
3
3
 
4
4
  /**
5
5
  * Wraps a specified amount of ETH from the wallet to WETH on the recipe
6
6
  */
7
- class WrapEthAction extends ActionWithL2 {
7
+ class WrapEthAction extends Action {
8
8
  /**
9
9
  * @param amount {string} Transfer amount
10
10
  */
11
11
  constructor(amount) {
12
- super("WrapEth", getAddr("WrapEth"), [["uint256"]], [[...arguments]]);
13
-
14
- this.mappableArgs = [
15
- this.args[0][0],
16
- ];
12
+ super("WrapEth", getAddr("WrapEth"), ["uint256"], [...arguments]);
17
13
  }
18
14
 
19
15
  async getEthValue() {
20
- return this.args[0][0];
21
- }
22
- encodeInputs(){
23
- // executeActionDirectL2
24
- let encodedInput = "0x2895f3aa";
25
- // amount
26
- encodedInput = encodedInput.concat(this.numberToBytes32(this.args[0][0]));
16
+ return this.args[0];
27
17
  }
28
18
  }
29
19
 
@@ -1,5 +1,6 @@
1
1
  const SellAction = require('./SellAction');
2
2
  const SendTokenAction = require('./SendTokenAction');
3
+ const SendTokenAndUnwrapAction = require('./SendTokenAndUnwrapAction');
3
4
  const PullTokenAction = require('./PullTokenAction');
4
5
  const WrapEthAction = require('./WrapEthAction');
5
6
  const UnwrapEthAction = require('./UnwrapEthAction');
@@ -9,6 +10,8 @@ const ChangeProxyOwnerAction = require('./ChangeProxyOwnerAction');
9
10
  const TokenBalanceAction = require('./TokenBalanceAction');
10
11
  const AutomationV2Unsub = require('./AutomationV2Unsub');
11
12
  const GasFeeAction = require('./GasFeeAction');
13
+ const UpdateSubAction = require('./UpdateSubAction');
14
+ const ToggleSubAction = require('./ToggleSubAction');
12
15
 
13
16
  module.exports = {
14
17
  SellAction,
@@ -22,4 +25,7 @@ module.exports = {
22
25
  TokenBalanceAction,
23
26
  AutomationV2Unsub,
24
27
  GasFeeAction,
28
+ UpdateSubAction,
29
+ SendTokenAndUnwrapAction,
30
+ ToggleSubAction,
25
31
  };
@@ -13,13 +13,13 @@ class MakerRatioCheckAction extends Action {
13
13
  * @param startRatioIndex {uint256} Index in returnValues where ratio before actions is stored
14
14
  */
15
15
  constructor(ratioState, checkTarget, targetRatio, vaultId, startRatioIndex) {
16
- super("McdRatioCheck", getAddr("McdRatioCheck"), [["uint8","bool","uint256","uint256","uint256"]], [[ratioState, checkTarget, targetRatio, vaultId, startRatioIndex]]);
16
+ super("McdRatioCheck", getAddr("McdRatioCheck"), ["uint8","bool","uint256","uint256","uint256"], [ratioState, checkTarget, targetRatio, vaultId, startRatioIndex]);
17
17
 
18
18
  this.mappableArgs = [
19
- this.args[0][0],
20
- this.args[0][2],
21
- this.args[0][3],
22
- this.args[0][4],
19
+ this.args[0],
20
+ this.args[2],
21
+ this.args[3],
22
+ this.args[4],
23
23
  ];
24
24
  }
25
25
 
@@ -13,13 +13,7 @@ class CompoundBorrowAction extends Action {
13
13
  */
14
14
  constructor(cTokenAddr, amount, to) {
15
15
  requireAddress(to);
16
- super('CompBorrow', getAddr('CompBorrow'), [['address','uint256','address']], [[...arguments]]);
17
-
18
- this.mappableArgs = [
19
- this.args[0][0],
20
- this.args[0][1],
21
- this.args[0][2],
22
- ];
16
+ super('CompBorrow', getAddr('CompBorrow'), ['address','uint256','address'], [...arguments]);
23
17
  }
24
18
  }
25
19
 
@@ -14,11 +14,11 @@ class CompoundClaimAction extends Action {
14
14
  */
15
15
  constructor(cSupplyAddresses, cBorrowAddresses, from, to) {
16
16
  requireAddress(to);
17
- super('CompClaim', getAddr('CompClaim'), [["address[]", "address[]", "address", "address"]], [[...arguments]]);
17
+ super('CompClaim', getAddr('CompClaim'), ["address[]", "address[]", "address", "address"], [...arguments]);
18
18
 
19
19
  this.mappableArgs = [
20
- this.args[0][2],
21
- this.args[0][3],
20
+ this.args[2],
21
+ this.args[3],
22
22
  ];
23
23
  }
24
24
  }
@@ -10,11 +10,9 @@ class CompoundCollateralSwitchAction extends Action {
10
10
  super(
11
11
  'CompCollateralSwitch',
12
12
  getAddr('CompCollateralSwitch'),
13
- [['address[]', 'bool[]']],
14
- [[...arguments]],
13
+ ['address[]', 'bool[]'],
14
+ [...arguments],
15
15
  );
16
- this.mappableArgs = [
17
- ];
18
16
  }
19
17
  }
20
18
 
@@ -6,11 +6,11 @@ class CompoundGetDebtAction extends Action {
6
6
  super(
7
7
  'CompGetDebt',
8
8
  getAddr('CompGetDebt'),
9
- [[
9
+ [
10
10
  "address",
11
11
  "address",
12
- ]],
13
- [[...arguments]]
12
+ ],
13
+ [...arguments]
14
14
  );
15
15
  }
16
16
  }
@@ -13,13 +13,7 @@ class CompoundPaybackAction extends Action {
13
13
  * @param onBehalf {EthAddress} Defaults to DsProxy address if 0x0
14
14
  */
15
15
  constructor(cTokenAddr, amount, from, onBehalf = getAddr('Empty')) {
16
- super('CompPayback', getAddr('CompPayback'), [['address', 'uint256', 'address', 'address']], [[cTokenAddr, amount, from, onBehalf]]);
17
- this.mappableArgs = [
18
- this.args[0][0],
19
- this.args[0][1],
20
- this.args[0][2],
21
- this.args[0][3],
22
- ];
16
+ super('CompPaybackNew', getAddr('CompPaybackNew'), ['address', 'uint256', 'address', 'address'], [cTokenAddr, amount, from, onBehalf]);
23
17
  }
24
18
 
25
19
  async getAssetsToApprove() {
@@ -13,12 +13,12 @@ class CompoundSupplyAction extends Action {
13
13
  * @param enableAsColl {boolean} If we need to enable asset as collateral
14
14
  */
15
15
  constructor(cTokenAddr, amount, from, enableAsColl = true) {
16
- super('CompSupply', getAddr('CompSupply'), [['address','uint256','address','bool']], [[cTokenAddr, amount, from, enableAsColl]]);
16
+ super('CompSupply', getAddr('CompSupply'), ['address','uint256','address','bool'], [cTokenAddr, amount, from, enableAsColl]);
17
17
 
18
18
  this.mappableArgs = [
19
- this.args[0][0],
20
- this.args[0][1],
21
- this.args[0][2],
19
+ this.args[0],
20
+ this.args[1],
21
+ this.args[2],
22
22
  ];
23
23
  }
24
24
 
@@ -13,13 +13,7 @@ class CompoundWithdrawAction extends Action {
13
13
  */
14
14
  constructor(cTokenAddr, amount, to) {
15
15
  requireAddress(to);
16
- super('CompWithdraw', getAddr('CompWithdraw'), [['address','uint256','address']], [[...arguments]]);
17
-
18
- this.mappableArgs = [
19
- this.args[0][0],
20
- this.args[0][1],
21
- this.args[0][2],
22
- ];
16
+ super('CompWithdraw', getAddr('CompWithdraw'), ['address','uint256','address'], [...arguments]);
23
17
  }
24
18
  }
25
19
 
@@ -0,0 +1,60 @@
1
+ const Action = require('../../Action');
2
+ const { getAddr } = require('../../addresses');
3
+ const { getConvexPool } = require('../../utils/convex-utils');
4
+ const { requireAddress } = require('../../utils/general');
5
+
6
+ /**
7
+ * ConvexClaimAction - Claims convex rewards
8
+ */
9
+ class ConvexClaimAction extends Action {
10
+ /**
11
+ * @param {address} from
12
+ * @param {address} to
13
+ * @param {address} curveLp
14
+ */
15
+ constructor(
16
+ from,
17
+ to,
18
+ curveLp,
19
+ ) {
20
+ requireAddress(to);
21
+ const { crvRewards } = getConvexPool(curveLp);
22
+ super(
23
+ 'ConvexClaim',
24
+ getAddr('ConvexClaim'),
25
+ [
26
+ 'address',
27
+ 'address',
28
+ 'address',
29
+ ],
30
+ [
31
+ from,
32
+ to,
33
+ crvRewards,
34
+ ],
35
+ ).curveLp = curveLp;
36
+
37
+ this.mappableArgs = [
38
+ this.args[0],
39
+ this.args[1],
40
+ this.args[2],
41
+ ];
42
+ }
43
+
44
+ async getAssetsToApprove() {
45
+ const pool = getConvexPool(this.curveLp);
46
+ const owner = this.args[0];
47
+
48
+ return [
49
+ getAddr('CrvToken'),
50
+ getAddr('CvxToken'),
51
+ ].concat(
52
+ pool.extraRewards.map((e) => e.token),
53
+ ).reduce((acc, e) => {
54
+ if (!acc.includes(e.toLowerCase())) acc.push(e.toLowerCase());
55
+ return acc;
56
+ }, []).map((e) => Object({asset: e, owner}));
57
+ }
58
+ }
59
+
60
+ module.exports = ConvexClaimAction;
@@ -0,0 +1,67 @@
1
+ const Action = require('../../Action');
2
+ const { getAddr } = require('../../addresses');
3
+ const { DepositOption, getConvexPool } = require('../../utils/convex-utils');
4
+ const { requireAddress } = require('../../utils/general');
5
+ /**
6
+ * ConvexDepositAction - Deposits (wraps) Curve LP into convex, stakes wrapped LP, or does both
7
+ */
8
+ class ConvexDepositAction extends Action {
9
+ /**
10
+ * @param {address} from
11
+ * @param {address} to
12
+ * @param {address} curveLp
13
+ * @param {uint256} amount
14
+ * @param {uint8} option
15
+ */
16
+ constructor(
17
+ from,
18
+ to,
19
+ curveLp,
20
+ amount,
21
+ option,
22
+ ) {
23
+ requireAddress(to);
24
+ const { pid } = getConvexPool(curveLp);
25
+ super(
26
+ 'ConvexDeposit',
27
+ getAddr('ConvexDeposit'),
28
+ [
29
+ 'address',
30
+ 'address',
31
+ 'uint256',
32
+ 'uint256',
33
+ 'uint8',
34
+ ],
35
+ [
36
+ from,
37
+ to,
38
+ pid,
39
+ amount,
40
+ option,
41
+ ],
42
+ ).curveLp = curveLp;
43
+
44
+ this.mappableArgs = [
45
+ this.args[0],
46
+ this.args[1],
47
+ this.args[2],
48
+ this.args[3],
49
+ this.args[4],
50
+ ];
51
+ }
52
+
53
+ async getAssetsToApprove() {
54
+ const pool = getConvexPool(this.curveLp);
55
+ const assetToPull = {
56
+ [DepositOption.WRAP]: pool.lpToken,
57
+ [DepositOption.STAKE]: pool.token,
58
+ [DepositOption.WRAP_AND_STAKE]: pool.lpToken,
59
+ }
60
+
61
+ return [{
62
+ asset: assetToPull[this.args[4]], owner: this.args[0],
63
+ }];
64
+ }
65
+ }
66
+
67
+ module.exports = ConvexDepositAction;