@paraswap/dex-lib 2.42.8 → 2.42.9

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 (204) hide show
  1. package/build/abi/kyberswap-elastic/IAntiSnipAttackPositionManager.json +1276 -0
  2. package/build/abi/kyberswap-elastic/IFactory.json +550 -0
  3. package/build/abi/kyberswap-elastic/IPool.json +1042 -0
  4. package/build/abi/kyberswap-elastic/IQuoterV2.json +226 -0
  5. package/build/abi/kyberswap-elastic/IRouter.json +239 -0
  6. package/build/abi/kyberswap-elastic/TicksFeesReader.json +142 -0
  7. package/build/abi/wombat/asset.json +769 -0
  8. package/build/abi/wombat/bmw.json +1247 -0
  9. package/build/abi/wombat/pool.json +1364 -0
  10. package/build/config.js +2 -2
  11. package/build/dex/baseswap-v3/baseswap-v3-factory.d.ts +26 -0
  12. package/build/dex/baseswap-v3/baseswap-v3-factory.js +44 -0
  13. package/build/dex/baseswap-v3/baseswap-v3-factory.js.map +1 -0
  14. package/build/dex/baseswap-v3/baseswap-v3-pool.d.ts +46 -0
  15. package/build/dex/baseswap-v3/baseswap-v3-pool.js +312 -0
  16. package/build/dex/baseswap-v3/baseswap-v3-pool.js.map +1 -0
  17. package/build/dex/baseswap-v3/baseswap-v3.d.ts +71 -0
  18. package/build/dex/baseswap-v3/baseswap-v3.js +752 -0
  19. package/build/dex/baseswap-v3/baseswap-v3.js.map +1 -0
  20. package/build/dex/baseswap-v3/config.d.ts +9 -0
  21. package/build/dex/baseswap-v3/config.js +48 -0
  22. package/build/dex/baseswap-v3/config.js.map +1 -0
  23. package/build/dex/baseswap-v3/constants.d.ts +28 -0
  24. package/build/dex/baseswap-v3/constants.js +35 -0
  25. package/build/dex/baseswap-v3/constants.js.map +1 -0
  26. package/build/dex/baseswap-v3/contract-math/BitMath.d.ts +4 -0
  27. package/build/dex/baseswap-v3/contract-math/BitMath.js +93 -0
  28. package/build/dex/baseswap-v3/contract-math/BitMath.js.map +1 -0
  29. package/build/dex/baseswap-v3/contract-math/FixedPoint128.d.ts +3 -0
  30. package/build/dex/baseswap-v3/contract-math/FixedPoint128.js +8 -0
  31. package/build/dex/baseswap-v3/contract-math/FixedPoint128.js.map +1 -0
  32. package/build/dex/baseswap-v3/contract-math/FixedPoint96.d.ts +4 -0
  33. package/build/dex/baseswap-v3/contract-math/FixedPoint96.js +9 -0
  34. package/build/dex/baseswap-v3/contract-math/FixedPoint96.js.map +1 -0
  35. package/build/dex/baseswap-v3/contract-math/FullMath.d.ts +4 -0
  36. package/build/dex/baseswap-v3/contract-math/FullMath.js +19 -0
  37. package/build/dex/baseswap-v3/contract-math/FullMath.js.map +1 -0
  38. package/build/dex/baseswap-v3/contract-math/LiquidityMath.d.ts +3 -0
  39. package/build/dex/baseswap-v3/contract-math/LiquidityMath.js +22 -0
  40. package/build/dex/baseswap-v3/contract-math/LiquidityMath.js.map +1 -0
  41. package/build/dex/baseswap-v3/contract-math/Oracle.d.ts +10 -0
  42. package/build/dex/baseswap-v3/contract-math/Oracle.js +133 -0
  43. package/build/dex/baseswap-v3/contract-math/Oracle.js.map +1 -0
  44. package/build/dex/baseswap-v3/contract-math/SqrtPriceMath.d.ts +10 -0
  45. package/build/dex/baseswap-v3/contract-math/SqrtPriceMath.js +91 -0
  46. package/build/dex/baseswap-v3/contract-math/SqrtPriceMath.js.map +1 -0
  47. package/build/dex/baseswap-v3/contract-math/SwapMath.d.ts +8 -0
  48. package/build/dex/baseswap-v3/contract-math/SwapMath.js +70 -0
  49. package/build/dex/baseswap-v3/contract-math/SwapMath.js.map +1 -0
  50. package/build/dex/baseswap-v3/contract-math/Tick.d.ts +7 -0
  51. package/build/dex/baseswap-v3/contract-math/Tick.js +45 -0
  52. package/build/dex/baseswap-v3/contract-math/Tick.js.map +1 -0
  53. package/build/dex/baseswap-v3/contract-math/TickBitMap.d.ts +7 -0
  54. package/build/dex/baseswap-v3/contract-math/TickBitMap.js +84 -0
  55. package/build/dex/baseswap-v3/contract-math/TickBitMap.js.map +1 -0
  56. package/build/dex/baseswap-v3/contract-math/TickMath.d.ts +8 -0
  57. package/build/dex/baseswap-v3/contract-math/TickMath.js +162 -0
  58. package/build/dex/baseswap-v3/contract-math/TickMath.js.map +1 -0
  59. package/build/dex/baseswap-v3/contract-math/UnsafeMath.d.ts +3 -0
  60. package/build/dex/baseswap-v3/contract-math/UnsafeMath.js +10 -0
  61. package/build/dex/baseswap-v3/contract-math/UnsafeMath.js.map +1 -0
  62. package/build/dex/baseswap-v3/contract-math/uniswap-v3-math.d.ts +37 -0
  63. package/build/dex/baseswap-v3/contract-math/uniswap-v3-math.js +393 -0
  64. package/build/dex/baseswap-v3/contract-math/uniswap-v3-math.js.map +1 -0
  65. package/build/dex/baseswap-v3/contract-math/utils.d.ts +7 -0
  66. package/build/dex/baseswap-v3/contract-math/utils.js +42 -0
  67. package/build/dex/baseswap-v3/contract-math/utils.js.map +1 -0
  68. package/build/dex/baseswap-v3/types.d.ts +164 -0
  69. package/build/dex/baseswap-v3/types.js +9 -0
  70. package/build/dex/baseswap-v3/types.js.map +1 -0
  71. package/build/dex/baseswap-v3/utils.d.ts +6 -0
  72. package/build/dex/baseswap-v3/utils.js +65 -0
  73. package/build/dex/baseswap-v3/utils.js.map +1 -0
  74. package/build/dex/gmx/config.js +34 -0
  75. package/build/dex/gmx/config.js.map +1 -1
  76. package/build/dex/hello/config.d.ts +4 -0
  77. package/build/dex/hello/config.js +15 -0
  78. package/build/dex/hello/config.js.map +1 -0
  79. package/build/dex/hello/hello-pool.d.ts +39 -0
  80. package/build/dex/hello/hello-pool.js +64 -0
  81. package/build/dex/hello/hello-pool.js.map +1 -0
  82. package/build/dex/hello/hello.d.ts +37 -0
  83. package/build/dex/hello/hello.js +126 -0
  84. package/build/dex/hello/hello.js.map +1 -0
  85. package/build/dex/hello/types.d.ts +6 -0
  86. package/build/dex/hello/types.js +3 -0
  87. package/build/dex/hello/types.js.map +1 -0
  88. package/build/dex/kyberswap-elastic/config.d.ts +4 -0
  89. package/build/dex/kyberswap-elastic/config.js +80 -0
  90. package/build/dex/kyberswap-elastic/config.js.map +1 -0
  91. package/build/dex/kyberswap-elastic/constants.d.ts +17 -0
  92. package/build/dex/kyberswap-elastic/constants.js +42 -0
  93. package/build/dex/kyberswap-elastic/constants.js.map +1 -0
  94. package/build/dex/kyberswap-elastic/contract-math/FixedPoint96.d.ts +4 -0
  95. package/build/dex/kyberswap-elastic/contract-math/FixedPoint96.js +9 -0
  96. package/build/dex/kyberswap-elastic/contract-math/FixedPoint96.js.map +1 -0
  97. package/build/dex/kyberswap-elastic/contract-math/FullMath.d.ts +5 -0
  98. package/build/dex/kyberswap-elastic/contract-math/FullMath.js +22 -0
  99. package/build/dex/kyberswap-elastic/contract-math/FullMath.js.map +1 -0
  100. package/build/dex/kyberswap-elastic/contract-math/LiqDeltaMath.d.ts +3 -0
  101. package/build/dex/kyberswap-elastic/contract-math/LiqDeltaMath.js +12 -0
  102. package/build/dex/kyberswap-elastic/contract-math/LiqDeltaMath.js.map +1 -0
  103. package/build/dex/kyberswap-elastic/contract-math/LiquidityMath.d.ts +3 -0
  104. package/build/dex/kyberswap-elastic/contract-math/LiquidityMath.js +22 -0
  105. package/build/dex/kyberswap-elastic/contract-math/LiquidityMath.js.map +1 -0
  106. package/build/dex/kyberswap-elastic/contract-math/QtyDeltaMath.d.ts +5 -0
  107. package/build/dex/kyberswap-elastic/contract-math/QtyDeltaMath.js +25 -0
  108. package/build/dex/kyberswap-elastic/contract-math/QtyDeltaMath.js.map +1 -0
  109. package/build/dex/kyberswap-elastic/contract-math/QuadMath.d.ts +4 -0
  110. package/build/dex/kyberswap-elastic/contract-math/QuadMath.js +27 -0
  111. package/build/dex/kyberswap-elastic/contract-math/QuadMath.js.map +1 -0
  112. package/build/dex/kyberswap-elastic/contract-math/ReinvestmentMath.d.ts +3 -0
  113. package/build/dex/kyberswap-elastic/contract-math/ReinvestmentMath.js +14 -0
  114. package/build/dex/kyberswap-elastic/contract-math/ReinvestmentMath.js.map +1 -0
  115. package/build/dex/kyberswap-elastic/contract-math/SafeCast.d.ts +8 -0
  116. package/build/dex/kyberswap-elastic/contract-math/SafeCast.js +30 -0
  117. package/build/dex/kyberswap-elastic/contract-math/SafeCast.js.map +1 -0
  118. package/build/dex/kyberswap-elastic/contract-math/SqrtPriceMath.d.ts +10 -0
  119. package/build/dex/kyberswap-elastic/contract-math/SqrtPriceMath.js +91 -0
  120. package/build/dex/kyberswap-elastic/contract-math/SqrtPriceMath.js.map +1 -0
  121. package/build/dex/kyberswap-elastic/contract-math/SwapMath.d.ts +13 -0
  122. package/build/dex/kyberswap-elastic/contract-math/SwapMath.js +188 -0
  123. package/build/dex/kyberswap-elastic/contract-math/SwapMath.js.map +1 -0
  124. package/build/dex/kyberswap-elastic/contract-math/TickLinkedList.d.ts +6 -0
  125. package/build/dex/kyberswap-elastic/contract-math/TickLinkedList.js +41 -0
  126. package/build/dex/kyberswap-elastic/contract-math/TickLinkedList.js.map +1 -0
  127. package/build/dex/kyberswap-elastic/contract-math/TickMath.d.ts +9 -0
  128. package/build/dex/kyberswap-elastic/contract-math/TickMath.js +165 -0
  129. package/build/dex/kyberswap-elastic/contract-math/TickMath.js.map +1 -0
  130. package/build/dex/kyberswap-elastic/contract-math/UnsafeMath.d.ts +3 -0
  131. package/build/dex/kyberswap-elastic/contract-math/UnsafeMath.js +10 -0
  132. package/build/dex/kyberswap-elastic/contract-math/UnsafeMath.js.map +1 -0
  133. package/build/dex/kyberswap-elastic/contract-math/kyberswap-elastic-math.d.ts +28 -0
  134. package/build/dex/kyberswap-elastic/contract-math/kyberswap-elastic-math.js +502 -0
  135. package/build/dex/kyberswap-elastic/contract-math/kyberswap-elastic-math.js.map +1 -0
  136. package/build/dex/kyberswap-elastic/contract-math/utils.d.ts +3 -0
  137. package/build/dex/kyberswap-elastic/contract-math/utils.js +16 -0
  138. package/build/dex/kyberswap-elastic/contract-math/utils.js.map +1 -0
  139. package/build/dex/kyberswap-elastic/errors.d.ts +2 -0
  140. package/build/dex/kyberswap-elastic/errors.js +6 -0
  141. package/build/dex/kyberswap-elastic/errors.js.map +1 -0
  142. package/build/dex/kyberswap-elastic/kyberswap-elastic-pool.d.ts +80 -0
  143. package/build/dex/kyberswap-elastic/kyberswap-elastic-pool.js +458 -0
  144. package/build/dex/kyberswap-elastic/kyberswap-elastic-pool.js.map +1 -0
  145. package/build/dex/kyberswap-elastic/kyberswap-elastic.d.ts +53 -0
  146. package/build/dex/kyberswap-elastic/kyberswap-elastic.js +610 -0
  147. package/build/dex/kyberswap-elastic/kyberswap-elastic.js.map +1 -0
  148. package/build/dex/kyberswap-elastic/types.d.ts +134 -0
  149. package/build/dex/kyberswap-elastic/types.js +9 -0
  150. package/build/dex/kyberswap-elastic/types.js.map +1 -0
  151. package/build/dex/kyberswap-elastic/utils/decoders.d.ts +9 -0
  152. package/build/dex/kyberswap-elastic/utils/decoders.js +78 -0
  153. package/build/dex/kyberswap-elastic/utils/decoders.js.map +1 -0
  154. package/build/dex/morphex/config.d.ts +11 -0
  155. package/build/dex/morphex/config.js +43 -0
  156. package/build/dex/morphex/config.js.map +1 -0
  157. package/build/dex/morphex/morphex.d.ts +25 -0
  158. package/build/dex/morphex/morphex.js +19 -0
  159. package/build/dex/morphex/morphex.js.map +1 -0
  160. package/build/dex/my-test-dex/config.d.ts +4 -0
  161. package/build/dex/my-test-dex/config.js +15 -0
  162. package/build/dex/my-test-dex/config.js.map +1 -0
  163. package/build/dex/my-test-dex/my-test-dex-pool.d.ts +39 -0
  164. package/build/dex/my-test-dex/my-test-dex-pool.js +64 -0
  165. package/build/dex/my-test-dex/my-test-dex-pool.js.map +1 -0
  166. package/build/dex/my-test-dex/my-test-dex.d.ts +37 -0
  167. package/build/dex/my-test-dex/my-test-dex.js +126 -0
  168. package/build/dex/my-test-dex/my-test-dex.js.map +1 -0
  169. package/build/dex/my-test-dex/types.d.ts +6 -0
  170. package/build/dex/my-test-dex/types.js +3 -0
  171. package/build/dex/my-test-dex/types.js.map +1 -0
  172. package/build/dex/solidly/forks-override/fvm.d.ts +20 -0
  173. package/build/dex/solidly/forks-override/fvm.js +42 -0
  174. package/build/dex/solidly/forks-override/fvm.js.map +1 -0
  175. package/build/dex/wombat/config.d.ts +5 -0
  176. package/build/dex/wombat/config.js +50 -0
  177. package/build/dex/wombat/config.js.map +1 -0
  178. package/build/dex/wombat/types.d.ts +33 -0
  179. package/build/dex/wombat/types.js +3 -0
  180. package/build/dex/wombat/types.js.map +1 -0
  181. package/build/dex/wombat/utils.d.ts +9 -0
  182. package/build/dex/wombat/utils.js +66 -0
  183. package/build/dex/wombat/utils.js.map +1 -0
  184. package/build/dex/wombat/wombat-bmw.d.ts +40 -0
  185. package/build/dex/wombat/wombat-bmw.js +145 -0
  186. package/build/dex/wombat/wombat-bmw.js.map +1 -0
  187. package/build/dex/wombat/wombat-pool.d.ts +22 -0
  188. package/build/dex/wombat/wombat-pool.js +161 -0
  189. package/build/dex/wombat/wombat-pool.js.map +1 -0
  190. package/build/dex/wombat/wombat-quoter.d.ts +16 -0
  191. package/build/dex/wombat/wombat-quoter.js +176 -0
  192. package/build/dex/wombat/wombat-quoter.js.map +1 -0
  193. package/build/dex/wombat/wombat.d.ts +55 -0
  194. package/build/dex/wombat/wombat.js +292 -0
  195. package/build/dex/wombat/wombat.js.map +1 -0
  196. package/package.json +1 -1
  197. package/src/config.ts +2 -2
  198. package/src/dex/gmx/config.ts +34 -0
  199. package/src/dex/gmx/gmx-e2e.test.ts +153 -0
  200. package/src/dex/gmx/gmx-integration.test.ts +109 -12
  201. package/tests/constants-e2e.ts +4 -0
  202. package/.vscode/launch.json +0 -38
  203. package/.vscode/settings.json +0 -2
  204. package/.vscode/tasks.json +0 -15
