@defisaver/sdk 0.1.8 → 0.1.12
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 +236 -19
- package/AccessLists/AaveAccessLists.js +28 -0
- package/AccessLists/BalancerAccessLists.js +20 -0
- package/AccessLists/CompoundAccessLists.js +33 -0
- package/AccessLists/DyDxAccessLists.js +14 -0
- package/AccessLists/FlashLoanAccessLists.js +27 -0
- package/AccessLists/GuniAccessLists.js +15 -0
- package/AccessLists/InstaAccessLists.js +17 -0
- package/AccessLists/LidoAccessLists.js +21 -0
- package/AccessLists/LiquityAccessLists.js +81 -0
- package/AccessLists/MStableAccessLists.js +18 -0
- package/AccessLists/MakerAccessLists.js +44 -0
- package/AccessLists/RariAccessLists.js +12 -0
- package/AccessLists/ReflexerAccessLists.js +53 -0
- package/AccessLists/UniswapAccessLists.js +41 -0
- package/AccessLists/UtilsAccessLists.js +41 -0
- package/AccessLists/YearnAccessLists.js +14 -0
- package/AccessLists/index.js +41 -0
- package/DEV.md +36 -0
- package/package.json +1 -1
- package/src/Action.js +18 -2
- package/src/Recipe.js +22 -0
- package/src/actions/aave/index.js +0 -2
- package/src/actions/basic/AutomationV2Unsub.js +2 -2
- package/src/actions/flashloan/BalancerFlashLoanAction.js +2 -2
- package/src/actions/flashloan/BalancerFlashLoanPaybackAction.js +2 -2
- package/src/actions/flashloan/MakerFlashLoanPaybackAction.js +2 -2
- package/src/actions/guni/GUniDeposit.js +43 -0
- package/src/actions/guni/GUniWithdraw.js +32 -0
- package/src/actions/guni/index.js +6 -0
- package/src/actions/index.js +6 -0
- package/src/actions/mstable/MStableClaimAction.js +38 -0
- package/src/actions/mstable/MStableDepositAction.js +63 -0
- package/src/actions/mstable/MStableWithdrawAction.js +66 -0
- package/src/actions/mstable/index.js +9 -0
- package/src/actions/rari/RariDepositAction.js +31 -0
- package/src/actions/rari/RariWithdrawAction.js +33 -0
- package/src/actions/rari/index.js +6 -0
- package/src/addresses.js +16 -2
- package/src/types.js +11 -0
- package/test/accessLists/MockAccessLists.json +1482 -0
- package/test/accessLists/Recipe.js +126 -0
- package/test/accessLists/access-lists.js +108 -0
- package/src/actions/aave/AaveMigrateLendAction.js +0 -18
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
const ReflexerAccessLists = {
|
|
2
|
+
ReflexerOpen: [
|
|
3
|
+
['0xEfe0B4cA532769a3AE758fD82E1426a03A94F185', []], // GebSafeManager
|
|
4
|
+
['0x5c55B921f590a89C1Ebe84dF170E655a82b62126', []], // DefisaverLogger
|
|
5
|
+
],
|
|
6
|
+
|
|
7
|
+
ReflexerSupply: [
|
|
8
|
+
['0xCC88a9d330da1133Df3A7bD823B95e52511A6962', []], // SAFEEngine
|
|
9
|
+
['0xEfe0B4cA532769a3AE758fD82E1426a03A94F185', []], // GebSafeManager
|
|
10
|
+
['0x5c55B921f590a89C1Ebe84dF170E655a82b62126', []], // DefisaverLogger
|
|
11
|
+
],
|
|
12
|
+
|
|
13
|
+
ReflexerWithdraw: [
|
|
14
|
+
['0xEfe0B4cA532769a3AE758fD82E1426a03A94F185', []], // GebSafeManager
|
|
15
|
+
['0x5c55B921f590a89C1Ebe84dF170E655a82b62126', []], // DefisaverLogger
|
|
16
|
+
],
|
|
17
|
+
|
|
18
|
+
ReflexerGenerate: [
|
|
19
|
+
['0xCC88a9d330da1133Df3A7bD823B95e52511A6962', []], // SAFEEngine
|
|
20
|
+
['0xEfe0B4cA532769a3AE758fD82E1426a03A94F185', []], // GebSafeManager
|
|
21
|
+
['0x0A5653CCa4DB1B6E265F47CAf6969e64f1CFdC45', []], // CoinJoin
|
|
22
|
+
['0x5c55B921f590a89C1Ebe84dF170E655a82b62126', []], // DefisaverLogger
|
|
23
|
+
],
|
|
24
|
+
|
|
25
|
+
ReflexerPayback: [
|
|
26
|
+
['0xCC88a9d330da1133Df3A7bD823B95e52511A6962', []], // SAFEEngine
|
|
27
|
+
['0xEfe0B4cA532769a3AE758fD82E1426a03A94F185', []], // GebSafeManager
|
|
28
|
+
['0x0A5653CCa4DB1B6E265F47CAf6969e64f1CFdC45', []], // CoinJoin
|
|
29
|
+
['0x03ab458634910AaD20eF5f1C8ee96F1D6ac54919', []], // Rai
|
|
30
|
+
['0x5c55B921f590a89C1Ebe84dF170E655a82b62126', []], // DefisaverLogger
|
|
31
|
+
],
|
|
32
|
+
|
|
33
|
+
ReflexerNativeUniV2SaviourDeposit: [
|
|
34
|
+
['0xEfe0B4cA532769a3AE758fD82E1426a03A94F185', []], // GebSafeManager
|
|
35
|
+
['0xA9402De5ce3F1E03Be28871b914F77A4dd5e4364', []], // NativeUnderlyingUniswapV2SafeSaviour
|
|
36
|
+
['0x8aE720a71622e824F576b4A8C03031066548A3B1', []], // UNIV2_RAI_WETH_ADDRESS
|
|
37
|
+
['0x5c55B921f590a89C1Ebe84dF170E655a82b62126', []], // DefisaverLogger
|
|
38
|
+
],
|
|
39
|
+
|
|
40
|
+
ReflexerNativeUniV2SaviourWithdraw: [
|
|
41
|
+
['0xA9402De5ce3F1E03Be28871b914F77A4dd5e4364', []], // NativeUnderlyingUniswapV2SafeSaviour
|
|
42
|
+
['0x5c55B921f590a89C1Ebe84dF170E655a82b62126', []], // DefisaverLogger
|
|
43
|
+
],
|
|
44
|
+
|
|
45
|
+
ReflexerNativeUniV2SaviourGetReserves: [
|
|
46
|
+
['0xA9402De5ce3F1E03Be28871b914F77A4dd5e4364', []], // NativeUnderlyingUniswapV2SafeSaviour
|
|
47
|
+
['0x5c55B921f590a89C1Ebe84dF170E655a82b62126', []], // DefisaverLogger
|
|
48
|
+
],
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
module.exports = {
|
|
52
|
+
ReflexerAccessLists,
|
|
53
|
+
};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
const UniswapAccessLists = {
|
|
2
|
+
UniSupply: [
|
|
3
|
+
['0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D', []], // UniV2Router02
|
|
4
|
+
['0x5c55B921f590a89C1Ebe84dF170E655a82b62126', []], // DefisaverLogger
|
|
5
|
+
],
|
|
6
|
+
|
|
7
|
+
UniWithdraw: [
|
|
8
|
+
['0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f', []], // UniV2Factory
|
|
9
|
+
['0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D', []], // UniV2Router02
|
|
10
|
+
['0x5c55B921f590a89C1Ebe84dF170E655a82b62126', []], // DefisaverLogger
|
|
11
|
+
],
|
|
12
|
+
|
|
13
|
+
UniMintV3: [
|
|
14
|
+
['0xC36442b4a4522E871399CD717aBDD847Ab11FE88', []], // NonfungiblePositionManager
|
|
15
|
+
['0x5c55B921f590a89C1Ebe84dF170E655a82b62126', []], // DefisaverLogger
|
|
16
|
+
],
|
|
17
|
+
|
|
18
|
+
UniSupplyV3: [
|
|
19
|
+
['0xC36442b4a4522E871399CD717aBDD847Ab11FE88', []], // NonfungiblePositionManager
|
|
20
|
+
['0x5c55B921f590a89C1Ebe84dF170E655a82b62126', []], // DefisaverLogger
|
|
21
|
+
],
|
|
22
|
+
|
|
23
|
+
UniWithdrawV3: [
|
|
24
|
+
['0xC36442b4a4522E871399CD717aBDD847Ab11FE88', []], // NonfungiblePositionManager
|
|
25
|
+
['0x5c55B921f590a89C1Ebe84dF170E655a82b62126', []], // DefisaverLogger
|
|
26
|
+
],
|
|
27
|
+
|
|
28
|
+
UniCollectV3: [
|
|
29
|
+
['0xC36442b4a4522E871399CD717aBDD847Ab11FE88', []], // NonfungiblePositionManager
|
|
30
|
+
['0x5c55B921f590a89C1Ebe84dF170E655a82b62126', []], // DefisaverLogger
|
|
31
|
+
],
|
|
32
|
+
|
|
33
|
+
UniCreatePoolV3: [
|
|
34
|
+
['0xC36442b4a4522E871399CD717aBDD847Ab11FE88', []], // NonfungiblePositionManager
|
|
35
|
+
['0x5c55B921f590a89C1Ebe84dF170E655a82b62126', []], // DefisaverLogger
|
|
36
|
+
],
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
module.exports = {
|
|
40
|
+
UniswapAccessLists,
|
|
41
|
+
};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
const UtilsAccessLists = {
|
|
2
|
+
WrapEth: [
|
|
3
|
+
['0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', []], // WETH
|
|
4
|
+
],
|
|
5
|
+
|
|
6
|
+
UnwrapEth: [
|
|
7
|
+
['0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', []], // WETH
|
|
8
|
+
],
|
|
9
|
+
|
|
10
|
+
DFSSell: [
|
|
11
|
+
['0x25dd3F51e0C3c3Ff164DDC02A8E4D65Bb9cBB12D', []], // SaverExchangeRegistry
|
|
12
|
+
['0x5c55B921f590a89C1Ebe84dF170E655a82b62126', []], // DefisaverLogger
|
|
13
|
+
],
|
|
14
|
+
|
|
15
|
+
DFSBuy: [
|
|
16
|
+
['0x25dd3F51e0C3c3Ff164DDC02A8E4D65Bb9cBB12D', []], // SaverExchangeRegistry
|
|
17
|
+
['0x5c55B921f590a89C1Ebe84dF170E655a82b62126', []], // DefisaverLogger
|
|
18
|
+
],
|
|
19
|
+
|
|
20
|
+
SendToken: [],
|
|
21
|
+
|
|
22
|
+
PullToken: [],
|
|
23
|
+
|
|
24
|
+
SumInputs: [],
|
|
25
|
+
|
|
26
|
+
SubInputs: [],
|
|
27
|
+
|
|
28
|
+
ChangeProxyOwner: [
|
|
29
|
+
['0xF8f8B3C98Cf2E63Df3041b73f80F362a4cf3A576', []], // DFSProxyRegistryController
|
|
30
|
+
],
|
|
31
|
+
|
|
32
|
+
TokenBalance: [],
|
|
33
|
+
|
|
34
|
+
AutomationV2Unsub: [
|
|
35
|
+
['0x5c55B921f590a89C1Ebe84dF170E655a82b62126', []], // DefisaverLogger
|
|
36
|
+
],
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
module.exports = {
|
|
40
|
+
UtilsAccessLists,
|
|
41
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
const YearnAccessLists = {
|
|
2
|
+
YearnSupply: [
|
|
3
|
+
['0x50c1a2eA0a861A967D9d0FFE2AE4012c2E053804', []], // YearnV2Registry
|
|
4
|
+
['0x5c55B921f590a89C1Ebe84dF170E655a82b62126', []], // DefisaverLogger
|
|
5
|
+
],
|
|
6
|
+
|
|
7
|
+
YearnWithdraw: [
|
|
8
|
+
['0x5c55B921f590a89C1Ebe84dF170E655a82b62126', []], // DefisaverLogger
|
|
9
|
+
],
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
module.exports = {
|
|
13
|
+
YearnAccessLists,
|
|
14
|
+
};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
const { MakerAccessLists } = require('./MakerAccessLists');
|
|
2
|
+
const { AaveAccessLists } = require('./AaveAccessLists');
|
|
3
|
+
const { BalancerAccessLists } = require('./BalancerAccessLists');
|
|
4
|
+
const { CompoundAccessLists } = require('./CompoundAccessLists');
|
|
5
|
+
const { ReflexerAccessLists } = require('./ReflexerAccessLists');
|
|
6
|
+
const { YearnAccessLists } = require('./YearnAccessLists');
|
|
7
|
+
const { RariAccessLists } = require('./RariAccessLists');
|
|
8
|
+
const { MStableAccessLists } = require('./MStableAccessLists');
|
|
9
|
+
const { DyDxAccessLists } = require('./DyDxAccessLists');
|
|
10
|
+
const { LidoAccessLists } = require('./LidoAccessLists');
|
|
11
|
+
const { GuniAccessLists } = require('./GuniAccessLists');
|
|
12
|
+
const { UniswapAccessLists } = require('./UniswapAccessLists');
|
|
13
|
+
const { InstaAccessLists } = require('./InstaAccessLists');
|
|
14
|
+
const { LiquityAccessLists } = require('./LiquityAccessLists');
|
|
15
|
+
|
|
16
|
+
const { FlashLoanAccessLists } = require('./FlashLoanAccessLists');
|
|
17
|
+
const { UtilsAccessLists } = require('./UtilsAccessLists');
|
|
18
|
+
|
|
19
|
+
const AccessLists = {
|
|
20
|
+
...MakerAccessLists,
|
|
21
|
+
...AaveAccessLists,
|
|
22
|
+
...BalancerAccessLists,
|
|
23
|
+
...CompoundAccessLists,
|
|
24
|
+
...ReflexerAccessLists,
|
|
25
|
+
...YearnAccessLists,
|
|
26
|
+
...RariAccessLists,
|
|
27
|
+
...MStableAccessLists,
|
|
28
|
+
...DyDxAccessLists,
|
|
29
|
+
...LidoAccessLists,
|
|
30
|
+
...GuniAccessLists,
|
|
31
|
+
...UniswapAccessLists,
|
|
32
|
+
...InstaAccessLists,
|
|
33
|
+
...LiquityAccessLists,
|
|
34
|
+
|
|
35
|
+
...FlashLoanAccessLists,
|
|
36
|
+
...UtilsAccessLists,
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
module.exports = {
|
|
40
|
+
AccessLists,
|
|
41
|
+
};
|
package/DEV.md
CHANGED
|
@@ -29,6 +29,11 @@
|
|
|
29
29
|
<dt><a href="#VaultId">VaultId</a> : <code>string</code> | <code>number</code></dt>
|
|
30
30
|
<dd><p>Maker vault ID</p>
|
|
31
31
|
</dd>
|
|
32
|
+
<dt><a href="#AccessListItem">AccessListItem</a> : <code>Object</code></dt>
|
|
33
|
+
<dd><p>Access list item</p>
|
|
34
|
+
</dd>
|
|
35
|
+
<dt><a href="#AccessList">AccessList</a> : <code><a href="#AccessListItem">Array.<AccessListItem></a></code></dt>
|
|
36
|
+
<dd></dd>
|
|
32
37
|
</dl>
|
|
33
38
|
|
|
34
39
|
<a name="utils.module_uniswapLP"></a>
|
|
@@ -159,6 +164,7 @@ Single action that can be executed directly, or combined into a set (ie. supply
|
|
|
159
164
|
* [.encodeForRecipe()](#Action+encodeForRecipe) ⇒ <code>Array.<string></code>
|
|
160
165
|
* [.getAssetsToApprove()](#Action+getAssetsToApprove) ⇒ <code>Promise.<Array.<{owner: string, asset: string}>></code>
|
|
161
166
|
* [.getEthValue()](#Action+getEthValue) ⇒ <code>Promise.<string></code>
|
|
167
|
+
* [.getAccessList()](#Action+getAccessList) ⇒ [<code>AccessList</code>](#AccessList)
|
|
162
168
|
|
|
163
169
|
<a name="new_Action_new"></a>
|
|
164
170
|
|
|
@@ -197,6 +203,12 @@ ETH value to be sent with transaction
|
|
|
197
203
|
|
|
198
204
|
**Kind**: instance method of [<code>Action</code>](#Action)
|
|
199
205
|
**Returns**: <code>Promise.<string></code> - ETH value in wei
|
|
206
|
+
<a name="Action+getAccessList"></a>
|
|
207
|
+
|
|
208
|
+
### action.getAccessList() ⇒ [<code>AccessList</code>](#AccessList)
|
|
209
|
+
Access list for single action
|
|
210
|
+
|
|
211
|
+
**Kind**: instance method of [<code>Action</code>](#Action)
|
|
200
212
|
<a name="Recipe"></a>
|
|
201
213
|
|
|
202
214
|
## Recipe
|
|
@@ -211,6 +223,7 @@ Set of Actions to be performed sequentially in a single transaction
|
|
|
211
223
|
* [._validateParamMappings()](#Recipe+_validateParamMappings)
|
|
212
224
|
* [.getAssetsToApprove()](#Recipe+getAssetsToApprove) ⇒ <code>Promise.<Array.<{owner: string, asset: string}>></code>
|
|
213
225
|
* [.getEthValue()](#Recipe+getEthValue) ⇒ <code>Promise.<string></code>
|
|
226
|
+
* [.getAccessList()](#Recipe+getAccessList) ⇒ [<code>AccessList</code>](#AccessList)
|
|
214
227
|
|
|
215
228
|
<a name="new_Recipe_new"></a>
|
|
216
229
|
|
|
@@ -255,6 +268,12 @@ ETH value to be sent with transaction
|
|
|
255
268
|
|
|
256
269
|
**Kind**: instance method of [<code>Recipe</code>](#Recipe)
|
|
257
270
|
**Returns**: <code>Promise.<string></code> - ETH value in wei
|
|
271
|
+
<a name="Recipe+getAccessList"></a>
|
|
272
|
+
|
|
273
|
+
### recipe.getAccessList() ⇒ [<code>AccessList</code>](#AccessList)
|
|
274
|
+
Generates an access list for the recipe
|
|
275
|
+
|
|
276
|
+
**Kind**: instance method of [<code>Recipe</code>](#Recipe)
|
|
258
277
|
<a name="EthAddress"></a>
|
|
259
278
|
|
|
260
279
|
## EthAddress : <code>string</code>
|
|
@@ -267,3 +286,20 @@ Ethereum address
|
|
|
267
286
|
Maker vault ID
|
|
268
287
|
|
|
269
288
|
**Kind**: global typedef
|
|
289
|
+
<a name="AccessListItem"></a>
|
|
290
|
+
|
|
291
|
+
## AccessListItem : <code>Object</code>
|
|
292
|
+
Access list item
|
|
293
|
+
|
|
294
|
+
**Kind**: global typedef
|
|
295
|
+
**Properties**
|
|
296
|
+
|
|
297
|
+
| Name | Type |
|
|
298
|
+
| --- | --- |
|
|
299
|
+
| address | <code>string</code> |
|
|
300
|
+
| storageKeys | <code>Array.<string></code> |
|
|
301
|
+
|
|
302
|
+
<a name="AccessList"></a>
|
|
303
|
+
|
|
304
|
+
## AccessList : [<code>Array.<AccessListItem></code>](#AccessListItem)
|
|
305
|
+
**Kind**: global typedef
|
package/package.json
CHANGED
package/src/Action.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
const AbiCoder = require('web3-eth-abi');
|
|
2
|
-
const
|
|
2
|
+
const { keccak256, padLeft, toHex } = require('web3-utils');
|
|
3
3
|
|
|
4
4
|
const ActionAbi = require('./abis/Action.json');
|
|
5
5
|
|
|
6
|
+
const { AccessLists } = require('../AccessLists');
|
|
7
|
+
|
|
6
8
|
/**
|
|
7
9
|
* Single action that can be executed directly, or combined into a set (ie. supply a vault)
|
|
8
10
|
*/
|
|
@@ -30,7 +32,7 @@ class Action {
|
|
|
30
32
|
* @private
|
|
31
33
|
*/
|
|
32
34
|
_getId() {
|
|
33
|
-
return
|
|
35
|
+
return keccak256(this.name);
|
|
34
36
|
}
|
|
35
37
|
|
|
36
38
|
/**
|
|
@@ -132,6 +134,20 @@ class Action {
|
|
|
132
134
|
async getEthValue() {
|
|
133
135
|
return '0';
|
|
134
136
|
}
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* Access list for single action
|
|
140
|
+
* @returns {AccessList}
|
|
141
|
+
*/
|
|
142
|
+
getAccessList() {
|
|
143
|
+
return [
|
|
144
|
+
[this.contractAddress, []],
|
|
145
|
+
...(AccessLists[this.name] || []),
|
|
146
|
+
].map(([address, storageKeys]) => ({
|
|
147
|
+
address: address,
|
|
148
|
+
storageKeys: storageKeys.map(num => padLeft(toHex(num), 64)),
|
|
149
|
+
}));
|
|
150
|
+
}
|
|
135
151
|
}
|
|
136
152
|
|
|
137
153
|
module.exports = Action;
|
package/src/Recipe.js
CHANGED
|
@@ -4,6 +4,7 @@ const {getAssetInfo, utils: {compare}} = require("@defisaver/tokens");
|
|
|
4
4
|
const Action = require('./Action');
|
|
5
5
|
const {getAddr} = require('./addresses');
|
|
6
6
|
const RecipeAbi = require('./abis/Recipe.json');
|
|
7
|
+
const { AccessLists } = require('../AccessLists');
|
|
7
8
|
|
|
8
9
|
/**
|
|
9
10
|
* Set of Actions to be performed sequentially in a single transaction
|
|
@@ -99,6 +100,27 @@ class Recipe {
|
|
|
99
100
|
.reduce((acc, val) => acc.add(new BN(val)), new BN(0))
|
|
100
101
|
.toString();
|
|
101
102
|
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Generates an access list for the recipe
|
|
106
|
+
* @returns {AccessList}
|
|
107
|
+
*/
|
|
108
|
+
getAccessList() {
|
|
109
|
+
const addressMapping = {
|
|
110
|
+
[getAddr('TaskExecutor')]: [],
|
|
111
|
+
[getAddr('DFSRegistry')]: [],
|
|
112
|
+
};
|
|
113
|
+
this.actions.forEach((action) => {
|
|
114
|
+
const accessList = action.getAccessList();
|
|
115
|
+
accessList.forEach(({ address, storageKeys }) => {
|
|
116
|
+
addressMapping[address] = new Set([...storageKeys, ...(addressMapping[address] || [])]);
|
|
117
|
+
})
|
|
118
|
+
});
|
|
119
|
+
return Object.keys(addressMapping).map((address) => ({
|
|
120
|
+
address,
|
|
121
|
+
storageKeys: [...addressMapping[address]],
|
|
122
|
+
}));
|
|
123
|
+
}
|
|
102
124
|
}
|
|
103
125
|
|
|
104
126
|
module.exports = Recipe;
|
|
@@ -2,7 +2,6 @@ const AaveBorrowAction = require('./AaveBorrowAction');
|
|
|
2
2
|
const AaveSupplyAction = require('./AaveSupplyAction');
|
|
3
3
|
const AavePaybackAction = require('./AavePaybackAction');
|
|
4
4
|
const AaveWithdrawAction = require('./AaveWithdrawAction');
|
|
5
|
-
const AaveMigrateLendAction = require('./AaveMigrateLendAction');
|
|
6
5
|
const AaveClaimStkAaveAction = require('./AaveClaimStkAaveAction');
|
|
7
6
|
const AaveCollateralSwitchAction = require('./AaveCollateralSwitchAction');
|
|
8
7
|
|
|
@@ -11,7 +10,6 @@ module.exports = {
|
|
|
11
10
|
AaveSupplyAction,
|
|
12
11
|
AavePaybackAction,
|
|
13
12
|
AaveWithdrawAction,
|
|
14
|
-
AaveMigrateLendAction,
|
|
15
13
|
AaveClaimStkAaveAction,
|
|
16
14
|
AaveCollateralSwitchAction
|
|
17
15
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const Action = require("
|
|
2
|
-
const {
|
|
1
|
+
const Action = require("../../Action");
|
|
2
|
+
const {getAddr} = require("../../addresses.js");
|
|
3
3
|
|
|
4
4
|
class AutomationV2Unsub extends Action {
|
|
5
5
|
constructor(protocol, cdpId = 0) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const SendTokenAction = require("
|
|
2
|
-
const { getAddr } = require('
|
|
1
|
+
const SendTokenAction = require("../basic/SendTokenAction");
|
|
2
|
+
const { getAddr } = require('../../addresses.js');
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Pays back a flashloan from Balancer
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const SendTokenAction = require("
|
|
2
|
-
const { getAddr } = require('
|
|
1
|
+
const SendTokenAction = require("../basic/SendTokenAction");
|
|
2
|
+
const { getAddr } = require('../../addresses.js');
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Pays back a flashloan from Maker
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
const Action = require("../../Action");
|
|
2
|
+
const { getAssetInfo } = require("@defisaver/tokens");
|
|
3
|
+
const { getAddr } = require('../../addresses.js');
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Action that adds liquidity to G-UNI pool of interest (mints G-UNI LP tokens)
|
|
7
|
+
*/
|
|
8
|
+
class GUniDeposit extends Action {
|
|
9
|
+
/// @param pool address of G-UNI pool to add liquidity to
|
|
10
|
+
/// @param token0 address of token0
|
|
11
|
+
/// @param token1 address of token1
|
|
12
|
+
/// @param amount0Max the maximum amount of token0 msg.sender willing to input
|
|
13
|
+
/// @param amount1Max the maximum amount of token1 msg.sender willing to input
|
|
14
|
+
/// @param amount0Min the minimum amount of token0 actually input (slippage protection)
|
|
15
|
+
/// @param amount1Min the minimum amount of token1 actually input (slippage protection)
|
|
16
|
+
/// @param to account to receive minted G-UNI tokens
|
|
17
|
+
/// @param from account from which to pull underlying tokens from
|
|
18
|
+
constructor(pool, token0, token1, amount0Max, amount1max, amount0Min, amount1Min, to, from) {
|
|
19
|
+
super(
|
|
20
|
+
'GUniDeposit',
|
|
21
|
+
getAddr('GUniDeposit'),
|
|
22
|
+
[['address', 'address', 'address', 'uint256', 'uint256', 'uint256', 'uint256', 'address', 'address']],
|
|
23
|
+
[[pool, token0, token1, amount0Max, amount1max, amount0Min, amount1Min, to, from]]
|
|
24
|
+
);
|
|
25
|
+
this.mappableArgs = [
|
|
26
|
+
this.args[0][3],
|
|
27
|
+
this.args[0][4],
|
|
28
|
+
this.args[0][5],
|
|
29
|
+
this.args[0][6],
|
|
30
|
+
];
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
async getAssetsToApprove() {
|
|
34
|
+
const approveArr = [];
|
|
35
|
+
|
|
36
|
+
approveArr.push({asset: this.args[0][1], owner: this.args[0][8]});
|
|
37
|
+
approveArr.push({asset: this.args[0][2], owner: this.args[0][8]});
|
|
38
|
+
|
|
39
|
+
return approveArr;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
module.exports = GUniDeposit;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
const Action = require("../../Action");
|
|
2
|
+
const { getAssetInfo } = require("@defisaver/tokens");
|
|
3
|
+
const { getAddr } = require('../../addresses.js');
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Action that removes liquidity from a G-UNI pool and burns G-UNI LP tokens
|
|
7
|
+
*/
|
|
8
|
+
class GUniWithdraw extends Action {
|
|
9
|
+
/// @param pool address of G-UNI pool to remove liquidity from
|
|
10
|
+
/// @param burnAmount The number of G-UNI tokens to burn
|
|
11
|
+
/// @param amount0Min Minimum amount of token0 received after burn (slippage protection)
|
|
12
|
+
/// @param amount1Min Minimum amount of token1 received after burn (slippage protection)
|
|
13
|
+
/// @param to The account to receive the underlying amounts of token0 and token1
|
|
14
|
+
/// @param from Account from which to pull G-Uni LP tokens
|
|
15
|
+
constructor(pool, burnAmount, amount0Min, amount1Min, to, from) {
|
|
16
|
+
super(
|
|
17
|
+
'GUniWithdraw',
|
|
18
|
+
getAddr('GUniWithdraw'),
|
|
19
|
+
[['address', 'uint256', 'uint256', 'uint256', 'address', 'address']],
|
|
20
|
+
[[pool, burnAmount, amount0Min, amount1Min, to, from]]
|
|
21
|
+
);
|
|
22
|
+
this.mappableArgs = [
|
|
23
|
+
this.args[0][1],
|
|
24
|
+
];
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
async getAssetsToApprove() {
|
|
28
|
+
return [{asset: this.args[0][0], owner: this.args[0][5]}];
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
module.exports = GUniWithdraw;
|
package/src/actions/index.js
CHANGED
|
@@ -12,6 +12,9 @@ const yearn = require('./yearn');
|
|
|
12
12
|
const lido = require('./lido');
|
|
13
13
|
const insta = require('./insta');
|
|
14
14
|
const balancer = require('./balancer');
|
|
15
|
+
const guni = require('./guni');
|
|
16
|
+
const mstable = require('./mstable');
|
|
17
|
+
const rari = require('./rari');
|
|
15
18
|
|
|
16
19
|
module.exports = {
|
|
17
20
|
maker,
|
|
@@ -28,4 +31,7 @@ module.exports = {
|
|
|
28
31
|
lido,
|
|
29
32
|
insta,
|
|
30
33
|
balancer,
|
|
34
|
+
guni,
|
|
35
|
+
mstable,
|
|
36
|
+
rari,
|
|
31
37
|
};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
const Action = require("../../Action");
|
|
2
|
+
const {requireAddress} = require("../../utils/general");
|
|
3
|
+
const { getAddr } = require('../../addresses.js');
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* MStableClaimAction
|
|
7
|
+
*/
|
|
8
|
+
class MStableClaimAction extends Action {
|
|
9
|
+
/**
|
|
10
|
+
* @param vaultAddress
|
|
11
|
+
* @param to
|
|
12
|
+
* @param first
|
|
13
|
+
* @param last
|
|
14
|
+
*/
|
|
15
|
+
constructor(
|
|
16
|
+
vaultAddress,
|
|
17
|
+
to,
|
|
18
|
+
first,
|
|
19
|
+
last,
|
|
20
|
+
) {
|
|
21
|
+
requireAddress(vaultAddress);
|
|
22
|
+
requireAddress(to);
|
|
23
|
+
|
|
24
|
+
super(
|
|
25
|
+
'MStableClaim',
|
|
26
|
+
getAddr('MStableClaim'),
|
|
27
|
+
[['address', 'address', 'uint256', 'uint256']],
|
|
28
|
+
[[...arguments]],
|
|
29
|
+
);
|
|
30
|
+
|
|
31
|
+
this.mappableArgs = [
|
|
32
|
+
this.args[0][0],
|
|
33
|
+
this.args[0][1],
|
|
34
|
+
];
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
module.exports = MStableClaimAction;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
const Action = require("../../Action");
|
|
2
|
+
const {requireAddress} = require("../../utils/general");
|
|
3
|
+
const { getAddr } = require('../../addresses.js');
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* MStableDepositAction
|
|
7
|
+
*/
|
|
8
|
+
class MStableDepositAction extends Action {
|
|
9
|
+
/**
|
|
10
|
+
* @param bAsset
|
|
11
|
+
* @param mAsset
|
|
12
|
+
* @param saveAddress
|
|
13
|
+
* @param vaultAddress
|
|
14
|
+
* @param from
|
|
15
|
+
* @param to
|
|
16
|
+
* @param amount
|
|
17
|
+
* @param minOut
|
|
18
|
+
* @param stake
|
|
19
|
+
*/
|
|
20
|
+
constructor(
|
|
21
|
+
bAsset,
|
|
22
|
+
mAsset,
|
|
23
|
+
saveAddress,
|
|
24
|
+
vaultAddress,
|
|
25
|
+
from,
|
|
26
|
+
to,
|
|
27
|
+
amount,
|
|
28
|
+
minOut,
|
|
29
|
+
stake,
|
|
30
|
+
) {
|
|
31
|
+
requireAddress(bAsset);
|
|
32
|
+
requireAddress(mAsset);
|
|
33
|
+
requireAddress(saveAddress);
|
|
34
|
+
requireAddress(vaultAddress);
|
|
35
|
+
requireAddress(from);
|
|
36
|
+
requireAddress(to);
|
|
37
|
+
|
|
38
|
+
super(
|
|
39
|
+
'MStableDeposit',
|
|
40
|
+
getAddr('MStableDeposit'),
|
|
41
|
+
[['address', 'address', 'address', 'address', 'address', 'address', 'uint256', 'uint256', 'bool']],
|
|
42
|
+
[[...arguments]],
|
|
43
|
+
);
|
|
44
|
+
|
|
45
|
+
this.mappableArgs = [
|
|
46
|
+
this.args[0][0],
|
|
47
|
+
this.args[0][1],
|
|
48
|
+
this.args[0][2],
|
|
49
|
+
this.args[0][3],
|
|
50
|
+
this.args[0][4],
|
|
51
|
+
this.args[0][5],
|
|
52
|
+
this.args[0][6],
|
|
53
|
+
this.args[0][7],
|
|
54
|
+
this.args[0][8],
|
|
55
|
+
];
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
async getAssetsToApprove() {
|
|
59
|
+
return [{ asset: this.args[0][0], owner: this.args[0][4]}];
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
module.exports = MStableDepositAction;
|