@paraswap/dex-lib 2.42.7 → 2.42.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 (203) hide show
  1. package/.vscode/launch.json +38 -0
  2. package/.vscode/settings.json +2 -0
  3. package/.vscode/tasks.json +15 -0
  4. package/build/dex/simple-exchange.d.ts +3 -0
  5. package/build/dex/simple-exchange.js +18 -2
  6. package/build/dex/simple-exchange.js.map +1 -1
  7. package/package.json +1 -1
  8. package/src/dex/simple-exchange.ts +37 -3
  9. package/.idea/aws.xml +0 -17
  10. package/.idea/codeStyles/Project.xml +0 -19
  11. package/.idea/codeStyles/codeStyleConfig.xml +0 -5
  12. package/.idea/misc.xml +0 -6
  13. package/.idea/modules.xml +0 -8
  14. package/.idea/paraswap-dex-lib.iml +0 -9
  15. package/.idea/prettier.xml +0 -7
  16. package/.idea/vcs.xml +0 -6
  17. package/build/abi/algebra/AlgebraPool.abi.json +0 -727
  18. package/build/abi/curve-v1/StableSwapFRXETH.json +0 -889
  19. package/build/abi/curve-v1/StableSwapWBETH.json +0 -1223
  20. package/build/abi/sushiswap-v3/QuoterV2.json +0 -267
  21. package/build/abi/sushiswap-v3/RouterProcessor3.json +0 -289
  22. package/build/abi/uniswap-v3/UniswapV3Quoter.abi.json +0 -193
  23. package/build/abi/uniswap-v3/pancakeswap-v3/PancakeswapV3QuoterV2.abi.json +0 -285
  24. package/build/abi/uniswap-v3/pancakeswap-v3/PancakeswapV3Router.abi.json +0 -583
  25. package/build/abi/wBETH.json +0 -1527
  26. package/build/abi/woo-fi/WooFeeManager.abi.json +0 -318
  27. package/build/abi/woo-fi/WooPP.abi.json +0 -548
  28. package/build/abi/woo-fi/Wooracle.abi.json +0 -260
  29. package/build/dex/aave-v3/tokens/arbitrum.json +0 -50
  30. package/build/dex/aave-v3/tokens/avalanche.json +0 -74
  31. package/build/dex/aave-v3/tokens/fantom.json +0 -62
  32. package/build/dex/aave-v3/tokens/optimism.json +0 -50
  33. package/build/dex/aave-v3/tokens/polygon.json +0 -116
  34. package/build/dex/algebra/algebra-pool.d.ts +0 -114
  35. package/build/dex/algebra/algebra-pool.js +0 -448
  36. package/build/dex/algebra/algebra-pool.js.map +0 -1
  37. package/build/dex/balancer-v2/Gyro3Pool.d.ts +0 -43
  38. package/build/dex/balancer-v2/Gyro3Pool.js +0 -160
  39. package/build/dex/balancer-v2/Gyro3Pool.js.map +0 -1
  40. package/build/dex/balancer-v2/LinearMath.d.ts +0 -88
  41. package/build/dex/balancer-v2/LinearMath.js +0 -285
  42. package/build/dex/balancer-v2/LinearMath.js.map +0 -1
  43. package/build/dex/balancer-v2/LinearPool.d.ts +0 -81
  44. package/build/dex/balancer-v2/LinearPool.js +0 -444
  45. package/build/dex/balancer-v2/LinearPool.js.map +0 -1
  46. package/build/dex/balancer-v2/PhantomStablePool.d.ts +0 -90
  47. package/build/dex/balancer-v2/PhantomStablePool.js +0 -418
  48. package/build/dex/balancer-v2/PhantomStablePool.js.map +0 -1
  49. package/build/dex/balancer-v2/StableMath.d.ts +0 -9
  50. package/build/dex/balancer-v2/StableMath.js +0 -272
  51. package/build/dex/balancer-v2/StableMath.js.map +0 -1
  52. package/build/dex/balancer-v2/balancer-v2-pool.d.ts +0 -140
  53. package/build/dex/balancer-v2/balancer-v2-pool.js +0 -647
  54. package/build/dex/balancer-v2/balancer-v2-pool.js.map +0 -1
  55. package/build/dex/balancer-v2/pools/gyro/Gyro3Pool.d.ts +0 -33
  56. package/build/dex/balancer-v2/pools/gyro/Gyro3Pool.js +0 -128
  57. package/build/dex/balancer-v2/pools/gyro/Gyro3Pool.js.map +0 -1
  58. package/build/dex/balancer-v2/pools/gyro/GyroEPool.d.ts +0 -34
  59. package/build/dex/balancer-v2/pools/gyro/GyroEPool.js +0 -151
  60. package/build/dex/balancer-v2/pools/gyro/GyroEPool.js.map +0 -1
  61. package/build/dex/curve-v1/pools/frxETHpool.d.ts +0 -7
  62. package/build/dex/curve-v1/pools/frxETHpool.js +0 -27
  63. package/build/dex/curve-v1/pools/frxETHpool.js.map +0 -1
  64. package/build/dex/curve-v1/pools/wbETHpool.d.ts +0 -29
  65. package/build/dex/curve-v1/pools/wbETHpool.js +0 -408
  66. package/build/dex/curve-v1/pools/wbETHpool.js.map +0 -1
  67. package/build/dex/lighter-v1/abi/erc20.json +0 -222
  68. package/build/dex/lighter-v1/abi/factory.json +0 -291
  69. package/build/dex/lighter-v1/abi/order_book.json +0 -594
  70. package/build/dex/lighter-v1/abi/order_book_helper.json +0 -176
  71. package/build/dex/lighter-v1/abi/router.json +0 -488
  72. package/build/dex/lighter-v1/config.d.ts +0 -4
  73. package/build/dex/lighter-v1/config.js +0 -17
  74. package/build/dex/lighter-v1/config.js.map +0 -1
  75. package/build/dex/lighter-v1/constants.d.ts +0 -2
  76. package/build/dex/lighter-v1/constants.js +0 -13
  77. package/build/dex/lighter-v1/constants.js.map +0 -1
  78. package/build/dex/lighter-v1/lighter-v1-pool.d.ts +0 -57
  79. package/build/dex/lighter-v1/lighter-v1-pool.js +0 -310
  80. package/build/dex/lighter-v1/lighter-v1-pool.js.map +0 -1
  81. package/build/dex/lighter-v1/lighter-v1.d.ts +0 -45
  82. package/build/dex/lighter-v1/lighter-v1.js +0 -331
  83. package/build/dex/lighter-v1/lighter-v1.js.map +0 -1
  84. package/build/dex/lighter-v1/types.d.ts +0 -40
  85. package/build/dex/lighter-v1/types.js +0 -3
  86. package/build/dex/lighter-v1/types.js.map +0 -1
  87. package/build/dex/pancakeswap-v3/types.d.ts +0 -14
  88. package/build/dex/pancakeswap-v3/types.js +0 -3
  89. package/build/dex/pancakeswap-v3/types.js.map +0 -1
  90. package/build/dex/quickswap/camelot-v3.d.ts +0 -6
  91. package/build/dex/quickswap/camelot-v3.js +0 -19
  92. package/build/dex/quickswap/camelot-v3.js.map +0 -1
  93. package/build/dex/quickswap/zyberswap-v3.d.ts +0 -6
  94. package/build/dex/quickswap/zyberswap-v3.js +0 -19
  95. package/build/dex/quickswap/zyberswap-v3.js.map +0 -1
  96. package/build/dex/quickswap-v3.d.ts +0 -21
  97. package/build/dex/quickswap-v3.js +0 -40
  98. package/build/dex/quickswap-v3.js.map +0 -1
  99. package/build/dex/ramses-v2/config.d.ts +0 -4
  100. package/build/dex/ramses-v2/config.js +0 -28
  101. package/build/dex/ramses-v2/config.js.map +0 -1
  102. package/build/dex/ramses-v2/constants.d.ts +0 -28
  103. package/build/dex/ramses-v2/constants.js +0 -35
  104. package/build/dex/ramses-v2/constants.js.map +0 -1
  105. package/build/dex/ramses-v2/contract-math/BitMath.d.ts +0 -4
  106. package/build/dex/ramses-v2/contract-math/BitMath.js +0 -93
  107. package/build/dex/ramses-v2/contract-math/BitMath.js.map +0 -1
  108. package/build/dex/ramses-v2/contract-math/FixedPoint128.d.ts +0 -3
  109. package/build/dex/ramses-v2/contract-math/FixedPoint128.js +0 -8
  110. package/build/dex/ramses-v2/contract-math/FixedPoint128.js.map +0 -1
  111. package/build/dex/ramses-v2/contract-math/FixedPoint96.d.ts +0 -4
  112. package/build/dex/ramses-v2/contract-math/FixedPoint96.js +0 -9
  113. package/build/dex/ramses-v2/contract-math/FixedPoint96.js.map +0 -1
  114. package/build/dex/ramses-v2/contract-math/FullMath.d.ts +0 -4
  115. package/build/dex/ramses-v2/contract-math/FullMath.js +0 -19
  116. package/build/dex/ramses-v2/contract-math/FullMath.js.map +0 -1
  117. package/build/dex/ramses-v2/contract-math/LiquidityMath.d.ts +0 -3
  118. package/build/dex/ramses-v2/contract-math/LiquidityMath.js +0 -22
  119. package/build/dex/ramses-v2/contract-math/LiquidityMath.js.map +0 -1
  120. package/build/dex/ramses-v2/contract-math/Oracle.d.ts +0 -10
  121. package/build/dex/ramses-v2/contract-math/Oracle.js +0 -133
  122. package/build/dex/ramses-v2/contract-math/Oracle.js.map +0 -1
  123. package/build/dex/ramses-v2/contract-math/SqrtPriceMath.d.ts +0 -10
  124. package/build/dex/ramses-v2/contract-math/SqrtPriceMath.js +0 -91
  125. package/build/dex/ramses-v2/contract-math/SqrtPriceMath.js.map +0 -1
  126. package/build/dex/ramses-v2/contract-math/SwapMath.d.ts +0 -8
  127. package/build/dex/ramses-v2/contract-math/SwapMath.js +0 -70
  128. package/build/dex/ramses-v2/contract-math/SwapMath.js.map +0 -1
  129. package/build/dex/ramses-v2/contract-math/Tick.d.ts +0 -7
  130. package/build/dex/ramses-v2/contract-math/Tick.js +0 -45
  131. package/build/dex/ramses-v2/contract-math/Tick.js.map +0 -1
  132. package/build/dex/ramses-v2/contract-math/TickBitMap.d.ts +0 -8
  133. package/build/dex/ramses-v2/contract-math/TickBitMap.js +0 -87
  134. package/build/dex/ramses-v2/contract-math/TickBitMap.js.map +0 -1
  135. package/build/dex/ramses-v2/contract-math/TickMath.d.ts +0 -8
  136. package/build/dex/ramses-v2/contract-math/TickMath.js +0 -162
  137. package/build/dex/ramses-v2/contract-math/TickMath.js.map +0 -1
  138. package/build/dex/ramses-v2/contract-math/UnsafeMath.d.ts +0 -3
  139. package/build/dex/ramses-v2/contract-math/UnsafeMath.js +0 -10
  140. package/build/dex/ramses-v2/contract-math/UnsafeMath.js.map +0 -1
  141. package/build/dex/ramses-v2/contract-math/uniswap-v3-math.d.ts +0 -18
  142. package/build/dex/ramses-v2/contract-math/uniswap-v3-math.js +0 -392
  143. package/build/dex/ramses-v2/contract-math/uniswap-v3-math.js.map +0 -1
  144. package/build/dex/ramses-v2/contract-math/utils.d.ts +0 -3
  145. package/build/dex/ramses-v2/contract-math/utils.js +0 -16
  146. package/build/dex/ramses-v2/contract-math/utils.js.map +0 -1
  147. package/build/dex/ramses-v2/ramses-v2-pool.d.ts +0 -42
  148. package/build/dex/ramses-v2/ramses-v2-pool.js +0 -307
  149. package/build/dex/ramses-v2/ramses-v2-pool.js.map +0 -1
  150. package/build/dex/ramses-v2/ramses-v2.d.ts +0 -61
  151. package/build/dex/ramses-v2/ramses-v2.js +0 -690
  152. package/build/dex/ramses-v2/ramses-v2.js.map +0 -1
  153. package/build/dex/ramses-v2/types.d.ts +0 -154
  154. package/build/dex/ramses-v2/types.js +0 -9
  155. package/build/dex/ramses-v2/types.js.map +0 -1
  156. package/build/dex/ramses-v2/utils.d.ts +0 -6
  157. package/build/dex/ramses-v2/utils.js +0 -71
  158. package/build/dex/ramses-v2/utils.js.map +0 -1
  159. package/build/dex/solidly/forks-override/fvm.d.ts +0 -20
  160. package/build/dex/solidly/forks-override/fvm.js +0 -42
  161. package/build/dex/solidly/forks-override/fvm.js.map +0 -1
  162. package/build/dex/sushiswap-v3/config.d.ts +0 -4
  163. package/build/dex/sushiswap-v3/config.js +0 -132
  164. package/build/dex/sushiswap-v3/config.js.map +0 -1
  165. package/build/dex/sushiswap-v3/constants.d.ts +0 -4
  166. package/build/dex/sushiswap-v3/constants.js +0 -32
  167. package/build/dex/sushiswap-v3/constants.js.map +0 -1
  168. package/build/dex/sushiswap-v3/sushiswap-v3-original.d.ts +0 -56
  169. package/build/dex/sushiswap-v3/sushiswap-v3-original.js +0 -598
  170. package/build/dex/sushiswap-v3/sushiswap-v3-original.js.map +0 -1
  171. package/build/dex/sushiswap-v3/sushiswap-v3-pool.d.ts +0 -1
  172. package/build/dex/sushiswap-v3/sushiswap-v3-pool.js +0 -6
  173. package/build/dex/sushiswap-v3/sushiswap-v3-pool.js.map +0 -1
  174. package/build/dex/sushiswap-v3/sushiswap-v3.d.ts +0 -21
  175. package/build/dex/sushiswap-v3/sushiswap-v3.js +0 -58
  176. package/build/dex/sushiswap-v3/sushiswap-v3.js.map +0 -1
  177. package/build/dex/sushiswap-v3/token.d.ts +0 -6
  178. package/build/dex/sushiswap-v3/token.js +0 -23
  179. package/build/dex/sushiswap-v3/token.js.map +0 -1
  180. package/build/dex/sushiswap-v3/types.d.ts +0 -15
  181. package/build/dex/sushiswap-v3/types.js +0 -18
  182. package/build/dex/sushiswap-v3/types.js.map +0 -1
  183. package/build/dex/uniswap-v3/forks/pancakeswap-v3/pancakeswap-v3.d.ts +0 -12
  184. package/build/dex/uniswap-v3/forks/pancakeswap-v3/pancakeswap-v3.js +0 -23
  185. package/build/dex/uniswap-v3/forks/pancakeswap-v3/pancakeswap-v3.js.map +0 -1
  186. package/build/dex/woo-fi/config.d.ts +0 -4
  187. package/build/dex/woo-fi/config.js +0 -141
  188. package/build/dex/woo-fi/config.js.map +0 -1
  189. package/build/dex/woo-fi/constants.d.ts +0 -5
  190. package/build/dex/woo-fi/constants.js +0 -20
  191. package/build/dex/woo-fi/constants.js.map +0 -1
  192. package/build/dex/woo-fi/types.d.ts +0 -48
  193. package/build/dex/woo-fi/types.js +0 -3
  194. package/build/dex/woo-fi/types.js.map +0 -1
  195. package/build/dex/woo-fi/woo-fi-decimal-math.d.ts +0 -14
  196. package/build/dex/woo-fi/woo-fi-decimal-math.js +0 -42
  197. package/build/dex/woo-fi/woo-fi-decimal-math.js.map +0 -1
  198. package/build/dex/woo-fi/woo-fi-math.d.ts +0 -31
  199. package/build/dex/woo-fi/woo-fi-math.js +0 -300
  200. package/build/dex/woo-fi/woo-fi-math.js.map +0 -1
  201. package/build/dex/woo-fi/woo-fi.d.ts +0 -65
  202. package/build/dex/woo-fi/woo-fi.js +0 -480
  203. package/build/dex/woo-fi/woo-fi.js.map +0 -1