@@ -0,0 +1 @@
1
+ {"version":3,"file":"my-test-dex.js","sourceRoot":"","sources":["../../../src/dex/my-test-dex/my-test-dex.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { Address } from '../../types';
2
+ export declare type PoolState = {};
3
+ export declare type MyTestDexData = {
4
+ exchange: Address;
5
+ };
6
+ export declare type DexParams = {};
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/dex/my-test-dex/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,20 @@
1
+ import { Solidly } from '../solidly';
2
+ import { SolidlyPair } from '../types';
3
+ import { Network } from '../../../constants';
4
+ import { IDexHelper } from '../../../dex-helper';
5
+ export declare class Fvm extends Solidly {
6
+ protected network: Network;
7
+ protected dexHelper: IDexHelper;
8
+ static dexKeysWithNetwork: {
9
+ key: string;
10
+ networks: Network[];
11
+ }[];
12
+ constructor(network: Network, dexKey: string, dexHelper: IDexHelper);
13
+ protected getFeesMultiCallData(pair: SolidlyPair): {
14
+ callEntry: {
15
+ target: string;
16
+ callData: string;
17
+ };
18
+ callDecoder: (values: any[]) => number;
19
+ };
20
+ }
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Fvm = void 0;
7
+ const solidly_1 = require("../solidly");
8
+ const abi_1 = require("@ethersproject/abi");
9
+ const utils_1 = require("../../../utils");
10
+ const config_1 = require("../config");
11
+ const lodash_1 = __importDefault(require("lodash"));
12
+ const FvmFactoryABI = [
13
+ {
14
+ inputs: [{ internalType: '_pair', name: '_stable', type: 'address' }],
15
+ name: 'getFee',
16
+ outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
17
+ stateMutability: 'view',
18
+ type: 'function',
19
+ },
20
+ ];
21
+ const fvmFactoryIface = new abi_1.Interface(FvmFactoryABI);
22
+ class Fvm extends solidly_1.Solidly {
23
+ constructor(network, dexKey, dexHelper) {
24
+ super(network, dexKey, dexHelper, true);
25
+ this.network = network;
26
+ this.dexHelper = dexHelper;
27
+ }
28
+ getFeesMultiCallData(pair) {
29
+ const callEntry = {
30
+ target: this.factoryAddress,
31
+ callData: fvmFactoryIface.encodeFunctionData('getFee', [pair.exchange]),
32
+ };
33
+ const callDecoder = (values) => parseInt(fvmFactoryIface.decodeFunctionResult('getFee', values)[0].toString());
34
+ return {
35
+ callEntry,
36
+ callDecoder,
37
+ };
38
+ }
39
+ }
40
+ exports.Fvm = Fvm;
41
+ Fvm.dexKeysWithNetwork = (0, utils_1.getDexKeysWithNetwork)(lodash_1.default.pick(config_1.SolidlyConfig, ['Fvm']));
42
+ //# sourceMappingURL=fvm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fvm.js","sourceRoot":"","sources":["../../../../src/dex/solidly/forks-override/fvm.ts"],"names":[],"mappings":";;;;;;AAAA,wCAAqC;AAIrC,4CAA+C;AAC/C,0CAAuD;AACvD,sCAA0C;AAC1C,oDAAuB;AAEvB,MAAM,aAAa,GAAG;IACpB;QACE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACrE,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACjE,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;CACF,CAAC;AAEF,MAAM,eAAe,GAAG,IAAI,eAAS,CAAC,aAAa,CAAC,CAAC;AAErD,MAAa,GAAI,SAAQ,iBAAO;IAI9B,YACY,OAAgB,EAC1B,MAAc,EACJ,SAAqB;QAE/B,KAAK,CACH,OAAO,EACP,MAAM,EACN,SAAS,EACT,IAAI,CACL,CAAC;QATQ,YAAO,GAAP,OAAO,CAAS;QAEhB,cAAS,GAAT,SAAS,CAAY;IAQjC,CAAC;IAES,oBAAoB,CAAC,IAAiB;QAC9C,MAAM,SAAS,GAAG;YAChB,MAAM,EAAE,IAAI,CAAC,cAAc;YAC3B,QAAQ,EAAE,eAAe,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SACxE,CAAC;QACF,MAAM,WAAW,GAAG,CAAC,MAAa,EAAE,EAAE,CACpC,QAAQ,CACN,eAAe,CAAC,oBAAoB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CACrE,CAAC;QAEJ,OAAO;YACL,SAAS;YACT,WAAW;SACZ,CAAC;IACJ,CAAC;;AA/BH,kBAgCC;AA/Be,sBAAkB,GAC9B,IAAA,6BAAqB,EAAC,gBAAC,CAAC,IAAI,CAAC,sBAAa,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { DexParams } from './types';
2
+ import { DexConfigMap, AdapterMappings } from '../../types';
3
+ export declare const WombatConfig: DexConfigMap<DexParams>;
4
+ export declare const Adapters: Record<number, AdapterMappings>;
5
+ export declare const LIQUIDITY_THRESHOLD_IN_USD = 100;
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LIQUIDITY_THRESHOLD_IN_USD = exports.Adapters = exports.WombatConfig = void 0;
4
+ const constants_1 = require("../../constants");
5
+ exports.WombatConfig = {
6
+ Wombat: {
7
+ [constants_1.Network.BSC]: {
8
+ bmwAddress: '0x489833311676B566f888119c29bd997Dc6C95830',
9
+ },
10
+ [constants_1.Network.ARBITRUM]: {
11
+ bmwAddress: '0x62A83C6791A3d7950D823BB71a38e47252b6b6F4',
12
+ },
13
+ },
14
+ };
15
+ exports.Adapters = {
16
+ [constants_1.Network.BSC]: {
17
+ [constants_1.SwapSide.SELL]: [
18
+ {
19
+ // TODO: implement
20
+ name: 'BscAdapter01',
21
+ index: 3,
22
+ },
23
+ ],
24
+ [constants_1.SwapSide.BUY]: [
25
+ {
26
+ // TODO: implement
27
+ name: 'BscBuyAdapter',
28
+ index: 1,
29
+ },
30
+ ],
31
+ },
32
+ [constants_1.Network.ARBITRUM]: {
33
+ [constants_1.SwapSide.SELL]: [
34
+ {
35
+ // TODO: implement
36
+ name: 'ArbitrumAdapter01',
37
+ index: 2,
38
+ },
39
+ ],
40
+ [constants_1.SwapSide.BUY]: [
41
+ {
42
+ // TODO: implement
43
+ name: 'ArbitrumBuyAdapter',
44
+ index: 1,
45
+ },
46
+ ],
47
+ },
48
+ };
49
+ exports.LIQUIDITY_THRESHOLD_IN_USD = 100;
50
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/dex/wombat/config.ts"],"names":[],"mappings":";;;AAEA,+CAAoD;AAEvC,QAAA,YAAY,GAA4B;IACnD,MAAM,EAAE;QACN,CAAC,mBAAO,CAAC,GAAG,CAAC,EAAE;YACb,UAAU,EAAE,4CAA4C;SACzD;QACD,CAAC,mBAAO,CAAC,QAAQ,CAAC,EAAE;YAClB,UAAU,EAAE,4CAA4C;SACzD;KACF;CACF,CAAC;AAEW,QAAA,QAAQ,GAAoC;IACvD,CAAC,mBAAO,CAAC,GAAG,CAAC,EAAE;QACb,CAAC,oBAAQ,CAAC,IAAI,CAAC,EAAE;YACf;gBACE,kBAAkB;gBAClB,IAAI,EAAE,cAAc;gBACpB,KAAK,EAAE,CAAC;aACT;SACF;QACD,CAAC,oBAAQ,CAAC,GAAG,CAAC,EAAE;YACd;gBACE,kBAAkB;gBAClB,IAAI,EAAE,eAAe;gBACrB,KAAK,EAAE,CAAC;aACT;SACF;KACF;IACD,CAAC,mBAAO,CAAC,QAAQ,CAAC,EAAE;QAClB,CAAC,oBAAQ,CAAC,IAAI,CAAC,EAAE;YACf;gBACE,kBAAkB;gBAClB,IAAI,EAAE,mBAAmB;gBACzB,KAAK,EAAE,CAAC;aACT;SACF;QACD,CAAC,oBAAQ,CAAC,GAAG,CAAC,EAAE;YACd;gBACE,kBAAkB;gBAClB,IAAI,EAAE,oBAAoB;gBAC1B,KAAK,EAAE,CAAC;aACT;SACF;KACF;CACF,CAAC;AAEW,QAAA,0BAA0B,GAAG,GAAG,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { Address } from '../../types';
2
+ export declare type BmwState = {
3
+ pools: Address[];
4
+ };
5
+ export declare type PoolState = {
6
+ params: PoolParams;
7
+ underlyingAddresses: Address[];
8
+ asset: {
9
+ [underlyingAddress: string]: AssetState;
10
+ };
11
+ };
12
+ export declare type AssetState = {
13
+ address: Address;
14
+ paused: boolean;
15
+ cash: bigint;
16
+ liability: bigint;
17
+ underlyingTokenDecimals: number;
18
+ relativePrice?: bigint;
19
+ };
20
+ export declare type PoolParams = {
21
+ paused: boolean;
22
+ ampFactor: bigint;
23
+ haircutRate: bigint;
24
+ startCovRatio: bigint;
25
+ endCovRatio: bigint;
26
+ };
27
+ export declare type WombatData = {
28
+ exchange: Address;
29
+ };
30
+ export declare type DexParams = {
31
+ bmwAddress: Address;
32
+ };
33
+ export declare type MulticallResultOutputs = boolean | bigint | Address | number | undefined;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/dex/wombat/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ import { MultiResult } from '../../lib/multi-wrapper';
2
+ import { BytesLike } from 'ethers/lib/utils';
3
+ export declare const WAD: bigint;
4
+ export declare function wmul(x: bigint, y: bigint): bigint;
5
+ export declare function wdiv(x: bigint, y: bigint): bigint;
6
+ export declare function toWad(x: bigint, d: bigint): bigint;
7
+ export declare function fromWad(x: bigint, d: bigint): bigint;
8
+ export declare function sqrt(y: bigint, guess: bigint): bigint;
9
+ export declare const uint120ToBigInt: (result: MultiResult<BytesLike> | BytesLike) => bigint;
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.uint120ToBigInt = exports.sqrt = exports.fromWad = exports.toWad = exports.wdiv = exports.wmul = exports.WAD = void 0;
4
+ const bigint_constants_1 = require("../../bigint-constants");
5
+ const decoders_1 = require("../../lib/decoders");
6
+ exports.WAD = bigint_constants_1.BI_POWS[18];
7
+ function wmul(x, y) {
8
+ return (x * y + exports.WAD / 2n) / exports.WAD;
9
+ }
10
+ exports.wmul = wmul;
11
+ function wdiv(x, y) {
12
+ return (x * exports.WAD + y / 2n) / y;
13
+ }
14
+ exports.wdiv = wdiv;
15
+ // Convert x to WAD (18 decimals) from d decimals.
16
+ function toWad(x, d) {
17
+ if (d < 18n) {
18
+ return x * 10n ** (18n - d);
19
+ }
20
+ else if (d > 18n) {
21
+ return x / 10n ** (d - 18n);
22
+ }
23
+ return x;
24
+ }
25
+ exports.toWad = toWad;
26
+ // Convert x from WAD (18 decimals) to d decimals.
27
+ function fromWad(x, d) {
28
+ if (d < 18n) {
29
+ return x / 10n ** (18n - d);
30
+ }
31
+ else if (d > 18n) {
32
+ return x * 10n ** (d - 18n);
33
+ }
34
+ return x;
35
+ }
36
+ exports.fromWad = fromWad;
37
+ // Babylonian Method with initial guess (typecast as int)
38
+ function sqrt(y, guess) {
39
+ let z = 0n;
40
+ if (y > 3) {
41
+ if (guess > 0 && guess <= y) {
42
+ z = guess;
43
+ }
44
+ else if (guess < 0 && -guess <= y) {
45
+ z = -guess;
46
+ }
47
+ else {
48
+ z = y;
49
+ }
50
+ let x = (y / z + z) / 2n;
51
+ while (x != z) {
52
+ z = x;
53
+ x = (y / x + x) / 2n;
54
+ }
55
+ }
56
+ else if (y != 0n) {
57
+ z = 1n;
58
+ }
59
+ return z;
60
+ }
61
+ exports.sqrt = sqrt;
62
+ const uint120ToBigInt = (result) => {
63
+ return (0, decoders_1.generalDecoder)(result, ['uint120'], 0n, value => value[0].toBigInt());
64
+ };
65
+ exports.uint120ToBigInt = uint120ToBigInt;
66
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/dex/wombat/utils.ts"],"names":[],"mappings":";;;AAAA,6DAAiD;AAGjD,iDAAoD;AAEvC,QAAA,GAAG,GAAG,0BAAO,CAAC,EAAE,CAAC,CAAC;AAE/B,SAAgB,IAAI,CAAC,CAAS,EAAE,CAAS;IACvC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,WAAG,GAAG,EAAE,CAAC,GAAG,WAAG,CAAC;AAClC,CAAC;AAFD,oBAEC;AAED,SAAgB,IAAI,CAAC,CAAS,EAAE,CAAS;IACvC,OAAO,CAAC,CAAC,GAAG,WAAG,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;AAChC,CAAC;AAFD,oBAEC;AAED,kDAAkD;AAClD,SAAgB,KAAK,CAAC,CAAS,EAAE,CAAS;IACxC,IAAI,CAAC,GAAG,GAAG,EAAE;QACX,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;KAC7B;SAAM,IAAI,CAAC,GAAG,GAAG,EAAE;QAClB,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;KAC7B;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAPD,sBAOC;AACD,kDAAkD;AAClD,SAAgB,OAAO,CAAC,CAAS,EAAE,CAAS;IAC1C,IAAI,CAAC,GAAG,GAAG,EAAE;QACX,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;KAC7B;SAAM,IAAI,CAAC,GAAG,GAAG,EAAE;QAClB,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;KAC7B;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAPD,0BAOC;AAED,yDAAyD;AACzD,SAAgB,IAAI,CAAC,CAAS,EAAE,KAAa;IAC3C,IAAI,CAAC,GAAG,EAAE,CAAC;IACX,IAAI,CAAC,GAAG,CAAC,EAAE;QACT,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE;YAC3B,CAAC,GAAG,KAAK,CAAC;SACX;aAAM,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,EAAE;YACnC,CAAC,GAAG,CAAC,KAAK,CAAC;SACZ;aAAM;YACL,CAAC,GAAG,CAAC,CAAC;SACP;QACD,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC,EAAE;YACb,CAAC,GAAG,CAAC,CAAC;YACN,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;SACtB;KACF;SAAM,IAAI,CAAC,IAAI,EAAE,EAAE;QAClB,CAAC,GAAG,EAAE,CAAC;KACR;IAED,OAAO,CAAC,CAAC;AACX,CAAC;AApBD,oBAoBC;AAEM,MAAM,eAAe,GAAG,CAC7B,MAA0C,EAClC,EAAE;IACV,OAAO,IAAA,yBAAc,EAAC,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC/E,CAAC,CAAC;AAJW,QAAA,eAAe,mBAI1B"}
@@ -0,0 +1,40 @@
1
+ import { Interface } from '@ethersproject/abi';
2
+ import { LogDescription } from 'ethers/lib/utils';
3
+ import { DeepReadonly } from 'ts-essentials';
4
+ import { Address, Log, Logger } from '../../types';
5
+ import { StatefulEventSubscriber } from '../../stateful-event-subscriber';
6
+ import { IDexHelper } from '../../dex-helper';
7
+ import { BmwState } from './types';
8
+ export declare class WombatBmw extends StatefulEventSubscriber<BmwState> {
9
+ protected network: number;
10
+ protected dexHelper: IDexHelper;
11
+ protected bmwAddress: Address;
12
+ protected onAssetAdded: (pool: Address, asset2TokenMap: Map<Address, Address>, blockNumber: number) => void;
13
+ static readonly bmwInterface: Interface;
14
+ static readonly assetInterface: Interface;
15
+ static readonly poolInterface: Interface;
16
+ private readonly logDecoder;
17
+ private bmwContract;
18
+ private handlers;
19
+ constructor(dexKey: string, name: string, network: number, dexHelper: IDexHelper, logger: Logger, bmwAddress: Address, onAssetAdded: (pool: Address, asset2TokenMap: Map<Address, Address>, blockNumber: number) => void);
20
+ /**
21
+ * The function is called every time any of the subscribed
22
+ * addresses release log. The function accepts the current
23
+ * state, updates the state according to the log, and returns
24
+ * the updated state.
25
+ * @param state - Current state of event subscriber
26
+ * @param log - Log released by one of the subscribed addresses
27
+ * @returns Updates state of the event subscriber after the log
28
+ */
29
+ protected processLog(state: DeepReadonly<BmwState>, log: Readonly<Log>): Promise<DeepReadonly<BmwState> | null>;
30
+ /**
31
+ * The function generates state using on-chain calls. This
32
+ * function is called to regenerate state if the event based
33
+ * system fails to fetch events and the local state is no
34
+ * more correct.
35
+ * should be generated
36
+ * @returns state of the event subscriber at blocknumber
37
+ */
38
+ generateState(blockNumber: number): Promise<DeepReadonly<BmwState>>;
39
+ handleAdd(event: LogDescription, state: DeepReadonly<BmwState>, log: Readonly<Log>): Promise<DeepReadonly<BmwState> | null>;
40
+ }
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.WombatBmw = void 0;
7
+ const abi_1 = require("@ethersproject/abi");
8
+ const utils_1 = require("../../utils");
9
+ const stateful_event_subscriber_1 = require("../../stateful-event-subscriber");
10
+ const bmw_json_1 = __importDefault(require("../../abi/wombat/bmw.json"));
11
+ const asset_json_1 = __importDefault(require("../../abi/wombat/asset.json"));
12
+ const pool_json_1 = __importDefault(require("../../abi/wombat/pool.json"));
13
+ class WombatBmw extends stateful_event_subscriber_1.StatefulEventSubscriber {
14
+ constructor(dexKey, name, network, dexHelper, logger, bmwAddress, onAssetAdded) {
15
+ super(`${dexKey} ${name}`, `${dexKey}-${network} ${name}`, dexHelper, logger);
16
+ this.network = network;
17
+ this.dexHelper = dexHelper;
18
+ this.bmwAddress = bmwAddress;
19
+ this.onAssetAdded = onAssetAdded;
20
+ this.handlers = {};
21
+ this.logDecoder = (log) => WombatBmw.bmwInterface.parseLog(log);
22
+ this.addressesSubscribed = [this.bmwAddress];
23
+ this.bmwContract = new this.dexHelper.web3Provider.eth.Contract(bmw_json_1.default, this.bmwAddress);
24
+ // users-actions handlers
25
+ this.handlers['Add'] = this.handleAdd.bind(this);
26
+ }
27
+ /**
28
+ * The function is called every time any of the subscribed
29
+ * addresses release log. The function accepts the current
30
+ * state, updates the state according to the log, and returns
31
+ * the updated state.
32
+ * @param state - Current state of event subscriber
33
+ * @param log - Log released by one of the subscribed addresses
34
+ * @returns Updates state of the event subscriber after the log
35
+ */
36
+ async processLog(state, log) {
37
+ try {
38
+ const event = this.logDecoder(log);
39
+ if (event.name in this.handlers) {
40
+ return await this.handlers[event.name](event, state, log);
41
+ }
42
+ }
43
+ catch (e) {
44
+ (0, utils_1.catchParseLogError)(e, this.logger);
45
+ }
46
+ return null;
47
+ }
48
+ /**
49
+ * The function generates state using on-chain calls. This
50
+ * function is called to regenerate state if the event based
51
+ * system fails to fetch events and the local state is no
52
+ * more correct.
53
+ * should be generated
54
+ * @returns state of the event subscriber at blocknumber
55
+ */
56
+ async generateState(blockNumber) {
57
+ const bmwState = { pools: [] };
58
+ let inputs = [];
59
+ const poolLength = await this.bmwContract.methods
60
+ .poolLength()
61
+ .call({}, blockNumber);
62
+ for (let i = 0; i < poolLength; i++) {
63
+ inputs.push({
64
+ target: this.bmwAddress,
65
+ callData: WombatBmw.bmwInterface.encodeFunctionData('poolInfo', [i]),
66
+ });
67
+ }
68
+ let returnData = (await this.dexHelper.multiContract.methods
69
+ .aggregate(inputs)
70
+ .call({}, blockNumber)).returnData;
71
+ const lpTokens = returnData.map((data) => WombatBmw.bmwInterface
72
+ .decodeFunctionResult('poolInfo', data)[0]
73
+ .toLowerCase());
74
+ inputs = [];
75
+ for (const lpToken of lpTokens) {
76
+ inputs.push({
77
+ target: lpToken,
78
+ callData: WombatBmw.assetInterface.encodeFunctionData('underlyingToken'),
79
+ });
80
+ inputs.push({
81
+ target: lpToken,
82
+ callData: WombatBmw.assetInterface.encodeFunctionData('pool'),
83
+ });
84
+ }
85
+ returnData = (await this.dexHelper.multiContract.methods
86
+ .aggregate(inputs)
87
+ .call({}, blockNumber)).returnData;
88
+ const pool2AssetInfo = new Map();
89
+ let i = 0;
90
+ for (const lpToken of lpTokens) {
91
+ const underlyingToken = WombatBmw.assetInterface
92
+ .decodeFunctionResult('underlyingToken', returnData[i++])[0]
93
+ .toLowerCase();
94
+ const pool = WombatBmw.assetInterface
95
+ .decodeFunctionResult('pool', returnData[i++])[0]
96
+ .toLowerCase();
97
+ if (!pool2AssetInfo.has(pool)) {
98
+ pool2AssetInfo.set(pool, new Map());
99
+ }
100
+ pool2AssetInfo.get(pool).set(lpToken, underlyingToken);
101
+ }
102
+ pool2AssetInfo.forEach((asset2TokenMap, pool) => {
103
+ bmwState.pools.push(pool);
104
+ this.onAssetAdded(pool, asset2TokenMap, blockNumber);
105
+ });
106
+ return bmwState;
107
+ }
108
+ async handleAdd(event, state, log) {
109
+ const lpToken = event.args.lpToken.toString().toLowerCase();
110
+ let multiCallInputs = [];
111
+ multiCallInputs.push({
112
+ target: lpToken,
113
+ callData: WombatBmw.assetInterface.encodeFunctionData('pool'),
114
+ });
115
+ multiCallInputs.push({
116
+ target: lpToken,
117
+ callData: WombatBmw.assetInterface.encodeFunctionData('underlyingToken'),
118
+ });
119
+ const returnData = (await this.dexHelper.multiContract.methods
120
+ .aggregate(multiCallInputs)
121
+ .call({}, log.blockNumber)).returnData;
122
+ const pool = WombatBmw.assetInterface
123
+ .decodeFunctionResult('pool', returnData[0])[0]
124
+ .toLowerCase();
125
+ const underlyingToken = WombatBmw.assetInterface
126
+ .decodeFunctionResult('underlyingToken', returnData[1])[0]
127
+ .toLowerCase();
128
+ this.onAssetAdded(pool, new Map().set(lpToken, underlyingToken), log.blockNumber);
129
+ if (!state.pools.includes(pool)) {
130
+ return {
131
+ pools: [...state.pools, pool],
132
+ };
133
+ }
134
+ else {
135
+ return {
136
+ pools: state.pools,
137
+ };
138
+ }
139
+ }
140
+ }
141
+ exports.WombatBmw = WombatBmw;
142
+ WombatBmw.bmwInterface = new abi_1.Interface(bmw_json_1.default);
143
+ WombatBmw.assetInterface = new abi_1.Interface(asset_json_1.default);
144
+ WombatBmw.poolInterface = new abi_1.Interface(pool_json_1.default);
145
+ //# sourceMappingURL=wombat-bmw.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wombat-bmw.js","sourceRoot":"","sources":["../../../src/dex/wombat/wombat-bmw.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { Interface } from '@ethersproject/abi';
2
+ import { Address } from '@paraswap/core';
3
+ import { MultiCallParams, MultiResult } from '../../lib/multi-wrapper';
4
+ import { IDexHelper } from '../../dex-helper';
5
+ import { StatefulRpcPoller } from '../../lib/stateful-rpc-poller/stateful-rpc-poller';
6
+ import { ObjWithUpdateInfo } from '../../lib/stateful-rpc-poller/types';
7
+ import { MulticallResultOutputs, PoolState } from './types';
8
+ export declare class WombatPool extends StatefulRpcPoller<PoolState, MulticallResultOutputs> {
9
+ protected poolAddress: Address;
10
+ protected asset2TokenMap: Map<Address, Address>;
11
+ static readonly poolInterface: Interface;
12
+ static readonly assetInterface: Interface;
13
+ constructor(dexKey: string, poolIdentifier: string, dexHelper: IDexHelper, poolAddress: Address, asset2TokenMap: Map<Address, Address>);
14
+ protected _getFetchStateMultiCalls(): MultiCallParams<MulticallResultOutputs>[];
15
+ protected _parseStateFromMultiResults(multiOutputs: MulticallResultOutputs[]): PoolState;
16
+ fetchLatestStateFromRpc(): Promise<ObjWithUpdateInfo<PoolState> | null>;
17
+ parseStateFromMultiResultsWithBlockInfo(multiOutputs: [
18
+ MultiResult<number>,
19
+ ...MultiResult<MulticallResultOutputs>[]
20
+ ], lastUpdatedAtMs: number): ObjWithUpdateInfo<PoolState>;
21
+ addAssets(asset2TokenMap: Map<Address, Address>): void;
22
+ }