@paraswap/dex-lib 4.5.10 → 4.5.12-fluid-dex-lite.0

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 (199) hide show
  1. package/build/abi/bunni-v2/BunniHook.abi.json +1921 -0
  2. package/build/abi/bunni-v2/BunniHub.abi.json +1598 -0
  3. package/build/abi/bunni-v2/BunniToken.abi.json +833 -0
  4. package/build/abi/bunni-v2/FeeOverrideHooklet.abi.json +1947 -0
  5. package/build/abi/bunni-v2/FloodPlain.abi.json +1195 -0
  6. package/build/abi/bunni-v2/PoolManager.abi.json +1366 -0
  7. package/build/abi/bunni-v2/V4Quoter.abi.json +637 -0
  8. package/build/abi/fluid-dex-lite/FluidDexLite.abi.json +262 -0
  9. package/build/abi/miro-migrator/MiroMigrator.abi.json +19 -36
  10. package/build/abi/pangolin-v3/PangolinV3StateMulticall.abi.json +796 -0
  11. package/build/abi/ring-v2/few-wrapped-token.json +587 -0
  12. package/build/abi/ring-v2/ring-v2-factory.json +125 -0
  13. package/build/abi/ring-v2/ring-v2-pool.json +461 -0
  14. package/build/abi/ring-v2/ring-v2-router.json +332 -0
  15. package/build/abi/uniswap-v4/hooks/cabalcoin-hook.abi.json +682 -0
  16. package/build/abi/uniswap-v4/hooks/fee-hook.abi.json +1335 -0
  17. package/build/config.js +13 -13
  18. package/build/dex/balancer-v3/config.d.ts +1 -1
  19. package/build/dex/balancer-v3/config.js +23 -1
  20. package/build/dex/balancer-v3/config.js.map +1 -1
  21. package/build/dex/bunni-v2/bunni-v2-pool.d.ts +61 -0
  22. package/build/dex/bunni-v2/bunni-v2-pool.js +495 -0
  23. package/build/dex/bunni-v2/bunni-v2-pool.js.map +1 -0
  24. package/build/dex/bunni-v2/bunni-v2.d.ts +49 -0
  25. package/build/dex/bunni-v2/bunni-v2.js +435 -0
  26. package/build/dex/bunni-v2/bunni-v2.js.map +1 -0
  27. package/build/dex/bunni-v2/config.d.ts +3 -0
  28. package/build/dex/bunni-v2/config.js +130 -0
  29. package/build/dex/bunni-v2/config.js.map +1 -0
  30. package/build/dex/bunni-v2/encoder.d.ts +19 -0
  31. package/build/dex/bunni-v2/encoder.js +400 -0
  32. package/build/dex/bunni-v2/encoder.js.map +1 -0
  33. package/build/dex/bunni-v2/getOnChainState.d.ts +25 -0
  34. package/build/dex/bunni-v2/getOnChainState.js +455 -0
  35. package/build/dex/bunni-v2/getOnChainState.js.map +1 -0
  36. package/build/dex/bunni-v2/hook/BunniSwapMath.d.ts +7 -0
  37. package/build/dex/bunni-v2/hook/BunniSwapMath.js +198 -0
  38. package/build/dex/bunni-v2/hook/BunniSwapMath.js.map +1 -0
  39. package/build/dex/bunni-v2/hook/SwapMath.d.ts +8 -0
  40. package/build/dex/bunni-v2/hook/SwapMath.js +65 -0
  41. package/build/dex/bunni-v2/hook/SwapMath.js.map +1 -0
  42. package/build/dex/bunni-v2/hooklet/FeeOverrideHooklet.d.ts +33 -0
  43. package/build/dex/bunni-v2/hooklet/FeeOverrideHooklet.js +33 -0
  44. package/build/dex/bunni-v2/hooklet/FeeOverrideHooklet.js.map +1 -0
  45. package/build/dex/bunni-v2/hooklet/index.d.ts +21 -0
  46. package/build/dex/bunni-v2/hooklet/index.js +64 -0
  47. package/build/dex/bunni-v2/hooklet/index.js.map +1 -0
  48. package/build/dex/bunni-v2/ldf/CarpetedDoubleGeometricDistribution.d.ts +70 -0
  49. package/build/dex/bunni-v2/ldf/CarpetedDoubleGeometricDistribution.js +277 -0
  50. package/build/dex/bunni-v2/ldf/CarpetedDoubleGeometricDistribution.js.map +1 -0
  51. package/build/dex/bunni-v2/ldf/CarpetedGeometricDistribution.d.ts +64 -0
  52. package/build/dex/bunni-v2/ldf/CarpetedGeometricDistribution.js +262 -0
  53. package/build/dex/bunni-v2/ldf/CarpetedGeometricDistribution.js.map +1 -0
  54. package/build/dex/bunni-v2/ldf/DoubleGeometricDistribution.d.ts +60 -0
  55. package/build/dex/bunni-v2/ldf/DoubleGeometricDistribution.js +224 -0
  56. package/build/dex/bunni-v2/ldf/DoubleGeometricDistribution.js.map +1 -0
  57. package/build/dex/bunni-v2/ldf/GeometricDistribution.d.ts +56 -0
  58. package/build/dex/bunni-v2/ldf/GeometricDistribution.js +489 -0
  59. package/build/dex/bunni-v2/ldf/GeometricDistribution.js.map +1 -0
  60. package/build/dex/bunni-v2/ldf/LDFType.d.ts +5 -0
  61. package/build/dex/bunni-v2/ldf/LDFType.js +10 -0
  62. package/build/dex/bunni-v2/ldf/LDFType.js.map +1 -0
  63. package/build/dex/bunni-v2/ldf/ShiftMode.d.ts +7 -0
  64. package/build/dex/bunni-v2/ldf/ShiftMode.js +19 -0
  65. package/build/dex/bunni-v2/ldf/ShiftMode.js.map +1 -0
  66. package/build/dex/bunni-v2/ldf/UniformDistribution.d.ts +55 -0
  67. package/build/dex/bunni-v2/ldf/UniformDistribution.js +291 -0
  68. package/build/dex/bunni-v2/ldf/UniformDistribution.js.map +1 -0
  69. package/build/dex/bunni-v2/ldf/index.d.ts +15 -0
  70. package/build/dex/bunni-v2/ldf/index.js +21 -0
  71. package/build/dex/bunni-v2/ldf/index.js.map +1 -0
  72. package/build/dex/bunni-v2/lib/AmAmmPayload.d.ts +4 -0
  73. package/build/dex/bunni-v2/lib/AmAmmPayload.js +10 -0
  74. package/build/dex/bunni-v2/lib/AmAmmPayload.js.map +1 -0
  75. package/build/dex/bunni-v2/lib/BitMath.d.ts +4 -0
  76. package/build/dex/bunni-v2/lib/BitMath.js +24 -0
  77. package/build/dex/bunni-v2/lib/BitMath.js.map +1 -0
  78. package/build/dex/bunni-v2/lib/Constants.d.ts +14 -0
  79. package/build/dex/bunni-v2/lib/Constants.js +18 -0
  80. package/build/dex/bunni-v2/lib/Constants.js.map +1 -0
  81. package/build/dex/bunni-v2/lib/ExpMath.d.ts +5 -0
  82. package/build/dex/bunni-v2/lib/ExpMath.js +121 -0
  83. package/build/dex/bunni-v2/lib/ExpMath.js.map +1 -0
  84. package/build/dex/bunni-v2/lib/FeeMath.d.ts +2 -0
  85. package/build/dex/bunni-v2/lib/FeeMath.js +27 -0
  86. package/build/dex/bunni-v2/lib/FeeMath.js.map +1 -0
  87. package/build/dex/bunni-v2/lib/FixedPointMath.d.ts +3 -0
  88. package/build/dex/bunni-v2/lib/FixedPointMath.js +15 -0
  89. package/build/dex/bunni-v2/lib/FixedPointMath.js.map +1 -0
  90. package/build/dex/bunni-v2/lib/FullMathX96.d.ts +4 -0
  91. package/build/dex/bunni-v2/lib/FullMathX96.js +21 -0
  92. package/build/dex/bunni-v2/lib/FullMathX96.js.map +1 -0
  93. package/build/dex/bunni-v2/lib/IdleBalance.d.ts +11 -0
  94. package/build/dex/bunni-v2/lib/IdleBalance.js +33 -0
  95. package/build/dex/bunni-v2/lib/IdleBalance.js.map +1 -0
  96. package/build/dex/bunni-v2/lib/LiquidityAmounts.d.ts +6 -0
  97. package/build/dex/bunni-v2/lib/LiquidityAmounts.js +25 -0
  98. package/build/dex/bunni-v2/lib/LiquidityAmounts.js.map +1 -0
  99. package/build/dex/bunni-v2/lib/Math.d.ts +28 -0
  100. package/build/dex/bunni-v2/lib/Math.js +169 -0
  101. package/build/dex/bunni-v2/lib/Math.js.map +1 -0
  102. package/build/dex/bunni-v2/lib/Oracle.d.ts +27 -0
  103. package/build/dex/bunni-v2/lib/Oracle.js +180 -0
  104. package/build/dex/bunni-v2/lib/Oracle.js.map +1 -0
  105. package/build/dex/bunni-v2/lib/QueryLDF.d.ts +12 -0
  106. package/build/dex/bunni-v2/lib/QueryLDF.js +90 -0
  107. package/build/dex/bunni-v2/lib/QueryLDF.js.map +1 -0
  108. package/build/dex/bunni-v2/lib/QueryTwap.d.ts +2 -0
  109. package/build/dex/bunni-v2/lib/QueryTwap.js +13 -0
  110. package/build/dex/bunni-v2/lib/QueryTwap.js.map +1 -0
  111. package/build/dex/bunni-v2/lib/SqrtPriceMath.d.ts +8 -0
  112. package/build/dex/bunni-v2/lib/SqrtPriceMath.js +84 -0
  113. package/build/dex/bunni-v2/lib/SqrtPriceMath.js.map +1 -0
  114. package/build/dex/bunni-v2/lib/TickMath.d.ts +11 -0
  115. package/build/dex/bunni-v2/lib/TickMath.js +100 -0
  116. package/build/dex/bunni-v2/lib/TickMath.js.map +1 -0
  117. package/build/dex/bunni-v2/lib/VaultMath.d.ts +2 -0
  118. package/build/dex/bunni-v2/lib/VaultMath.js +11 -0
  119. package/build/dex/bunni-v2/lib/VaultMath.js.map +1 -0
  120. package/build/dex/bunni-v2/logic/AmAmm.d.ts +11 -0
  121. package/build/dex/bunni-v2/logic/AmAmm.js +156 -0
  122. package/build/dex/bunni-v2/logic/AmAmm.js.map +1 -0
  123. package/build/dex/bunni-v2/logic/BunniHookLogic.d.ts +10 -0
  124. package/build/dex/bunni-v2/logic/BunniHookLogic.js +298 -0
  125. package/build/dex/bunni-v2/logic/BunniHookLogic.js.map +1 -0
  126. package/build/dex/bunni-v2/logic/BunniHubLogic.d.ts +5 -0
  127. package/build/dex/bunni-v2/logic/BunniHubLogic.js +245 -0
  128. package/build/dex/bunni-v2/logic/BunniHubLogic.js.map +1 -0
  129. package/build/dex/bunni-v2/logic/BunniQuoter.d.ts +12 -0
  130. package/build/dex/bunni-v2/logic/BunniQuoter.js +201 -0
  131. package/build/dex/bunni-v2/logic/BunniQuoter.js.map +1 -0
  132. package/build/dex/bunni-v2/subgraph.d.ts +7 -0
  133. package/build/dex/bunni-v2/subgraph.js +184 -0
  134. package/build/dex/bunni-v2/subgraph.js.map +1 -0
  135. package/build/dex/bunni-v2/types.d.ts +256 -0
  136. package/build/dex/bunni-v2/types.js +3 -0
  137. package/build/dex/bunni-v2/types.js.map +1 -0
  138. package/build/dex/bunni-v2/utils.d.ts +12 -0
  139. package/build/dex/bunni-v2/utils.js +181 -0
  140. package/build/dex/bunni-v2/utils.js.map +1 -0
  141. package/build/dex/fluid-dex-lite/config.d.ts +3 -0
  142. package/build/dex/fluid-dex-lite/config.js +12 -0
  143. package/build/dex/fluid-dex-lite/config.js.map +1 -0
  144. package/build/dex/fluid-dex-lite/fluid-dex-lite-math.d.ts +63 -0
  145. package/build/dex/fluid-dex-lite/fluid-dex-lite-math.js +543 -0
  146. package/build/dex/fluid-dex-lite/fluid-dex-lite-math.js.map +1 -0
  147. package/build/dex/fluid-dex-lite/fluid-dex-lite-pool.d.ts +31 -0
  148. package/build/dex/fluid-dex-lite/fluid-dex-lite-pool.js +105 -0
  149. package/build/dex/fluid-dex-lite/fluid-dex-lite-pool.js.map +1 -0
  150. package/build/dex/fluid-dex-lite/fluid-dex-lite.d.ts +45 -0
  151. package/build/dex/fluid-dex-lite/fluid-dex-lite.js +461 -0
  152. package/build/dex/fluid-dex-lite/fluid-dex-lite.js.map +1 -0
  153. package/build/dex/fluid-dex-lite/types.d.ts +54 -0
  154. package/build/dex/fluid-dex-lite/types.js +3 -0
  155. package/build/dex/fluid-dex-lite/types.js.map +1 -0
  156. package/build/dex/fluid-dex-lite/utils.d.ts +12 -0
  157. package/build/dex/fluid-dex-lite/utils.js +51 -0
  158. package/build/dex/fluid-dex-lite/utils.js.map +1 -0
  159. package/build/dex/index.js +2 -0
  160. package/build/dex/index.js.map +1 -1
  161. package/build/dex/miro-migrator/config.js +10 -3
  162. package/build/dex/miro-migrator/config.js.map +1 -1
  163. package/build/dex/miro-migrator/constants.d.ts +1 -2
  164. package/build/dex/miro-migrator/constants.js +2 -3
  165. package/build/dex/miro-migrator/constants.js.map +1 -1
  166. package/build/dex/miro-migrator/miro-migrator-pool.d.ts +5 -9
  167. package/build/dex/miro-migrator/miro-migrator-pool.js +30 -49
  168. package/build/dex/miro-migrator/miro-migrator-pool.js.map +1 -1
  169. package/build/dex/miro-migrator/miro-migrator-state.d.ts +27 -0
  170. package/build/dex/miro-migrator/miro-migrator-state.js +89 -0
  171. package/build/dex/miro-migrator/miro-migrator-state.js.map +1 -0
  172. package/build/dex/miro-migrator/miro-migrator.d.ts +4 -5
  173. package/build/dex/miro-migrator/miro-migrator.js +83 -41
  174. package/build/dex/miro-migrator/miro-migrator.js.map +1 -1
  175. package/build/dex/miro-migrator/types.d.ts +4 -2
  176. package/build/dex/miro-migrator/types.js +2 -1
  177. package/build/dex/miro-migrator/types.js.map +1 -1
  178. package/build/dex/uniswap-v3/forks/pangolin-v3/utils.d.ts +4 -0
  179. package/build/dex/uniswap-v3/forks/pangolin-v3/utils.js +56 -0
  180. package/build/dex/uniswap-v3/forks/pangolin-v3/utils.js.map +1 -0
  181. package/build/dex/uniswap-v4/hooks/cabalcoin-hook/cabalcoin-hook-pool.d.ts +7 -0
  182. package/build/dex/uniswap-v4/hooks/cabalcoin-hook/cabalcoin-hook-pool.js +28 -0
  183. package/build/dex/uniswap-v4/hooks/cabalcoin-hook/cabalcoin-hook-pool.js.map +1 -0
  184. package/build/dex/uniswap-v4/hooks/cabalcoin-hook/types.d.ts +0 -0
  185. package/build/dex/uniswap-v4/hooks/cabalcoin-hook/types.js +2 -0
  186. package/build/dex/uniswap-v4/hooks/cabalcoin-hook/types.js.map +1 -0
  187. package/build/dex/uniswap-v4/hooks/fee-hook/fee-hook-pool.d.ts +7 -0
  188. package/build/dex/uniswap-v4/hooks/fee-hook/fee-hook-pool.js +28 -0
  189. package/build/dex/uniswap-v4/hooks/fee-hook/fee-hook-pool.js.map +1 -0
  190. package/build/dex/uniswap-v4/hooks/fee-hook/types.d.ts +0 -0
  191. package/build/dex/uniswap-v4/hooks/fee-hook/types.js +2 -0
  192. package/build/dex/uniswap-v4/hooks/fee-hook/types.js.map +1 -0
  193. package/build/dex/uniswap-v4/hooks/index.d.ts +2 -0
  194. package/build/dex/uniswap-v4/hooks/index.js +8 -0
  195. package/build/dex/uniswap-v4/hooks/index.js.map +1 -0
  196. package/build/dex/usdc-transmuter/usdc-transmuter-pool.d.ts +26 -0
  197. package/build/dex/usdc-transmuter/usdc-transmuter-pool.js +75 -0
  198. package/build/dex/usdc-transmuter/usdc-transmuter-pool.js.map +1 -0
  199. package/package.json +1 -1
