@defisaver/sdk 1.3.37 → 1.3.38

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 (94) hide show
  1. package/docs/DEV.md +37 -0
  2. package/esm/src/actions/flashloan/AaveV2FlashLoanAction.d.ts +2 -4
  3. package/esm/src/actions/flashloan/AaveV2FlashLoanAction.js +7 -4
  4. package/esm/src/actions/flashloan/AaveV3FlashLoanAction.d.ts +2 -4
  5. package/esm/src/actions/flashloan/AaveV3FlashLoanAction.js +7 -4
  6. package/esm/src/actions/flashloan/BalancerFlashLoanAction.d.ts +2 -4
  7. package/esm/src/actions/flashloan/BalancerFlashLoanAction.js +7 -4
  8. package/esm/src/actions/flashloan/BalancerV3FlashLoanAction.d.ts +2 -4
  9. package/esm/src/actions/flashloan/BalancerV3FlashLoanAction.js +7 -20
  10. package/esm/src/actions/flashloan/CurveUsdFlashLoanAction.d.ts +2 -4
  11. package/esm/src/actions/flashloan/CurveUsdFlashLoanAction.js +7 -4
  12. package/esm/src/actions/flashloan/FLAction.d.ts +7 -5
  13. package/esm/src/actions/flashloan/FLAction.js +12 -20
  14. package/esm/src/actions/flashloan/FLSource.d.ts +18 -0
  15. package/esm/src/actions/flashloan/FLSource.js +42 -0
  16. package/esm/src/actions/flashloan/FlashLoanId.d.ts +2 -1
  17. package/esm/src/actions/flashloan/GhoFlashLoanAction.d.ts +2 -4
  18. package/esm/src/actions/flashloan/GhoFlashLoanAction.js +7 -4
  19. package/esm/src/actions/flashloan/MakerFlashLoanAction.d.ts +2 -4
  20. package/esm/src/actions/flashloan/MakerFlashLoanAction.js +7 -4
  21. package/esm/src/actions/flashloan/MorphoBlueFlashLoanAction.d.ts +2 -4
  22. package/esm/src/actions/flashloan/MorphoBlueFlashLoanAction.js +7 -4
  23. package/esm/src/actions/flashloan/SparkFlashLoanAction.d.ts +2 -4
  24. package/esm/src/actions/flashloan/SparkFlashLoanAction.js +7 -4
  25. package/esm/src/actions/flashloan/UniV3FlashLoanAction.d.ts +2 -4
  26. package/esm/src/actions/flashloan/UniV3FlashLoanAction.js +7 -4
  27. package/esm/src/actions/flashloan/index.d.ts +1 -14
  28. package/esm/src/actions/flashloan/index.js +1 -14
  29. package/esm/src/addresses.d.ts +1 -67
  30. package/esm/src/addresses.js +105 -87
  31. package/esm/src/index.d.ts +4 -268
  32. package/package.json +1 -1
  33. package/src/actions/flashloan/AaveV2FlashLoanAction.ts +7 -11
  34. package/src/actions/flashloan/AaveV3FlashLoanAction.ts +7 -11
  35. package/src/actions/flashloan/BalancerFlashLoanAction.ts +7 -11
  36. package/src/actions/flashloan/BalancerV3FlashLoanAction.ts +7 -27
  37. package/src/actions/flashloan/CurveUsdFlashLoanAction.ts +7 -11
  38. package/src/actions/flashloan/FLAction.ts +18 -21
  39. package/src/actions/flashloan/FLSource.ts +44 -0
  40. package/src/actions/flashloan/FlashLoanId.ts +3 -1
  41. package/src/actions/flashloan/GhoFlashLoanAction.ts +7 -11
  42. package/src/actions/flashloan/MakerFlashLoanAction.ts +7 -11
  43. package/src/actions/flashloan/MorphoBlueFlashLoanAction.ts +7 -11
  44. package/src/actions/flashloan/SparkFlashLoanAction.ts +7 -11
  45. package/src/actions/flashloan/UniV3FlashLoanAction.ts +7 -11
  46. package/src/actions/flashloan/index.ts +1 -14
  47. package/src/addresses.ts +127 -90
  48. package/test/accessLists/Recipe.js +1 -1
  49. package/test/accessLists/access-lists.js +1 -1
  50. package/test/actions/flashloan/FLAction.js +77 -0
  51. package/umd/index.js +1090 -1435
  52. package/esm/src/actions/flashloan/AaveV2FlashLoanPaybackAction.d.ts +0 -14
  53. package/esm/src/actions/flashloan/AaveV2FlashLoanPaybackAction.js +0 -16
  54. package/esm/src/actions/flashloan/AaveV3FlashLoanNoFeeAction.d.ts +0 -18
  55. package/esm/src/actions/flashloan/AaveV3FlashLoanNoFeeAction.js +0 -20
  56. package/esm/src/actions/flashloan/AaveV3FlashLoanNoFeePaybackAction.d.ts +0 -14
  57. package/esm/src/actions/flashloan/AaveV3FlashLoanNoFeePaybackAction.js +0 -16
  58. package/esm/src/actions/flashloan/AaveV3FlashLoanPaybackAction.d.ts +0 -14
  59. package/esm/src/actions/flashloan/AaveV3FlashLoanPaybackAction.js +0 -16
  60. package/esm/src/actions/flashloan/BalancerFlashLoanPaybackAction.d.ts +0 -14
  61. package/esm/src/actions/flashloan/BalancerFlashLoanPaybackAction.js +0 -16
  62. package/esm/src/actions/flashloan/DyDxFlashLoanAction.d.ts +0 -16
  63. package/esm/src/actions/flashloan/DyDxFlashLoanAction.js +0 -18
  64. package/esm/src/actions/flashloan/DyDxFlashLoanPaybackAction.d.ts +0 -14
  65. package/esm/src/actions/flashloan/DyDxFlashLoanPaybackAction.js +0 -16
  66. package/esm/src/actions/flashloan/EulerFlashLoanAction.d.ts +0 -16
  67. package/esm/src/actions/flashloan/EulerFlashLoanAction.js +0 -18
  68. package/esm/src/actions/flashloan/EulerFlashLoanPaybackAction.d.ts +0 -14
  69. package/esm/src/actions/flashloan/EulerFlashLoanPaybackAction.js +0 -16
  70. package/esm/src/actions/flashloan/GhoFlashLoanPaybackAction.d.ts +0 -13
  71. package/esm/src/actions/flashloan/GhoFlashLoanPaybackAction.js +0 -15
  72. package/esm/src/actions/flashloan/MakerFlashLoanPaybackAction.d.ts +0 -13
  73. package/esm/src/actions/flashloan/MakerFlashLoanPaybackAction.js +0 -15
  74. package/esm/src/actions/flashloan/MorphoBlueFlashLoanPaybackAction.d.ts +0 -14
  75. package/esm/src/actions/flashloan/MorphoBlueFlashLoanPaybackAction.js +0 -16
  76. package/esm/src/actions/flashloan/SparkFlashLoanPaybackAction.d.ts +0 -14
  77. package/esm/src/actions/flashloan/SparkFlashLoanPaybackAction.js +0 -16
  78. package/esm/src/actions/flashloan/UniV3FlashLoanPaybackAction.d.ts +0 -16
  79. package/esm/src/actions/flashloan/UniV3FlashLoanPaybackAction.js +0 -18
  80. package/src/actions/flashloan/AaveV2FlashLoanPaybackAction.ts +0 -18
  81. package/src/actions/flashloan/AaveV3FlashLoanNoFeeAction.ts +0 -27
  82. package/src/actions/flashloan/AaveV3FlashLoanNoFeePaybackAction.ts +0 -18
  83. package/src/actions/flashloan/AaveV3FlashLoanPaybackAction.ts +0 -18
  84. package/src/actions/flashloan/BalancerFlashLoanPaybackAction.ts +0 -18
  85. package/src/actions/flashloan/DyDxFlashLoanAction.ts +0 -24
  86. package/src/actions/flashloan/DyDxFlashLoanPaybackAction.ts +0 -18
  87. package/src/actions/flashloan/EulerFlashLoanAction.ts +0 -25
  88. package/src/actions/flashloan/EulerFlashLoanPaybackAction.ts +0 -18
  89. package/src/actions/flashloan/GhoFlashLoanPaybackAction.ts +0 -17
  90. package/src/actions/flashloan/MakerFlashLoanPaybackAction.ts +0 -17
  91. package/src/actions/flashloan/MorphoBlueFlashLoanPaybackAction.ts +0 -18
  92. package/src/actions/flashloan/SparkFlashLoanPaybackAction.ts +0 -18
  93. package/src/actions/flashloan/UniV3FlashLoanPaybackAction.ts +0 -20
  94. package/test/actions/flashloan/DyDxFlashLoanAction.js +0 -84