@@ -0,0 +1,38 @@
1
+ {
2
+ "version": "0.2.0",
3
+ "configurations": [
4
+ {
5
+ "type": "node",
6
+ "request": "launch",
7
+ "name": "Current",
8
+ "program": "${file}",
9
+ "preLaunchTask": "npm: build",
10
+ "sourceMaps": true,
11
+ "smartStep": true,
12
+ "internalConsoleOptions": "openOnSessionStart",
13
+ "outFiles": ["${workspaceFolder}/build/**/*.js"]
14
+ },
15
+ {
16
+ "type": "node",
17
+ "request": "launch",
18
+ "name": "Debug Jest Tests",
19
+ "program": "${workspaceFolder}/node_modules/ts-node/dist/bin.js",
20
+ "args": [
21
+ "--project",
22
+ "tsconfig.json",
23
+ "${workspaceFolder}/scripts/dex-integration.ts",
24
+ "test",
25
+ "gmx"
26
+ ],
27
+ "console": "integratedTerminal",
28
+ "internalConsoleOptions": "neverOpen",
29
+ // "disableOptimisticBPs": true,
30
+ "runtimeArgs": ["--nolazy"],
31
+ "sourceMaps": true,
32
+ "smartStep": true,
33
+ "skipFiles": ["<node_internals>/**"],
34
+ "cwd": "${workspaceFolder}",
35
+ // "protocol": "inspector"
36
+ }
37
+ ]
38
+ }
@@ -0,0 +1,2 @@
1
+ {
2
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "version": "2.0.0",
3
+ "tasks": [
4
+ {
5
+ "label": "tsc: build - tsconfig.json",
6
+ "type": "typescript",
7
+ "tsconfig": "tsconfig.json",
8
+ "problemMatcher": ["$tsc"],
9
+ "group": {
10
+ "kind": "build",
11
+ "isDefault": true
12
+ }
13
+ }
14
+ ]
15
+ }
@@ -16,11 +16,14 @@ export declare class SimpleExchange {
16
16
  protected augustusAddress: Address;
17
17
  protected augustusInterface: Interface;
18
18
  private provider;
19
+ private cache;
19
20
  protected network: number;
20
21
  protected dexmapKey: string;
21
22
  readonly cacheStateKey: string;
23
+ private readonly cacheApprovesKey;
22
24
  constructor(dexHelper: IDexHelper, dexKey: string);
23
25
  private hasAugustusAllowance;
26
+ private getAllowance;
24
27
  protected getApproveSimpleParam(token: Address, target: Address, amount: string): Promise<SimpleExchangeParam>;
25
28
  protected buildSimpleParamWithoutWETHConversion(src: Address, srcAmount: NumberAsString, dest: Address, destAmount: NumberAsString, swapCallData: string, swapCallee: Address, spender?: Address, networkFee?: NumberAsString): Promise<SimpleExchangeParam>;
26
29
  }