@@ -0,0 +1,400 @@
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.Actions = void 0;
7
+ exports.swapExactInputSingleCalldata = swapExactInputSingleCalldata;
8
+ exports.swapExactInputCalldata = swapExactInputCalldata;
9
+ exports.swapExactOutputSingleCalldata = swapExactOutputSingleCalldata;
10
+ exports.swapExactOutputCalldata = swapExactOutputCalldata;
11
+ const ethers_1 = require("ethers");
12
+ const router_abi_json_1 = __importDefault(require("../../abi/uniswap-v4/router.abi.json"));
13
+ const abi_1 = require("@ethersproject/abi");
14
+ const utils_1 = require("../../utils");
15
+ const constants_1 = require("../../constants");
16
+ const constants_2 = require("@paraswap/core/build/constants");
17
+ const bigint_constants_1 = require("../../bigint-constants");
18
+ const routerIface = new abi_1.Interface(router_abi_json_1.default);
19
+ var Commands;
20
+ (function (Commands) {
21
+ Commands[Commands["PERMIT2_TRANSFER_FROM"] = 2] = "PERMIT2_TRANSFER_FROM";
22
+ Commands[Commands["SWEEP"] = 4] = "SWEEP";
23
+ Commands[Commands["WRAP_ETH"] = 11] = "WRAP_ETH";
24
+ Commands[Commands["UNWRAP_WETH"] = 12] = "UNWRAP_WETH";
25
+ Commands[Commands["V4_SWAP"] = 16] = "V4_SWAP";
26
+ })(Commands || (Commands = {}));
27
+ var Actions;
28
+ (function (Actions) {
29
+ // Swapping
30
+ Actions[Actions["SWAP_EXACT_IN_SINGLE"] = 6] = "SWAP_EXACT_IN_SINGLE";
31
+ Actions[Actions["SWAP_EXACT_IN"] = 7] = "SWAP_EXACT_IN";
32
+ Actions[Actions["SWAP_EXACT_OUT_SINGLE"] = 8] = "SWAP_EXACT_OUT_SINGLE";
33
+ Actions[Actions["SWAP_EXACT_OUT"] = 9] = "SWAP_EXACT_OUT";
34
+ // Settling (paying funds)
35
+ Actions[Actions["SETTLE"] = 11] = "SETTLE";
36
+ Actions[Actions["SETTLE_ALL"] = 12] = "SETTLE_ALL";
37
+ Actions[Actions["SETTLE_PAIR"] = 13] = "SETTLE_PAIR";
38
+ // Taking (receiving funds)
39
+ Actions[Actions["TAKE"] = 14] = "TAKE";
40
+ Actions[Actions["TAKE_ALL"] = 15] = "TAKE_ALL";
41
+ Actions[Actions["TAKE_PORTION"] = 16] = "TAKE_PORTION";
42
+ Actions[Actions["TAKE_PAIR"] = 17] = "TAKE_PAIR";
43
+ })(Actions || (exports.Actions = Actions = {}));
44
+ var ActionConstants;
45
+ (function (ActionConstants) {
46
+ ActionConstants[ActionConstants["OPEN_DELTA"] = 0] = "OPEN_DELTA";
47
+ // This value is equivalent to 1<<255, i.e. a singular 1 in the most significant bit.
48
+ ActionConstants["CONTRACT_BALANCE"] = "57896044618658097711785492504343953926634992332820282019728792003956564819968";
49
+ // address(1)
50
+ ActionConstants["MSG_SENDER"] = "0x0000000000000000000000000000000000000001";
51
+ // address(2)
52
+ ActionConstants["ADDRESS_THIS"] = "0x0000000000000000000000000000000000000002";
53
+ })(ActionConstants || (ActionConstants = {}));
54
+ function encodeActions(actions) {
55
+ const types = actions.map(() => 'uint8');
56
+ return ethers_1.ethers.utils.solidityPack(types, actions);
57
+ }
58
+ function encodeInputForExecute(srcToken, destToken, data, side, amountIn, amountOut, recipient, encodedActions, encodedActionValues, wethAddr) {
59
+ const isEthSrc = (0, utils_1.isETHAddress)(srcToken);
60
+ const isEthDest = (0, utils_1.isETHAddress)(destToken);
61
+ const isWethSrc = srcToken.toLowerCase() === wethAddr;
62
+ const isWethDest = destToken.toLowerCase() === wethAddr;
63
+ const firstPool = data.path[0];
64
+ const lastPool = data.path[data.path.length - 1];
65
+ const isWethPoolForSrc = firstPool.tokenIn.toLowerCase() === wethAddr ||
66
+ firstPool.tokenOut.toLowerCase() === wethAddr;
67
+ const isWethPoolForDest = lastPool.tokenOut.toLowerCase() === wethAddr ||
68
+ lastPool.tokenIn.toLowerCase() === wethAddr;
69
+ const isEthPoolForSrc = firstPool.tokenIn.toLowerCase() === constants_1.NULL_ADDRESS ||
70
+ firstPool.tokenOut.toLowerCase() === constants_1.NULL_ADDRESS;
71
+ const isEthPoolForDest = lastPool.tokenOut.toLowerCase() === constants_1.NULL_ADDRESS ||
72
+ lastPool.tokenIn.toLowerCase() === constants_1.NULL_ADDRESS;
73
+ const input = ethers_1.ethers.utils.defaultAbiCoder.encode(['bytes', 'bytes[]'], [encodedActions, encodedActionValues]);
74
+ let types = ['uint8'];
75
+ let commands = [Commands.V4_SWAP];
76
+ let inputs = [input];
77
+ // Wrap ETH on Router for WETH pool
78
+ if (isEthSrc && isWethPoolForSrc) {
79
+ types.unshift('uint8');
80
+ commands.unshift(Commands.WRAP_ETH);
81
+ const wrapInput = ethers_1.ethers.utils.defaultAbiCoder.encode(['address', 'uint256'], [ActionConstants.ADDRESS_THIS, ActionConstants.CONTRACT_BALANCE]);
82
+ inputs.unshift(wrapInput);
83
+ }
84
+ // Unwrap WETH on Router for ETH pool
85
+ if (isWethSrc && isEthPoolForSrc) {
86
+ types.unshift('uint8');
87
+ commands.unshift(Commands.UNWRAP_WETH);
88
+ const unwrapInput = ethers_1.ethers.utils.defaultAbiCoder.encode(['address', 'uint256'],
89
+ // as all available balance will be unwrapped, set minAmount to 0
90
+ [ActionConstants.ADDRESS_THIS, 0]);
91
+ inputs.unshift(unwrapInput);
92
+ }
93
+ // Unwrap ETH on Router for WETH pool
94
+ if (isEthDest && isWethPoolForDest) {
95
+ types.push('uint8');
96
+ commands.push(Commands.UNWRAP_WETH);
97
+ const unwrapInput = ethers_1.ethers.utils.defaultAbiCoder.encode(['address', 'uint256'], [recipient, 0]);
98
+ inputs.push(unwrapInput);
99
+ }
100
+ // Wrap ETH on Router for ETH pool
101
+ if (isWethDest && isEthPoolForDest) {
102
+ types.push('uint8');
103
+ commands.push(Commands.WRAP_ETH);
104
+ const wrapInput = ethers_1.ethers.utils.defaultAbiCoder.encode(['address', 'uint256'], [recipient, ActionConstants.CONTRACT_BALANCE]);
105
+ inputs.push(wrapInput);
106
+ }
107
+ // take srcToken leftovers after BUY
108
+ if (side === constants_2.SwapSide.BUY) {
109
+ // unwrap if src token was wrapped
110
+ if (isEthSrc && isWethPoolForSrc) {
111
+ types.push('uint8');
112
+ commands.push(Commands.UNWRAP_WETH);
113
+ const unwrapInput = ethers_1.ethers.utils.defaultAbiCoder.encode(['address', 'uint256'],
114
+ // as all available balance will be unwrapped, set minAmount to 0
115
+ [ActionConstants.ADDRESS_THIS, 0]);
116
+ inputs.push(unwrapInput);
117
+ }
118
+ // wrap if src token was unwrapped
119
+ if (isWethSrc && isEthPoolForSrc) {
120
+ types.push('uint8');
121
+ commands.push(Commands.WRAP_ETH);
122
+ const wrapInput = ethers_1.ethers.utils.defaultAbiCoder.encode(['address', 'uint256'], [ActionConstants.ADDRESS_THIS, ActionConstants.CONTRACT_BALANCE]);
123
+ inputs.push(wrapInput);
124
+ }
125
+ types.push('uint8');
126
+ commands.push(Commands.SWEEP);
127
+ const sweepInput = ethers_1.ethers.utils.defaultAbiCoder.encode(
128
+ // token, recipient, minAmount
129
+ ['address', 'address', 'uint256'], [(0, utils_1.isETHAddress)(srcToken) ? constants_1.NULL_ADDRESS : srcToken, recipient, 0]);
130
+ inputs.push(sweepInput);
131
+ }
132
+ const command = ethers_1.ethers.utils.solidityPack(types, commands);
133
+ return routerIface.encodeFunctionData('execute(bytes,bytes[])', [
134
+ command,
135
+ inputs,
136
+ ]);
137
+ }
138
+ function encodeSettle(srcToken, data, wethAddr) {
139
+ const isEthSrc = (0, utils_1.isETHAddress)(srcToken);
140
+ const isWethSrc = srcToken.toLowerCase() === wethAddr;
141
+ const firstPool = data.path[0];
142
+ const isWethPool = firstPool.tokenIn.toLowerCase() === wethAddr ||
143
+ firstPool.tokenOut.toLowerCase() === wethAddr;
144
+ const isEthPool = firstPool.tokenIn.toLowerCase() === constants_1.NULL_ADDRESS ||
145
+ firstPool.tokenOut.toLowerCase() === constants_1.NULL_ADDRESS;
146
+ const settle = ethers_1.ethers.utils.defaultAbiCoder.encode(['address', 'uint256', 'bool'],
147
+ // srcToken, amountIn (`OPEN_DELTA` to settle all needed funds), takeFundsFromMsgSender (Executor in our case)
148
+ [
149
+ isEthSrc && isWethPool
150
+ ? wethAddr
151
+ : (isEthSrc && isEthPool) || (isWethSrc && isEthPool)
152
+ ? constants_1.NULL_ADDRESS
153
+ : srcToken,
154
+ ActionConstants.OPEN_DELTA,
155
+ false, // we rely on srcToken transfer before swap, so no need to take funds from msg.sender
156
+ ]);
157
+ return settle;
158
+ }
159
+ function encodeTake(destToken, data, recipient, wethAddr) {
160
+ const isEthDest = (0, utils_1.isETHAddress)(destToken);
161
+ const isWethDest = destToken.toLowerCase() === wethAddr;
162
+ const lastPool = data.path[data.path.length - 1];
163
+ const isWethPool = lastPool.tokenOut.toLowerCase() === wethAddr ||
164
+ lastPool.tokenIn.toLowerCase() === wethAddr;
165
+ const isEthPool = lastPool.tokenOut.toLowerCase() === constants_1.NULL_ADDRESS ||
166
+ lastPool.tokenIn.toLowerCase() === constants_1.NULL_ADDRESS;
167
+ const take = ethers_1.ethers.utils.defaultAbiCoder.encode(['address', 'address', 'uint256'],
168
+ // destToken, recipient, amountOut (`OPEN_DELTA` to take all funds)
169
+ [
170
+ isEthDest && isWethPool
171
+ ? wethAddr
172
+ : (isWethDest && isEthPool) || (isEthDest && isEthPool)
173
+ ? constants_1.NULL_ADDRESS
174
+ : destToken,
175
+ (isEthDest && isWethPool) || (isWethDest && isEthPool)
176
+ ? ActionConstants.ADDRESS_THIS
177
+ : recipient,
178
+ ActionConstants.OPEN_DELTA,
179
+ ]);
180
+ return take;
181
+ }
182
+ // Single hop encoding for SELL side
183
+ function swapExactInputSingleCalldata(srcToken, destToken, data, amountIn, amountOutMinimum, recipient, weth) {
184
+ const path = data.path[0];
185
+ const poolKey = path.pool.key;
186
+ const actions = encodeActions([
187
+ Actions.SWAP_EXACT_IN_SINGLE,
188
+ Actions.SETTLE,
189
+ Actions.TAKE,
190
+ ]);
191
+ const exactInputSingleParams = {
192
+ poolKey,
193
+ zeroForOne: path.zeroForOne,
194
+ amountIn,
195
+ amountOutMinimum,
196
+ hookData: '0x', // empty bytes
197
+ };
198
+ // encode SWAP_EXACT_IN_SINGLE
199
+ const swap = ethers_1.ethers.utils.defaultAbiCoder.encode([
200
+ /*
201
+ ExactInputSingleParams {
202
+ PoolKey poolKey;
203
+ bool zeroForOne;
204
+ uint128 amountIn;
205
+ uint128 amountOutMinimum;
206
+ bytes hookData;
207
+ }
208
+ */
209
+ 'tuple((address,address,uint24,int24,address) poolKey, bool zeroForOne, uint128 amountIn, uint128 amountOutMinimum, bytes hookData)',
210
+ ], [
211
+ [
212
+ [
213
+ poolKey.currency0,
214
+ poolKey.currency1,
215
+ poolKey.fee,
216
+ poolKey.tickSpacing,
217
+ poolKey.hooks,
218
+ ],
219
+ exactInputSingleParams.zeroForOne,
220
+ exactInputSingleParams.amountIn,
221
+ exactInputSingleParams.amountOutMinimum,
222
+ exactInputSingleParams.hookData,
223
+ ],
224
+ ]);
225
+ const settle = encodeSettle(srcToken, data, weth);
226
+ const take = encodeTake(destToken, data, recipient, weth);
227
+ return encodeInputForExecute(srcToken, destToken, data, constants_2.SwapSide.SELL, amountIn, amountOutMinimum, recipient, actions, [swap, settle, take], weth);
228
+ }
229
+ // Multi-hop encoding for SELL side
230
+ function swapExactInputCalldata(srcToken, destToken, data, amountIn, amountOutMinimum, recipient, weth) {
231
+ const actions = encodeActions([
232
+ Actions.SWAP_EXACT_IN,
233
+ Actions.SETTLE,
234
+ Actions.TAKE,
235
+ ]);
236
+ const exactInputParams = {
237
+ currencyIn: (0, utils_1.isETHAddress)(data.path[0].tokenIn)
238
+ ? constants_1.NULL_ADDRESS
239
+ : data.path[0].tokenIn,
240
+ amountIn,
241
+ amountOutMinimum,
242
+ path: data.path.map(path => ({
243
+ intermediateCurrency: (0, utils_1.isETHAddress)(path.tokenOut)
244
+ ? constants_1.NULL_ADDRESS
245
+ : path.tokenOut,
246
+ fee: BigInt(path.pool.key.fee),
247
+ tickSpacing: BigInt(path.pool.key.tickSpacing),
248
+ hooks: path.pool.key.hooks,
249
+ hookData: '0x',
250
+ })),
251
+ };
252
+ // encode SWAP_EXACT_IN
253
+ const swap = ethers_1.ethers.utils.defaultAbiCoder.encode([
254
+ /*
255
+ PathKey {
256
+ Currency intermediateCurrency;
257
+ uint24 fee;
258
+ int24 tickSpacing;
259
+ IHooks hooks;
260
+ bytes hookData;
261
+ }
262
+ ExactInputParams {
263
+ address currencyIn;
264
+ PathKey[] path;
265
+ uint128 amountIn;
266
+ uint128 amountOutMinimum;
267
+ }
268
+ */
269
+ 'tuple(address currencyIn, (address,uint24,int24,address,bytes)[] path, uint128 amountIn, uint128 amountOutMinimum)',
270
+ ], [
271
+ {
272
+ currencyIn: exactInputParams.currencyIn,
273
+ path: exactInputParams.path.map(pathKey => {
274
+ return [
275
+ pathKey.intermediateCurrency,
276
+ pathKey.fee,
277
+ pathKey.tickSpacing,
278
+ pathKey.hooks,
279
+ pathKey.hookData,
280
+ ];
281
+ }),
282
+ amountIn: exactInputParams.amountIn,
283
+ amountOutMinimum: exactInputParams.amountOutMinimum,
284
+ },
285
+ ]);
286
+ const settle = encodeSettle(srcToken, data, weth);
287
+ const take = encodeTake(destToken, data, recipient, weth);
288
+ return encodeInputForExecute(srcToken, destToken, data, constants_2.SwapSide.SELL, amountIn, amountOutMinimum, recipient, actions, [swap, settle, take], weth);
289
+ }
290
+ // Single hop encoding for BUY side
291
+ function swapExactOutputSingleCalldata(srcToken, destToken, data, amountIn, amountOut, recipient, weth) {
292
+ const path = data.path[0];
293
+ const poolKey = path.pool.key;
294
+ const amountInMaximum = bigint_constants_1.BI_MAX_UINT128;
295
+ const actions = encodeActions([
296
+ Actions.SWAP_EXACT_OUT_SINGLE,
297
+ Actions.SETTLE,
298
+ Actions.TAKE,
299
+ ]);
300
+ const exactOutputSingleParams = {
301
+ poolKey,
302
+ zeroForOne: path.zeroForOne,
303
+ amountOut,
304
+ amountInMaximum,
305
+ hookData: '0x', // empty bytes
306
+ };
307
+ // encode SWAP_EXACT_OUTPUT_SINGLE
308
+ const swap = ethers_1.ethers.utils.defaultAbiCoder.encode([
309
+ /*
310
+ ExactOutputSingleParams {
311
+ PoolKey poolKey;
312
+ bool zeroForOne;
313
+ uint128 amountOut;
314
+ uint128 amountInMaximum;
315
+ bytes hookData;
316
+ }
317
+ */
318
+ 'tuple((address,address,uint24,int24,address) poolKey, bool zeroForOne, uint128 amountOut, uint128 amountInMaximum, bytes hookData)',
319
+ ], [
320
+ [
321
+ [
322
+ poolKey.currency0,
323
+ poolKey.currency1,
324
+ poolKey.fee,
325
+ poolKey.tickSpacing,
326
+ poolKey.hooks,
327
+ ],
328
+ exactOutputSingleParams.zeroForOne,
329
+ exactOutputSingleParams.amountOut,
330
+ exactOutputSingleParams.amountInMaximum,
331
+ exactOutputSingleParams.hookData,
332
+ ],
333
+ ]);
334
+ const settle = encodeSettle(srcToken, data, weth);
335
+ const take = encodeTake(destToken, data, recipient, weth);
336
+ return encodeInputForExecute(srcToken, destToken, data, constants_2.SwapSide.BUY, amountIn, amountOut, recipient, actions, [swap, settle, take], weth);
337
+ }
338
+ // Multi-hop encoding for SELL side
339
+ function swapExactOutputCalldata(srcToken, destToken, data, amountIn, amountOut, recipient, weth) {
340
+ const actions = encodeActions([
341
+ Actions.SWAP_EXACT_OUT,
342
+ Actions.SETTLE,
343
+ Actions.TAKE,
344
+ ]);
345
+ const amountInMaximum = bigint_constants_1.BI_MAX_UINT128;
346
+ const exactOutputParams = {
347
+ currencyOut: (0, utils_1.isETHAddress)(data.path[data.path.length - 1].tokenOut)
348
+ ? constants_1.NULL_ADDRESS
349
+ : data.path[data.path.length - 1].tokenOut,
350
+ amountOut,
351
+ amountInMaximum,
352
+ path: data.path.map(path => ({
353
+ intermediateCurrency: (0, utils_1.isETHAddress)(path.tokenIn)
354
+ ? constants_1.NULL_ADDRESS
355
+ : path.tokenIn,
356
+ fee: BigInt(path.pool.key.fee),
357
+ tickSpacing: BigInt(path.pool.key.tickSpacing),
358
+ hooks: path.pool.key.hooks,
359
+ hookData: '0x',
360
+ })),
361
+ };
362
+ // encode SWAP_EXACT_OUTPUT
363
+ const swap = ethers_1.ethers.utils.defaultAbiCoder.encode([
364
+ /*
365
+ PathKey {
366
+ Currency intermediateCurrency;
367
+ uint24 fee;
368
+ int24 tickSpacing;
369
+ IHooks hooks;
370
+ bytes hookData;
371
+ }
372
+ ExactOutputParams {
373
+ address currencyOut;
374
+ PathKey[] path;
375
+ uint128 amountOut;
376
+ uint128 amountInMaximum;
377
+ }
378
+ */
379
+ 'tuple(address currencyOut, (address,uint24,int24,address,bytes)[] path, uint128 amountOut, uint128 amountInMaximum)',
380
+ ], [
381
+ {
382
+ currencyOut: exactOutputParams.currencyOut,
383
+ path: exactOutputParams.path.map(pathKey => {
384
+ return [
385
+ pathKey.intermediateCurrency,
386
+ pathKey.fee,
387
+ pathKey.tickSpacing,
388
+ pathKey.hooks,
389
+ pathKey.hookData,
390
+ ];
391
+ }),
392
+ amountOut: exactOutputParams.amountOut,
393
+ amountInMaximum: exactOutputParams.amountInMaximum,
394
+ },
395
+ ]);
396
+ const settle = encodeSettle(srcToken, data, weth);
397
+ const take = encodeTake(destToken, data, recipient, weth);
398
+ return encodeInputForExecute(srcToken, destToken, data, constants_2.SwapSide.BUY, amountIn, amountOut, recipient, actions, [swap, settle, take], weth);
399
+ }
400
+ //# sourceMappingURL=encoder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encoder.js","sourceRoot":"","sources":["../../../src/dex/bunni-v2/encoder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { Interface } from '@ethersproject/abi';
2
+ import { IDexHelper } from '../../dex-helper';
3
+ import { DexParams, PoolState, VaultState } from './types';
4
+ export declare function generateOnChainState(poolStates: PoolState[], blockNumber: number, bunniHubInterface: Interface, bunniHookInterface: Interface, bunniTokenInterface: Interface, feeOverrideHookletInterface: Interface, dexHelper: IDexHelper, config: DexParams): Promise<void>;
5
+ export declare function updateStateAfterNewBunni(state: PoolState, blockNumber: number, bunniHubInterface: Interface, bunniHookInterface: Interface, bunniTokenInterface: Interface, dexHelper: IDexHelper): Promise<void>;
6
+ export declare function updateStateAfterDeposit(state: PoolState, blockNumber: number, bunniHubInterface: Interface, bunniHookInterface: Interface, dexHelper: IDexHelper): Promise<void>;
7
+ export declare function updateStateAfterWithdraw(state: PoolState, blockNumber: number, bunniHubInterface: Interface, dexHelper: IDexHelper): Promise<void>;
8
+ export declare function updateStateAfterSwap(state: PoolState, blockNumber: number, bunniHubInterface: Interface, bunniHookInterface: Interface, dexHelper: IDexHelper): Promise<void>;
9
+ export declare function updateStateAfterOrderFulfilled(states: PoolState[], blockNumber: number, bunniHubInterface: Interface, bunniHookInterface: Interface, dexHelper: IDexHelper): Promise<void>;
10
+ export declare function updateHubState(poolStates: PoolState[], blockNumber: number, bunniHubInterface: Interface, dexHelper: IDexHelper): Promise<void>;
11
+ export declare function updateHookState(poolStates: PoolState[], blockNumber: number, bunniHookInterface: Interface, dexHelper: IDexHelper): Promise<void>;
12
+ export declare function updateSlot0(poolStates: PoolState[], blockNumber: number, bunniHookInterface: Interface, dexHelper: IDexHelper): Promise<void>;
13
+ export declare function updateLdfState(poolStates: PoolState[], blockNumber: number, bunniHookInterface: Interface, dexHelper: IDexHelper): Promise<void>;
14
+ export declare function updateVaultSharePricesAtLastSwap(poolStates: PoolState[], blockNumber: number, bunniHookInterface: Interface, dexHelper: IDexHelper): Promise<void>;
15
+ export declare function updateCuratorFees(poolStates: PoolState[], blockNumber: number, bunniHookInterface: Interface, dexHelper: IDexHelper): Promise<void>;
16
+ export declare function updateTopBid(poolStates: PoolState[], blockNumber: number, bunniHookInterface: Interface, dexHelper: IDexHelper): Promise<void>;
17
+ export declare function updateNextBid(poolStates: PoolState[], blockNumber: number, bunniHookInterface: Interface, dexHelper: IDexHelper): Promise<void>;
18
+ export declare function updateTotalSupply(poolStates: PoolState[], blockNumber: number, bunniTokenInterface: Interface, dexHelper: IDexHelper): Promise<void>;
19
+ export declare function updateObservations(poolStates: PoolState[], blockNumber: number, bunniHookInterface: Interface, dexHelper: IDexHelper): Promise<void>;
20
+ export declare function updateFeeOverrides(poolStates: PoolState[], blockNumber: number, feeOverrideHookletInterface: Interface, dexHelper: IDexHelper, config: DexParams): Promise<void>;
21
+ export declare function updateVaultSharePrices(vaults: VaultState[], dexHelper: IDexHelper): Promise<void>;
22
+ export declare function ERC4626_previewDeposit(amount: bigint, vault: string, blockNumber: bigint, dexHelper: IDexHelper): Promise<bigint>;
23
+ export declare function ERC4626_previewWithdraw(amount: bigint, vault: string, blockNumber: bigint, dexHelper: IDexHelper): Promise<bigint>;
24
+ export declare function ERC4626_previewRedeem(amount: bigint, vault: string, blockNumber: bigint, dexHelper: IDexHelper): Promise<bigint>;
25
+ export declare function ERC4626_maxDeposit(account: string, vault: string, blockNumber: bigint, dexHelper: IDexHelper): Promise<bigint>;