@@ -109,7 +109,7 @@ class Recipe {
109
109
  [dfs.getAddr('DFSRegistry')]: [],
110
110
  };
111
111
  this.actions.forEach((action) => {
112
- const accessList = MockAccessLists[action.name].map(([address, storageKeys]) => ({ address, storageKeys: storageKeys.map(num => padLeft(toHex(num), 64)) }));
112
+ const accessList = (action.name === 'FLAction' ? [[dfs.getAddr('FLAction'), []]] : MockAccessLists[action.name]).map(([address, storageKeys]) => ({ address, storageKeys: storageKeys.map(num => padLeft(toHex(num), 64)) }));
113
113
  accessList.forEach(({ address, storageKeys }) => {
114
114
  addressMapping[address] = new Set([...storageKeys, ...(addressMapping[address] || [])]);
115
115
  })
@@ -28,7 +28,7 @@ const testInclusion = (recipe, accessList) => {
28
28
  return list;
29
29
  }, {});
30
30
  actions.forEach((action) => {
31
- MockAccessLists[action.name]
31
+ (action.name === 'FLAction' ? [[dfs.getAddr('FLAction'), []]] : MockAccessLists[action.name])
32
32
  .map(([address, storageKeys]) => ({ address, storageKeys: storageKeys.map(num => padLeft(toHex(num), 64)) }))
33
33
  .forEach((entry) => {
34
34
  const storageAddrs = new Set(addressMapping[entry.address]);
@@ -0,0 +1,77 @@
1
+ const { assert } = require('chai');
2
+ const AbiCoder = require('web3-eth-abi');
3
+ const dfs = require('../../../src');
4
+
5
+ const fl = dfs.actions.flashloan;
6
+ const { FLSource } = fl;
7
+ const { networks } = dfs;
8
+ const token = '0x0000000000000000000000000000000000000001';
9
+ const zero = '0x0000000000000000000000000000000000000000';
10
+ const allSources = Object.values(FLSource).filter(source => typeof source === 'number' && source !== FLSource.EMPTY);
11
+ const providers = new Map([
12
+ [FLSource.AAVEV2, () => new fl.AaveV2FlashLoanAction([token], ['1000'], ['0'], zero)],
13
+ [FLSource.BALANCER, () => new fl.BalancerFlashLoanAction([token], ['1000'])],
14
+ [FLSource.GHO, () => new fl.GhoFlashLoanAction('1000')],
15
+ [FLSource.MAKER, () => new fl.MakerFlashLoanAction('1000')],
16
+ [FLSource.AAVEV3, () => new fl.AaveV3FlashLoanAction([token], ['1000'], ['0'], zero)],
17
+ [FLSource.UNIV3, () => new fl.UniV3FlashLoanAction(token, token, token, '1000', '0')],
18
+ [FLSource.SPARK, () => new fl.SparkFlashLoanAction([token], ['1000'], ['0'], zero)],
19
+ [FLSource.MORPHO_BLUE, () => new fl.MorphoBlueFlashLoanAction(token, '1000')],
20
+ [FLSource.CURVEUSD, () => new fl.CurveUsdFlashLoanAction('1000')],
21
+ [FLSource.BALANCER_V3, () => new fl.BalancerV3FlashLoanAction([token], ['1000'])],
22
+ ]);
23
+ const supported = new Map([
24
+ [networks.ethereum, allSources],
25
+ [networks.optimism, [FLSource.BALANCER, FLSource.AAVEV3, FLSource.UNIV3, FLSource.BALANCER_V3]],
26
+ [networks.arbitrum, [FLSource.BALANCER, FLSource.AAVEV3, FLSource.UNIV3, FLSource.MORPHO_BLUE, FLSource.BALANCER_V3]],
27
+ [networks.base, [FLSource.BALANCER, FLSource.AAVEV3, FLSource.UNIV3, FLSource.MORPHO_BLUE, FLSource.BALANCER_V3]],
28
+ [networks.linea, [FLSource.AAVEV3]],
29
+ [networks.plasma, [FLSource.AAVEV3, FLSource.BALANCER_V3]],
30
+ ]);
31
+
32
+ describe('Unified flashloans', () => {
33
+ let previous;
34
+ beforeEach(() => { previous = { ...dfs.CONFIG }; });
35
+ afterEach(() => { dfs.configure(previous); });
36
+
37
+ it('covers every flashloan source and network', () => {
38
+ assert.sameMembers([...providers.keys()], allSources);
39
+ assert.sameMembers([...supported.keys()], Object.values(networks));
40
+ });
41
+
42
+ for (const [network, sources] of supported) {
43
+ it(`validates all sources and preserves wrapped encoding on ${network.chainName}`, () => {
44
+ dfs.configure({ chainId: network.chainId });
45
+ providers.forEach((create, source) => {
46
+ const context = `${FLSource[source]} on ${network.chainName}`;
47
+ assert.equal(fl.isFlashLoanSourceSupported(source), sources.includes(source), context);
48
+ if (!sources.includes(source)) {
49
+ assert.throws(create, 'is not supported by FLAction');
50
+ return;
51
+ }
52
+ const action = create();
53
+ assert.instanceOf(action, fl.FLAction);
54
+ assert.equal(action.name, 'FLAction');
55
+ assert.equal(action.encodeForDsProxyCall()[0], dfs.actionAddresses().FLAction);
56
+ assert.deepEqual(new fl.FLAction(action).encodeForRecipe(), action.encodeForRecipe());
57
+ const decoded = AbiCoder.decodeParameter('(address[],uint256[],uint256[],address,address,bytes,bytes)', action.encodeForRecipe()[0]);
58
+ assert.equal(decoded[5], `0x${source.toString(16).padStart(2, '0')}`, context);
59
+ const [, recipient] = new fl.FLPaybackAction('$1', token).args;
60
+ assert.equal(recipient, dfs.actionAddresses().FLAction);
61
+ });
62
+ const carry = new fl.AaveV3FlashLoanCarryDebtAction([token], ['1000']);
63
+ assert.equal(carry.contractAddress, dfs.actionAddresses().FLAaveV3CarryDebt);
64
+ assert.notEqual(carry.contractAddress, dfs.actionAddresses().FLAction);
65
+ assert.deepEqual(Object.keys(dfs.actionAddresses()).filter(name => name.startsWith('FL')).sort(), ['FLAaveV3CarryDebt', 'FLAction']);
66
+ });
67
+ }
68
+
69
+ it('rejects empty, unknown and missing sources', () => {
70
+ const unknownSource = Math.max(...allSources) + 1;
71
+ for (const source of [FLSource.EMPTY, unknownSource, -1, undefined, String(FLSource.AAVEV3)]) {
72
+ assert.throws(() => new fl.FLAction({ flashLoanId: source, args: [] }), 'is not supported by FLAction');
73
+ }
74
+ const unknownChainId = Math.max(...Object.values(networks).map(network => network.chainId)) + 1;
75
+ assert.isFalse(fl.isFlashLoanSourceSupported(FLSource.AAVEV3, unknownChainId));
76
+ });
77
+ });