@@ -36,16 +36,32 @@ class SimpleExchange {
36
36
  this.augustusAddress = dexHelper.config.data.augustusAddress;
37
37
  this.augustusInterface = new abi_1.Interface(augustus_json_1.default);
38
38
  this.provider = dexHelper.web3Provider;
39
+ this.cache = dexHelper.cache;
39
40
  this.dexmapKey =
40
41
  `${constants_1.CACHE_PREFIX}_${this.network}_${this.dexKey}_poolconfigs`.toLowerCase();
41
42
  this.cacheStateKey =
42
43
  `${constants_1.CACHE_PREFIX}_${this.network}_${this.dexKey}_states`.toLowerCase();
44
+ // if there's anything else to cache, this name could be more abstract
45
+ this.cacheApprovesKey =
46
+ `${constants_1.CACHE_PREFIX}_${this.network}_approves`.toLowerCase();
43
47
  }
44
48
  async hasAugustusAllowance(token, target, amount) {
45
49
  if (token.toLowerCase() === constants_1.ETHER_ADDRESS.toLowerCase())
46
50
  return true;
51
+ const cacheKey = `${token}_${target}`;
52
+ // as approve is given to an infinite amount, we can cache only the target and token address
53
+ const isCachedApproved = await this.cache.sismember(this.cacheApprovesKey, cacheKey);
54
+ if (isCachedApproved)
55
+ return true;
56
+ const allowance = await this.getAllowance(this.augustusAddress, token, target);
57
+ const isApproved = BigInt(allowance) >= BigInt(amount);
58
+ if (isApproved)
59
+ await this.cache.sadd(this.cacheApprovesKey, cacheKey);
60
+ return isApproved;
61
+ }
62
+ async getAllowance(spender, token, target) {
47
63
  const allowanceData = this.erc20Interface.encodeFunctionData('allowance', [
48
- this.augustusAddress,
64
+ spender,
49
65
  target,
50
66
  ]);
51
67
  const allowanceRaw = await this.provider.eth.call({
@@ -53,7 +69,7 @@ class SimpleExchange {
53
69
  data: allowanceData,
54
70
  });
55
71
  const allowance = this.erc20Interface.decodeFunctionResult('allowance', allowanceRaw);
56
- return BigInt(allowance.toString()) >= BigInt(amount);
72
+ return allowance.toString();
57
73
  }
58
74
  async getApproveSimpleParam(token, target, amount) {
59
75
  const hasAllowance = await this.hasAugustusAllowance(token, target, amount);
@@ -1 +1 @@
1
- {"version":3,"file":"simple-exchange.js","sourceRoot":"","sources":["../../src/dex/simple-exchange.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"simple-exchange.js","sourceRoot":"","sources":["../../src/dex/simple-exchange.ts"],"names":[],"mappings":";;;;;;AAAA,4CAA+C;AAC/C,gEAAiD;AAGjD,4CAA2D;AAC3D,qGAAqE;AACrE,mEAAyC;AACzC,yEAA+C;AAC/C,oCAAwC;AACxC,4CAAwC;AAKxC;;;;;;;GAOG;AACU,QAAA,uBAAuB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AACjD,MAAM,qCAAqC,GAAG,GAAG,EAAE,CACxD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,+BAAuB,CAAC,CAAC;AAD/D,QAAA,qCAAqC,yCAC0B;AAE5E,MAAa,cAAc;IAoBzB,YAAY,SAAqB,EAAS,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;QAdxD,mBAAc,GAAG,KAAK,CAAC;QACvB,6BAAwB,GAAG,KAAK,CAAC;QAc/B,IAAI,CAAC,gBAAgB,GAAG,IAAI,eAAS,CAAC,qCAAmB,CAAC,CAAC;QAC3D,IAAI,CAAC,cAAc,GAAG,IAAI,eAAS,CAAC,oBAAQ,CAAC,CAAC;QAC9C,IAAI,CAAC,aAAa,GAAG,IAAI,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAC1D,oBAAqB,CACtB,CAAC;QACF,IAAI,CAAC,QAAQ,GAAG,sBAA8B,CAAC;QAE/C,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;QAC7C,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC;QAC7D,IAAI,CAAC,iBAAiB,GAAG,IAAI,eAAS,CAAC,uBAAW,CAAC,CAAC;QACpD,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,YAAY,CAAC;QACvC,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;QAE7B,IAAI,CAAC,SAAS;YACZ,GAAG,wBAAY,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,cAAc,CAAC,WAAW,EAAE,CAAC;QAE7E,IAAI,CAAC,aAAa;YAChB,GAAG,wBAAY,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,SAAS,CAAC,WAAW,EAAE,CAAC;QAExE,sEAAsE;QACtE,IAAI,CAAC,gBAAgB;YACnB,GAAG,wBAAY,IAAI,IAAI,CAAC,OAAO,WAAW,CAAC,WAAW,EAAE,CAAC;IAC7D,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAChC,KAAc,EACd,MAAe,EACf,MAAc;QAEd,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,yBAAa,CAAC,WAAW,EAAE;YAAE,OAAO,IAAI,CAAC;QACrE,MAAM,QAAQ,GAAG,GAAG,KAAK,IAAI,MAAM,EAAE,CAAC;QAEtC,4FAA4F;QAC5F,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CACjD,IAAI,CAAC,gBAAgB,EACrB,QAAQ,CACT,CAAC;QAEF,IAAI,gBAAgB;YAAE,OAAO,IAAI,CAAC;QAElC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,CACvC,IAAI,CAAC,eAAe,EACpB,KAAK,EACL,MAAM,CACP,CAAC;QACF,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;QAEvD,IAAI,UAAU;YAAE,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;QAEvE,OAAO,UAAU,CAAC;IACpB,CAAC;IAEO,KAAK,CAAC,YAAY,CACxB,OAAgB,EAChB,KAAc,EACd,MAAe;QAEf,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,WAAW,EAAE;YACxE,OAAO;YACP,MAAM;SACP,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;YAChD,EAAE,EAAE,KAAK;YACT,IAAI,EAAE,aAAa;SACpB,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,oBAAoB,CACxD,WAAW,EACX,YAAY,CACb,CAAC;QAEF,OAAO,SAAS,CAAC,QAAQ,EAAE,CAAC;IAC9B,CAAC;IAES,KAAK,CAAC,qBAAqB,CACnC,KAAc,EACd,MAAe,EACf,MAAc;QAEd,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAC5E,IAAI,YAAY,EAAE;YAChB,OAAO;gBACL,OAAO,EAAE,EAAE;gBACX,QAAQ,EAAE,EAAE;gBACZ,MAAM,EAAE,EAAE;gBACV,UAAU,EAAE,GAAG;aAChB,CAAC;SACH;QAED,MAAM,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAC9D,SAAS,EACT,CAAC,KAAK,EAAE,MAAM,EAAE,oBAAQ,CAAC,CAC1B,CAAC;QAEF,OAAO;YACL,OAAO,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC;YAC/B,QAAQ,EAAE,CAAC,eAAe,CAAC;YAC3B,MAAM,EAAE,CAAC,GAAG,CAAC;YACb,UAAU,EAAE,GAAG;SAChB,CAAC;IACJ,CAAC;IAES,KAAK,CAAC,qCAAqC,CACnD,GAAY,EACZ,SAAyB,EACzB,IAAa,EACb,UAA0B,EAC1B,YAAoB,EACpB,UAAmB,EACnB,OAAiB,EACjB,aAA6B,GAAG;QAEhC,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,qBAAqB,CACnD,GAAG,EACH,OAAO,IAAI,UAAU,EACrB,SAAS,CACV,CAAC;QACF,MAAM,SAAS,GAAG,CAChB,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,IAAA,oBAAY,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAClE,CAAC,QAAQ,EAAE,CAAC;QAEb,OAAO;YACL,OAAO,EAAE,CAAC,GAAG,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC;YAC9C,QAAQ,EAAE,CAAC,GAAG,YAAY,CAAC,QAAQ,EAAE,YAAY,CAAC;YAClD,MAAM,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC;YAC3C,UAAU;SACX,CAAC;IACJ,CAAC;CACF;AAtJD,wCAsJC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@paraswap/dex-lib",
3
- "version": "2.42.7",
3
+ "version": "2.42.8",
4
4
  "main": "build/index.js",
5
5
  "types": "build/index.d.ts",
6
6
  "repository": "https://github.com/paraswap/paraswap-dex-lib",
@@ -9,7 +9,7 @@ import augustusABI from '../abi/augustus.json';
9
9
  import { isETHAddress } from '../utils';
10
10
  import { MAX_UINT } from '../constants';
11
11
  import Web3 from 'web3';
12
- import { IDexHelper } from '../dex-helper';
12
+ import { ICache, IDexHelper } from '../dex-helper';
13
13
  import { AbiItem } from 'web3-utils';
14
14
 
15
15
  /*
@@ -36,11 +36,13 @@ export class SimpleExchange {
36
36
  protected augustusAddress: Address;
37
37
  protected augustusInterface: Interface;
38
38
  private provider: Web3;
39
+ private cache: ICache;
39
40
 
40
41
  protected network: number;
41
42
  protected dexmapKey: string;
42
43
 
43
44
  readonly cacheStateKey: string;
45
+ private readonly cacheApprovesKey: string;
44
46
 
45
47
  constructor(dexHelper: IDexHelper, public dexKey: string) {
46
48
  this.simpleSwapHelper = new Interface(SimpleSwapHelperABI);
@@ -54,12 +56,17 @@ export class SimpleExchange {
54
56
  this.augustusAddress = dexHelper.config.data.augustusAddress;
55
57
  this.augustusInterface = new Interface(augustusABI);
56
58
  this.provider = dexHelper.web3Provider;
59
+ this.cache = dexHelper.cache;
57
60
 
58
61
  this.dexmapKey =
59
62
  `${CACHE_PREFIX}_${this.network}_${this.dexKey}_poolconfigs`.toLowerCase();
60
63
 
61
64
  this.cacheStateKey =
62
65
  `${CACHE_PREFIX}_${this.network}_${this.dexKey}_states`.toLowerCase();
66
+
67
+ // if there's anything else to cache, this name could be more abstract
68
+ this.cacheApprovesKey =
69
+ `${CACHE_PREFIX}_${this.network}_approves`.toLowerCase();
63
70
  }
64
71
 
65
72
  private async hasAugustusAllowance(
@@ -68,9 +75,35 @@ export class SimpleExchange {
68
75
  amount: string,
69
76
  ): Promise<boolean> {
70
77
  if (token.toLowerCase() === ETHER_ADDRESS.toLowerCase()) return true;
78
+ const cacheKey = `${token}_${target}`;
71
79
 
72
- const allowanceData = this.erc20Interface.encodeFunctionData('allowance', [
80
+ // as approve is given to an infinite amount, we can cache only the target and token address
81
+ const isCachedApproved = await this.cache.sismember(
82
+ this.cacheApprovesKey,
83
+ cacheKey,
84
+ );
85
+
86
+ if (isCachedApproved) return true;
87
+
88
+ const allowance = await this.getAllowance(
73
89
  this.augustusAddress,
90
+ token,
91
+ target,
92
+ );
93
+ const isApproved = BigInt(allowance) >= BigInt(amount);
94
+
95
+ if (isApproved) await this.cache.sadd(this.cacheApprovesKey, cacheKey);
96
+
97
+ return isApproved;
98
+ }
99
+
100
+ private async getAllowance(
101
+ spender: Address,
102
+ token: Address,
103
+ target: Address,
104
+ ): Promise<string> {
105
+ const allowanceData = this.erc20Interface.encodeFunctionData('allowance', [
106
+ spender,
74
107
  target,
75
108
  ]);
76
109
 
@@ -83,7 +116,8 @@ export class SimpleExchange {
83
116
  'allowance',
84
117
  allowanceRaw,
85
118
  );
86
- return BigInt(allowance.toString()) >= BigInt(amount);
119
+
120
+ return allowance.toString();
87
121
  }
88
122
 
89
123
  protected async getApproveSimpleParam(
package/.idea/aws.xml DELETED
@@ -1,17 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="accountSettings">
4
- <option name="activeProfile" value="profile:default" />
5
- <option name="activeRegion" value="us-east-1" />
6
- <option name="recentlyUsedProfiles">
7
- <list>
8
- <option value="profile:default" />
9
- </list>
10
- </option>
11
- <option name="recentlyUsedRegions">
12
- <list>
13
- <option value="us-east-1" />
14
- </list>
15
- </option>
16
- </component>
17
- </project>
@@ -1,19 +0,0 @@
1
- <component name="ProjectCodeStyleConfiguration">
2
- <code_scheme name="Project" version="173">
3
- <ScalaCodeStyleSettings>
4
- <option name="MULTILINE_STRING_CLOSING_QUOTES_ON_NEW_LINE" value="true" />
5
- </ScalaCodeStyleSettings>
6
- <TypeScriptCodeStyleSettings version="0">
7
- <option name="SPACE_WITHIN_ARRAY_INITIALIZER_BRACKETS" value="true" />
8
- <option name="USE_DOUBLE_QUOTES" value="false" />
9
- <option name="SPACES_WITHIN_IMPORTS" value="true" />
10
- </TypeScriptCodeStyleSettings>
11
- <codeStyleSettings language="TypeScript">
12
- <indentOptions>
13
- <option name="INDENT_SIZE" value="2" />
14
- <option name="CONTINUATION_INDENT_SIZE" value="2" />
15
- <option name="TAB_SIZE" value="2" />
16
- </indentOptions>
17
- </codeStyleSettings>
18
- </code_scheme>
19
- </component>
@@ -1,5 +0,0 @@
1
- <component name="ProjectCodeStyleConfiguration">
2
- <state>
3
- <option name="PREFERRED_PROJECT_CODE_STYLE" value="Default" />
4
- </state>
5
- </component>
package/.idea/misc.xml DELETED
@@ -1,6 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="ProjectRootManager">
4
- <output url="file://$PROJECT_DIR$/out" />
5
- </component>
6
- </project>
package/.idea/modules.xml DELETED
@@ -1,8 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="ProjectModuleManager">
4
- <modules>
5
- <module fileurl="file://$PROJECT_DIR$/.idea/paraswap-dex-lib.iml" filepath="$PROJECT_DIR$/.idea/paraswap-dex-lib.iml" />
6
- </modules>
7
- </component>
8
- </project>
@@ -1,9 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <module type="JAVA_MODULE" version="4">
3
- <component name="NewModuleRootManager" inherit-compiler-output="true">
4
- <exclude-output />
5
- <content url="file://$MODULE_DIR$" />
6
- <orderEntry type="inheritedJdk" />
7
- <orderEntry type="sourceFolder" forTests="false" />
8
- </component>
9
- </module>
@@ -1,7 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="PrettierConfiguration">
4
- <option name="myRunOnSave" value="true" />
5
- <option name="myRunOnReformat" value="true" />
6
- </component>
7
- </project>
package/.idea/vcs.xml DELETED
@@ -1,6 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="VcsDirectoryMappings">
4
- <mapping directory="" vcs="Git" />
5
- </component>
6
- </project>